前 言 UNIX操作系统和C语言改变了人们使用计算机和学习计算机编程的方式。虽然计算机技术发展迅猛,但是某些技术并没有改变,UNIX就是其中之一,它经历了时间的考验。现在,仍无需对UNIX的前途产生怀疑,因为至少由于Linux操作系统的存在,在可预见的将来,它仍会在历史舞台上扮演自己的角色。 虽然本书只讨论某个特定的操作系统,但是它将有助于读者理解通用的操作系统。作者就是抱着这样的目的编写本书的第4版的。事实上,操作系统的理论课程经常利用UNIX系统说明操作系统的关键技术。自从UNIX出现以来,我们还没有见到一个能与之相媲美的操作系统,因此如果未来的其他操作系统采用了UNIX众多关键技术的一部分,我们也不会感到意外。 许多用户偏向使用Windows操作系统提供的友好界面。因此,面对UNIX时,他们也许会问这样的问题:“既然简单地使用鼠标就能操作计算机,为什么还需要用键盘输入命令呢?”这样的想法没有错,但是UNIX的忠实支持者可以轻而易举地举出几个例子证明鼠标并不是万能的。当读者读完本书的第Ⅰ部分之后,就会发现:一些复杂的任务单凭鼠标操作不能完成,而必须利用系统提供的各种工具,并且需要利用shell命令解释器进行编程。对UNIX的忠实用户来说,UNIX的界面是否友好并不重要。它只是生活的一种方式,而这种生活方式正是人们所不断追求的。 UNIX历经不衰的原因 尽管UNIX是由工程和科学研究团体共同创造的,但是由于它的健壮性,以及没有与之媲美的代替品,使得它在商业界得到普遍的认可。UNIX在掌上电脑和超级计算机上普遍流行。它是企业管理数据库、ISP服务器、Web服务器和电子商务的首选平台。更重要的是,由于广大计算机精英们的不懈努力,它的性能和功能正日趋完善。因此,将会有越来越多的人选择UNIX。 UNIX提供了两个最优秀的文本编辑器(vi 和 emacs),它的文本处理功能无与伦比。UNIX利用各种命令的组合,解决了复杂的文本编辑问题。利用shell的可编程特性,用户很容易开发出非交互式的应用程序,而且用户还可以为这些应用程序制定运行时间表,使它们在某些特定的时间运行。读者很快就会发现,UNIX实际上一直在鼓励用户创造性地使用它的基本工具集,读者不久就会喜欢上UNIX操作系统的这个特点。 但历史上的UNIX曾出现过混乱的局面,这确实是一件令人非常沮丧的事。现在由于POSIX(可移植操作系统接口)和Open Group等标准化组织的出现,这些问题得到了解决。现在UNIX拥有唯一的标准,即单一UNIX规范(The Single UNIX Specification)。它明确规定了一个UNIX操作系统必须具备的特性。只要参照该标准开发出来的应用程序无需任何修改就可以在所有的UNIX系统上运行。本书用POSIX表示这个规范。 本版特色 本版比上一版少了几章的内容,但是整体的篇幅没有减少。我坚持认为,UNIX系统的管理员需要另外一本参考书,所以在本版中,减少了这部分的内容。另外,由于TCP/IP和网络配置也不是基本UNIX必不可缺少的部分,所以在本版,只用一章的篇幅讨论这部分内容。我把网络管理及相关的内容放到Web主页上。本版还具有以下的重要特点: ● 大量的旁白。这些旁白的标题为“工作原理”。尽管这些内容是可选的,但是它们可以帮助读者更全面地理解UNIX的工作原理,并且它们是UNIX环境下编程的基础。 ● 专门有一章介绍程序开发工具。这些工具包括make工具和版本控制工具(如SCCS和RCS等)。如果读者需要开发大型的项目,则需要利用这一章的知识进行项目管理。 ● 专题讨论密码学和SSH(安全外壳套件,Secure Shell Suite)提供的工具。由于黑客的威胁日益严重,很容易对我们的生活和网上交易造成威胁,所以我们需要了解数据加密的原理和方法。 ● 有关vi编辑器命令的使用指南已单独列在附录B里。其实原本就想这样安排,现在终于实现了。 ● 特别推出了“命令反查表”,放在附录C里。读者可以用它来根据任务找到相应的命令。 本书也讨论了Linux操作系统,但是它不是作为UNIX的替代品,而是作为UNIX的一个重要实现。读者要把Linux当作学习Unix的入门版本。与UNIX的各种类型(如Solaris, HP-UX和AIX)一样,Linux也遵循了POSIX规范和单一UNIX规范。事实上,在Linux与UNIX的各个类型之间,它们的相似性远超过其差异性。本书不鼓励使用Linux专有的功能。 接下来,我们要读者的是,虽然许多人喜欢UNIX/Linux是由于它的用户图形界面(GUI),但读者必须明白这样的事实:GUI是用来查看图形和浏览Web页面的。以窗口形式使用UNIX往往弄巧成拙。如果你欣赏UNIX命令行的交互方式,那么本书正适合你。尽管本书也有一章的篇幅介绍X Window系统的特性,但是在本书以后的版本中,肯定要减少这方面的内容。 每章后面的练习都经过重新编排。与前几版相比,本版的练习更多,也更富有挑战性。每章都有一个“测试练习”,其中包含的都是一些比较简单的问题,但是希望读者在继续阅读后面章节之前,先努力完成这些练习。附录D中有这些练习的参考答案。比较难的问题放在“思考题”中。 书中的全部示例都可以在大多数UNIX/Linux系统上运行,针对某些特定系统的一些示例都有详细的说明。另外,本书中使用了一些缩略语,现列举如下: SVR4——System V Release 4。 sh——Bourne shell。 csh——C shell。 ksh——Korn shell。 $HOME/flname,~/flaname——均指主目录下的flaname文件。 foo和bar——泛指USENET中使用的文件名和目录名。 致谢 与Vibha Mahajan合作总是一件令人愉快的事,在以前的版本中和本版中都是如此。Jacob Alexander给出了不少好建议,并且远远超出了我的期望。感谢Mini Narayanan和Sohan Caur,所做的工作。感谢我的妻子Julie和我的女儿Sohini,她们一直是我灵感的源泉。 希望读者从这里开始令人激动的UNIX之旅! SUMITABHA DAS ?? UNIX原理与应用(第4版) 前 言 VIII IX