从技术史看:Unix 从何而来

作者:大聪明-PLUS日期:2025/10/4

大家好!我是大聪明-PLUS

如今,许多人认为“Unix”和“Linux”是同一个东西。但从 2024 年起,对于大多数我们认为是“Unix”和“Linux”的发行版来说,情况基本如此。

但 Unix 的历史悠久。如果你只了解我们今天所熟知的 Linux 系统,很难想象“Unix 早期的情况是什么样的”,因为自那时以来发生了太多变化。

❯ 从原型到 Unix

让我们回顾一下 Unix 的起源。1969 年,贝尔实验室的研究员 Ken Thompson 正在尝试操作系统设计。

当时,贝尔实验室有一台 PDP-7 计算机,它配备了一些有趣的外设:一个速度非常快(在当时来说)的磁盘驱动器。汤普森对这台驱动器在处理数据时所能达到的最大吞吐量很感兴趣,于是他编写了自己的程序来与硬盘驱动器进行交互。这是一项艰巨的任务:在那个年代,所有程序都是用汇编语言编写的,而编写一个硬盘驱动器驱动程序需要大量的底层代码。

汤普森意识到,这个接口已经投入了大量精力,几乎可以算作一个成熟的操作系统内核了。他估算,只需要三周时间就能完善内核。一周用来创建新的编辑器,一周用来编写汇编程序,一周用来编写内核原型。Unix 操作系统的历史就是从这个原型开始的。

这个早期原型及其蕴含的理念似乎很有意思,于是汤普森和他在贝尔实验室的同事们开始开发它。新系统的唯一设计模式是:多个实用工具,每个工具专注于解决_一个_问题。贝尔实验室的另一位研究员布莱恩·科尼汉建议将新系统命名为“Unix”——与贝尔实验室几年前也在开发的Multis操作系统形成对比。然而,Multis项目最终失败了,因为该操作系统过于复杂。

❯ 早期 Unix

1971 年 11 月,贝尔实验室编译完成了新操作系统的代码,Unix 第一版应运而生。随后,Unix 第二版于 1972 年 7 月发布,Unix 第三版于 1973 年 2 月发布,Unix 第四版于 1973 年 11 月发布。

这些早期版本的 Unix 与现代 Linux 系统并没有太大区别。我们今天使用 Linux 时所依赖的许多命令在 Unix 第二版中就已经存在。例如,用于显示文件的 cat 命令, 用于管理目录、管理 文件和 控制文件访问的mkdir 和 命令 。df 和 du 命令允许您检查磁盘空间使用情况,而 和 命令 (类似于 cd)允许您浏览文件。此外还有许多其他熟悉的命令rmdir cp mv rm chmod chown ls chdir cmp, date echo find ln man mount umount sort wc who

摘自《Unix 第四版》手册。该手册分为几个部分,第一部分涵盖了通用用户命令:

  1. 自定义命令;
  2. 系统调用;
  3. 编程程序;
  4. 特殊文件;
  5. 文件格式;
  6. 用户支持的程序;
  7. 各种各样的;
  8. 支持。

您可能对其中许多命令都很熟悉。它们中的大多数仍然保留在现代 Linux 系统中,但有些已被其他功能几乎与旧命令相同的命令所取代。例如, ar 命令以前用于归档,但现在您可以使用 ziptar

早期版本的 Unix 还包含其他一些至今仍保留但很少使用的命令,例如ar 用于文件归档、 dc 桌面计算器、 ed 文件编辑和校验和 sum 计算的命令。Unix 第二版还支持早期的电子邮件概念(有一个用于电子邮件的命令mail)和一种即时通讯工具:使用命令 mesg 和 , write 您可以通过终端与其他用户交换消息。

使用早期 Unix 版本的程序员使用各种编译器和工具来帮助他们创建新程序。命令as 用于构建程序,而 bas 对于 BASIC 编程,还有诸如 cc (C 编译器)、 db (调试器)、 fc (FORTRAN 编译器)、 ld (链接器)、 nm (列表名称)、( od 八进制转储)、 strip (字符串符号) 和 un (查找未定义符号) 之类的命令。您可能在现代 Linux 系统上认出了这些工具,但其中许多现在都有不同的名称。例如,用于编译 C 程序的命令是gcc

一些 Unix 命令随着时间的推移而发生了变化,但它们的早期版本在 Unix 第二版中很容易辨认。shell sh 支持早期版本的标签 goto和运算符 if。您可能习惯于在 Bash shell 中工作,因为 Bash 语言可以完成所有这些功能以及更多功能。该程序 roff 用于准备文档,是基于几年前出现的 RUNOFF 程序的简化实现。check 和 命令salve 提供与大致相同的文件系统检查fsck,命令 dsw 删除了类似的文件 rm -i,命令 istat 返回 inode 的状态, m6 是最早的宏处理程序之一,并且类似于现代的 m4,并tm 显示系统时间和有关系统保持活动时间的信息。

早期 Unix 系统的其他命令长期以来被保留下来,并用于支持不再存在的系统。例如,Unix 第二版手册描述了与 Honeywell 6070 大型机通信的工具,包括 dpd (通过电话提供数据服务)、 tss (与分时系统通信)以及 opr (离线)文件打印到 Honeywell 6070 系统。

❯ 文本处理

在Unix的第一个版本发布之后,汤普森试图发明一个更强大的系统,以便他能够继续使用Unix。不幸的是,他的管理层不愿投资操作系统研究,因为公司已经因与Multics的失败合作而遭受重创。购买新计算机系统的请求被拒绝了。

但 Unix 团队最终还是抽出时间处理了这件事。大约在同一时间,法律部门正计划购买一套新的文档准备系统,以帮助他们提交专利申请,这需要特定的格式。但他们想买的新软件还没有准备好。Unix 团队提出了一项协议:专利部门为他们购买一台新的 PDP-11 电脑,Unix 专家则负责升级文字处理器roff,实现准备专利申请所需的所有缺失功能。

此外,从技术上讲,没有人会研究操作系统。

这就是为什么 Unix 第二版还包含许多用于处理文档和打印的工具,包括 nroff 版本 roffov 用于拼版打印页面、 pr 用于印前以及 type 用于在打字机等 TeleType 机器上打印页面的工具。

后来,当公司购置了一台照排机时,Unix 团队重写了 nroff,将其变成了troff排版 版本 roff)——该命令包含在 Unix 第 4 版中。其他文本处理工具也支持troff。例如,该工具 eqn 可以生成科学文档的公式并tbl 用于格式化表格。

其他如今已习以为常的 Unix 特性出现在 Unix 的后续版本中。一个典型的例子是使用 _管道_将一个命令作为输入传递给另一个命令。该特性首次出现在 Unix 第三版中。管道使得创建充当过滤器的新程序成为可能。例如,该命令 grep允许比较文本文件并搜索匹配项(Unix 第四版),以及 tee 保存管道命令的中间输出(Unix 第五版)。在 Unix 第七版中,该命令sh最终被提供更多功能的 Bourne Shell 取代。

❯ Unix 中的常见根源

_我们很少会思考日常生活中使用的 Linux 命令的起源。这些命令诞生于计算机运行缓慢、内存以千字节为单位的_时代。那时的工具必须小巧且高度专业化。

从最初的 Unix 到现代 Linux 发行版,可用的命令行选项范围发生了显著变化。随着计算机速度的提升和内存的充裕,每个工具都开始承担越来越多的工作。例如,ls Unix 第二版中的命令仅支持五个选项: 以_长_-l格式 列出 、 按时间而非名称排序、 列出所有文件、 显示每个文件的大小以及 列出目录名称而非其内容。现代GNU 命令不仅支持这些原始选项,还支持超过 50 个扩展选项。-t -a -s -d ls

所有现代类 Unix 系统的起源都可以追溯到最初的 Unix。Linux 就是这样一个系统,它使用 GNU 工具链。GNU 工具链基于 Unix 工具。2024 年,Linux 不再出现在最初的 Unix 架构中,原因很简单:Linux 现在支持 Unix 诞生之初无法想象的架构和工具。但使用命令行的一般原则与 20 世纪 70 年代 Unix 首次开发时大致相同。下次您使用 []ls列出目录中的文件时,请记住,您使用的是已有五十多年历史的工具。


从技术史看:Unix 从何而来》 是转载文章,点击查看原文


相关推荐


笔记本 光驱 的内部结构及用法: 应急系统启动 (恢复) 光盘 (DVD+R/RW)
穷人小水滴2025/10/3

光盘 (CD/DVD/BD) 基本上是一种被淘汰的古老存储技术了, 然而在特定领域, 光盘仍然具有明显的使用价值, 宝刀未老. 低成本 (特别是单张光盘很便宜), 防水防磁耐摔, 只读 (不可修改, 比如 DVD+R, BD-R), 读写设备与存储分离, 这些优点至今难以超越. 笔记本光驱 (轻薄小, 9 ~ 13mm 厚) (二手) 淘宝价约 30 元/个, 5.25 英寸 SATA 大光驱 (台式) (二手) 淘宝价约 20 元/个, 单张光盘 (全新) 只需 2 元. 本文介绍目前还能用的


unzip-6.0-21.el7.x86_64.rpm怎么安装?CentOS 7手动安装rpm包详细步骤
心灵宝贝2025/10/2

本文介绍了如何在 ​CentOS 7​ 系统上手动安装 unzip-6.0-21.el7.x86_64.rpm 这个 RPM 包,包括下载后如何用终端命令进行安装、常见问题的解决方法,以及如何验证是否安装成功 一、确保你有这个 rpm 文件 首先,你电脑上得有这个文件,比如它叫: ​unzip-6.0-21.el7.x86_64.rpm​ 安装包下载:https://pan.quark.cn/s/34cd3075c0fd 二、打开终端(命令行) 在 Linux 系统里(比如 Ce


开源多场景问答社区论坛Apache Answer本地部署并发布至公网使用
秦禹辰2025/10/2

本篇文章介绍如何在本地部署问答软件 Apache Answer,并结合 Cpolar 内网穿透发布至公网。 Answer 是一个高可扩展的开源知识型社区软件,对标国内外知乎等平台,可以免费使用 Answer 高效地搭建一个问答平台,任何组织与个人都可以免费使用 Answer 高效地搭建问答社区,用于产品技术问答、客户支持、用户交流等场景,让组织与用户之间、用户与用户之间更友好地交流、学习和成长。 在 Answer 构建的知识问答社区里,用户可以通过贡献高质量的内容、接受答案以及获得用户投票和


ZooKeeper与Kafka分布式协调系统实战指南:从基础原理到集群部署
荣光波比10/2/2025

本文深入探讨了Apache ZooKeeper和Kafka两大分布式系统核心技术。ZooKeeper作为分布式协调服务,其核心机制包括观察者模式、ZNode数据结构和选举算法,可应用于统一命名、配置管理、集群监控等场景。文章详细解析了ZooKeeper的首次启动和非首次启动选举流程,并提供了完整的集群部署方案,包括环境准备、JDK安装和ZooKeeper配置步骤。通过层次化的数据模型和高效的协调机制,ZooKeeper为分布式系统提供了可靠的基础设施支持。


【Nginx系列】前端重定向
檀越@新空间9/30/2025

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!指令来实现这个 URL 转换。使用 nginx 转为下面的请求。可以使用 nginx 的。


GitHub 热榜项目 - 日榜(2025-09-27)
CoderJia_9/30/2025

本期GitHub热榜持续聚焦AI应用生态,AI代理与RAG框架成为核心热点。Google Gemini生态全面爆发,终端集成(gemini-cli)和API应用(cookbook)占据头部,体现大模型向开发者工具链的深度渗透。RAG技术框架(RAG-Anything)和文档解析(Dolphin)推动检索增强生成落地。边缘AI部署(exo)和开源媒体系统(jellyfin)显示去中心化趋势。整体呈现AI工具平民化、性能优化(gin)与垂直场景深度结合的特征。


MySQL Exporter采集的关键指标有哪些,如何解读这些指标?
IT橘子皮2025/10/5

MySQL Exporter 是 Prometheus 生态中用于监控 MySQL 数据库的核心工具,通过采集丰富的性能指标帮助用户分析数据库运行状态。以下是其关键指标分类及解读方法: 一、核心指标分类与解读 1. ​数据库可用性与基础状态​ ​**mysql_up**​ 值为 1表示 MySQL 实例正常运行,0表示不可用。用于快速判断数据库是否存活。 ​**mysql_global_status_uptime**​ 数据库已运行时间(秒)。若突然归零可能表示实例重启,需结合告警规则


Python 的内置函数 bin
IMPYLH2025/10/6

Python 内建函数列表 > Python 的内置函数 bin bin()函数是Python内置的一个简单但强大的工具,它能够将整数转换为以"0b"为前缀的二进制字符串表示形式。在计算机科学中,二进制是基础中的基础,理解二进制表示对于学习位运算、硬件接口编程、数据压缩等领域都至关重要。 bin 的函数原型如下所示: def bin(x:int): ''' 将一个整数转换为带前缀 `0b` 的二进制字符串 :param x: 一个整数 :return: x


Flex 布局下文字省略不生效?原因其实很简单
序猿杂谈2025/10/8

概述 在开发中,我们常遇到这种布局:A、B、C 三段文本长度不固定,其中 A、C 占用空间较少,需要完整显示;而 B 是自适应区域,超出部分需省略显示。A 与 B 共享同一容器,右侧的 “Live” 按钮与该容器同级,容器应占据除 “Live” 之外的所有剩余空间。 HTML 结构如下: <div class="wrap"> <div class="infos"> <div>Soccer</div> <div class="self">Campeonato De Reser


【LeetCode - 每日1题】水位上升的泳池中游泳问题
(时光煮雨)2025/10/9

🌈 个人主页:(时光煮雨) 🔥 高质量专栏:vulnhub靶机渗透测试 👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~) 🌵目录🌵 难度 ⭐⭐⭐⭐⭐ 题目回顾 ✅解题思路分析 💖 概述 💓 核心思路 ✅ 代码分析 ✅ 复杂度分析 ✅ 测试用例验证 ✅

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0