ls 出力は stdout と画面とは異なります。

ls 出力は stdout と画面とは異なります。

lsvsのさまざまな出力を見てください。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'

私は大丈夫です。出力をファイルにリダイレクトすると、状況が異なります。ファイルが異なると思いましたが、同じです。

$ 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

ファイルへのリダイレクトがない場合など、後者が出力列が1つで複数列ではないのはなぜですか?

ベストアンサー1

-1ls出力がリダイレクトされると、デフォルトで有効になります。

厳密に言えば、デフォルトの出力形式は次のとおりです-1POSIXで指定されたとおり:

デフォルトの形式は、端末またはオプションのいずれかが-C指定されている場合を除き、標準出力に1行に1つの項目をリストすることです。端末に出力する場合、フォーマットは実装によって定義されます。-m-x

明示的に指定して、列形式の出力をファイルに強制的に適用できます-C

ls -C > /tmp/ls-C.out

おすすめ記事