Bash Shell保存ls命令的输出

博客探讨了在使用ls命令进行重定向时,输出格式的变化。默认情况下,重定向到文件的ls输出是一行一个文件名,而直接在终端上运行ls可能采用多列显示。通过添加-C或-1选项可以调整输出格式。-C使得输出更适合屏幕阅读,-1则确保每个文件名独占一行,适合进一步处理。文章强调了理解shell重定向工作原理的重要性,并提供了相关资源以深化对Bash Shell输出管理和格式控制的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你尝试用重定向保存 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 选项),这样一来,更容易实现一些有意思的事情(其他处理)。

酷客网相关文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值