Linux程序设计(第4版)
上QQ阅读APP看书,第一时间看更新

2.2 一点哲学

现在,我们来关注一点UNIX(当然也是Linux)的哲学。UNIX架构非常依赖于代码的高度可重用性。如果你编写了一个小巧而简单的工具,其他人就可以将它作为一根链条上的某个环节来构成一条命令。Linux让用户满意的原因之一就是它提供了各种各样的优秀工具。下面是一个简单的例子:

这个命令使用了ls和more工具并通过管道实现了文件列表的分屏显示。每个工具就是一个组成部件。通常你可以将许多小巧的脚本程序组合起来以创建一个庞大而复杂的程序。

例如,如果你想打印bash使用手册的参考副本,可以使用如下命令:

此外,因为Linux具备自动文件类型处理功能,所以使用这些工具的用户一般不必了解它们是用哪种语言编写的。如果想要这些工具运行得更快,常见的做法是首先在shell中实现工具的原型,一旦确定值得这么做,然后再用C或C++、Perl、Python或者其他执行得更快速的语言来重新实现它们。相反,如果在shell中这些工具工作得已足够好,就不必再重新实现它们。

是否需要重新实现脚本程序取决于你是否需要对它进行优化,是否需要将程序移植到其他系统,是否需要让它更易于修改以及它是否偏离了其最初的设计目的(这种情况经常发生)。


如果你对shell脚本充满好奇,Linux系统中已经装有许多的shell脚本例子,包括软件包安装程序、.xinitrc和startx文件以及/etc/rc.d目录中用于启动时配置系统的脚本程序。