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

来源:互联网 发布:淘宝麻辣烫底料 编辑:程序博客网 时间:2024/05/29 14:12

在使用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
原创粉丝点击