Logo
Section 1 / 12

Unix设计哲学

了解 Bash 特性如何契合 Unix 哲学。

检查点

Unix设计哲学

了解 Bash 特性如何契合 Unix 哲学。

我们学习了基本的 Bash 内建命令和 GNU 工具,用于操作文件系统。现在,我们已经知道如何通过 shell 运行程序或复制文件。在图形界面(GUI)中,我们也能完成同样的事情。对于这类简单任务,两种接口都同样有效。

Bash 提供了一些 GUI 所不具备的功能。这些功能在处理特定任务时能带来显著的性能提升,有助于自动化工作流程并节省时间。

以下是我们在讨论的 Bash 特性:

  1. 输入输出重定向
  2. 管道(Pipelines)
  3. 逻辑运算符

Unix 设计哲学

道格拉斯·麦克伊罗伊(Douglas McIlroy)是 Unix 的早期开发者之一。他编写了多个著名的命令行工具:spell、diff、sort、join、graph、speak 和 tr。他对 Unix 软件开发的最佳实践总结如下:

  1. 编写只做一件事且把这件事做好的程序。
  2. 编写能够协同工作的程序。
  3. 编写处理文本流的程序,因为文本流是一种通用接口。

这些原则构成了 Unix 哲学的核心。

Unix 哲学的基石是纯文本格式。麦克伊罗伊强调了其重要性,并称之为“通用接口”。使用文本格式,我们既能开发高度专业化的程序,又能将它们灵活组合起来。

文本格式的主要优势在于程序间数据交换的简便性。为了说明这一点,我们来看一个例子。

假设两位开发者独立编写了两个工具,它们均采用文本格式进行输入和输出。这一设计使得我们可以轻松地将这两个工具组合使用,从而实现我们的目标——只需将第一个工具的输出作为第二个工具的输入即可。

当程序之间能够轻松协作时,就不必为它们添加过多复杂功能。例如,我们编写了一个文件复制程序,它运行良好。后来发现,如果加入搜索功能,就能更快地找到并复制所需文件。于是我们添加了搜索机制,效果不错。接着又想增加创建新目录的功能,使程序更易用……如此下去,对单一应用程序的需求会迅速膨胀。

而借助通用接口,我们可以为每个任务选择专门的工具。无需将搜索功能加入自己的程序,只需调用 find 工具,并利用其结果即可。这个工具的实际表现甚至优于我们自己编写的代码,因为它已被众多开发者长期使用,大多数问题和缺陷早已被发现并修复。

因此,在为 Unix 和 Linux 开发软件时,我们应始终优先使用现有的成熟工具。

Quiz

单选题

(判断题)纯文本格式被称为通用接口。

1 / 2

文件和目录

GNU 工具集