第零章:介绍

我想给你讲个故事。

不,不是关于1991年Linus Torvalds如何编写Linux内核第一个版本的故事。你可以在很多Linux书籍中读到这个故事。我也不会告诉你几年前Richard Stallman如何开始GNU项目来创建一个自由的类Unix操作系统的故事。这也是一个重要的故事,但大多数其他Linux书籍也有这个故事。

不,我想告诉你如何夺回对电脑的控制权。

20世纪70年代末,当我还是一名大学生时,一场革命正在进行。微处理器的发明使像你我这样的普通人能够真正拥有一台电脑。今天的许多人很难想象,当只有大企业和大政府运行所有的电脑时,世界是什么样子的。这么说吧,你做不了多少事。

今天,世界已经大不一样了。计算机无处不在,从微型手表到大型数据中心,再到介于两者之间的一切。除了无处不在的计算机,我们还有一个无处不在的网络将它们连接在一起。这创造了一个个人赋权和创作自由的奇妙新时代,但在过去的几十年里,发生了其他事情。一些大公司一直在控制世界上大多数的计算机,并决定你能用它们做什么和不能做什么。幸运的是,来自世界各地的人们正在采取行动。他们正在通过编写自己的软件来努力保持对计算机的控制。他们正在构建Linux。

许多人谈到Linux的“自由”(freedom),但我认为大多数人不知道这种自由的真正含义。自由是决定你的电脑做什么的权力,而拥有这种自由的唯一方法就是知道你的电脑在做什么。自由是一台没有秘密的电脑,如果你足够关心,一切都可以知道。

第零章:介绍为什么使用命令行?这本书是关于什么的谁应该读这本书这本书里有什么如何阅读此书先决条件第六版互联网版本有什么新内容致谢第六版互联网版以前版本需要您的反馈!进一步阅读

为什么使用命令行?

你有没有在电影中注意到,当“超级黑客”——你知道,一个能在不到30秒内闯入超安全军用电脑的人——坐在电脑前,他从不碰鼠标?这是因为电影制作人意识到,作为人类,我们本能地知道,在电脑上真正完成任何事情的唯一方法就是在键盘上打字!

如今,大多数计算机用户只熟悉图形用户界面(GUI),供应商和专家也告诉他们,命令行界面(CLI)是过去的一件可怕的事情。这是不幸的,因为一个好的命令行界面是一种非常富有表现力的与计算机通信的方式,就像人类的书面文字一样。有人说“图形用户界面使简单的任务变得容易,而命令行界面使困难的任务成为可能”,这在今天仍然非常正确。

由于Linux是仿照Unix操作系统家族建立的,因此它与Unix共享丰富的命令行工具。Unix在20世纪80年代初开始崭露头角(尽管它是在十年前首次开发的),当时图形用户界面尚未被广泛采用,因此开发了一个广泛的命令行界面。事实上,Linux早期采用者选择它而不是Windows NT的最有力原因之一是强大的命令行界面,使“困难的任务成为可能”(difficult tasks possible)。

这本书是关于什么的

这本书对Linux命令行上的“生活”进行了广泛的概述。与一些只关注单个程序的书籍不同,如shell程序 bash ,这本书将试图从更广泛的意义上传达如何与命令行界面相处。这一切是如何运作的?它能做什么?使用它的最佳方式是什么?

这不是一本关于Linux系统管理的书。虽然对命令行的任何严肃讨论都会不可避免地涉及系统管理主题,但本书只涉及少数管理问题。然而,它将为读者提供使用命令行的坚实基础,从而为进一步的学习做好准备,命令行是任何严肃的系统管理任务的重要工具。

这本书非常以Linux为中心。许多其他书籍试图通过包括通用Unix和macOS等其他平台来扩大其吸引力。在这样做的过程中,他们“淡化”了内容,只突出了一般主题。另一方面,这本书只涵盖了当代的Linux发行版。95%的内容对其他类Unix系统的用户有用,但这本书主要针对现代Linux命令行用户。

谁应该读这本书

这本书是为从其他平台迁移过来的Linux新用户准备的。你很可能是某个版本的Microsoft Windows的“高级用户”。也许你的老板告诉你管理Linux服务器,或者你正在进入令人兴奋的单板计算机(single board computers,SBC)新世界,如Raspberry Pi。你可能只是一个桌面用户,厌倦了所有的安全问题,想试试Linux。那很好。这里欢迎大家。

话虽如此,Linux启蒙没有捷径。学习命令行具有挑战性,需要付出真正的努力。不是因为它太难,而是它太大了。一般的Linux系统有数千个程序可以在命令行上使用。认为自己受到了警告;学习命令行并非易事。

另一方面,学习Linux命令行是非常有益的。如果你现在认为自己是一个“高级用户”(power user),那就等着吧。你还不知道什么是真正的力量。而且,与许多其他计算机技能不同,命令行的知识是持久的。今天学到的技能在10年后仍然有用。命令行经受住了时间的考验。

我们也假设你没有编程经验,但别担心,我们也会让你走上这条路。

这本书里有什么

这些材料是按照精心挑选的顺序呈现的,就像坐在你旁边的导师在引导你一样。许多作者以“系统”的方式处理这些材料,按顺序详尽地涵盖每个主题。从作者的角度来看,这是有道理的,但对新用户来说可能会非常困惑。

另一个目标是让你熟悉Unix的思维方式,这与Windows的思维方式不同。在此过程中,我们将进行一些短途旅行,帮助您了解为什么某些事情会以这种方式工作,以及它们是如何做到的。Linux不仅仅是一个软件;它也是Unix文化的一小部分,Unix文化有自己的语言和历史。我也可能会发表一两句咆哮。

本书分为四个部分,每个部分都涵盖了命令行体验的某些方面:

如何阅读此书

从书的开头开始,一直读到结尾。它不是作为参考书写的,它更像是一个有开头、中间和结尾的故事。

先决条件

要使用这本书,您只需要一个可工作的Linux安装。您可以通过以下两种方式之一获得此信息:

  1. 在(不需要太新的)计算机上安装Linux。

    你选择哪种发行版并不重要,尽管今天大多数人都是从Ubuntu、Fedora或OpenSUSE开始的。如有疑问,请先尝试Ubuntu。安装现代Linux发行版可能非常容易,也可能非常困难,具体取决于您的硬件。我建议使用几年前的台式电脑,至少有2GB的RAM和6GB的可用硬盘空间。如果可能的话,尽量避免使用笔记本电脑和无线网络,因为它们通常更难工作。

  2. 使用“Live CD”或USB闪存盘。

    对于许多Linux发行版,您可以做的一件很酷的事情就是直接从CD-ROM或USB闪存驱动器运行它们,而无需安装它们。只需进入BIOS设置,将计算机设置为从CD-ROM驱动器或USB设备启动,然后重新启动。使用这种方法是在安装之前测试计算机Linux兼容性的好方法。缺点是,与在硬盘上安装Linux相比,它可能非常慢。Ubuntu和Fedora(以及其他)都有实时版本。

无论你如何安装Linux,你都需要偶尔拥有超级用户(即管理)权限来执行本书中的课程。

安装工作完成后,开始阅读并使用自己的电脑进行操作。这本书中的大部分内容都是“动手”的,所以坐下来打字吧!

第六版互联网版本有什么新内容

虽然shell本身每十年左右才发布一次主要版本,但硬件和工具在不断发展。这个版本的Linux命令行再次现代化,反映了命令行环境的变化。有许多小的编辑和更正、新的命令覆盖范围和附带的示例脚本。总而言之,将近四十页的新材料。有关更改的详细列表,请参阅LinuxCommand.org上的发行说明。此版本还新增了本书中的示例脚本集。这也可以在LinuxCommand.org上下载。

致谢

我要感谢以下人士,他们帮助这本书成为可能:

Jenny Watson,Wiley Publishing的收购编辑,最初建议我写一本shell脚本书。

约翰·C·德沃夏克,著名专栏作家和专家。德沃夏克在他的视频播客《疯狂的极客》的一集中描述了写作的过程:“见鬼。每天写200个字,一年后,你就有了一本小说。”这个建议让我每天写一页,直到我有了一本书。

Dmitri Popov在《自由软件杂志》上写了一篇文章,题为“用Writer创建书籍模板”,这启发了我使用OpenOffice.org Writer(以及后来的LibreOffice Writer)来编写文本。事实证明,它非常有效。

Mark Polesky对文本进行了非同寻常的审查和测试。

Jesse Becker、Tomasz Chrzzonowicz、Michael Levin和Spence Miner也测试和审查了部分文本。

Karen M.Shotts投入了大量时间,通过编辑手稿来打磨我所谓的英语。

第六版互联网版

特别感谢以下人士提供了纳入第六版互联网版的宝贵反馈:阿拉·阿里、麦基·巴尔沃萨、伊曼纽尔·伯尔迪、安德烈亚斯·比约内斯塔德、理查德·库克、伊桑·道拉沙、马克·埃文斯、瑞安·弗林、扬罗迪翁、罗伯特·肯宁顿、克劳斯·M·科尔门迪、弗拉基米尔·米洛瓦诺维奇、海猴、蒂姆·纳尔逊、Oktay Akin Okutan、尼克·欧文斯、迈克尔·帕里什、帕特里克、Esra Purba、阿米尔·拉兹坎迪、帕特·罗什、Avid Seeker、Pooya Taherkhani、Carl Westman和John Wiersba。

以前版本

特别感谢在前几版中提供宝贵反馈的以下人士:阿德里安·阿尔皮德斯、杰西·贝克尔、胡Bo、史蒂夫·布拉格、约翰·伯恩斯、赫里贝托·坎图、恩佐·红衣主教、保罗·卡萨蒂、托马什·克里佐诺维茨、段立新、乔舒亚·埃斯卡米拉、布鲁斯·福勒、德文·哈珀、约尔根·海特曼、乔纳森·琼斯、苏尼尔·乔希、马军、埃里克·卡梅勒、塞思·金、克里斯·奈特、雅罗斯瓦夫·科洛索夫斯基、吉姆·科瓦奇、迈克尔·莱文、巴尔托米耶·马伊卡、巴沙尔·马雷、弗兰克·麦克蒂普斯、迈克·奥唐尼ell、Justin Page、Parviz Rasoulifour、Waldo Ribeiro、Waldo Ribeiro,Waldo Ribeiro、Nick Rose、Satej Kumar Sahu、Mikhail Sizov、Ben Slater、Pickles Spill、Gabriel Stutzman、Francesco Turco、Francesco-Turco、Wolfram Volpi、Boyang Wang、Valter Wierzba和Christian Wuethrich。

最后,非常感谢LinuxCommand.org的读者,他们给我发了很多善意的电子邮件。他们的鼓励让我觉得我真的在做什么!

需要您的反馈!

这本书是一个正在进行的项目,就像许多开源软件项目一样。如果您发现技术错误,请给我写信: bshotts@users.sourceforge.net

一定要指出你正在读的书的确切版本。您的更改和建议可能会进入未来的版本。

进一步阅读

●以下是维基百科上关于上述名人的一些文章:

http://en.wikipedia.org/wiki/Linus_Torvalds

http://en.wikipedia.org/wiki/Richard_Stallman

●自由软件基金会和GNU项目:

http://en.wikipedia.org/wiki/Free_Software_Foundation

http://www.fsf.orghttp://www.gnu.org

●Richard Stallman在“GNU/Linux”命名问题上写了大量文章:

http://www.gnu.org/gnu/why-gnu-linux.html

http://www.gnu.org/gnu/gnu-linuxfaq.html#tools