捐赠?

Harley Hahn
个人主页

给 Harley
发送留言


来自 Harley Hahn 的
个人寄语

Unix 之书
主页

搜索

章节列表

目录

插图列表

各章...
   1   2   3
   4   5   6
   7   8   9
  10  11  12
  13  14  15
  16  17  18
  19  20  21
  22  23  24
  25  26

术语表

各附录...
  A  B  C
  D  E  F
  G  H

命令
摘要...

• 按字母顺序
• 按类别

Unix-Linux
年表

互联网
资源

错误与
勘误

推荐语


教师
与学生
资料...

主页
与概述

练习
与答案

Unix 模范
课程与
课程大纲

教师用
PowerPoint 文件

第 1 章...

Unix 简介 (Introduction to Unix)

本书讲的是如何使用 Unix:它是一个操作系统家族, 在全世界范围内被广泛使用,几乎可以运行在 所有类型的计算机上。本书也讲 Linux, Linux 是 Unix 的一种。

我们将在第 2 章讨论细节。 目前你只需要知道,操作系统是 控制计算机运行的主控程序。

Unix 有很多种:有些是 Linux, 有些不是。一般来说,各种 Unix 都足够 相似,因此在实际使用中, 只要你学会了某一种 Unix, 就等于学会了所有 Unix。

第一个 Unix 系统诞生于 1969 年,由 AT&T 贝尔实验室的一位程序员开发,目的是 让他能够运行一个名为 Space Travel(*)的程序。 如今,Unix 俨然是一种世界性的 文化,包含了许多工具、思想和 习俗。

* 脚注

Space Travel 模拟了太阳和行星的 运动,还有一艘你可以降落在各个位置的 宇宙飞船。前面提到的那位程序员是 Ken Thompson,后来他和 AT&T 贝尔实验室的 几位同事一起,开发出了第一个真正 意义上的 Unix 操作系统(大概是在他们 玩腻了 Space Travel 之后)。

完整的现代 Unix 非常庞大而 复杂。事实上,没有任何人能通晓 Unix 的一切,甚至没有人了解某一种 特定 Unix 的所有细节。实际上, 连大多数 Unix 都了解的人也不存在。

我知道这听起来可能有些奇怪。毕竟, 如果 Unix 如此复杂,它当初是怎么 存在的?是谁在创造和完善 Unix? 出了问题时,又是谁在修改它、 修复故障?

这些问题我会在第 2 章回答, 到时我们会谈谈 Unix 的历史, 以及今天的 Unix 是如何维护的。

眼下,我希望你体会到的是:Unix 远不止 是一个操作系统,它俨然是一种文化。 所以,当你阅读本书、思考自己 所学的东西时,请记住,你做的远不只是 学习又一个计算机工具的使用方法。 你正在成为全球 Unix/Linux 社区的一员, 而这个社区是世界历史上聪明人 最庞大的聚集地。

如果你以前从未用过 Unix,那么你会 不断遇到令人愉悦的惊喜。Unix 学起来 并不容易,但它设计精良、功能极其 强大,而且 — 一旦你习惯了它 — 会带来极大的乐趣。

和所有计算机系统一样,有时你会被 一些乍看之下没有明显解法的问题 弄得一头雾水。有时你也会感到 沮丧或气馁。然而,无论发生什么, 我都可以向你保证一点:你永远 不会觉得无聊。

跳至页首

为什么要使用 Unix?
(Why Use Unix?)

你即将进入的 Unix 文化,其中有 数量庞大的工具等待你去学习和使用。你可以用超乎想象 的方式来创建和处理信息 — 文本 文件、文档、图像、音乐、视频、 数据库、电子表格等等 — 你可以访问互联网,使用万维网、电子邮件、 文件传输和讨论组;你可以 玩游戏;你可以设计自己的网页, 甚至可以运行自己的 Web 服务器; 你还可以使用各种各样的语言和编程工具 编写计算机程序。

当然,用 Windows 等其他 操作系统也能做到这些事情, 那么为什么要学 Unix 呢?

原因有很多,但在此刻, 它们听起来可能相当技术化,所以让我先 给出学习 Unix 的四个 最重要的理由。

第一是选择。使用 Unix, 自己来决定想怎样使用计算机, 以及想在多大程度上深入细节。 你不必按别人(比如微软、苹果, 或者你母亲)认为你应该的方式 使用计算机。你可以按自己的 意愿定制系统,还可以在大量 设计精良的工具和应用程序中做出选择。

第二,使用 Unix 会改变你的思维方式, 而且是往好的方向改变。我相信, 如果你学会阅读莎士比亚、聆听 莫扎特,或者欣赏梵高的画作,从某种意义上 说,你会成为一个更好的人。学习如何使用 Unix 也是一样。

说到这里,你不信我也怪不得你, 但当你读完整本书后,请回到这一章, 重读这一节,看看我说的 对不对。

第三,作为全球 Unix 社区的一员,你将学会使用一些人类有史以来 发明的最出色的工具。

此外,你使用的将是一个可以 连续运行几个月而不必重启的计算机 系统。你不必担心计算机崩溃、死机 或意外停机,而且 — 除非你在 管理一个大型网络 — 你也无需在意 计算机病毒、间谍软件、失控运行的程序, 或为了保持计算机顺畅运行而必须 进行的那些神秘仪式之类的烦心事。

最后,如果你是程序员(或者想 学习成为程序员),你会发现大量出色的 基于 Unix 的工具,用于开发、测试和运行 程序:带有特定语言插件的文本 编辑器、脚本解释器、编译器、交叉编译器、 调试器、模拟器、解析器生成器、图形用户界面 构建器、软件配置管理器、 bug 跟踪软件、构建管理器和 文档工具。而且,对于大多数类型的 编程,都有活跃的社区,拥有自己的 网站、邮件列表和讨论组, 以及包罗万象的软件档案库。

当然,我不可能在一本书里把 Unix 文化 的所有细节都教给你。如果真那样做, 我们俩都会被压得喘不过气。 我会教你基础知识。读完 本书时,你将理解最重要的概念, 会用最重要的工具。当有需要时, 你也能自学任何你想知道的东西。入门时, 你只需要能使用一台运行某种 Unix(比如 Linux)的计算机、一个互联网 连接,以及大量的时间和耐心。

哦,对了,还有一件事:在大多数情况下, 所有东西 — 包括软件升级 — 都是免费的。

跳至页首

Unix 语言
(The Unix Language)

在全世界范围内,Unix 的第一语言是 美式英语。尽管如此,Unix 系统和文档也已被 翻译成许多其他语言,所以只要你的系统能用你的 语言工作,你就不必懂英语。 不过,当你在全球 Unix 社区中探索时,你会发现大量信息和许多讨论组 都使用英语。

此外,Unix 社区还创造了许多 自己的新词。在本书中, 我会特别留意这类词。 每次引入一个新词时,我都会使用大写字母。 我一定会解释这个词,并展示它的 用法。为便于查阅, 所有定义都收录在书末的 术语表中。

当遇到某个历史特别有意思的 名称时,我会给出像这样的 专门说明。

名称的由来

Unix


20 世纪 60 年代,贝尔实验室 (AT&T 的一部分)的几位研究人员在 MIT 参与了一个名为 Multics 的项目, 这是一种早期的分时 操作系统。Multics 是一项协作 工程,参与者包括来自 MIT、GE 和 贝尔实验室的程序员。Multics 这个名字是 "Multiplexed Information and Computing Service"(多路复用信息与计算服务)的首字母 缩略词。("Multiplex"指的是把 多路电子信号合并为一路 信号。)

到 60 年代末,贝尔实验室的 管理层决定不再继续开发 Multics,把研究 人员调回了实验室。1969 年,其中一位 研究人员 Ken Thompson 为一台 小型计算机开发了一个简单、小巧的操作系统。 在考虑名字时,Thompson 把他的新系统 与 Multics 作了比较。

Multics 的目标是同时为多个用户 提供大量功能。Multics 庞大而笨重, 存在许多问题。

Thompson 的系统更小,野心没那么大, 而且(至少在最初)一次仅供 一人使用。此外,系统的每个部分 都被设计为只做一件事, 并把这件事做好。Thompson 决定把自己的 系统命名为 Unics("Uni"意为"单一", 就像 unicycle〔独轮车〕中的"uni"),这个名字 很快就被改成了 Unix。

换句话说,Unix 这个名字是对 Multics 的一种文字双关。

在整本书中,我会把某些名称用 粗体印出,通常是命令的名称。这能让你立刻 看出某个词是一个特殊的 Unix 术语。 举个例子:

"要复制文件,你使用 Unix 的 cp 命令。要移除(删除)文件,你使用 rm 命令。"

跳至页首

学习 Unix 的提示
(Hints for Learning Unix)

阅读本书时,你会注意到许多 学习 Unix 的提示。这些是我认为 对新手和老手都同样重要的想法和捷径。 为了强调这些提示,我用一种 特殊的格式来呈现它们,看起来像这样:

— 提示 —

Unix 很有趣。

跳至页首

不知不觉中使用着 Unix 的人们
(People Who Don't Know They Are Using Unix)

是什么样的人在用 Unix?

严格来说,这个问题没有 确切的答案。全世界有数量庞大的 人在使用 Unix 系统,想要一概而论 是非常困难的。不过,这一点从来没能 拦住我,那我们就试一试吧。

粗略地讲,我们可以把 Unix 用户的世界分成两部分: 知道自己在使用 Unix 的人, 和不知道的人。

大多数使用 Unix 的人 并不知道自己在使用 Unix。这是因为 Unix 被用于许多不同类型的计算机系统, 而这些系统运行得如此出色,以至于 使用它们的人甚至意识不到自己 在使用 Unix。

例如,大多数 Web 服务器运行着某种 Unix。当你访问网站时,你多半 在使用 Unix,至少是间接使用。 许多企业、学校和组织也在 使用 Unix。当你有机会使用它们的计算机 系统时,比如订票、查询信息、 控制机器、注册选课或做办公室 工作,你也在不知不觉中 使用了 Unix。

此外,Unix 还被用来运行各种各样的 机器:不仅包括各种规模的计算机 (从最大的大型机到最小的 手持设备),还包括所谓的 "嵌入式"或"实时"系统:家用电器、 线缆调制解调器、手机、机器人、 卡拉 OK 机、收银机等等。

最后,支撑互联网运行的大部分 机器都使用 Unix。例如,把数据从一个 节点传到另一个节点的计算机(路由器) 全都使用某种 Unix,大多数邮件服务器 (用于存储电子邮件)和 Web 服务器 (用于发送网页)也是如此。一旦 你理解了 Unix,你在上网时发现的许多 古怪之处就会变得合乎情理。 例如,你就会明白输入网页地址时 为什么必须注意大小写 — 也就是 小写字母和大写字母 —。 (正如我提到的,大多数 Web 服务器运行在 某种 Unix 之下,而且你会看到,Unix 是 区分大小写的。)

在我看来,最有趣的一群"不知不觉 中使用了 Unix 的人"是 Macintosh 用户。数以百万计使用 OS X 的 Mac 用户 根本不知道,在其表面之下,OS X 实际上 基于一种名为 FreeBSD 的 Unix。 (我们将在第 2 章更详细地讨论 OS X。)这就是 Mac 如此可靠的原因, 尤其是对比运行 Windows 的 PC 时更是如此 (Windows 绝对不是基于 Unix 的)。

跳至页首

知道自己在使用 Unix 的人们
(People Who Do Know They Are Using Unix)

那么,确实知道自己在 运行 Unix 的人又是怎样的呢?换句话说, 是什么样的人会主动选择 学习 Unix?

以我的经验,这种人(比如 你和我)有四个基本特征。

首先,Unix 一族的智力高于平均水平, 在大多数情况下,比平均水平 高出很多。

其次,Unix 一族既懒惰又 勤奋。他们不愿无缘无故地做那些 瞎忙的工作,可一旦碰到令他们感兴趣的 问题,就会连续几个小时 孜孜不倦地寻找解决方案。

第三,Unix 一族喜欢阅读。在这个 大多数人很难集中注意力超过 五分钟的世界里,Unix 一族遇到问题时 是真的会去阅读手册的。

最后,Unix 一族使用计算机时, 希望自己掌控整个体验;他们不想 觉得是计算机在主宰他们。

你是在对照想想自己吗?如果是, 别担心。你正在读这本书, 而且已经读到了这里,这已经让你 有资格成为 Unix 一族的一员。

跳至页首

如何充分利用本书
(Getting the Most from This Book)

我在设计本书时,力求让你能够 轻松地快速找到所需内容。开始 之前,请花点时间熟悉一下本书的 各个部分。(我知道,听到这话你们 大多数人并不想做,但还是请 做一下吧。)

首先,看一看封底内侧的 Unix 命令速查索引。这份索引列出了 本书涵盖的最重要命令,以及到哪里 查找相关的讨论和示例。

接下来,看一看术语表。它会让你 对本书要教给你的重要概念 有一个总体印象。注意, 要学的东西可真不少。

第三,浏览一下 vi 文本编辑器的 速查索引。一旦你学会了如何使用这个 程序(第 22 章),你会发现这份索引 特别有用。

现在再看一看总索引。花 几分钟时间略读一遍(读新书时 这总是个好主意)。这会让你对即将 遇到的新观念以及我所强调的 内容有一个大致的感觉。

除了术语表和索引之外, 书末还有两份 Unix 命令摘要, 也放在书的后面。这些摘要 对本书讲解的每条命令都给出了 一行描述。

一份摘要按字母顺序 列出命令;另一份摘要按类别 归纳命令。如果你想做某件事 却不知道该用哪条命令,这些摘要是很好的 查阅去处。找到你的命令后, 再对照 Unix 命令速查索引(封底 内侧),看看应该读哪一页。

如果你想查找某个特定 主题的讨论,当然可以使用 总索引。另外,你也可以在术语表中 查阅相应的术语。每条定义都会 附上讲解该术语的章节引用。 一旦知道了你想要的章节, 快速浏览一下目录,就能 找到该读哪一节。

跳至页首

本书做出的假设
(What I Assume in This Book)

关于你使用的是哪种类型的 Unix 系统,本书做了两个 重要假设。

首先,正如你将在第 2 章看到的,Unix 有许多版本。如今,最受欢迎的 Unix 系统 是一类叫作 Linux 的系统。大多数 Unix 系统都包含相同的 基本要素,因此在大多数情况下, 你使用哪种 Unix 都无关紧要。 不过,有时候会在 Linux 或非 Linux 功能之间面临选择。遇到这种情况, 我会倾向于 Linux 的惯例,因为它们 最为流行。

其次,正如你将在第 4 章看到的, 读取并解释你所键入命令的 程序称为 "Shell"。在第 11 章,我会说明有多种 Shell 供你 选择。几乎在所有时候,你用哪种 Shell 都无关紧要。不过在少数 确有影响的场合,我会使用一种名为 "Bash"的特定 Shell。如果你想用其他 Shell,也完全没问题。个别细节 可能有所不同,但你不会遇到任何 真正的问题。

跳至页首

本书不做的前提假设
(What I Do Not Assume In This Book)

如果你是一位经验丰富的计算机 用户,想了解 Unix,本书将 带你入门,并为你在所有重要领域 打下坚实的基础。

但我并不假定你有过任何 先前的经验。即使你从未真正 使用过计算机也没关系。你不需要懂 任何 Unix 知识。你不需要是程序员, 也不需要懂任何电子学或数学。

我会讲解你需要知道的一切。 按你自己的节奏学习,并乐在其中吧。

跳至页首

如何使用本书
(How to Use This Book)

开始之前,重要的是要认识到 Unix 的世界信息爆炸。入门之道 是阅读本书的前七章。它们会带你 认识 Unix,教你基本技能。

— 提示 —

想学会 Unix 的一切是 不可能的。把精力集中在你需要的、以及 你认为自己会感兴趣的内容上。

在你熟悉了 Unix,知道如何开始和 结束一次工作会话、如何键入 命令、如何使用键盘之后,你 就可以按任何你想要的顺序 阅读本书的其余部分。

尽管我已尽力让每一章 尽可能独立,但你应该 意识到,每个主题都依赖于 其他主题。学习 Unix 没有 完美的起点,各主题也没有 完美的学习顺序。

例如,假设你想定制自己的 工作环境。很自然,先阅读关于 Unix 工作环境的章节(第 6 章)是有道理的。 接着,你需要理解我们所说的 "Shell" (第 11 章),以及使用 Shell 的 细节(第 12、13 和 14 章)。到了 这一步,你就可以通过修改某些文件 来定制自己的工作环境了。

然而,要修改文件,最好已经 知道如何使用文本编辑 程序(第 22 章)。既然你 需要保存这些文件,你就应该已经 理解文件系统(第 23 章)、显示 文件的命令(第 21 章), 以及操作文件的命令 (第 24 和 25 章)。而且,当然, 在你键入任何信息之前,还需要了解 如何开始一次工作会话 (第 4 和 5 章),以及如何在 Unix 下 使用键盘(第 7 章)。

显然,这样的思路很快就会 让人原地踏步,但它确实凸显了 你在最开始就需要理解的最重要 原则:Unix 不是为学习而设计的; Unix 是为使用而设计的。换句话说, 学习 Unix 可能令人困惑、 耗时耗力。然而,一旦你掌握了 做任何想要做的工作所需的技能, 使用 Unix 就会又快又轻松。

回想一下你学 开车的时候,你会记得那绝不是 什么简单的事。但一旦有了一些 经验,你的动作就会变得流畅 而自然。如今,你大概可以一只手 扶着方向盘开上一整天,同时听着 收音机、和其他人聊天。

让我们把这个道理浓缩为 下面这条提示:

— 提示 —

Unix 易用,但难学。

请记住,一旦读完本书的前几章, 你就可以按任何顺序自学 任何主题。如果你遇到尚不 理解的概念或技能,可以暂时停下来 快速翻翻另一章,或者跳过让你 困惑的部分,日后再学。现实生活 中,人们就是这样学习 Unix 的: 一次学一点,取决于他们 当下需要什么。

不要为记住每个细节而 担心。在某些章节,我会深入 讲解主题。学那些对你来说 有趣且有用的内容,其余的浏览即可。 只要你掌握了基础,并且知道 有哪些东西可用,需要时你随时 可以回头来钻研细节。

— 提示 —

先学基础知识。然后 想学什么就学什么,想按什么顺序就按 什么顺序。

跳至页首



练习
(Exercises)

复习问题 #1:

第一个 Unix 系统是何时开发的? 这项工作是在哪里完成的?

复习问题 #2:

学习 Unix 的四个重要理由是什么?

复习问题 #3:

"Unix"这个名字是怎么来的?

进一步思考 #1:

2001 年之前,苹果为 Macintosh 台式机 使用的操作系统是完全专有的。2001 年,苹果 推出了一种基于 Unix 的新操作系统 (OS X)。改用基于 Unix 的操作系统 有哪三大优势?又有哪三大劣势?

跳至页首