Como escrever a saída do terminal para o novo arquivo usando comandos do Linux sem as mudanças de alinhamento?

0

Eu tentei os seguintes comandos para escrever a saída dos comandos do Linux no novo arquivo, mas o alinhado varia.

ls (no terminal)

1m_complete.pl   current_sample.pl   rsdb.tcsh         
1m_complete.pl~  current_sample.pl~  getp.pl

Mas ao tentar ls > > ls_out (o alinhamento varia)

 1m_complete.pl   
 current_sample.pl   
 rsdb.tcsh         
 1m_complete.pl~  
 current_sample.pl~ 
 getp.pl

Minha saída esperada:

 1m_complete.pl   current_sample.pl   rsdb.tcsh         
 1m_complete.pl~  current_sample.pl~  getp.pl
    
por upwork online 25.11.2016 / 10:25

3 respostas

1

ls verifica se o STDOUT está conectado a um terminal ( isatty(1) ), se não, então, ele exibe cada nome de arquivo em uma linha separada.

Você pode usar ls -C >out.txt ou echo * >out.txt para obter a listagem no formato de coluna, embora em ambos os casos a saída não esteja na forma exata como mostrado por ls quando a saída estiver indo para um terminal.

    
por 25.11.2016 / 10:43
1

ls se comporta de maneira diferente ao enviar para um terminal ou um arquivo.

saída de terminal é coluna por padrão, enquanto a saída de arquivo é um arquivo por linha.

é só usar

ls -C
    
por 25.11.2016 / 10:38
1

Como as outras respostas mencionam, ls altera sua saída dependendo se sua saída padrão é um terminal ou não.

ls -C

força ls a usar uma saída colunar, mas, por padrão, formata linhas para que elas caibam em 80 colunas. Se você deseja obter uma saída que corresponda aos resultados obtidos em seu terminal, é necessário exportar a variável COLUMNS :

export COLUMNS
ls -C > output

ou, se você quiser especificar apenas COLUMNS para ls :

COLUMNS=$COLUMNS ls -C > output

(supondo que seu shell saiba a largura atual do terminal e o disponibilize na variável COLUMNS ).

    
por 30.11.2016 / 22:51

Tags