我认为我可能忽略了关于Shell的一个相对基本的观点。缺省情况下,ls命令的输出用换行符分隔输出,但是外壳程序将输出显示在一行上。
有人可以向我解释吗?我一直以为输出只是用空格分隔,但是现在我看到输出用换行符分隔,我希望输出显示在单独的行上。
例:
cpoweradm@debian:~/lpi103-4$ ls text*
text1 text2 text3
od显示输出用换行符分隔:
cpoweradm@debian:~/lpi103-4$ ls text* | od -c
0000000 t e x t 1 \n t e x t 2 \n t e x t
0000020 3 \n
0000022
如果存在换行符,那么为什么输出不显示为:
text1
text2
text3
ls
。它很有用,但显然前后矛盾且令人惊讶。但是请注意,某些产生彩色输出的命令也会在通过管道传输时去除颜色。