看看ls
vs的不同输出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
ls
当 的输出被重定向时默认启用。
严格来说,默认输出格式是-1
,按照 POSIX 中的规定:
默认格式应为每行列出一个条目到标准输出;终端或指定
-C
、-m
或选项之一时除外。-x
如果输出到终端,则格式是实现定义的。
您可以通过显式指定将列式输出强制到文件-C
:
ls -C > /tmp/ls-C.out