FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章与书籍
  • UNIX 四分之一世纪
  • Unix 痛恨者手册
  • 《Unix 四分之一世纪》翻译项目
  • 前言
  • 致谢
  • 简介
  • 序幕
    • 太空序曲
    • 1969 年夏到 1970 年秋
    • 机械计算和电子计算
    • 操作系统
    • MAC 项目:CTSS 和 Multics
  • 一款系统的诞生
    • PDP-11
    • 1971 年,第 1 版
    • 1971-1973,C 语言和管道
    • 1973,第一篇论文
    • 法律 第一幕
  • 是什么让 UNIX 成为 UNIX?
    • 用户 第一幕
    • 为什么是 Unix
    • 风格和工具
    • PWB 和 MERT
    • 实用工具
  • Unix 的传播与发展
    • 用户 第二幕
    • 伯克利 Unix 第一幕
    • 第 7 版
    • 伯克利 Unix 第二幕
    • 商业 Unix
    • DEC
    • 法律 第二幕
  • Unix 产业
    • /usr/group
    • Sun 和 JAW
    • 标准
  • 现状
    • 互相争斗的 Unix
    • 衍生版本
    • OSF 和 UI
    • VAX 后的伯克利 Unix
    • 法律 第三幕
  • 落幕
    • 结语:Unix 为什么能成功
    • 进一步阅读
    • 人物与术语表
    • 附图
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
在GitHub上编辑
导出为 PDF
  1. 一款系统的诞生

1971 年,第 1 版

随着 PDP-11/45 的到来,系统开始发展壮大。它在指令、子程序和游戏方面慢慢扩展。但学习它的唯一途径就是和其中一位作者坐下来,提出问题。

Joe Condon 的团队“拥有”最初的 PDP-7,后来他调到了计算研究部门。他向 Mike Mahoney 回忆了 Bob Morris 是如何引导他进入 Unix 思维方式的。

我会过去问:“你怎么理解这些命令的功能?”因为手册,尤其是手册页,并不是那么清楚。他(Morris)说:“你觉得合理的做法是什么?试着自己实验一下,弄明白,Joe。”这至少揭示了他以及其他一些人的哲学(我觉得 Dennis 也是这样)的一个非常有趣的线索:一个系统命令和功能应该以一种容易理解的方式工作;它不应该是隐藏在一堆规则、冗词赘句之中的复杂功能,这其实是一门认知工程学的领域。

我觉得 Bob Morris 告诉我的是,黑盒本身应该足够简单,以至于当你形成对黑盒中发生事情的模型时,这个模型实际上就是黑盒中真正发生的事情。你不应该写一个程序去试图智胜使用者,去猜测他们想做什么。你应该让它的功能一目了然。

据 Ritchie 说,是 Mcllroy 竭力争取到了程序员手册。Mcllroy 说,最早设计并编写第一个 man 页面的是 Ritchie。这个页面似乎是 cat(连接文件命令)。Ritchie 告诉我,他不记得是谁想出了这个格式。不过,这种边设计边实现的方式非常聪明:我们至今还在使用。Doug Mcllroy 认为程序员手册是保持系统完整性和一致性的一种方式,而 Ritchie 所做的就是为这种完整性设定了风格。

如今,许多人觉得 man 页面过于简洁,信息不足,但无论有多少抱怨,它们远远优于其他操作系统中提供的信息。

贝尔电话实验室计算机系统研究部门后来负责人 Sandy(A.G.)Fraser 在和 Mahoney 交谈时谈到了 Mcllroy 和程序员手册:

你可能会认为那只是文书工作,但不要这么想。手册的存在,以及他对手册高标准的坚持,意味着他对每一个被记录的程序也都坚持高标准。正如他们刚刚所说,为了制作手册的下一版,所做的工作包括重写各种程序,以确保它们达到同样的高标准。更重要的是,这可能是第一个在手册中专门设有“错误”章节的手册。这种诚实的程度很少见。他们并不是因为懒得修复而仅仅记录了错误;他们修复了很多错误,但有些错误不那么容易修复,或者不确定该怎么做,所以就把这些问题记录了下来。我认为这种活动中体现出的知识诚实是非常罕见的。

Doug Mcllroy 也谈到了那本手册:

整理出一份文档以便能够讲清楚,这其实是 Unix 的一个典型特点。每次手册出新版本,都会引发一阵忙碌,当你把那些丑陋的东西写下来时,会说:“这可不能印出来,”然后你就会删掉一些功能,增加一些功能,让它们更容易讲清楚。这也是研究中心的好处——你不用非得让任何旧软件继续运行。

实际上,当我仔细查看第一批四本手册(1971 年 11 月至 1973 年 11 月)时,强烈感觉到每一本都在排版前都经历了大量修改:系统本身处于不断变化之中,文档也反映了这种变化。《第一版手册》的第二段指出:“系统变化速度极快,以至于大量早期章节在其他章节编写过程中不得不被修改。”但这种变化正是因为系统是一个有生命、不断成长的实体。阅读 Thompson 在每一版开头写的简短说明可以说明这一点。

《UNIX 程序员手册》(作者 К. Thompson 和 D. M. Ritchie)的第一版日期为“1971 年 11 月 3 日”。它以两页半的“介绍”开头,接着是超过三页的“目录”。目录被划分为若干部分,这些部分包含了每个命令、系统调用、子程序、特殊文件、文件格式、用户维护的程序和“杂项”,这些分类对该领域产生了深远影响。十五年后的 1986 年,伯克利版 Unix(4.3BSD)的七卷手册仍按相同的小标题排列(尽管多年间,编号体系有所扩展,第六类变成了“游戏”类别——最初该类别里有四款游戏:bj(黑杰克)、chess(国际象棋)、moo(猜谜游戏)和 ttt(井字棋),还有像 sort(对文件按字母排序)和 cal(打印日历)这样的程序)。其中,chess 特别重要,因为 Ken Thompson 是一名严肃的国际象棋爱好者,也是 Belle 计算机国际象棋冠军的创造者。十年后,Belle 成为世界计算机国际象棋冠军(据说当 Thompson 把 Belle 带到荷兰时,有人问这台机器是否是“海关威胁”,他回答说:“只有从飞机上掉下来时才是”)。

1973 年时,文本处理功能中已经具备了构建“置换索引”的能力,即索引中包含系列中每个条目。由于手册不同章节中存在相似的命令名称,引入了命令 (章节) 的表示法以避免混淆。因此,cp(1) 表示拷贝命令在第 1 章,dc(1) 指代第 1 章中的桌面计算器,而 dc(4) 指代第 4 章中的一个特殊文件,用于操作远程打字机(此命令在第 6 版后消失)。cat(1) 指“连接文件”,而 cat(4) 指“C/A/T 照排机接口”。

这份介绍在许多方面都很引人入胜,尤其是因为它向读者/用户揭示了各个部分的负责人。因此,其中包含了这样一份名单:

ken K. Thompson

dmr D. M. Ritchie

jfo J. F. Ossanna

rhm R. Morris

作为各个程序的“负责人”。Unix 社区中“功劳归功于功劳者”的传统就是从这里开始的。这个传统在社区的许多地方得以延续,尽管大型企业用户(如 DEC、HP、IBM、Sun)已经从他们的文档中去除了名字、首字母缩写或登录名。Lorinda Cherry 曾指出,这其中的原则很简单:“最后接触它的人,就是它的拥有者。”而这些拥有者以他们的登录名列出,因为他们已经使用电子邮件和类似 write 这样的交互程序。

第一版手册包含了什么?我认为最简单的说法是:很多内容。就系统结构而言,只有管道(pipe,我们稍后会介绍)当时还不存在。第一章中只有 60 个用户命令。

命令
说明

ar

归档文件

chdir

更改工作目录

as

汇编器

check

检查文件系统一致性

b

编译 B 程序

chmod

更改访问权限

bas

BASIC 方言

chown

更改所有者

bcd

转换 ASCII 到 BCD

cmp

比较文件内容

boot

重启系统

cp

复制文件

cat

连接文件

date

获取日期和时间

db

符号调试器

dbppt

写二进制纸带

dc

桌面计算器

df

查找空闲磁盘空间

dsw

交互式删除文件

dtf

格式化 DECtape

du

查找磁盘使用情况

ed

文本编辑器

find

查找指定名称的文件

for

编译 FORTRAN 程序

sdate

调整日期和时间

sh

命令解释器

stat

获取文件状态

hup

挂断打字机

strip

移除符号

lbppt

读二进制纸带

su

成为超级用户

ld

链接编辑器(加载器)

sum

文件求和

ln

创建文件链接

tap

操作 DECtape

ls

列出目录内容

tm

获取时间信息

mail

发送邮件

tty

查找终端名

mesg

允许或拒绝消息

type

打印 IBM 2741 文件

mkdir

创建目录

un

查找未定义符号

mkfs

创建文件系统

wc

统计字数

mount

挂载可拆卸文件系统

who

查询系统当前用户

write

向其他用户写信息

mv

移动或重命名文件

nm

打印符号列表

在这 60 款命令中,许多对我们来说仍然很熟悉,尽管几乎没有纸带阅读器、DEC RK05 磁盘或者 IBM 2741 打字机(如果还有的话)存在。其他命令则失去了实用性或演变成了别的东西:dsw(使用开关删除)被合并进了 rm(删除),db 在第七版中变成了 adb;for 在第二版中变成了 fc,后来在第七版变成了 f77;lbppt 在第五版变成了 restor;dbppt 变成了 dump。许多命令则完全消失了:dtf 在第一版后消失,hup、rkd、rkf、rkl 和 sdate 也一样。

(臭名昭著的)creat“创建新文件”命令位于第二部分——系统调用中。老用户回忆起 Thompson 曾说,他最大的错误是漏掉了 creat 中的 -e 结尾,这让人忍俊不禁。

Doug Mcllroy 告诉我,Thompson 其实错了,最大的错误是“把 Unix 拼成全大写。Unix、Fortran 以及其他好的计算机词汇都是专有名词。用专有名词形式书写的页面要比用全大写字母写的页面更吸引人。”这番话促使我在这段历史中大多使用 Unix 而非 UNIX。如我所说,系统处于不断变化之中。接下来的两年是非常激动人心的时期。

贝尔电话实验室 Unix 各版本说明

注意:以下是 AT&T 贝尔实验室发布的十个版本的《UNIX 程序员手册》。第十版于 1990 年作为商业出版物发行。第一至第六版的标题页上署有 Thompson 和 Ritchie 的名字;第七版则首次以“UNIX™ TIME-SHARING SYSTEM”(UNIX 分时系统)为标题,未署作者名,虽然有一篇由“B. W. Kernighan 和 M. D. McIlroy”撰写的简短“前言”。第八版和第九版的简短前言仅由 McIlroy 撰写;这两版也标注为 Research Version。第十版的前言署名为“A. G. Hume, M. D. McIlroy, 1989 年 10 月”。

版本
时间

第一版

1971 年 11 月 3 日

第二版

1972 年 6 月 12 日

第三版

1973 年 2 月

第四版

1973 年 11 月

第五版

1974 年 6 月

第六版

1975 年 5 月

第七版

1979 年 1 月

第八版

1985 年 2 月

第九版

1986 年 9 月

第十版

1989 年 10 月

上一页PDP-11下一页1971-1973,C 语言和管道

最后更新于7天前