ls a saída difere stdout vs screen [duplicate]

1

Veja a saída diferente de ls versus ls -1

$ ls
 filea1.txt   fileb.txt    listB1.xml   listC.xml
 filea.txt    listA1.xml   listB.xml   'name with spaces 2.txt'
 fileb1.txt   listA.xml    listC1.xml  'name with spaces.txt'

$ ls -1
filea1.txt
filea.txt
fileb1.txt
fileb.txt
listA1.xml
listA.xml
listB1.xml
listB.xml
listC1.xml
listC.xml
'name with spaces 2.txt'
'name with spaces.txt'

O que é muito bom para mim. A coisa vai diferente se você redirecionar a saída para o arquivo. Eu esperaria que esse arquivo fosse diferente, mas eles são idênticos.

$ ls -1>/tmp/ls-1.out
$ ls >/tmp/ls.out

$ cat /tmp/ls-1.out
filea1.txt
filea.txt
fileb1.txt
fileb.txt
listA1.xml
listA.xml
listB1.xml
listB.xml
listC1.xml
listC.xml
name with spaces 2.txt
name with spaces.txt

$ cat /tmp/ls.out
filea1.txt
filea.txt
fileb1.txt
fileb.txt
listA1.xml
listA.xml
listB1.xml
listB.xml
listC1.xml
listC.xml
name with spaces 2.txt
name with spaces.txt

Por que o último é apenas uma saída de uma coluna, mas não a multi-coluna, como quando não há redirecionamento para o arquivo?

    
por Tagwint 25.07.2018 / 12:24

1 resposta

1

-1 é ativado por padrão quando a saída de ls é redirecionada.

Estritamente falando, o formato de saída padrão é -1 , conforme especificado em POSIX :

The default format shall be to list one entry per line to standard output; the exceptions are to terminals or when one of the -C, -m, or -x options is specified. If the output is to a terminal, the format is implementation-defined.

Você pode forçar a saída colunar para um arquivo especificando explicitamente -C :

ls -C > /tmp/ls-C.out
    
por 25.07.2018 / 12:25

Tags