保存ls命令的输出,你尝试用重定向保存 ls 命令的输出,但查看结果文件时发现格式和预想的不同。
解决方案
重定向输出时,使用 ls 命令的 -C 选项。
下面用 ls 命令显示目录内容:
$ ls
a.out cong.txt def.conf file.txt more.txt zebra.list
$
但是,当用 >
将输出重定向到文件并显示该文件内容时,看到的是如下结果:
$ ls > /tmp/save.out
$ cat /tmp/save.out
a.out
cong.txt
def.conf
file.txt
more.txt
zebra.list
$
这次,我们加上 -C 选项:
$ ls -C > /tmp/save.out
$ cat /tmp/save.out
a.out cong.txt def.conf file.txt more.txt zebra.list
$
不进行重定向时,也可以使用 ls 的 -1 选项,得到的输出如下所示:
$ ls -1
a.out
Cong.txt
def.conf
file.txt
more.txt
zebra.list
$
这和最初使用重定向时的输出结果一样。
讨论
当你觉得自己已经理解重定向,试着将它用于简单的 ls 命令时,结果却不尽正确。这是怎么回事?
shell 的重定向功能意在对所有程序保持透明,因此程序无须编写特定代码来让自身的输出能够被重定向。当你用 >
将输出发送到别处时,shell 负责完成相关工作。但是,我们可以在程序中加入代码,判断输出何时被发往终端。然后,程序就能够针对不同情况进行处理,这也正是 ls 所做的。
ls 的作者认为,如果要向屏幕输出,那么用户可能希望按列输出(-C 选项),毕竟屏幕空间有限,寸土寸金。但作者同时也认为,如果重定向到文件,那么用户会希望一行显示一个文件名(-1 选项),这样一来,更容易实现一些有意思的事情(其他处理)。
酷客网相关文章:
评论前必须登录!
注册