关于Linux/Unix系统的设计思想:没有消息就是最好的消息

在使用Unix系统时

假如该目录为空

那么输入ls命令,它只会返回命令提示符

[hacker4444@localhost /]$ ls
[hacker4444@localhost /]$

很多人不明白,空目录为什么不能这样显示呢?

[hacker4444@localhost /]$ ls
[hacker4444@localhost /]$ DIRECTORY : NO FILES FOUND

前者告诉了你:“房间是黑的”

而后者告诉你:“房间里没有任何光线”

这其中存在的差异十分微妙,然而,这个微妙差异却很重要。

那么,在没有数据返回时,命令仍安静运行到底有什么好处呢?

一方面,屏幕上只会包含有效数据,而不是充斥着杂乱的注释,他们几乎传递不了什么有用的信息;

另一方面,一个更具技术性的原因,大多数Unix命令经常被当做过滤器配合Unix管道机制一起使用。

例如:

[hacker4444@localhost /]$ ls -l | awk '{print $4}' | sort

管道“|”将ls命令的输出传递给awk命令作为输入,而“'{print $4}'”则让awk命令只打印ls每一行文本输出结果的第4个字段,并丢弃其余部分

系统将此字段传递给sort命令,它会对输出结果按字母顺序进行排序

通常情况下,该目录包含多个文件时,一切显示很正常,但当该目录为空时会出现什么情况呢?

由于ls命令没有输出,管道便断裂了,awk的进一步加工和排序动作不会发生

但如果ls输出一条像“DIRECTORY : NO FILES FOUND”(目录中没有发现任何文件)的信息并传入管道,这会导致一系列用户并不期望的结果发生。

也许ls不明确发出警告提示的行为并不算不上“用户友好”,但它的设计主旨在于既告诉用户目录为空,同时也能让ls命令用得上管道机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值