引言

    我想告诉大家一个你如何才能夺回计算机管理权的故事。

    在20世纪70年代末,我刚开始和计算机打交道时,正进行着一场革命,那时的我还是一名大学生。微处理器的发明,使普通老百姓(就如你和我)真正拥有一台计算机成为可能。今天,人们难以想象,只有大企业和强大的政府才能够拥有计算机的世界,是怎样的一个世界。简单说,你做不了多少事情。

    今天,世界已经截然不同了。计算机遍布各个领域,从小手表到大型数据中心,及大小介于它们之间的每件东西。除了随处可见的计算机之外,我们还有一个无处不在的连接所有计算机的网络。这已经开创了一个奇妙的,个人授权和创作自由的新时代,但是在过去的二三十年里,一些事情一直在发生着。一个大公司不断地把它的管理权强加到世界上绝大多数的计算机上,并且决定你对计算机的操作权力。幸运地是,来自世界各地的人们,正积极努力地做些事情来改变这种境况。通过编写自己的软件,他们一直在为维护电脑的管理权而战斗着。他们建设着 Linux。

    一提到 Linux,许多人都会说到“自由”,但我不认为他们都知道“自由”的真正涵义。“自由”是一种权力,它决定你的计算机能做什么,同时能够拥有这种“自由”的唯一方式就是知道计算机正在做什么。“自由”是指一台没有任何秘密的计算机,你可以从它那里了解一切,只要你用心的去寻找。

    你是否注意到,在电影中一个“超级黑客”坐在电脑前,从不摸一下鼠标,就能够在30秒内侵入到超安全的军事计算机中。这是因为电影制片人意识到,作为人类,本能地知道让计算机圆满完成工作的唯一途径,是用键盘来操纵计算机。

    现在,大多数的计算机用户只是熟悉图形用户界面(GUI),并且产品供应商和此领域的学者会灌输给用户这样的思想,命令行界面(CLI)是过去使用的一种很恐怖的东西。这就很不幸,因为一个好的命令行界面,是用来和计算机进行交流沟通的非常有效的方式,正像人类社会使用文字互通信息一样。人们说,“图形用户界面让简单的任务更容易完成,而命令行界面使完成复杂的任务成为可能”,到现在这句话仍然很正确。

    因为 Linux 是以 Unix 家族的操作系统为模型写成的,所以它分享了 Unix 丰富的命令行工具。Unix 在20世纪80年代初显赫一时(虽然,开发它在更早之前),结果,在普遍地使用图形界面之前,开发了一种广泛的命令行界面。事实上,很多人选择 Linux(而不是其他的系统,比如说 Windows NT)是因为其可以使“完成复杂的任务成为可能”的强大的命令行界面。

    1.2 这本书讲什么

    这本书介绍如何生存在 Linux 命令行的世界。不像一些书籍仅仅涉及一个程序,比如像 shell 程序,bash。这本书将试着向你传授如何与命令行界面友好相处。它是怎样工作的? 它能做什么? 使用它的最好方法是什么?

    这不是一本关于 Linux 系统管理的书。然而任何一个关于命令行的深入讨论,都一定会牵涉到系统管理方面的内容,这本书仅仅提到一点儿管理方面的知识。但是这本书为读者准备好了学习更多内容的坚实基础,毕竟要胜任系统管理工作也需要良好的命令行使用基本功。

    这本书是围绕 Linux 而写的。许多书籍,为了扩大自身的影响力,会包含一些其它平台的知识,比如 Unix, MacOS X 等。这样做,很多内容只能比较空泛的去讲了。另一方面,这本书只研究了当代 Linux 发行版。虽然,对于使用其它类 Unix 系统的用户来说,书中95%的内容是有用的,但这本书主要面向的对象是现代 Linux 命令行用户。

    不过一般来说,对于 Linux 的启蒙教育,没有捷径可言。学习命令行富于挑战性,而且很费气力。这并不是说 Linux 命令行很难学,而是它的知识量很大,不容易掌握。Linux 操作系统,差不多有数以千计的命令可供用户操作。由此可见,要给自己提个醒,命令行可不是轻轻松松就能学好的。

    另一方面,学习 Linux 命令行会让你受益匪浅,给你极大的回报。如果你认为,现在你已经是高手了。别急,其实你还不知道什么才是真正的高手。不像其他一些计算机技能,一段时间之后可能就被淘汰了,命令行知识却不会落伍,你今天所学到的,在十年以后,都会有用处。命令行通过了时间的检验。

    如果你没有编程经验,也不要担心,我会带你入门。

    1.4 这本书的内容

    这些材料是经过精心安排的,很像一位老师坐在你身旁,耐心地指导你。许多作者用系统化的方式讲解这些材料,虽然从一个作者的角度考虑很有道理,但对于 Linux 新手来说,他们可能会感到非常困惑。

    另一个目的,是想让读者熟悉 Unix 的思维方式,这种思维方式与 Windows 不同。在学习过程中,我们会帮助你理解为什么某些命令会按照它们的方式工作,以及它们是怎样实现那样的工作方式的。Linux 不仅是一款软件,也是 Unix 文化的一小部分,它有自己的语言和历史渊源。同时,我也许会说些过激的话。

    这本书共分为五部分,每一部分讲述了不同方面的命令行知识。除了第一部分,也就是你正在阅读的这一部分,这本书还包括:

    • 第二部分 — 学习 shell 开始探究命令行基本语言,包括命令组成结构,文件系统浏览,编写命令行,查找命令帮助文档。

    • 第三部分 — 配置文件及环境 讲述了如何编写配置文件,通过配置文件,用命令行来操控计算机。

    • 第四部分 — 常见任务及主要工具 探究了许多命令行经常执行的普通任务。类似于 Unix 的操作系统,例如 Linux, 包括许多经典的命令行程序,这些程序可以用来对数据进行强大的操作。

    • 第五部分 — 编写 Shell 脚本 介绍了 shell 编程,一个无可否认的基本技能,能够自动化许多常见的计算任务,很容易学。通过学习 shell 编程,你会逐渐熟悉一些关于编程语言方面的概念,这些概念也适用于其他的编程语言。

    1.5.1 前提条件

    为了使用这本书,你需要安装 Linux 操作系统。你可以通过两种方式,来完成安装。

    1. 在一台(不用很新)的电脑上安装 Linux。你选择哪个 Linux 发行版安装,是无关紧要的事。虽然大多数人一开始选择安装 Ubuntu, Fedora, 或者 OpenSUSE。如果你拿不定主意,那就先试试 Ubuntu。由于主机硬件配置不同,安装 Linux 时,你可能不费吹灰之力就装上了,也可能费了九牛二虎之力还装不上。所以我建议,一台使用了几年的台式机,至少要有256M 的内存,6G 的硬盘可用空间。尽可能避免使用笔记本电脑和无线网络,在 Linux 环境下,它们经常不能工作。


    注意:
    不管你怎样安装 Linux,为了练习书中介绍的知识,你需要有超级用户(管理员)权限。


    当你在自己的电脑上安装了 Linux 系统之后,就开始一边阅读本书,一边练习吧。本书大部分内容都可以自己动手练习,坐下来,敲入命令,体验一下吧。

    拓展阅读

    Wikipedia 网站上有些介绍本章提到的名人的文章,以下是链接地址:

    介绍自由软件基金会及 GNU 项目的网站和文章: