最终还是命令行

作者: Doc Searls

时代已经改变了 Neal Stephenson 经典著作中的每一个角色,但有一个例外。 那就是 Linux。

在 1999 年末的某个时候,我漫步在 Kepler's,这家 传奇书店, 当我在新书桌上发现一本标题难以辨认的薄书。 封面写着:起初...是命令行

当我 1996 年开始为 Linux Journal 撰稿时,命令行对我来说是新的。 我不是来自 UNIX 或编程领域。 我的技术背景是业余无线电和广播工程,几乎所有的黑客技术都是关于射频硬件的。 当我说我唯一知道的代码是莫尔斯电码时,这不是一个笑话。 但我惊讶于命令行是如此有用和必要,并且我很高兴看到 Neal Stephenson 是那本书的作者。 (专业提示:你可以通过作者名字在封面上的大小来判断作者的商业价值。 如果它比书名还大,那么这位作家就很有名。 字面意思上也是如此。)

所以我买了它,然后我一口气读完了。 你也可以这样做。 事实上,我命令你这样做,如果你还没有这样做的话,因为(恕我直言)这是有史以来关于命令行和 Linux 本身最经典的书籍——一举两得。

我充分了解这一点(我已经多次重读了整本书,这很容易,因为它很短),它提出和强调的大部分内容都已完全过时。 MacOS 和 Be 操作系统早已消失(Be 计算机实际上是胎死腹中),以及当时的 Windows。 今天,Apple 的 OS X 以 BSD 为核心,而微软生产了大量的开源代码,并为 Linux 基金会做出了巨大贡献。 Neal 对当时计算机和文化的某些观察和抱怨也已经失去了相关性,尽管有些仍然持久地正确。 (如果你想阅读对这本书逐节的评论,Garrett Birkel 在 2000 年代中期在 制作了一篇,并获得了 Neal 的许可。 但请先阅读这本书。)

命令行 的伟大之处在于它很好地解释了 UNIX 的原始优点,以及 Linux 作为充分利用它的操作系统。

Unix 机器的文件系统都具有相同的通用结构。 在你脆弱的操作系统上,你可以创建目录(文件夹)并给它们命名,例如 Frodo 或 My Stuff,并将它们放在你喜欢的任何地方。 但在 Unix 下,文件系统的最高级别(根目录)始终用单个字符“/”表示,并且它始终包含相同的顶级目录集

  • /usr
  • /etc
  • /var
  • /bin
  • /proc
  • /boot
  • /home
  • /root
  • /sbin
  • /dev
  • /lib
  • /tmp

并且这些目录中的每一个通常都有自己独特的子目录结构。 请注意对缩写和避免大写字母的痴迷使用; 这是一个由那些对重复性劳损的理解就像矿工对矽肺病理解一样的人发明的系统。 长名称被磨损成三个字母的短小词,就像被河流磨平的石头一样。

这里不是试图解释为什么上述每个目录存在以及其中包含什么的地方。 起初,这一切似乎都很晦涩难懂; 更糟糕的是,它似乎是故意晦涩难懂的。 当我开始使用 Linux 时,我习惯于能够在任何我想要的地方创建目录,并给它们任何我喜欢的名字。 在 Unix 下,你当然可以自由地这样做(你可以自由地做任何事情),但是随着你对系统的经验的积累,你会明白上面列出的目录是为了最好的理由而创建的,如果你遵循(顺便说一句,在 /home 中,你几乎拥有无限的自由),你的生活会轻松得多。

在这种事情发生数百或数千次之后,黑客就会明白为什么 Unix 是这样的,并且同意它不会以任何其他方式存在。 正是这种文化适应让 Unix 黑客对系统充满信心,以及在 Dilbert 漫画中捕捉到的冷静、不可动摇、令人讨厌的优越感态度。 Windows 95 和 MacOS 是产品,是由工程师为特定公司服务的。 相比之下,Unix 与其说是一种产品,不如说是一部由黑客亚文化精心编纂的口述历史。 它是我们的吉尔伽美什史诗。

像吉尔伽美什这样的古老史诗之所以如此强大和长寿,是因为它们是活生生的叙事主体,许多人铭记于心,并一遍又一遍地讲述——每当他们一时兴起时,都会进行自己的个人润色。 不好的润色被驳倒,好的润色被其他人采纳、润色、改进,并随着时间的推移融入到故事中。 同样,Unix 被如此多的黑客所知、喜爱和理解,以至于当有人需要它时,它可以从头开始重新创建。 对于习惯于将操作系统视为绝对必须购买的东西的人来说,这是非常难以理解的。

许多黑客已经启动了或多或少成功的 Unix 理想的重新实现。 每一次都带来了新的润色。 其中一些很快就消失了,一些与不同的黑客攻击同一问题而创建的类似、平行的创新合并,另一些仍然被接受,并被纳入史诗。 因此,Unix 围绕一个简单的内核缓慢地积累,并获得了某种复杂性和不对称性,这种复杂性和不对称性是有机的,就像树根或冠状动脉的分支一样。 理解它更像是解剖学而不是物理学。

还有许多其他精彩的段落。 这是一个例子

在 Linux 下,文档以 man(manual 的缩写)页面的形式出现。 你可以通过 GUI (xman) 或命令行 (man) 访问这些页面。 以下是名为 rsh 的程序的 man 页面的示例

“停止信号仅停止本地 rsh 进程; 这可以说是错误的,但由于原因太复杂而无法在此处解释,目前很难修复。”

man 页面包含大量此类材料,读起来就像飞行员与损坏的飞机控制装置搏斗时的简洁嘟囔声。 总体感觉就像在频闪灯的慢动作光线下看到的一千次巨大但晦涩的斗争。 每位程序员都在处理自己的障碍和错误; 他太忙于修复它们和改进软件,以至于无法长篇大论地解释事情或保持精心设计的伪装。

在实践中,在运行 Linux 时,你几乎不会遇到严重的错误。 当你遇到错误时,它几乎总是与商业软件有关(一些供应商销售在 Linux 下运行的软件)。 操作系统及其基本实用程序太重要了,不能包含严重的错误。 自 1995 年末以来,我每天都在运行 Linux,并且已经看到许多应用程序程序崩溃,但我从未见过操作系统崩溃。 从未。 一次也没有。 有相当多的 Linux 系统已经连续运行并努力工作了数月或数年,而无需重新启动。

商业操作系统对错误的官方立场必须与共产主义国家对贫困的官方立场相同。 出于教条的原因,不可能承认贫困是共产主义国家的一个严重问题,因为共产主义的全部意义在于消除贫困。 同样,商业操作系统公司(如 Apple 和 Microsoft)也不能到处承认他们的软件有错误并且总是崩溃,就像迪士尼不能发布新闻稿声明米老鼠是穿着西装的演员一样。

这是一个问题,因为错误确实存在,并且错误确实会发生。 每隔几个月,比尔·盖茨都会尝试在众多观众面前演示一款新的微软产品,结果却当场崩溃。 商业操作系统供应商,由于商业化的直接后果,被迫采取非常虚伪的立场,即错误是罕见的异常现象,通常是别人的错,因此不值得详细讨论。 每个人都知道这种姿态是荒谬的,但这不仅限于新闻稿和广告宣传活动。 它影响着这些公司开展业务和与客户建立联系的整个方式。 如果文档编写得当,它将在每一页上提及错误、错误和崩溃。 如果这些操作系统附带的在线帮助系统反映了用户的经验和担忧,那么它们将主要用于说明如何应对崩溃和错误。

但这并没有发生。 股份制公司是一项了不起的发明,它为我们带来了许多优质的商品和服务。 他们擅长很多事情。 承认失败不是其中之一。 见鬼,他们甚至不承认小的缺点。

我可以继续说下去,但我宁愿你读这本书,而不是透露更多内容。

虽然网上各种来源(包括 维基百科)都说 Neal 可能不会更新这本书,但 他自己关于这本书的页面 上说

这最初只是一系列关于图形用户界面 (GUI) 的思考,逐渐形成了文章的形状。 当时,我们一时冲动,决定将其发布在我出版商的网站上。 今天我们会说它像病毒一样传播开来,但在那时我们会说它已经被 Slashdotted 了。 无论如何,由此产生的流量使出版商的服务器崩溃,直到各种读者建立镜像站点来处理负载。 这篇文章需要更新,我正在慢慢地进行这项工作,但这里仍然有一些材料许多读者可能会觉得有趣。

我相信至少其中一些人是 Linux Journal 的读者。

如果你想购买这本书,这是亚马逊链接。 如果你想在线阅读整本书,请查找它。 (我在搜索结果的第一页中数到了四个完整的副本。)

Neal,请告诉我们更新何时准备就绪。 这将是新闻,我们想要独家报道。

Doc Searls 是 Linux Journal 的主编,自 1996 年以来他一直在 编委会任职。 他还是 The Cluetrain Manifesto (Basic Books,2000 年,2010 年)的合著者, The Intention Economy: When Customers Take Charge (Harvard Business Review Press,2012 年)的作者,加州大学圣巴巴拉分校 信息技术与社会中心 (CITS) 的研究员,以及哈佛大学 伯克曼克莱因互联网与社会中心 的校友研究员。 他 继续运营着 ProjectVRM,这是他在 2006 年在 BKC 发起的项目,并且是其非营利性衍生机构 Customer Commons 的联合创始人兼董事会成员。 通过 ljeditor@linuxjournal.com 联系 Doc。

加载 Disqus 评论