一个月的-Linux-学习指南-全-
一个月的 Linux 学习指南(全)
原文:Learn Linux in a Month of Lunches
译者:飞龙
第一部分. 让 Linux 运行起来
《一个月午餐学 Linux》的前六章旨在让你开始使用 Linux。本节旨在让你快速了解 Linux 是什么,并让它为你运行。将这一节视为你对 Linux 的入门介绍,重点是让你尽可能快、尽可能容易地使用它。你将学习
-
Linux 是什么以及它是如何工作的
-
如何安装 Linux
-
如何了解您的系统
-
桌面环境是如何工作的,以及如何使用这些新界面
第一章. 开始之前
当被要求列举一个操作系统时,大多数人可能首先想到的是 Windows 和 OS X。这两个是家庭和工作场所最常用的桌面操作系统。但 Linux 一直存在,不如其他操作系统那么显眼。Linux 为互联网上的许多服务器和 Android 移动操作系统提供动力。Linux 也可以用于桌面工作,世界各地的人们用它来做从文字处理到音频编辑,再到普通的网页浏览等各种事情。
虽然常见的形象是一位系统管理员坐在数百个终端屏幕前,疯狂地在命令行中输入,但现实是大多数人可以学会用它来处理日常的工作。这本书是为对 Linux 感兴趣的人设计的。一些读者可能从这本书中获得了技能和愿望,想要进入技术领域,如系统管理。其他人可能只想将 Linux 用于日常工作。两种结果都很好,而且两种结果都是可能的,因为 Linux 的灵活性。
1.1. 为什么 Linux 重要
我们与电脑的关系是亲密的。这是我们许多人大部分时间都在的地方。你可能在平板电脑上消费内容,但如果你在做严肃的工作,比如编辑照片或撰写文章,你很可能会在笔记本电脑或台式机上做。OS X 和 Windows 正在向移动方向发展,允许用户通过触摸屏与应用程序和图标交互,但并不一定支持严肃的工作或定制。能够定制并打造个性化的体验是 Linux 的亮点。
Linux 是由林纳斯·托瓦兹在 20 世纪 90 年代初开发的。当时是计算机科学研究生的托瓦兹,希望在他的电脑上运行 UNIX 操作系统,因此开发了 Linux 内核(关于内核的更多信息请参阅第二章),作为 UNIX 的替代形式。UNIX 有不同的版本——OS X 也是基于它的。当托瓦兹使 Linux 可用时,他采用了宽松的许可证,允许任何人下载底层代码并对其进行修改。
托瓦兹还允许任何人向内核贡献代码,这使得 Linux 如此灵活和可定制。全球各地的人和公司都为这个项目做出贡献。这使得为 Linux 进行各种软件开发成为可能,因为底层代码库对任何人开放,而 Windows 和 OS X 则由公司分发,这些公司只将代码库的访问权限授予他们的员工。
Linux 是一个开放的生态系统,这种开放性使得各种软件项目得以涌现。因此,许多人选择使用它,因为它允许他们以其他操作系统无法实现的方式自定义他们的工作流程。实际上,大多数 Windows 和 OS X 程序都有某种 Linux 等价物。随着基于云的软件(通过网页浏览器与之交互的软件)的兴起,在软件方面,底层操作系统的意义越来越小。
使用 Linux,你对自己的系统拥有一种在其他操作系统中技术上不可能达到的控制水平。这就像驾驶自动挡汽车与手动挡汽车之间的区别。用户可以选择他们的系统外观、为每个任务使用的程序,甚至如何与系统交互。Linux 不像其他操作系统那样要求用户遵守界面,而是允许用户选择自己的路径,这也是为什么许多人用它来处理日常桌面工作。Linux 允许用户访问不同的桌面界面和大量软件,其中大部分是免费的。
我是因为对 Windows 的挫败感而转向 Linux 的。Windows 从未做到我需要它做到的事情,无论是速度上还是移动电脑方面。我从大学室友那里听说过 Linux,也玩过它,但从未超过短暂的实验。最终我达到了一个转折点,决定在我的笔记本电脑上安装 Linux,旁边是 Windows,这样我就可以访问两个操作系统。突然间,我的世界变得有意义。我有一个快速响应的系统,它以我想要的方式工作。我可以选择我的操作系统如何表现,并且我可以访问一个全新的软件世界。这是一个相当典型的 Linux 故事,甚至可能(或将成为)你的故事。
Linux 不仅仅关于可定制性。有些人使用 Linux 是因为它是免费的,因为它在旧硬件上运行良好。其他人使用它是因为他们认同免费和开源软件的美学。
1.2. 这本书适合你吗?
许多对 Linux 感兴趣的人都在寻求成为系统管理员,与服务器一起工作。这些是高度技术性的工作,需要复杂的技能集。这本书并不是为这个受众设计的,尽管如果你对成为系统管理员感兴趣,这本书无疑是一个坚实的第一步。相反,《一个月午餐时间学会 Linux》 是为对过渡到 Linux 感兴趣的用户设计的。也许你想要为自己运行一个小型网络服务器。或者也许你想要在你的家用电脑上运行 Linux。或者也许你已经在运行它了,但你不确定下一步该做什么。
我认为 Linux 适合每个人。尽管它需要一定程度的专业技术,但任何对 Linux 感兴趣的人都可以学习如何有效地使用它作为他们的日常操作系统。这为软件和工作流程提供了广阔的机会,使生活比使用封闭源代码操作系统时更加轻松。Linux 被艺术家、记者、音乐家和教育工作者等各行各业的人使用。换句话说,它对任何需要使用计算机来完成工作的人来说都是有用的。这本书是为那些想要学习如何使用 Linux 的人准备的,无论是为了在工作中完成更多任务,还是作为系统管理员职业道路的一部分。
这本书将逐步向您展示如何利用 Linux,而无需具备广泛的技术或编程技能。它将解释 Linux 的概念和术语,以及如何使用图形用户界面(GUI),这是大多数人使用 Linux 的方式。它还将向您展示如何使用命令行,这并不像听起来那么困难。Linux 可能看起来令人畏惧,但通过这本书的学习应该能让您足够舒适地全职使用它。
此外,这本书并不是详尽的。Linux 是一个巨大的主题,需要超过一个月的时间才能掌握。我的目标是让你在月底能够熟练地使用它。我的希望是到月底,你将准备好更深入地探索 Linux。
1.3. 使用本书
《一个月午餐时间学会 Linux》 的理念是每天阅读一章。你不必在午餐时阅读(我无法确定你何时阅读),但每章应该花费你大约 40 分钟来阅读,剩下的 20 分钟可以用来匆匆吃完午餐或练习本章展示的内容。尽量每天只专注于一章。集中精力。让你的大脑吸收它。然后,第二天,你将准备好阅读下一章,精神焕发,准备好学习更多。
1.3.1. 主要章节
本书的大部分内容,从 第二章 到 第二十三章,代表了帮助你学习 Linux 的主要内容。这意味着你应该能够在大约一个月内通过每天阅读一章来完成这本书。尽量坚持这个时间表,每天真正学习一章并练习所学内容。尽量不要一天内快速浏览多个章节。并且记住,不是每个章节都需要整整一个小时,这意味着有些日子你会有额外的时间进行练习(和用餐),然后再回去工作。
这些章节分为三个部分:
-
第一部分 教你如何运行 Linux 以及如何与之交互
-
第二部分 教你如何作为用户使用 Linux
-
第三部分 教你如何维护和管理你的 Linux 系统
1.3.2. 实践实验室
大多数主要内容章节都包含一个简短的实验室供你完成。你会得到指示,也许还有一两个提示来引导你走向正确的方向。答案可以在书的后面和网上找到,在 www.manning.com/books/learn-linux-in-a-month-of-lunches,但尽量在不查看它们的情况下完成每个实验室。
1.3.3. 进一步探索
本书中的几章只是简要介绍了 Linux 的一些酷炫潜力,我会在结尾处给出一些建议,告诉你如何自己探索 Linux 的这些部分。我会指出一些额外的资源,包括你可以根据需要使用的免费资源,以扩展你的技能集。
1.4. 设置你的实验室环境
我将在 第三章 中讨论安装 Linux,所以现在你不需要做任何事情。
Linux 有许多不同的版本,被称为 发行版。每个发行版都可以使用不同的桌面环境。这意味着 Linux 的外观并不一致。即使是使用两个不同版本的 Ubuntu 的两个人,他们的屏幕上可能看到的也不一样。为了本书的目的,我使用的是 Ubuntu 14.04。如果你对 Linux 非常陌生,我也建议你使用它。这是一个长期支持版本,这意味着它将更新到 2019 年。这意味着你不必担心相当长一段时间内的安全更新。图 1.1 展示了默认的 Ubuntu 14.04 桌面外观。
图 1.1. 默认的 Ubuntu 14.04 桌面。如果你之前没有尝试过 Linux,这是一个很好的起点。

如果您更喜欢另一个发行版,或者如果您想使用 Ubuntu 的不同版本,本书对此没有问题!只是请注意,我的一些截图可能与您的不一样。事物可能位于略微不同的位置。在不同的发行版上,一些命令和程序也可能不同。Linux 的美丽之处在于它为用户提供自由,但代价是人们可能会以不同的方式体验它。当您学习即将到来的章节时,您会看到这是为这个奇妙强大的工具所付出的微小代价。
1.5. 在线资源
我希望您能抽出时间访问www.manning.com/books/learn-linux-in-a-month-of-lunches。它提供了本书的补充资源:
-
每章末尾实验的示例答案
-
链接到讨论论坛,您可以在那里提出关于本书的问题或提交反馈
我对 Linux 充满热情,我喜欢听到其他人对其的热情。您随时可以通过 Twitter(@steven_ovadia)联系我。我很乐意听到您对我们可能添加到本书网站(www.manning.com/books/learn-linux-in-a-month-of-lunches)以及本书未来版本的反馈。此外,如果您正在阅读这本书,您可能会喜欢我的网站 My Linux Rig(www.mylinuxrig.com),该网站每周都会采访关于人们 Linux 配置的人。也许您甚至会提交您的配置!
1.6. 立即用 Linux 变得有效
我写这本书的目标是让您立即变得有效。尽可能多地将每一章聚焦于您可以在真实 Linux 环境中立即使用的某些内容。这意味着我有时会略过一些细节,但在必要时,我会回头在适当的时候讲解它们。在许多情况下,我必须在 20 页的理论和直接动手实现某事而不解释所有细微差别、注意事项和细节之间做出选择。当这些选择出现时,我几乎总是选择直接动手,目标是让您立即变得有效。但所有这些重要的细节和细微差别仍将在本书的另一个时间点进行解释。
背景介绍已经足够。现在是时候开始立即变得有效了。您的第一堂午餐课程正在等待。
第二章. 了解 Linux
上一章是本书的介绍,现在介绍已经完成,我们可以开始愉快地学习 Linux 了!本章将向您介绍发行版和仓库的概念。我们谈论 Linux 时将其视为一个统一的概念,但实际上它是在一个共同的核心——Linux 内核——之上构建的几种不同类型的结构。在今天的午餐结束时,您将理解所有这些,使我们能够在本书的剩余部分使用我们的特定系统。
2.1. 发行版
发行版,或称distros,是 Linux 的不同版本。发行版基于 Linux 内核(我稍后会谈到内核)进行构建,为用户提供体验,选择特定的软件并做出某些技术选择。这包括
-
那个发行版的存储库中包含哪些软件(相当于 Windows 应用商店或 Mac 的 iTunes 商店)
-
那些存储库中可用的软件版本
-
那些软件如何在用户的系统中实现
这意味着尽管 Linux 是 Linux,但并非所有发行版都可以互换。如果你正在使用一个发行版并想切换到另一个,你不能简单地切换开关。相反,你需要完全安装新的发行版。如果你正在运行一个发行版并想要另一个发行版存储库中的软件,你不能连接到另一个存储库。如果你在网上找到一个发行版的软件包,你也不能保证能在你的系统上安装它。
不同的发行版可能看起来相同,但它们之间存在技术差异,阻止它们相互替换。发行版是生态系统。Linux 的大优势在于它不是一个封闭的生态系统。它提供了很多选择和灵活性,所以如果你不喜欢你的发行版默认选择的音乐播放器,移除它并用你喜欢的替换它是非常简单的。如果你想要的软件不在存储库中,通常有安装它的方法。
发行版也有个性。有些发行版更喜欢拥有软件的最新版本,而有些则更重视稳定性。有些发行版努力为用户提供有意的旅程,选择特定的软件和实施特定的设计,目标是让用户以某种方式与软件互动。其他发行版更喜欢保持相对原始的状态,这样用户就可以根据自己的系统做出选择。选择发行版是一个个人选择,大多数人通过distro-hopping(尝试不同发行版的过程),就像金发姑娘一样,直到找到最合适的一个。
免费和开源软件
你经常会听到与 Linux 一起使用的术语免费和开源软件。这个术语意味着任何人都可以访问 Linux 的底层代码,这也是项目能够快速高效增长的原因。免费和开源项目不是从头开始,而是使用现有的代码,并对其进行增强和以新的方式改变。除了 Linux 之外,还有很多其他使用类似哲学的项目,这通常通过某种开放许可证来表示。例如,Firefox 是免费和开源软件。任何人都可以下载代码并更改它,或者创建自己的 Firefox 版本。
你经常会听到与 Linux 相关的 免费 这个词。在社区中,成员们谈论“免费如啤酒”,意味着免费,以及“免费如自由”,意味着开源软件。并非所有免费软件都是开源的,也并非所有开源软件都是免费的。一些公司通过为开源工具增加价值来赚钱。例如,WordPress,一个博客工具,是免费且开源的,但他们提供付费托管免费软件的服务。一些出于政治原因使用 Linux 的人不想与封闭的非免费格式互动。其他人则希望能够做一些像观看 YouTube 视频这样的事情,这可能需要专有软件。
虽然并非所有 Linux 软件都是免费和开源的。一些公司为 Linux 开发专有软件,这意味着虽然软件可以在 Linux 系统上运行,甚至在仓库中找到,但底层代码是不可用且不可见的。Linux 中最常见的此类例子是 Flash,这是一种有时用于在网站上观看视频的软件。但还有更多例子。Google 的 Chrome 浏览器不是开源的,但有一个名为 Chromium 的开源项目版本。
如果你来到 Linux 是为了支持免费和开源软件及项目,这些区别很重要。但许多人使用 Linux 是因为它可定制(部分原因是因为其许多组件的开源性质)并且表现良好。当然,许多人出于实际原因而来,最终却因为政治原因而留下。
2.2. Ubuntu
由于本书中我们将使用 Ubuntu (图 2.1),让我们花几分钟时间来谈谈它作为一个发行版的情况。Ubuntu 以用户友好著称。它有一个简单的安装过程,正如你在第三章中将会看到的,并且旨在让用户的使用变得简单。然而,为了这种便利,Ubuntu 为用户做了很多决定,有些人欣赏这一点,但有些人则不然。作为易用性的一部分,Ubuntu 通常会提供较旧但更稳定的软件版本,但不一定是最新版本,有时这些版本可能不稳定,甚至可能破坏你的系统中的某些东西。Ubuntu 有一个称为 长期稳定 版本的概念,简称 LTS:
-
LTS 版本支持五年。
-
非 LTS 版本支持九个月。
图 2.1. Ubuntu 标志。Ubuntu 是本书中将使用的发行版。

如果你打算长时间使用桌面系统,而不需要升级到 Ubuntu 的新版本,那么我们在这里使用的 LTS 版本就是你的选择。
Ubuntu 基于 Debian 发行版。这是你在 Linux 发行版中会注意到的事情之一——它们通常建立在其他发行版的基础上。在 Ubuntu 的例子中,开发者使用 Debian 作为基础,然后在其之上添加自己的软件和设计决策。由于没有人拥有 Linux,这种合作可以在没有复杂的谈判或合同的情况下进行。
2.2.1. Debian
Debian (图 2.2) 是 Ubuntu 基于的发行版。Debian 追求稳定性,其哲学是“准备好就发布”。这意味着新版本不是与特定日历相关联。相反,社区将保持发布,直到它们被认为足够稳定可以上线。图 2.3 显示了 Debian 桌面。
图 2.2. Debian 标志的图片。Ubuntu 基于 Debian。

图 2.3. 一个 Debian 桌面。

在 Linux 世界中,你会听到很多关于稳定性的讨论。稳定性是可预测性的另一个词。它表示软件在没有问题的情况下运行。通常,这意味着使用较旧的软件,这些软件比新软件经过了更广泛的测试。由于 Linux 通常用于服务器,这些服务器用于各种重要应用,因此稳定性是一个重要的特性——通常被认为比软件的新版本更重要。稳定性对于桌面 Linux 也是一个重要的特性。你总是希望能够访问和使用你的桌面系统。
Debian 有三个版本:
-
稳定版— 当前发布版本
-
测试版— 正在考虑用于稳定版的软件版本
-
不稳定版— 开发者在其中工作,在将其放入测试版和最终稳定版的仓库之前测试软件
如其名所示,稳定版是稳定的,但许多人日常工作中使用测试版而没有出现任何问题。Debian 也更有一种自由和开源的精神,尽管有软件包帮助用户查看如 Flash 这样的闭源格式,但它并没有像其他发行版那样在安装过程中被深度集成。正因为如此,许多出于政治原因使用 Linux 的人倾向于选择 Debian。
2.2.2. Fedora
Fedora (图 2.4) 是 Red Hat Enterprise Linux 的社区版本。Red Hat 是一家上市公司,它向公司销售自己的 Linux 版本。Fedora 是免费版本,允许它测试想法和概念。然而,Fedora 项目由一个委员会领导,其中一些成员是由社区选举产生的。这种治理模式存在于许多自由和开源项目中,并且对于 Fedora 特别有效,因为它在项目中保持了平衡,防止它成为 Red Hat 的另一个版本。
图 2.4. Fedora 标志。Fedora 与 Red Hat Linux 有关,但是一个社区驱动的项目。

Fedora 通常拥有更近版本的软件,因此对于新用户来说,有时可能会更具挑战性。Fedora 大约每 6 个月发布一个新版本,并为每个版本提供 13 个月的支持,这意味着(理论上)你每年需要更新一次你的 Fedora 安装,尽管在实践中,许多人会保持更长时间。Fedora 桌面如图 2.5 所示。
图 2.5. Fedora 桌面,看起来与 Debian 的桌面非常相似(它们使用相同的桌面管理器)

2.2.3. Linux Mint
Linux Mint(见图 2.6)是另一个被认为对初学者友好的发行版。Linux Mint 建立在 Ubuntu 之上,因此如果你在家中跟随,它距离 Debian 有两步之遥。有一个基于 Debian 的 Linux Mint 版本,即 Linux Mint Debian Edition,但大部分情况下,它被认为是一个 Ubuntu 变体。
图 2.6. Linux Mint 标志。Linux Mint 基于 Ubuntu,而 Ubuntu 又基于 Debian。许多发行版都是这样相互关联的。

Linux Mint 是发行版如何基于管理选择而非技术选择而有所不同的一个很好的例子。Linux Mint 有自己的外观,其中一部分是基于桌面环境的选择(见图 2.7),其中一些是基于像其调色板这样的东西。它包括易于安装的非免费多媒体支持,与 Debian 不同,但用户可以决定是否需要这种支持。非免费多媒体意味着专有格式,如 Adobe Flash 和 MP3。
图 2.7. Linux Mint 桌面——它的两个默认桌面环境之一

关于 Linux Mint 的一个最后说明。虽然大多数发行版鼓励用户更新到最新版本,但 Linux Mint 建议用户停留在对他们来说正在工作的版本上。
2.2.4. Arch
Arch(见图 2.8)是用户友好性最差的发行版之一,尽管 Arch 社区的人不会这样描述它。Arch 的哲学是给予用户对其 Linux 桌面的完全控制权,从安装的软件到更新的频率。这种灵活性的代价是,由于发行版没有考虑这些事情,最终用户需要(见图 2.9)。
图 2.8. archlinux 标志。Arch 总是拥有最新的软件版本,这使得它有时难以管理。

图 2.9. Arch 没有默认设置,因此它可以看起来像用户想要的任何样子。

Arch 的安装比较复杂。它不使用 Fedora、Ubuntu 和 Mint 等发行版中看到的图形安装程序。Arch 的所有内容都有很好的文档记录,但更新有时会导致系统崩溃。在 Arch 社区中,崩溃被认为是一件好事,因为它帮助用户通过找出如何修复它们来了解他们的系统。但并不是每个人都想以那种程度了解他们的系统。使 Arch 比其他发行版更易变的一个因素是它使用软件的最新版本。所以正如 Debian 因其稳定性而受到重视,以使用较旧但经过验证和可靠的软件版本为代价一样,Arch 因拥有最新的软件而受到重视,但以牺牲稳定性为代价。
2.2.5. 其他发行版
有许多其他的发行版。有些是完全原创的项目,例如 OpenSUSE。其他则是基于现有项目的变体。例如,你刚刚了解到 Ubuntu 和 Mint 是 Debian 的变体。Manjaro Linux 是 Arch 的一个变体。了解变体对于找到适合你的发行版很有帮助。表 2.1 比较了我们在这里提到的五个发行版在稳定性和开源精神方面的特点——这是我们迄今为止提到的两个比较点。你可能会在阅读本书的过程中保留一个比较点的清单,并为此表添加你自己的参考。
表 2.1. 比较发行版在稳定性和开源精神方面的特点
| 发行版 | 稳定性 | 开源精神 |
|---|---|---|
| Arch | 最前沿的软件 | 完全由用户决定 |
| Debian | Debian Stable 稳定;Testing 有更新的软件。 | 由用户决定,但优先考虑自由和开源精神 |
| Fedora | 更新的软件,但相对稳定 | 默认不包含专有软件 |
| Mint | 建立起来的软件 | 包含一些专有软件 |
| Ubuntu | 建立起来的软件 | 包含一些专有软件 |
一些人对他们喜欢基于 Debian 的发行版有所了解,这有助于你找到潜在的分发版。你还会看到基于桌面环境的分发版变体(我将在第五章中更多地讨论桌面环境)。但到目前为止,请注意,当你看到像 Lubuntu 这样的东西时,它是一个在顶部具有不同界面的 Ubuntu 版本。
2.3. 选择发行版
为了本书的目的,我们使用的是 Ubuntu 14.04,所以在选择你自己的发行版方面你并没有太多的选择。但一个月后你将完成这本书,你可能想尝试一些除了 Ubuntu 之外的东西。选择发行版是个人化的,但有一些一般性的事情需要考虑。在了解 Linux 的早期阶段就承诺一个发行版还为时尚早,但考虑一下什么可能适合你和你的工作流程并不算太早。我们将更详细地探讨这里讨论的许多想法,但现在,以下是一些关于发行版需要考虑的事项:
-
界面对你来说是否合理? 我们将在第五章讨论桌面环境,但就大部分内容而言,你几乎可以使用任何发行版你想要的桌面环境。
-
思考软件。 你是想使用最新版本的软件,还是更关心保持你的系统稳定运行?Arch 会为你提供最新的软件。Debian Stable 使用较旧的软件,提供更稳定的系统。但对于一些人来说,Debian Testing 是一个不错的折衷方案。
-
考虑你的政治立场。 你是来 Linux 支持免费和开源软件的吗?你是试图避免专有软件吗?像 Debian 和 Arch 这样的发行版在广泛的意义上更支持这种使用,没有假设用户会想与专有软件一起工作。你的政治立场可能会影响你选择的发行版。
-
考虑社区。 每个发行版都有自己的社区。哪个在支持和文档方面感觉更合适?Arch 具有挑战性,但文档非常出色。而且由于 Ubuntu 是一个非常常见的发行版,支持论坛中有很多帮助。
选择一个发行版并不是终身的承诺,但它可能是一种时间上的承诺——尤其是对于 Linux 的新手来说。Ubuntu 14.04 在接下来的一个月里会为你服务得很好,但随着我们这本书的进展,我会定期让你反思哪些 Linux 的部分最适合你。
2.4. 仓库
由于我们在谈论软件,让我们快速概述一下软件是如何与 Linux 一起工作的。大部分情况下,你从你的发行版维护的 仓库 中下载软件。你很少需要导航到网站,下载一个程序,然后安装它。仓库是一个软件集合。它是一个单一的地方,所有发行版的软件都保存在那里。把它想象成一个带有额外规则的 app store。事实上,你可以通过一个名为 Ubuntu Software Center 的应用商店界面来访问 Ubuntu 仓库,如图 2.10 所示。
图 2.10. Ubuntu 的应用商店看起来可能就像你在手机上访问的那样。

通常,仓库有不同的软件版本。一些仓库倾向于有较新的软件版本;其他可能有的版本较旧。由于软件总是在变化,没有标准的版本。相反,你使用的软件版本取决于仓库中可用的内容。
-
仓库是针对特定发行版的,所以如果某个发行版的仓库中有某个软件,它可能不在另一个发行版的仓库中。
-
仓库也是版本特定的,所以如果一个软件在 Ubuntu 12.04 的仓库中,它可能不在更新的 Ubuntu 14.04 仓库中。这就是同一发行版的版本之间相互区分的原因。
仓库是使不同发行版彼此不同的因素之一。软件是由为发行版工作或志愿工作的人添加到仓库中的。大多数发行版在软件被添加到或更新到仓库之前都会对其进行某种测试。
注意
当我说软件时,我不仅仅是指为人类设计的程序,比如 Firefox。仓库还处理安全更新以及 Linux 内核的更新。
我们将在第十七章章节 17 中更详细地讨论仓库。
2.5. Linux 内核
Linux 就像 Windows、OS X、iOS、Android 和其他操作系统一样,是一个操作系统。操作系统是控制整个设备从硬件到软件的东西,而操作系统的核心是内核。这控制着操作系统,处理诸如进程和内存等问题。如果操作系统是一个人,那么内核就是大脑。
内核相当小——图形桌面和应用程序占据了所有空间——并且可以在除了桌面、笔记本电脑和平板电脑之外的大量设备上使用。这就像你在你的汽车、割草机和滑板车上都有一个引擎,但它们的大小非常不同——尽管它们都以相同的方式工作。
操作系统和内核不仅仅是我们在笔记本电脑和设备上看到的可见进程。它们还以我们看不见的方式运行,控制着从家用电器到医疗设备的一切。许多这些设备使用 Linux 内核来运行。我们看不到我们的电视是如何使用 Linux 内核的,但它确实在使用。
我们将要使用的 Linux 是基于 Linux 内核构建的,但添加了大量的软件,使其对人类交互有用。Linux 内核是我们 Linux 操作系统的最基本级别。它是 Linux 之所以为 Linux 的原因。但是,为了使它成为我们日常工作中可用的东西,许多软件被添加到基本内核中,如图 2.11 图 2.11 所示。
图 2.11. Linux 内核是操作系统的核心,负责协调其外观、声音、硬件操作以及通过网络和互联网与其他设备通信。

同样,一辆汽车由除了引擎之外的其他许多部件组成。然而,就像没有引擎的汽车无法工作一样,没有内核的 Linux 桌面也无法工作。如果我们车库里有汽车引擎,我们无法做很多事情。为了使其有用,我们需要添加像轮子、变速箱和方向盘这样的东西。Linux 内核是关键,但仅仅写文档或玩游戏是不够的。你需要添加其他软件来使其成为桌面操作系统。
注意
如果你进入更技术性的领域,Linux 可能仅仅指内核。在这本书的其余部分,当我讨论 Linux 时,我指的是内核以及添加到内核中的软件,这使得我们人类能够与我们的机器交互。
2.6. 总结
这顿午餐花在学习 Linux 的概念上。现在你了解了发行版和仓库,你开始对 Linux 系统的工作方式有了感觉。有了这些知识,你就可以更深入地了解你的系统了,这是我们下次要做的。
术语表
在本章中我解释了:
发行版
在 Linux 内核的基础上构建,为用户提供体验,选择某些软件并做出某些技术选择的 Linux 版本。
自由和开源软件
任何人都可以访问底层代码的软件。
内核
操作系统中处理诸如进程和内存等事务的部分。
2.7. 实验室
我们在这一章的大部分时间里都在谈论不同的发行版。
1. 如果你想要软件的最新版本,你会选择哪个发行版?
2. 如果你想要预装了专有软件,如 Flash,你会选择哪个发行版?
3. 你会推荐哪个版本的 Debian 给那些寻找经过良好测试的东西的人?
现在我要求你进行自己的研究。选择我们在这里讨论的发行版之一,访问其网站。阅读一下那些对你来说听起来有趣的非 Ubuntu 发行版。然后,前往 DistroWatch (www.distrowatch.com),这是一个跟踪 Linux 发行版的网站。访问页面点击排名,它根据每个发行版访问 DistroWatch 页面的次数对发行版进行排名。探索一下 DistroWatch 认为流行的(但在这里没有讨论的)发行版。
第三章. 安装 Linux
现在你对 Linux 和发行版有了些背景知识,你就可以继续前进到有趣(也是最令人畏惧)的部分了——安装它!有一件事让这个过程不那么可怕,那就是安装程序每年都在变得更好。那些多年前尝试安装 Linux 的人通常会惊讶于这个过程变得多么容易。
正如我在 第一章 中提到的,我们将使用 Ubuntu 14.04。Ubuntu 是发行版,14.04 是版本。这意味着 14.04 有自己的软件仓库。正如我之前提到的,14.04 是一个长期支持版本,这意味着仓库中的软件将在五年内得到更新。
我在这里也使用了“安装”这个词的宽松定义。我实际上将讨论三种不同的方法来运行 Ubuntu:
1. 将 Linux 写入你的本地计算机。
2. 运行一个 live image,它可以从 DVD 或 USB 驱动器运行,而不接触你的本地硬盘。
3. 在虚拟机中运行 Linux,就像在你的电脑中安装它一样。我将在最后的实验室部分详细讨论。
本章的目标是通过某种方式将 Ubuntu 安装到您的机器上。如果您安装后遇到问题,请不要担心。问题正是学习的机会!随着您阅读本书,您将学会如何解决在初始安装过程中遇到的任何不完美之处。所以,实际上,在本章结束时,您应该能够启动进入 Ubuntu。不多也不少。
3.1. 实时与安装
您应该选择哪种方法?这是一个个人选择。
本节实验室将指导您将 Ubuntu 安装到虚拟机中。我们将在第十五章(kindle_split_024.html#ch15)中更多地讨论虚拟化。将 Ubuntu 安装到虚拟机是学习 Linux 的绝佳选择。您可以在现有的操作系统内运行自己的 Linux 机器。这是两者的最佳结合,因为您可以方便地访问两个操作系统。
实时镜像方法可能是最安全的安装选项。它根本不会改变您的计算机。然而,根据您如何设置您的实时环境,您可能无法保存文件和设置,每次启动时都从全新的 Ubuntu 环境开始。这并不总是方便,但应该适合本书的目的。
如果您只有一台计算机,或者您与他人共享一台计算机(并且那些其他人没有与您一起学习本书),那么虚拟化和实时会话都是很好的选择。如果您使用的计算机不是自己的,这两个选项也是极好的。例如,如果您的雇主为您提供了计算机,如果您返回时安装了新的操作系统,可能会不太受欢迎。Ubuntu 在苹果硬件上安装也可能很棘手,所以如果您考虑擦除苹果机器,您可能现在想使用实时镜像或虚拟安装,并在完成本书后迁移到永久安装。
如果您手头有一台备用计算机,通过现有操作系统安装是一个很好的选择。这是一个低风险的选择,并让您可以轻松访问 Linux 计算机。但问题随之而来,是选择在所有内容上安装 Ubuntu 还是选择双启动计算机,留下两个操作系统。这也是一个个人选择。如果您可以方便地访问另一台 Windows 计算机,并且对定期使用 Ubuntu 感到相当自信,我会建议您选择安装 Ubuntu 并从系统中移除 Windows。这将为您留下一个空间充足的机器。根据您的硬盘大小,Ubuntu 和另一个操作系统一起可能不会给您留下太多空间用于其他文件。而且,如果您依赖于特定于操作系统的软件来完成某些任务,并且您不知道任何 Linux 等价物,您可能想要保留一个分区——硬盘上运行另一个操作系统的部分,无论是什么操作系统。
3.2. 创建 Linux 启动镜像
安装 Ubuntu 的第一步是从 Ubuntu 网站下载镜像 (www.ubuntu.com)。镜像是一个操作系统的完整版本。您正在寻找下载 Ubuntu 桌面版本,而不是云或服务器版本,后者不是为桌面工作设计的。我们正在使用 14.04,尽管有更新的版本。14.04 版本是我撰写本文时支持最好的版本。您还可以选择下载 32 位版本或 64 位版本。如果您不确定您的计算机是哪种类型,您可以通过 Windows 的控制面板或 OS X 下的“关于本机”查看您的计算机的系统信息。
在选择正确的架构后,您将被提示捐赠给 Ubuntu,但您可以跳过该屏幕并免费下载(许多发行版使用下载区域来鼓励对项目的捐赠)。Ubuntu 将是一个大的 .iso 文件。.iso 文件是一个镜像。到目前为止,当您烧录 DVD 和 CD 时,您可能只处理过媒体文件,即图片和声音,或者两者都有。但 .iso 文件不同,所以您不能像烧录 CD 那样烧录它们。
3.3. 将镜像烧录到 DVD
文件下载完成后,您需要将其烧录为镜像。无论您是想有一个 live Ubuntu 会话还是想将其安装到硬盘上,您都需要这样做。您要么将其烧录到 DVD,要么烧录到 USB 驱动器。如果您使用 DVD,您使用的任何烧录软件中都应该有一个烧录镜像选项(OS X 和一些 Windows 版本内置了镜像烧录器)。如果您的 Windows 安装中没有工具,ImgBurn (www.imgburn.com/) 是一个免费选项。
3.4. 将镜像安装到 USB
如果您打算使用 USB 驱动器,您还需要下载一个名为 Universal USB Installer 的软件。从 www.pendrivelinux.com 下载它,并在您的 Windows 计算机上安装。完成这些后,将您的 USB 驱动器插入计算机。它至少需要 2 GB 的空间。此外,您 USB 驱动器上的所有内容都将被清除,所以请确保上面没有重要文件。Universal USB Installer 将基本上问您三个问题:您使用的是哪个发行版(Ubuntu),.iso 文件在哪里,您的 USB 驱动器在哪里?图 3.1 展示了配置后的样子。您也可以通过点击“下载链接打开”选项(见 图 3.2)自动下载 Ubuntu 镜像。
图 3.1. Universal USB 安装程序的界面

图 3.2. Universal USB Installer 可以为您下载 Ubuntu 镜像。

你会注意到有一个询问存储持久文件大小的步骤 4 (图 3.3)。这个选项允许你保存对安装所做的更改(包括你保存的文件),这样你就不必总是从一个干净、未配置的版本开始。这是一个好选项,但也有一些注意事项:
-
这并不适用于每个发行版(但它适用于 Ubuntu)。
-
它需要大量的 USB 空间。我会选择最大 4 GB,以确保安全。
-
并非所有设置都会保存,但很难预测哪些可能不起作用。
图 3.3. 持久存储允许你在登录之间保存大多数自定义设置。

尽管存在这些潜在问题,但如果你有一个大 USB 驱动器,这仍然是一个好选择。
一旦你决定了要做什么并回答了问题,点击创建按钮并等待任务完成。镜像与常规文件不同,这就是为什么你不能像处理 MP3 文件那样将其拖到 USB 驱动器上。你需要 Universal USB Installer 来格式化你的 USB 驱动器,以便你的计算机能够识别该文件为镜像。
在此之后,你就可以开始了。插入 USB 或 DVD,重新启动你的计算机。你的计算机应该会识别镜像并启动你插入的那个。如果不行,只需再次重新启动,在计算机启动时按 F12 或 Esc,这将给你一个启动菜单,你可以手动选择你的启动驱动器。你的 DVD 驱动器通常会有“DVD”这个词,你的 USB 驱动器将会有它的名字。手动选择它,你应该就能启动 Ubuntu。有时,由于某种原因,启动可能不会立即发生,所以你可能需要尝试多次。
安装比以前容易得多,但仍需要一些脑力。确保你第一次尝试时给自己留出时间。不要在午餐休息结束前五分钟做这件事。相反,给自己留出时间缓冲,这样如果出了任何问题,你将更有能力处理。
给它一点时间,等待欢迎屏幕出现。
3.5. 从镜像启动
Ubuntu 启动后,你有两个选择:尝试 Ubuntu 或安装 Ubuntu,如图 3.4 所示。图 3.4。如果你只是想运行 Live 会话,点击尝试按钮,你将能够完全访问 Ubuntu。然而,你保存的任何内容在下一次都不会存在,所以不要花太多时间调整或配置(除非你设置了持久存储)。Live 会话的好处是你不能破坏它。你做的任何事在下一次启动时都会被撤销。这有点像 Groundhog Day。尝试运行 Live 会话一段时间。这将让你看到 Ubuntu 如何与你的硬件协同工作,尽管一般来说,旧硬件比新硬件表现更好,因为旧硬件的驱动程序在内核中,而新驱动程序通常不在。
图 3.4. Ubuntu 的启动屏幕。在这里你可以选择以 Live 会话运行或安装它。

我理解安装对于许多用户来说是一个巨大的心理障碍。如果您还不舒服,坚持使用实时会话是完全可以的。事情会稍微慢一些,但体验将是相同的。我希望您在迁移到 Linux 时感到轻松和舒适,而不是害怕和紧张。信任需要时间。我们会到达那里的。
3.5.1. 安装准备
如果您要安装 Ubuntu,您会点击“安装”并看到图 3.5 中的准备屏幕。Ubuntu 会确保您有足够的磁盘空间。它还会提醒您在安装过程中将计算机连接上电源,因为突然断电可能会损坏安装。它还会询问您是否想安装第三方软件。我们将在第四章中更多地讨论这个问题,但现在,除非您反对专有软件,否则请勾选复选框。请记住,如果没有安装这些软件,做一些像看电影和听音乐这样的事情可能会变得困难,仅仅是因为您没有关于这类软件的选择权,Windows 和 OS X 都是如此。
图 3.5。安装准备屏幕。这里是 Ubuntu 推荐在您的硬盘上安装的最佳方式。

如果您有互联网连接,您可以在安装时让 Ubuntu 下载更新,但如果没有连接也不是什么大问题。然后,点击“下一步”。
3.5.2. 安装类型
在下一屏,安装类型(图 3.6),如果您有多个硬盘或硬盘上的多个分区,Ubuntu 会询问您想在哪里安装它。
图 3.6。这是您决定 Ubuntu 是否将成为您的唯一操作系统,或者它是否会与其他操作系统共享空间的地方。

您必须选择是想将它与当前的操作系统一起安装,还是替换当前的操作系统。
如果您打算在另一个操作系统的旁边安装它,它会要求您指定您希望两个系统的大小。Ubuntu 仅运行就需要大约 5 GB 的空间。Windows 占用很多空间,所以不要设置得太小——尤其是如果您打算继续使用它。如果您最初只是想浏览并在 Ubuntu 分区上写作,我会选择 10 GB 的安装,并将剩余的空间留给其他操作系统。
您可以随时调整分区大小,或者甚至可以回过头来删除您的其他操作系统。当然,如果您打算覆盖那个其他操作系统,您不需要分配空间。
注意,在这个屏幕上,如果您想调整目录大小,您可以自定义安装。如果您正在阅读这本书,您现在可能不想这样做,但最终您可能会,所以这是一个值得记住的好选项。
这个屏幕还有一些关于加密安装和使用 LVM(逻辑卷管理)的问题。我们稍后会讨论这些,但现实是,你的第一次 Linux 安装并不是长期的事情。你将想要升级并探索其他发行版,所以虽然当你对 Linux 发行版做出更长期的承诺时,你可能想要考虑这些选项,但我现在会忽略它们并点击立即安装。
3.5.3. 你在哪里?
下一个屏幕(图 3.7),你在哪里,会要求你选择你的时区。
图 3.7. 安装过程中较容易的部分之一——选择你的位置。

3.5.4. 键盘布局
下一个屏幕(图 3.8)会要求你选择你的键盘布局。有一个小型的打字区域,以确保你选择了正确的键盘。你还可以查看 Ubuntu 是否能为你检测到它。
图 3.8. 这是你选择键盘布局的地方,这通常取决于你来自哪里或你住在哪里。

3.5.5. 你是谁?
图 3.9 屏幕是下一个。输入你的名字(只要一个名字就可以),给你的电脑选择一个名字,为自己设置一个登录名,并选择一个密码(别忘了它!)我总是要求登录时输入密码,这样就没有人能访问我的文件,但请随意做你认为正确的事情。加密你的家目录,这是你的个人文件夹,包含你所有的个人文件和配置,总是一个好主意,但你不需要现在就做,原因我在前面讨论过了。我们将在第十九章(kindle_split_029.html#ch19)中更多地讨论安全性。
图 3.9. 你告诉 Ubuntu 你是谁的那个屏幕。别忘了你的密码!

点击继续,你就完成了!只需等待它安装完成。你将被提示重新启动计算机(见图 3.10),当它再次启动时,它将要么启动到 Ubuntu,要么启动到一个屏幕,让你选择是否启动到 Ubuntu。恭喜!
图 3.10. 在你启动新安装的 Ubuntu 系统之前收到的最后一条消息。

3.6. 常见问题
最常见的安装问题是镜像损坏。损坏可能发生在两个阶段——从 Ubuntu 网站下载或将其移动到你的媒体(DVD 或 USB 驱动器)。为了确保你的下载没有损坏,你可以使用校验和来验证文件的完整性。你使用一个程序从镜像中提取字母/数字组合。然后你在 Ubuntu 网站上查找这个数字。如果数字匹配,你就有了整个镜像。WinMD5Free (winmd5.com/) 是一个免费的 Windows 程序,可以完成这个任务。下载它,安装它,并将其指向你的 Ubuntu 镜像。它将给你一个散列值或代码,然后你可以到 Ubuntu 网站上查找(只需搜索 Ubuntu 散列值)。如果数字匹配,你的下载没有问题,这意味着问题可能出在你的 DVD/USB 上,你应该再次尝试烧录镜像。而且正如我之前提到的,有时你不得不尝试启动几次,直到它“捕捉”到。
另一个问题是将电脑设置为从正确的驱动器启动。如果你的镜像没有损坏,并且你已经烧录了几次,你可能需要研究一下你的电脑。我曾经有一台笔记本电脑,只能从其中一个 USB 端口启动,这从未让我想到这是一个问题!所以,有些微小的硬件问题可能会让你对你的电脑了解得比你想要的更多。好事是,一旦你解决了这样的问题,你就永远不会忘记解决方案!时至今日,我还会检查我的设备可以从哪个 USB 端口启动。
对于高级用户:统一可扩展固件接口
另一个常见问题是,一些较新的 Windows 电脑使用统一可扩展固件接口(Unified Extensible Firmware Interface,简称 UEFI),它取代了启动电脑所用的软件 BIOS。如果我们回到我们的汽车比喻,BIOS(以及现在的 UEFI)是启动一切的钥匙。如果你遇到这个问题,解决方案通常是进入 UEFI 并禁用任何快速启动/快速启动选项。Windows 有一个高级启动设置,它提供了启动到 UEFI 并禁用该选项的选项。
3.7. 购买预装 Linux 的硬件
在本章结束之前,我想提供另一种安装 Linux 的方法:购买已经预装 Linux 的电脑。像戴尔这样的公司出售预装 Ubuntu 的电脑。还有一些电脑供应商出售已经预装 Linux 的机器。大多数 Linux 用户喜欢这些机器,因为它们有助于支持 Linux 和 Linux 社区,同时也因为这意味着这些机器的硬件与 Linux 兼容性很好(我们将在下一章中详细介绍)。
如果你感兴趣 Linux,你可能想对你的机器进行一些调整——包括硬件和软件。但如果这对你没有吸引力,考虑购买已经预装 Linux 的系统。System76 (www.system76.com) 和 ZaReason (www.zareason.com) 是 Linux 社区中较为知名的供应商。
3.8. 总结
现在你已经知道了安装 Linux 和通过实时媒体运行 Linux 之间的区别。接下来的实验将指导你如何在虚拟机中安装 Ubuntu。现在你可以决定哪个选项最适合你!
如果你依赖于一台机器,你现在可能仍然坚持使用实时或虚拟方法。但如果你有一台旧电脑,或者有多台机器(尤其是 Windows 机器,安装 Linux 更容易),那么为什么不真正安装 Linux 呢?你可以双启动,这样你就有了一个分区,或者你可以将 Ubuntu 安装到整个硬盘上,这会强迫你(以好的方式)承诺使用 Linux。
术语表
在本章中,我解释了:
图像
操作系统的完整版本
活动会话
从媒体(如 DVD 或 USB)运行操作系统,而不是安装到硬盘上
注意
这些步骤非常具体于 Ubuntu 14.04,但它们适用于大多数具有图形安装程序的发行版。基本上,安装程序总是提出问题,而你回答。所以即使这些屏幕在 Ubuntu 16.04 或 18.04 上看起来不同,你也应该能够使用这些步骤来安装它。
一些发行版,如 Fedora 和 Debian,有一个图形安装程序,虽然与 Ubuntu 的不完全相同,但在概念上是相似的。其他,如 Arch,有一个更复杂的安装过程,不太用户友好。随着你对 Linux 的使用越来越多,你会对哪种安装过程最适合你有一个感觉。
3.9. 实验室
你已经了解了将 Linux 安装到电脑上的不同方法。现在选择一种并执行它!如果你要将 Ubuntu 安装到硬盘上,你可能不想在午餐时间完成(这是唯一一个我会这么说的地方),但除此之外,下载 Ubuntu,刻录到光盘,你就可以准备出发了。为了练习现在安装它,你将在虚拟机中安装 Ubuntu:
1. 下载一个虚拟化工具。VirtualBox 是免费的,适用于 Windows 和 OS X:
www.virtualbox.org。下载并安装它。2. 也要下载 Ubuntu 的.iso 文件。确保它是 32 位的版本。
3. 一旦安装了 VirtualBox,通过点击新建按钮创建一个新的虚拟机。打开向导。将其命名为 Linux 午餐。选择操作系统为 Linux,版本为 Ubuntu,然后点击下一步。
4. VirtualBox 会要求你输入基本内存大小。默认为 512MB。这应该足够我们使用了,尽管如果你有大量 RAM 的机器,你可以设置得更高。
5. 对于虚拟硬盘,创建一个新的,并勾选启动盘。然后点击下一步。
6. 对于文件类型选择 VDI 并点击下一步。
7. 对于存储细节,选择动态分配并点击下一步。
8. 对于大小,VirtualBox 应该默认为 8GB。现在这应该足够了。点击下一步。
9. 查看摘要,确保其正确无误,然后点击创建。你现在在你的电脑上有一个虚拟电脑了。
10. 要安装 Ubuntu,双击 Linux Lunches 虚拟机。将打开一个向导。
11. 点击下一步。
12. 对于媒体源,选择你刚刚下载的 Ubuntu .iso 文件。
13. 点击下一步并开始安装 Ubuntu。安装完成后,你将有一个装有 Ubuntu 的虚拟电脑。
第四章. 了解你的系统
Linux 的乐趣之一在于你可以学习你的电脑是如何真正工作的。过了一段时间,你会感到修复电脑的乐趣和你完成一个拼图或一个大型乐高项目的乐趣一样。这就像手动挡和自动挡汽车的区别。有了手动挡,你真的感觉你了解你的车辆。而在 Linux 上使用了一段时间之后,你真的会感觉你了解你的电脑。
当你把车带到修车行,只能模糊地描述问题,可能发出声音或使用不精确的术语告诉修车工问题可能是什么时,这很困难。Linux 是自我支持的,从某种意义上说,你——用户——负责修复系统中的任何问题。没有支持台可以打电话或发邮件。
对于新 Linux 用户来说,最难学的事情之一是,他们能越好的理解和描述他们的问题,问题被解决的机会就越大。这并不是说你需要学习编程来使用 Linux。这仅仅意味着你需要学习一些基本的过程,这将帮助你理解你的系统可能存在的问题。
现在你已经运行了 Linux,无论是作为 Live 系统还是安装了,现在是时候了解你的系统了,学习硬件和软件是如何协同工作来完成你的要求的!这一章将帮助你完成这个过程,教你如何识别你电脑使用的所有硬件。我还会谈到驱动程序,它们帮助操作系统与硬件通信,以及编解码器,它们用于使音乐和视频在我们的电脑上可播放。可以这样想,驱动程序解锁硬件,编解码器解锁音频和视频。如果你的驱动程序正在工作,那么你知道你只需要找到解锁那个特定文件的编解码器即可。
最后,我将转向日志,它们跟踪你的系统正在发生的事情。到本章结束时,你将对系统正在发生的事情有一个清晰的了解,这将允许你在事情没有按预期工作的情况下找到帮助。
4.1. 识别硬件
当你的系统出现问题时,可能是硬件问题,软件问题,或者两者的结合。如果你的 Ubuntu 笔记本电脑无法连接到 WiFi 网络,并且问题不是网络本身的问题(请确保问题不是像路由器已关闭这样的问题!),那么你需要找出问题所在。
-
如果问题是软件相关,可能它没有正确配置。
- 或者可能是正确的无线软件没有安装。
-
如果问题是硬件相关,可能你的笔记本电脑无线网卡坏了。
- 或者可能它没有开启。
但最常见的问题,尤其是在新安装的 Linux 系统中,是你的发行版在与无线网卡通信时遇到麻烦。在我们能够修复它之前,我们需要知道你的笔记本电脑是什么类型的无线网卡。虽然这可能在你的笔记本电脑手册中,或者在你笔记本电脑制造商的支持网站上,但现实是笔记本电脑通常由不同的部件组成。两款相同类型的笔记本电脑可能因为制造的时间和地点不同而使用不同的无线网卡。
Linux 提供了一种相对直接的方式来获取这些信息。这涉及到我们第一次进入命令行,我们将通过终端来访问它。我们将在第十章中详细讨论这个问题。第十章。现在,只需知道命令行是另一种与计算机交互的方式。而不是用鼠标点击打开一个程序来获取系统信息,你将打开你的终端,这将允许你直接向计算机输入命令。你正在省略图形中间人。
要访问终端,点击屏幕左上角的 Ubuntu 图标。一个搜索栏将打开,你可以输入单词终端(见图 4.1)。你会在应用程序下看到“终端”一词。点击单词或图标,终端将打开。
图 4.1. 在 Ubuntu 中输入单词终端将打开一个终端。

一旦进入终端,输入命令lspci -v。这个命令(见图 4.2)将显示你系统中使用的所有硬件,从无线网卡到内存再到显卡。
图 4.2. 终端中的lspci命令

阅读起来并不容易,但如果您滚动列表,可以寻找像 network 或 802.1 这样的单词,这通常表示无线协议。阅读输出中的该部分,您可以获取无线卡的品牌和型号。如果您遇到问题,现在您有了一种更具体的方式来搜索解决方案。与其进行像 “Ubuntu 中无线无法工作” 这样的搜索,这可能会在多个型号上引发各种问题,您现在可以搜索您的无线卡,这将仅显示有助于您特定问题的信息。
您还会看到一行写着 正在使用内核驱动程序。我们在 第二章 中讨论了内核,以及它是最基本的系统部分——其他所有东西都是建立在其上的。但驱动程序是什么?我们将在下一节中介绍。
4.2. 驱动程序
驱动程序是一种软件,它允许 Linux 内核与您的硬件进行通信。我在 lspci 命令的输出中指出了内核驱动程序行。所有操作系统都存在驱动程序,但它们通常由硬件制造商安装。在 Ubuntu 的例子中,它会自动处理驱动程序的安装,查看您拥有的硬件并安装所需的驱动程序。但有时,安装了错误的驱动程序,这就是导致技术问题的原因。
驱动程序的另一个问题是,并非每个硬件制造商都为 Linux 提供驱动程序,这意味着有时需要逆向工程驱动程序。提供自己驱动程序的公司往往能产生更好的结果。这就是为什么有时人们会建议不要在 Linux 系统中使用某些显卡——如果驱动程序不好,操作系统与硬件通信会更困难。
在一个完美的世界里,您的内核位于系统中间,试图与计算机周围的各个硬件组件进行通信——比如显卡、无线卡,甚至是您的计算机主板。驱动程序是内核和这些不同硬件之间的桥梁,如图 4.3 所示。再次强调,这是所有计算机的工作方式。但与 Linux 一样,驱动程序问题更加透明,这使得修复出现的问题更容易。Linux 的一个优点是,它不仅仅是一种运行计算机的方式——它还教会了您计算机是如何工作的。
图 4.3. 驱动程序帮助内核与您的硬件通信。

如果驱动程序有任何问题,您已经知道如何查看哪些驱动程序控制哪些硬件:使用lspci -v命令,它不仅包括硬件,还包括与硬件交互的驱动程序。这对于故障排除很有帮助,因为您可以研究是否存在与某些驱动程序和某些硬件相关的已知问题。有趣的是,但也许并不令人惊讶,Linux 通常与旧硬件配合得更好,因为驱动程序问题已经在发行版或内核中得到了解决。新设备未经充分测试,可能会引起更多复杂问题。
驱动程序的一个复杂问题是并非所有驱动程序都是开源的。一些驱动程序由制造商贡献给内核,但源代码仍然是封闭的,这使得在内核到驱动程序再到硬件的链中出现通信问题时,更难以对其进行调整。因此,您有时会看到对专有驱动程序的引用,这意味着它们是封闭源代码并由硬件制造商提供的,以及开源驱动程序,它们要么是由开发人员逆向工程以与硬件交互,要么是由制造商提供的,底层代码可供任何人修改和查看。根据对免费和开源软件的承诺程度,一些用户试图避免专有驱动程序,而另一些用户则选择最适合他们软件的驱动程序。
如果您的系统默认没有安装最佳驱动程序,有几个选项可以安装正确的驱动程序。
一种方法是研究您当前驱动程序和硬件的任何问题。我在本章末尾提供了一些开始研究的地方。修复驱动程序就像安装正确的驱动程序一样简单。通常只需要一两分钟。lspci -v命令会提供您所需的所有信息——您的硬件以及与之关联的驱动程序。然后,一些快速的在线搜索应该会揭示问题以及正确的驱动程序,您将在第七章(chapter 7)中学习如何安装。
大多数时候,正确的驱动程序在发行版的软件仓库中,您可以从中自行安装。有时您需要从制造商的网站上获取正确的驱动程序。这通常是打印机驱动程序的情况,因为打印机的种类繁多,任何操作系统都难以跟踪所有驱动程序。本书将在稍后讨论 Linux 上的打印。
一些发行版提供自动化的驱动程序管理。例如,您可以要求 Ubuntu 帮助您管理驱动程序。
让 Ubuntu 检查您的驱动程序
1. 点击左上角的图标并输入“软件与更新”
2. 点击“附加驱动程序”标签
这将导致 Ubuntu 检查你机器上的驱动程序,看看是否有其他可能更好的驱动程序。如果你的系统运行良好,你可以忽略这个区域。但如果你遇到了挑战,这个区域是值得探索的。通常 Ubuntu 可以为你找到所需的驱动程序。

Ubuntu 会检查你的驱动程序,看看是否有其他驱动程序可能适合你的需求。
其他发行版,如 Linux Mint,也具有驱动程序管理组件(见图 4.4)。
图 4.4. 基于 Ubuntu 的 Linux Mint 也会自动为你检查驱动程序。

Linux 软件和功能
不同的发行版有不同的功能。像 Ubuntu 和 Mint 这样的发行版具有更自动化的驱动程序管理组件,而其他发行版则没有。不同的发行版有共同元素和独特元素。用我们的汽车比喻来说,如果你在 1995 年的本田雅阁上学会了驾驶,那么你驾驶 2012 年的宝马 5 系系列应该不会有任何问题。它们是不同的车,有不同的功能,但概念上是相同的。所以如果你没有使用 Ubuntu 来阅读这本书,不要担心你在 Ubuntu 中看到的软件没有在你的电脑上。在 Linux 中,总有多种方法来应对挑战。
尽管如此,你只需要了解这么多关于驱动程序的知识。它们就像钥匙,可以解锁你电脑周围的不同硬件。Windows 和 OS X 可以高效地处理驱动程序,因为它们将操作系统安装在特定的硬件上,所以它们知道需要包含哪些驱动程序。而在 Linux 中,你几乎可以在任何硬件上安装操作系统,因此系统需要确定使用哪些驱动程序。
驱动程序问题严重到许多人会在安装 Linux 之前研究硬件问题。这让你对潜在的驱动程序挑战有所了解。实时安装方法也适用于排查这类驱动程序问题。如果你的显卡在实时会话中无法工作,那么很可能你有驱动程序问题。
4.3. 编解码器
编解码器是另一种在大多数其他操作系统中在后台运行但可以在 Linux 中变得可见的技术。这部分的功劳在于编解码器所扮演的角色——它们编码和解码(因此得名编解码器——enCODe\DECode)音频和视频。大多数发行版默认安装标准编解码器。这些编解码器允许你做诸如听 MP3 和看电影之类的事情。一些发行版为了避免国际软件专利问题(不同国家有不同的专利规则)而避免安装编解码器。Debian 曾经是这样的发行版,但现在它默认包含各种多媒体编解码器。但编解码器在 Linux 中仍然不是一个简单的过程。
例如,你经常会听到一个名为 GStreamer 的多媒体框架。大多数发行版默认都安装了它。尽管安装了 GStreamer,但某些多媒体内容仍然无法工作。在某些情况下,你需要安装一组称为类似 gstreamer-ugly 的编解码器集合。例如,在 Ubuntu 上,它们被称为 gstreamer1.0-plugins-ugly,而在 Arch 上,它们被称为 gst-plugins-ugly。不同的发行版以略有不同的名称来命名编解码器。你可以通过包管理器来安装它们。你将在 第七章 中学习如何使用它。
有些编解码器可能会给发行版带来法律问题,因此发行版以“不问,不说”的方式提供它们,但不会默认安装。
你唯一需要考虑编解码器的情况是,如果你正在尝试处理音频和/或视频内容,但它们对你不起作用。如果你的驱动程序工作正常,那么你就知道你需要找到能够解锁文件格式的编解码器。记住:驱动程序解锁硬件,编解码器解锁音频和视频。两者都在后台工作——直到它们不起作用,这就是为什么了解它们的基本概念是有用的。
4.4. 使用日志文件
想想当一架飞机坠毁时(我知道这不是一个愉快的想法)。人们首先会问关于坠毁的什么?他们总是询问黑匣子。黑匣子是一种记录飞机上所有情况的设备。黑匣子允许调查人员找出飞机出了什么问题以及为什么它会坠毁。日志文件起到相同的作用。它们记录了计算机上不同系统中发生的一切,让你可以看到可能未报告给你的错误。
日志文件不易阅读,但它们经常提供有用的线索,以错误消息的形式出现,当你的系统出现问题时。很多时候,如果某件事出了问题,你会得到一个有用且清晰的错误消息,然后你可以继续在网上进行搜索。困难的是当某件事不起作用,但没有错误消息来引导你时。日志文件是获取可以研究的错误消息的另一种方式。
日志文件并不仅仅是 Linux 的特性。它们存在于 Windows 和 OS X 上,甚至存在于你的手机上。问题是它们并不总是对最终用户可访问,或者容易访问。有时它们被深深埋藏在系统中,几乎无法找到。它们也不是大多数人知道要寻找的东西。但一旦你养成了查看日志文件的习惯,你就会发现没有日志文件的系统在故障排除时非常令人沮丧。
Ubuntu 自带一个工具,可以帮助您查看日志。它被称为系统日志。要访问它,请点击左上角的 Ubuntu 图标,然后输入系统日志。系统日志将在一个单独的界面中显示某些日志文件(图 4.5)。系统日志的左侧导航栏显示了您可以访问的不同日志文件。例如,syslog 是来自您系统的消息。Xorg.0.log 是关于您的显示软件的消息。这些并不一定是失败——相反,它们记录了给定系统中发生的一切。
图 4.5. Ubuntu 系统日志工具使日志处理变得稍微容易一些。

日志是发生事件的运行列表。当您向下滚动列表时,事件将变得更加近期。当您在日志中时,您正在寻找可能发生错误的线索。例如,如果您的系统在 10 分钟前突然自行重启,您可以在系统日志中查找任何在错误发生时发生的事件。很难确切地说您在寻找什么,但您在看到它时会知道(尤其是如果您寻找像失败和警告这样的词)。系统日志也可以通过放大镜图标进行搜索。所以,如果您怀疑某个原因导致了错误,您可以在日志文件中搜索该术语。
随着系统和协议的变化,日志文件名可能会改变,但概念保持不变:日志文件是操作系统报告正在发生的事情的地方。因此,即使 syslog 消失了,它可能会消失,也总会有另一个日志可以查看,并提供相同的信息。所以,不必太在意日志文件的名字。相反,只需考虑它们的作用和使用方式。
系统日志不会显示您所有可用的日志,但它允许您轻松地添加更多。为此,请点击右上角的齿轮图标并选择打开。文件导航器将在存储所有日志文件的目录中打开。您可以将任何文件添加到系统日志中。您通常可以从文件名中了解日志文件监控的内容。例如,kern.log 包含与内核相关的消息。
正如我提到的,所有日志文件都在一个单独的目录中。我们将在第十四章中更详细地讨论 Linux 目录结构,但就目前而言,只需知道,如果您导航到/var/log 目录,您就可以看到所有日志文件,然后使用任何文本编辑器打开它们——它们只是可以被各种程序读取的文本文件。系统日志很方便,但它不是一款通用的软件,所以如果您从 Ubuntu 迁移,您可能想熟悉查看各种日志文件的方法。
4.5. 寻找帮助
Linux,大部分情况下,并不提供支持。尤其是对于个人用户来说(一些公司,如 Canonical,Ubuntu 背后的公司,提供支持订阅服务,但它们针对的是小型企业,而不是个人——家庭用户)。这可能会让一些用户感到害怕,但如果你仔细想想,你有没有曾经给微软或苹果打电话寻求支持?他们帮助你了吗?或者你是在网上搜索直到你找到答案或者学会忍受问题?
正如我们在本章中看到的,Linux 为我们提供了很多工具来理解为什么我们的系统不工作。但当然,知道问题和知道答案是非常不同的事情。
在追踪答案方面,有一些特定的网站你可以访问。Unix 和 Linux Stack Exchange 是一个很好的资源:unix.stackexchange.com/。这是一个免费网站,注册用户可以发布问题和答案,用户会对回答的质量进行投票。为了对答案进行投票,你必须在 Linux 和 Unix Stack Exchange 社区中拥有一定的声誉,通过回答问题和进行编辑等方式获得积分。但你甚至不需要账户就可以搜索它,看看你的问题是否已经被提出过。
The Manning forums (forums.manning.com/)也是一个寻求帮助的好地方。
其他发行版也有自己的现场文档和论坛。通常在发行版主页的社区、支持或帮助等部分突出显示。然而,由于 Ubuntu 在 Linux 社区中非常普遍,因此有很多在线支持。Linux Mint 也很受欢迎,但由于它基于 Ubuntu,很多 Mint 的答案也会适用于 Ubuntu 的问题(反之亦然)。Ubuntu 的帮助区域可以在help.ubuntu.com/找到。你还可以在 Ubuntu 中通过点击左上角的 Ubuntu 图标并搜索帮助来获得帮助。这将显示 Ubuntu 桌面指南(见图 4.6),这是 Ubuntu 的一个不错的概述,但它不会深入到你可能在与系统相关的更技术性的问题。
图 4.6。Ubuntu 桌面指南是对你的系统的一个很好的概述,但不是详细技术帮助的好选择。

Ubuntu 有自己的官方论坛,位于ubuntuforums.org/,但看起来越来越多的人去 Ask Ubuntu(askubuntu.com/),它位于 Unix 和 Linux Stack Exchange 相同的平台上,并且工作方式完全一样。
但在阅读网站和文档之前,你可能想花几分钟时间在网上搜索你的问题。如果你在声卡上遇到错误,尝试搜索声卡型号和 Ubuntu 14.04,这是我们特定的 Ubuntu 版本。如果这不起作用,通过删除 14.04 来扩大搜索范围,如果这还不起作用,就用 Linux 替换 Ubuntu。从具体到一般。这些搜索将显示来自 Ask Ubuntu 等信息来源的信息,但也会揭示其他发行版的博客文章和论坛。通常,发行版并不重要,重要的是答案。一个在 Fedora 上修复问题的配置也可能在 Ubuntu 上修复它。
通常,论坛上的回答都是出于好意,但要注意不要运行你不理解的命令。错误的命令可能会完全删除你的系统。我建议你在完成这本书之后再进行这种故障排除。但在仅仅几章之后,你将能够查找命令,了解它们的功能以及它们是如何工作的。像 Ask Ubuntu 和 Unix 和 Linux Stack Exchange 这样的网站,它们更重视经验丰富的用户的建议,在评估答案质量方面也很有帮助。
4.6. 总结
本章的目标是让你熟悉 Linux 系统中那些最有可能以你意想不到的方式(或不能)工作的各种组件。现在,你应该准备好识别问题,然后去网上寻找自己的解决方案。现实是,尽管有很多 Linux 用户能够阅读日志文件并确切知道问题是什么以及如何修复它,但同样常见的是,Linux 用户在日志中找到问题,然后需要在网上寻找答案。无论你如何找到答案——只要你能找到它就行。
术语表
在本章中,我解释了:
编解码器
用于编码和解码音频和视频的软件
驱动程序
一款允许 Linux 内核与你的硬件通信的软件
日志文件
记录你电脑上不同系统发生的所有事件的文件,让你能够看到可能未向最终用户报告的错误
4.7. 实验室
现在是时候了解你的硬件了:
1. 你会如何找出你电脑上有什么类型的无线网卡?
2. 你在哪里找到你电脑的日志文件?
3. 进入你的附加驱动程序区域,看看是否有为你系统提供的额外驱动程序。如果一切正常,就别动驱动程序,但如果你的系统有任何问题,看看新驱动程序是否有帮助。
4. 看一下你的 syslog 文件。它最后报告了什么?
5. 使用系统日志,你能确定/var/log 中的不同日志文件的作用吗?
第五章. 桌面环境
桌面环境(有时也称为桌面管理器)的概念是 Linux 中较为难以理解的部分之一。大多数用户熟悉 Windows 和 OS X。这些操作系统只有一个桌面界面。用户可以在一定程度上调整这些桌面,但本质上你只能接受苹果或微软决定的做法。菜单总是位于某些位置,快捷键组合与特定任务和程序相关联。用户无法对工作环境的设计发表意见,也无法进行很大程度的改变。而且,这些系统的用户通常被训练接受这种限制。这也是为什么你经常看到有些人多年没有更新他们的系统——他们喜欢现有的界面,不想转向不同的东西。这也可能是 Windows XP 能够存活 12 年(以及为什么它仍然在野外可见)的原因。
这种选择界面的自由和灵活性对于严肃的桌面用户尤为重要,他们花了很多时间在电脑前做严肃的工作,从写作、研究到沟通。OS X 和 Windows 的用户可能已经注意到这些界面变得越来越像平板电脑,有图标、触摸屏和应用程序。这些是平板电脑或手机用户,或者使用笔记本电脑或桌面来消费内容用户的美好工具。但对于我们这些做更多内容消费以外的事情的人来说,这些界面可能感觉过于简单且令人沮丧。许多 Linux 桌面环境,一旦掌握,将允许你在 Windows 或 OS X 通用界面上更高效地工作。这些桌面有学习曲线,但许多人发现,最初的投入时间在后期会带来相当大的生产力。
此外,因为我们中的许多人花了很多时间在电脑前,我们希望有一定的可定制性,因为我们的个人电脑关系变得几乎亲密。就像我们中的大多数人会根据照片、家具或纸张摆放来定制我们的办公室或工作空间一样,我们也希望有能力创建一个反映我们个人工作风格的计算环境,从菜单位置到程序的启动和显示方式。
本章将探讨 GNOME、KDE 和 Xfce,这三种最受欢迎的桌面环境。它还将讨论 Unity,这是 Ubuntu 的默认桌面环境(不要与用于制作视频游戏的 Unity 游戏引擎混淆;这两个项目无关)。还有许多其他桌面环境,但这四个足以让你开始。
5.1. 桌面环境
桌面环境是操作系统 GUI 的外观和感觉。在 OS X 和 Windows 的世界中没有等效物,因为那些操作系统每个只有一个桌面环境。可以说,OS X 和 Windows 的不同版本可能有不同的外观和不同的界面,但无法在 Windows 10 上获得 Windows 7 的界面。
如前所述,Linux 是一个内核。它控制操作系统,但桌面环境是您系统的外观和感觉。除了像界面上的日期和时间位置这样的小事情之外,它还控制着窗口的呈现方式。其他桌面环境元素包括:
-
如何关闭窗口。 关闭按钮在右上角吗?还是左上角?桌面环境决定了这一点。
-
导航元素。 有 dock 吗?任务栏?它们在哪里?
-
你在应用程序之间如何切换。 当你使用 Alt-Tab 时会发生什么?它是动画的吗?是否有平面图像?
设计师会做出关于他们希望桌面环境看起来和感觉如何的选择。桌面环境是你在电脑上的体验。在 Windows 和 OS X 的情况下,只有一个桌面环境。Linux 没有这种限制。
Linux 的界面不仅倾向于更可定制,而且用户甚至可以选择不同的桌面范式。例如,GNOME 和 Unity,我们将在几分钟内讨论,它们不依赖于传统的导航菜单。相反,它们使用启动器,允许用户输入他们想要启动的程序名称。对于许多用户来说,这是一个新的桌面模型。在 Linux 上,你可以在登录电脑时切换界面,这意味着如果你不能在两个桌面之间选择,你可以在它们之间交替,而无需重新安装软件或在电脑的两个部分之间复制文件。相反,这只是一个从桌面环境注销并登录到另一个环境的问题(见图 5.1)。
图 5.1. 当你第一次登录到你的电脑时,你可以选择你的桌面管理器。

大多数发行版支持多个桌面环境,所以如果你不喜欢默认的,你可以安装一个新的。例如,Debian 在安装时为用户提供桌面环境的选择,而 Ubuntu 默认安装 Unity。如果你想安装带有除 Unity 之外桌面环境的 Ubuntu,你需要选择一个不同的版本,比如 Xubuntu,它带有 Xfce 桌面环境,或者从软件仓库安装一个新的桌面环境。我们将在第七章中介绍如何安装新的桌面环境。
所有 Linux 程序都可以在所有 Linux 桌面上使用,所以你永远不必担心某个程序与特定的桌面环境不兼容。这不像 Windows 程序在 OS X 中无法运行。你在 Unity 中的最爱程序在 Xfce 中也会为你准备好。不同的桌面环境有不同的默认软件选择,但在 Linux 中,最终用户总是可以更改这些默认设置,所以它们实际上更多的是建议而不是命令。
现在,我们将讨论一些适用于 Linux 的特定桌面环境。
5.2. GNOME
GNOME 是一个流行的桌面环境,作为许多发行版的默认环境。当前版本被称为 GNOME 3,这使其与看起来和操作方式非常像 Windows XP 的 GNOME 2 区分开来。
5.2.1. 接口
GNOME 3 拥有更现代的外观,使用启动器概念来打开程序和文件。你不需要使用菜单来打开程序,而是在启动器区域输入你想要打开的内容,就像我们在 Unity 中做的那样,这是我们一直在 Ubuntu 中使用的。从概念上讲,GNOME 界面可能会让人联想到 OS X 的 Spotlight 实用工具或 Windows 的开始菜单搜索,两者都可以用来查找和启动文件和应用程序。它也可能让你想起 Unity。
GNOME 不像你可能习惯的那样依赖于菜单。例如,在 Windows 中,大多数用户通过使用左下角的托盘来与界面交互,导航到他们想要打开的文件或程序(如此之多,以至于 Windows 10 中备受喜爱的开始菜单变得更加突出)。GNOME 有一个菜单概念,但大多数情况下,你被期望打开启动器并输入你正在寻找的内容,或者从左侧的菜单中选择一个图标,如图 5.2 所示。你还可以使用 Windows 键启动菜单,而不需要点击任何东西(Windows 键也被称为元键或超级键)。一些用户发现这个启动器非常方便,因为程序和文件可以轻松打开,而无需将手指从键盘上移开。但一些用户发现这非常令人沮丧,更喜欢通过菜单导航来查找和启动文件。
图 5.2. GNOME 启动区域较为稀疏。你输入你想要查找的内容,桌面环境会为你找到它。

GNOME 与大多数 Linux 桌面环境和 OS X 一样,具有多个桌面概念,用户可以在不同的桌面中打开不同的程序,几乎就像他们在多台机器上工作一样,但都在单个显示器范围内。这种功能特别适合桌面工作,因为桌面工作通常需要用户在图形程序之间切换。有些人使用 Alt-Tab 在窗口和程序之间切换,但试图保持事物分离的用户,可以通过在另一个桌面中打开字处理器和网页浏览器以及 PDF 阅读器,在桌面之间切换而不是在程序之间切换。这种工作流程允许某些程序在一个工作空间中全屏显示,而另一组程序在另一个工作空间中共享同一个窗口。
许多计算机用户充分利用他们的桌面,用它来存放文件和图标。GNOME 有桌面文件路径,但桌面本身默认不显示文件。一些用户觉得这很令人困惑。其他人则欣赏它给他们的电脑带来的整洁外观。保存在桌面上的文件始终可以通过文件管理器访问,但习惯于导航到桌面以打开文件和文件夹的用户可能需要通过安装 GNOME Tweak Tool 来调整这个特定的默认设置,这是一个程序,允许你从 GUI 中轻松更改某些 GNOME 设置。
5.2.2. 自定义
GNOME 也很有趣,尽管本章的介绍性陈述,它本身并不是非常可配置。然而,有许多扩展可以自定义 GNOME 界面。有趣的是,这些扩展是通过网页浏览器访问的,而不是像许多人预期的那样通过设置菜单。可用的扩展列表在 extensions.gnome.org/。用户找到他们想要的扩展,并在浏览器中激活它,更改在 GNOME 内部完成(见 图 5.3)。这允许你自定义一切,比如添加一个更传统的菜单来启动应用程序,或者更改 GNOME 的默认 Alt-Tab 行为,它不像大多数其他操作系统和桌面环境那样在窗口之间循环。扩展按流行度排序,让新的 GNOME 用户了解可以如何调整界面。
图 5.3. GNOME 扩展是通过网页浏览器处理的,而不是像大多数其他桌面环境那样通过控制面板。

5.2.3. 软件
虽然 GNOME 是一个桌面环境,但该项目背后的开发者们也在开发与桌面环境相配套的软件。这些项目包括 gedit 文本编辑器;Epiphany 网络浏览器;以及 Notes 笔记应用。这些程序可以在不同的桌面环境中运行,但它们被设计成与 GNOME 的外观和感觉相整合。
GNOME 感觉与传统桌面不同,但一旦您适应了其背后的概念——您不是在菜单中搜索,而是在召唤程序和文件——您可能会发现很难回到更传统的桌面。
5.3. KDE
KDE,最初代表 K 桌面环境,是另一个流行的 Linux 桌面环境。技术上,桌面是 KDE Plasma,KDE 是一个更大的项目,除了创建 Plasma 外,还创建应用程序。但口语上,大多数人将 KDE Plasma 称为 KDE。
5.3.1. 接口
KDE 使用传统菜单,但同时也拥有启动器。界面对大多数用户来说应该相当熟悉。使 KDE 显著并受欢迎的是,几乎它的每个部分都可以自定义,因此它可以看起来像您想要的样子。
由于 KDE 有点复杂,您选择的发行版比其他桌面环境更为重要。预配置的 KDE 越好,使用起来就越容易——尤其是对于新用户来说。例如,OpenSUSE 被认为是 KDE 友好的发行版。Netrunner 也被认为是一个强大的 KDE 实现。Ubuntu 有一个使用 KDE 桌面的版本,称为 Kubuntu。Linux Mint 也有一个 KDE 版本。
从一个更精心策划的 KDE 版本开始,带有预配置的选项和功能,将使新用户能够了解它的可能性,这使新用户更容易上手。在类似 Arch 这样的标准 KDE 环境中工作,即使是经验丰富的 KDE 用户也可能具有挑战性,因为用户对桌面环境所有可能性的认识并不强烈。
5.3.2. 自定义
对于桌面用户来说,他们可能最感兴趣的是 KDE 的 活动 功能,该功能允许您为不同类型的任务配置不同的桌面。因此,您可能有一个包含文字处理器和引用管理器桌面快捷方式的写作活动。也可能有一个包含网络浏览器和 PDF 阅读器快捷方式的研究活动。从事数据工作的人可能有一个包含打开数据文件夹和 R 统计工具快捷方式的数据活动。
活动类似于虚拟桌面,但根据桌面使用方式预先选择了软件和文件夹。对于大多数用户,尤其是不太技术性的用户,他们可能大部分时间都在网络浏览器中,也许在电子邮件客户端中,这个概念似乎有些过度。但对于任何想要真正调整桌面体验的人来说,尤其是如果他们的桌面工作很复杂,活动具有很大的潜力。
假设我想设置一个写作活动。这个活动将给我一个打开写作文件夹和文字处理器快捷方式的桌面。
1. 首先,我将在右上角点击“新建活动”,然后点击“活动”(见图 5.4)。
图 5.4. KDE 允许您为不同类型的工作以不同的方式设置您的桌面。
2. 然后,点击扳手来命名活动(见图 5.5)。
图 5.5。为您的活动提供一个有意义的名称,这样您就可以轻松找到它。
3. 最后,设置您的桌面。图 5.6 显示了我在 KDE 中的写作活动。
图 5.6。此活动有一个文件夹已打开,以及一个指向文字处理器的快捷方式。
4. 要切换到另一个活动,再次点击右上角,然后再次点击活动(见图 5.7)。
图 5.7。点击您的活动名称以返回活动菜单。
5. 最后,点击您想要启动的新活动(见图 5.8)。
图 5.8。将程序和文件夹组合成活动,然后在不同活动之间切换,而不是打开和关闭程序。
现在,您将看到一个新桌面,已为您的新任务配置(见图 5.9)。
图 5.9。切换到新活动会为您提供一个全新的桌面,具有不同的文件夹和快捷方式。

大多数 Linux 桌面项目在某个时候都会进行重大改版。KDE 在其生命周期中经历了一些重大的改造,并不是所有用户都欣赏新的方向。(我不确定是否有过桌面环境重设计被所有用户普遍喜爱的。)幸运的是,对于那些不满意的 KDE 用户,有一些项目旨在捕捉 KDE 的早期版本。KDE 目前处于版本 5,但 Trinity 桌面是基于 KDE 3 的。大多数新的 Linux 用户可能对 Trinity 不感兴趣,但它提醒我们 Linux 桌面永远不会真正消失。相反,它们通常以较小、特定领域的项目形式继续存在。
5.3.3. 软件
如前所述,Linux 应用程序可以在所有桌面环境中运行。但 KDE 有一套自己的应用程序,它们通常以字母 K 开头。因此,Kate 是默认的 KDE 文本编辑器,KRunner 是默认的 KDE 应用程序启动器。KDE 甚至有自己的网页浏览器,称为 Konqueror(见图 5.10)。这并不是说这些程序在 GNOME 上无法成功运行。这只是意味着 KDE 有自己的软件生态系统。
图 5.10。KDE 有自己的网页浏览器,称为 Konqueror。

KDE,比本章讨论的任何桌面环境,对某些人来说点击一下就成功了,而对另一些人来说则不然。一些用户,甚至新用户,尝试了 KDE 后立刻被所有配置选项所吸引,并乐于花时间和精力将桌面设置得恰到好处。其他人发现这个过程令人沮丧,希望不要让用户做出如此多的决定。这就像是 GNOME 的反面,GNOME 可以自定义,但不是以明显的方式。对某些人来说,KDE 可能过于可自定义。但对于那些想要拥有非常个性化、专注的桌面体验的用户来说,可能没有比 KDE 更好的桌面环境了。
5.4. Unity
Unity 是 Ubuntu 特有的,作为该发行版的默认桌面环境。它基于 GNOME 3,实际上看起来和行为非常相似。当 Unity 首次推出时,它有一些 bug,就像早期的软件一样。Linux 社区中的许多人因为 Ubuntu 背后的公司 Canonical 没有直接与 GNOME 合作而感到不满,因为 Ubuntu 之前与其他版本有过合作。然而,Unity 随着时间的推移稳步改进,尽管 Linux 社区中仍有不满。
Unity 最紧密地与 Ubuntu 联系在一起,但一些发行版有安装它的方法。例如,Arch Linux 在其仓库中就有 Unity。
5.4.1. 界面
Unity 与 GNOME 的主要区别在于 Lens/Scope 概念。Lenses类似于 GNOME 应用程序启动器,但可以限制搜索特定类型的内容,从音乐到 Google Books,再到网络、购物网站,甚至文本。Lenses 是限制你在 Unity 仪表板区域(或 Dash,按照 Unity 的说法)内搜索的方式。scopes是 lenses 搜索的内容。这种功能对专注于特定任务的用户有影响,他们可能希望搜索文件和集合,而不必 necessarily 进入文件夹或访问网站。
你可以通过使用 Unity Dash 上的“过滤结果”按钮来查看可用的 scopes 和 lenses(见图 5.11)。这让你在 Dash 中输入内容时可以选择搜索的来源。例如,你可以用它来搜索 eBay,而无需访问 eBay。
图 5.11. Dash 区域让你可以选择从哪里搜索。你可以搜索本地机器上的文件之外的内容。

5.4.2. 自定义
Unity 界面不太可配置。这与 Canonical 希望在不同设备上保持一致的用户体验有关,这样 Unity 在手机、桌面和平板电脑上看起来都一样。如果你喜欢 Unity 界面,这不是问题,但对于只喜欢其某些方面的用户来说,这却是一个挑战。然而,Unity 自 2010 年开始,逐年稳步改进。许多对 Unity 有异议的用户是早期采用者,他们在桌面环境仍在定义和开发时就开始使用它。而且还有一些波折,最值得注意的是,Unity 设置自动将用户设置为在 Dash 搜索结果中显示亚马逊结果。然而,该设置已被更改为可选。
值得一提的是,还有一个Unity Tweak Tool,它提供了一个图形界面来更改 Unity 的一些特定方面。Tweak Tool 默认不安装,但可在 Ubuntu 仓库中找到。我们将在第七章中讨论如何安装类似的东西。
5.4.3. 软件
与 GNOME 和 KDE 不同,Unity 没有与之关联的软件,尽管它倾向于使用 GNOME 的默认软件作为自己的默认设置。大多数人使用 Unity 是因为它是 Ubuntu 的默认选项,但实际上它是一个强大的桌面选项。它与 GNOME 非常相似,主要区别在于 Lens/Scope 概念。如果你已经在使用 Ubuntu,花些时间熟悉 Unity 是值得的。
5.5. Xfce
Xfce 可能被认为是桌面环境中的罗德尼·丹泽菲尔德,因为它很少受到尊重。它在 Linux 桌面环境中占据一个有趣的位置。
5.5.1. 界面
在系统资源消耗方面,Xfce 比 KDE、GNOME 和 Unity 更轻量。然而,与此同时,它也不是特别创新或功能齐全。它只是一个使用熟悉的菜单启动程序的桌面环境,虽然 Xfce 也允许多个工作空间,因此你不会受到单个窗口所能容纳内容的限制。
对许多人来说,Xfce 缺乏创新是一个特点。你不需要学习如何使用它,因为你已经知道如何使用它。有一个菜单你可以用来打开程序。还有一个内置的启动器/应用程序查找器,对于那些想要更类似于 GNOME 或 Unity 界面的用户。它还有一个不错的底栏,或带有软件图标的底部面板。这会让很多人想起 OS X,而对于喜欢点击图标打开程序的用户来说,Xfce 的底栏是一个优秀且视觉上吸引人的选项(见图 5.12)。使用 Xfce 很简单。它不会挑战你或让你重新思考你的工作流程,但它将允许几乎所有用户快速有效地工作,而无需大量调整。
图 5.12. Xfce 虽然不是特别创新,但它有很多不错的功能,包括屏幕底部的类似 OS X 的底栏。

5.5.2. 自定义
对于那些想要调整的用户来说,Xfce 非常可定制。你可以选择任务栏出现的位置以及程序如何分组。任务栏还可以通过显示电池电量到天气等应用程序进行自定义。Xfce 还使得创建快捷键变得容易,这样某个特定的键组合就会打开某个特定的程序。
尽管 Xfce 以其平淡但坚固的声誉而闻名,但它是在各种发行版中常见的选项。Linux Mint 有一个 Xfce 版本,Ubuntu(Xubuntu)也是如此。Debian 曾短暂地将 Xfce 作为默认桌面环境,然后又切换回 GNOME。大多数主要发行版都有某种 Xfce 实现,而没有的也会在它们的仓库中提供。
5.5.3. 软件
与 Unity 一样,Xfce 没有自己的软件生态系统。因为 Xfce 在旧硬件上运行良好,一些发行版会默认安装更轻量级的程序版本。例如,你可能会看到 AbiWord 作为默认的字处理程序,而不是更系统密集的 LibreOffice。幸运的是,默认程序并不重要,正如你将在下一章中看到的,下一章将展示如何安装和删除程序。
不带偏见地,我感到有必要透露,我在我的主要笔记本电脑上使用 Xfce 作为桌面环境。它运行良好,不会妨碍我,这正是我在桌面环境中所寻找的。它并不特别耀眼或创新,但它让你可以调整到足够的程度,让你感觉好像有人为你设计了一个桌面。
5.6. 选择桌面环境
那么,你究竟如何选择桌面环境呢?首先要注意的是,桌面环境不需要是长期承诺。如前一章所述,桌面环境可以共存,无需移动文件。所以如果桌面不适合你,你可以轻松地安装另一个,保留前一个或删除它。这不会影响工作文件。
但在达到那个阶段之前,花些时间与听起来或看起来最有趣的桌面环境相处可能是有用的。如果 KDE 看起来很有趣,花几周时间使用它,强迫自己使用它。当你遇到问题时,研究它们,看看是否有办法改变它们。
Linux 的强大之处和美丽之处在于,在其核心,它是可变的。大多数用户已经习惯了接受他们操作系统的限制。按钮不能移动,行为不能改变。但与 Linux 相比,这通常不是一个问题。所以虽然你可能无法对桌面环境进行任何更改——至少不是不需要一些严肃的编程——但你可能足以改变桌面,使其适合你的个人风格。根据桌面环境的不同,这些更改可能通过图形菜单、通过命令或通过文件编辑来完成。
在选择桌面方面,也要注意关注你的工作流程,而不仅仅是使用的桌面环境。从概念上讲,这与 Windows 和 OS X 有很大的不同,后者要求用户与操作系统设计者选择的桌面范式一起工作。由于这些桌面的锁定性质,最终用户可以在一定程度上进行调整,但必须在特定的约束内工作。Linux 桌面通常也有类似的约束,但由于桌面环境的多样性,用户通常可以找到某种更符合他们个人偏好的东西。因此,当选择 Linux 桌面时,尝试几个,然后找出哪些方面最有吸引力。
硬件也可能在你的桌面选择中发挥作用。旧硬件可能无法处理更复杂的桌面环境,如 KDE 或 Unity。如果你想要从旧机器中获得最大效益,你可能需要考虑使用资源消耗较少的桌面,如 Xfce。
如前所述,软件在桌面环境之间是完全可互换的。与 KDE 相关的程序可以在 Unity 或其他任何桌面环境中运行。然而,如果你发现自己正在使用许多 KDE 程序,使用 KDE 可能值得,这样可以在节省磁盘空间和系统资源方面有所帮助。
随着桌面界面越来越像移动界面,对于在电脑上做的不只是检查电子邮件的用户来说,选择桌面外观和行为的能力变得更加重要。
表 5.1 查看了我们在这里讨论的桌面环境,并将它们分解为几个主要话题。
表 5.1. 桌面环境概述
| 桌面环境 | 接口 | 自定义 | 软件生态系统 | 学习曲线 |
|---|---|---|---|---|
| GNOME | 启动器 | 通过第三方工具和扩展 | 自有生态系统 | 一般 |
| KDE | 启动器和菜单 | 内置 | 自有生态系统 | 复杂 |
| Unity | 启动器 | 通过第三方工具 | 倾向于使用 GNOME 程序 | 一般 |
| Xfce | 启动器、菜单和/或 Dock | 内置 | 倾向于使用轻量级程序,但缺乏自己的生态系统 | 简单 |
一切都在变化……?
值得重复的是,本章中提到的某些桌面环境有一定的学习曲线。即使是像 Xfce 这样简单直接的桌面环境,也需要在功能和功能方面做一些工作才能熟练掌握。花在学习桌面环境上的时间越多,用户从中获得的(可能)就越多,但对于那些可能不想调整桌面体验每个方面的普通用户来说,简单的在线搜索就能找到某些自定义问题的答案。
正如本书其他地方提到的,Linux 是一个动态的环境。软件总是在变化和更新。桌面环境也不例外——它们有时会发生变化。这并不意味着正在运行 KDE 的用户有一天会醒来发现桌面体验完全不同。然而,迁移到新的发行版或发行版的新的版本的用户可能会发现 KDE 自上次安装以来已经发生了变化。
这就是选择再次成为重要变量的地方。你可以选择一个更类似于之前桌面版本的桌面,或者找到一个能满足你需求的新环境,或者你可能发现他们桌面环境的新版本正是你所需要的。这就是为什么理解自己的工作流程对于 Linux 来说如此重要——通过了解你的需求,你就知道你的桌面是否在按照你的需求工作。因此,你在理解桌面和工作流程上所做的努力不是一次性的体验。从这个过程中学到的信息将在你使用 Linux 的整个过程中,以及在使用其他操作系统和界面的整个过程中都有所帮助。
5.7. 总结
桌面环境是 Linux 体验的重要组成部分。虽然发行版控制着诸如可用软件之类的事情,但桌面环境是你将如何与你的电脑交互的方式。
使用你选择的发行版附带的默认桌面没有问题。事实上,这有一定的逻辑,因为默认桌面环境通常在项目中得到最多的关注。你还应该记住,你不会被默认桌面环境所束缚。即使你决定保持默认设置,你仍然可以从尝试不同的桌面环境和桌面环境的不同实现中获得许多想法和调整。很多时候,这些想法可以在某种方式下在另一个桌面中实现。
认真的工作需要一个认真的桌面。普通用户可能只需要一个网络浏览器来做他们需要的一切,但许多人都需要从他们的电脑中获得更多。Linux 是一种创造符合我们意愿而不是我们屈服于界面意愿的体验的方式。
术语表
在本章中,我解释了:
桌面环境
操作系统 GUI 的外观和感觉
5.8. 实验室
现在,你将尝试另一种桌面环境,无论是作为实时镜像还是作为你电脑上的第二个虚拟机。不要在这些之上安装你的现有 Ubuntu 安装! 我们将在这本书的剩余部分继续使用 Ubuntu。
想想本章,除了 Unity 之外,哪个桌面环境听起来很有趣。
-
你想尝试哪一个?
-
如果你感兴趣 Xfce,请下载并安装 Xubuntu (
xubuntu.org/)。 -
如果你感兴趣 KDE,请下载并安装 Kubuntu (
www.kubuntu.org/)。 -
如果你感兴趣 GNOME,请下载并安装 Ubuntu GNOME (
ubuntugnome.org/)——见侧边栏。
要么虚拟安装其他桌面环境,要么作为实时镜像(过程将与第三章 chapter 3 相同),并使用它 10 分钟。
-
你如何关闭窗口?
-
你如何启动程序?
-
你能将文件保存到桌面吗?
-
它与 Unity 相比如何?
-
它与你的当前操作系统相比如何?
虚拟安装 GNOME
如果你虚拟安装 GNOME 遇到麻烦,你可能需要禁用 3D 加速。要这样做:
1. 右键点击你的虚拟机并点击设置。
2. 点击显示。
3. 取消勾选启用 3D 加速。
4. 点击确定并再次尝试安装。
如果你发现无法在虚拟机中运行 GNOME,请尝试禁用 3D 加速。
第六章. 操纵你的桌面
现在是时候开始探索您的桌面了!我们在上一章讨论了一些桌面环境,今天我们将专注于使用 Linux 桌面进行基本任务。我将使用 Unity,Ubuntu 的默认桌面环境,作为许多示例,但我也会向您展示其他桌面环境的工作方式。此外,我们在这里讨论的大部分内容对于您作为一个普通计算机用户来说应该相当熟悉。我将要做的是,将您在当前操作系统中所做的基本、日常事情展示如何用 Linux 来完成。
6.1. 使用程序
在本节中,我将向您展示如何在 Ubuntu 系统中查找、启动和关闭程序。我认为大多数读者会发现这个过程很熟悉。它与使用其他操作系统并没有太大的不同,但不同之处足以值得进行一次演示。这样,我们都在同一页面上。
6.1.1. 查找程序
我们已经对此进行了一些讨论,但要找到 Unity 中的程序,您需要使用左侧的导航栏(或 Windows/Super 键)并输入您希望启动的程序名称到 Dash,Unity 的启动器(见图 6.1)。
图 6.1。这是 Unity 的 Dash 区域。圆圈区域是您输入要启动的程序或文件名称的地方。

但如果您不知道您想要使用的程序的名称怎么办?首先要注意的是,Unity 在程序名称上做了一些别名处理,所以与命令行不同,您需要精确,在 Unity(以及大多数其他桌面应用程序启动器)中,您不一定需要输入程序的准确名称。相反,您只需输入程序类别即可。例如,如果您想启动 Firefox 网络浏览器,您可以输入Firefox并点击 Firefox 图标,或者当它在列表中出现时按 Enter 键。
但如果您不确定哪个浏览器,或者哪些浏览器与您的发行版一起提供?在这种情况下,您可以输入web browser,您将看到 Firefox 出现。如果您继续安装另一个网络浏览器,它也会出现(见图 6.2)。
图 6.2。在 Dash 中输入web browser将显示您电脑上安装的所有网络浏览器。

但如果您找不到需要的程序怎么办?Unity 将允许您查看电脑上安装的所有程序,尽管与其它桌面环境不同,它们不会按任何特定顺序排列。
要浏览所有这些程序:
1. 打开 Dash(可以通过点击任务栏左上角的图标或使用 Windows/Super 键)。
2. 切换到屏幕底部的应用范围。
此范围会让 Unity 只搜索您的应用程序,而不是您的程序、文件以及您激活的任何范围(见图 6.3)。
图 6.3。您可以使用 Dash 屏幕上的应用范围让 Unity 只搜索您电脑上的程序。

其他桌面环境,特别是更多基于菜单驱动的环境,通过使用菜单标题将程序排序到大致的主题顺序中,使其更容易找到程序。例如,在 KDE 中,如果你想找到你的网络浏览器:
1. 在左下角打开 KDE 菜单
2. 点击应用程序
3. 点击互联网
4. 点击网络浏览器
KDE 将显示机器上安装的所有网络浏览器(见图 6.4)。你会点击你想要启动的一个。
图 6.4. KDE 按功能对应用程序进行排序。

如你所见,在各个桌面环境中查找程序就像输入或使用菜单一样简单——这可能是你已经习惯的。
在下一节中,我们将进一步探讨在 Linux 中使用程序,从默认的 Ubuntu/GNOME 文件管理器 Nautilus 开始。
6.1.2. 启动程序
要打开 Nautilus,启动 Dash 并输入 file。有趣的是,你会注意到如果你输入 file manager,它不会被选中。这是因为 Ubuntu 将其文件管理器称为 Files。Files 的“真实”名称是 Nautilus。Files 是 Nautilus 的别名。所以如果你输入 file 或 files 没问题,但如果你输入更多,应用程序将无法找到。你也可以通过在 Dash 中输入 Nautilus 来找到它。
你还会在 Dash 区域的文本下方看到一个 Nautilus 图标。如果你查看左侧的导航坞,你会看到相同的图标(见图 6.5)。程序也可以从导航坞启动。GNOME 在屏幕左侧有一个类似的导航坞,而 Xfce 在底部(见图 6.6)。这些导航坞的技巧通常只是识别图标的问题。
图 6.5. 如果你不确定一个图标的意思,Unity Dash 会显示给你。

图 6.6. 其他桌面环境,包括 Xfce,也定义了图标。

6.1.3. 关闭程序
在 Unity 中,关闭应用程序按钮位于屏幕顶部左侧(见图 6.7)。KDE、GNOME 和 Xfce 都在右上角有关闭按钮。
图 6.7. Unity 的窗口控制位于顶部左侧,像 OS X 一样。其他桌面环境使用顶部右侧。

6.1.4. 顶部菜单栏
你可能已经注意到程序缺少在其他操作系统中看到的顶部菜单栏(见图 6.8)。
图 6.8. Unity 默认不显示这样的顶部菜单。

这是另一个 Unity 设计选择——菜单集成到那个顶部面板中。对于没有想到向上看那么远的用户来说,有时会感到困惑。要使顶部菜单出现,将光标移到顶部面板(它是有时钟的面板)。见图 6.9。
图 6.9. 在 Unity 中,将光标移到屏幕顶部会导致顶部菜单栏出现。

一旦你的光标触碰到那个面板,你会注意到菜单出现。
6.1.5. 自定义你的磁贴
拥有磁贴概念的每个发行版都允许对其进行自定义,包括添加和删除程序。
在 Unity 中,每次你打开一个程序,它的图标都会出现在左侧磁贴上,小三角形表示它是活动的程序(见图 6.10)。
图 6.10. Unity 通过在其程序图标两侧的两个小三角形来显示其左侧磁贴上哪个程序是活动的。

要添加或删除磁贴上的程序:
1. 右键点击磁贴图标(见图 6.11)
图 6.11. 可以从 Unity 磁贴中添加和删除程序。
2. 点击“从启动器解锁”
当程序打开时,图标将保持可见,但当程序关闭时将消失。这对于你不太常用的程序来说是个好功能。
要添加程序到磁贴:
1. 右键点击磁贴图标
2. 点击“锁定到启动器”
然后图标将始终存在。这对于你经常使用的程序来说是个好功能。
这个过程对于 GNOME 来说基本上是相同的,除了 GNOME 使用浅蓝色下划线来指示活动程序(见图 6.12),并且将其磁贴称为“收藏夹”而不是 Unity 中的“启动器”(见图 6.13)。
图 6.12. GNOME 使用微妙的蓝色下划线来指示其磁贴上的活动程序。

图 6.13. GNOME 将其磁贴称为“收藏夹”,就像 Unity 一样,允许你添加和删除程序。

不同分布和桌面环境在添加和删除程序到或从磁贴、任务栏和面板的过程中会有不同的处理流程,但大多数情况下,你都是通过在图标上右键点击来完成这一操作的。
现在,以你选择的方式打开 Nautilus,然后我们将继续在 Linux 桌面上处理文件。
6.2. 工作于文件和文件夹
就像在其他操作系统一样,几乎每个 Linux 桌面环境都有三种打开文件的方式:
1. 双击文件以打开它。
2. 通过应用程序打开文件。
3. 通过启动器打开文件。
文件在文件夹中,所以让我们先暂时处理一下文件夹。
6.2.1. 创建文件夹
首先,我们需要一个工作文件夹。
创建文件夹
1. 进入 Nautilus 并双击你的文档文件夹。
2. 你现在在这个文件夹内。这应该对你来说很熟悉。Linux 桌面与其他操作系统非常相似。
3. 在文档文件夹的空白、白色区域右键点击,然后点击 新建文件夹。
将文件夹添加到 Nautilus 的操作就像右键点击一样简单。
4. 将此文件夹命名为 linux.lunches。你现在在你的文档文件夹中有一个文件夹了。
你的 Nautilus 文件夹
双击进入这个新文件夹,将你置于 linux.lunches 文件夹内。
6.2.2. 创建文件
现在我们将在这个文件夹中放置一个文件。再次右键单击,就像我们创建文件夹时做的那样,但这次点击新建文档,然后点击空白文档。将创建一个新文件,你可以将其命名为 myfirstnote。
你会注意到我没有包括文件扩展名。一些用户可能习惯于将所有内容都保存为带有文件扩展名(如果你不这样做,一些操作系统会为你添加一个)。文件扩展名是位于文件名末尾点后面的两个、三个或四个字母后缀。文件扩展名帮助一些操作系统了解它正在处理什么类型的文件以及打开它需要什么。所以当它看到.docx 文件扩展名时,系统假设它正在处理一个 Word 文件。没有文件扩展名,一些操作系统会要求你选择一个用于打开该文件的程序。但 Linux 不需要以同样的方式使用扩展名。它可以不使用文件扩展名就建立关联。
所以,如果你有这个习惯和偏好,你可以将文件保存为 myfirstnote.txt。但 Linux 系统会假设空文件是文本文件——即使没有扩展名。正因为如此,你可以将文件保存为 myfirstnote。无论哪种方式,文件都将使用你的默认文本编辑器打开。并且请注意,你没有打开文本编辑器就创建了一个文本文件,这有点令人印象深刻!
6.2.3. 打开文件
现在让我们练习打开文件。双击 myfirstnote 来打开它,就像在任何操作系统上一样。正如你所期望的,文件打开了。打开它的程序被称为 gedit(见图 6.14)。它是一种在许多桌面环境中默认的文本编辑器,包括 Unity 和 GNOME。我们将在第九章中更多地讨论 gedit。
图 6.14. gedit 是 Unity 和 GNOME 中常见的简单文本编辑器。

现在关闭 gedit。
现在打开 gedit。这次打开 gedit,你将使用 Unity 启动器并输入gedit或text editor。另一种打开文件的方式是使用 gedit 中的打开对话框并导航到文件。这在所有操作系统中都很常见。gedit 方便地在顶部导航菜单中有一个打开按钮。使用顶部导航打开 myfirstnote(见图 6.15)。然后,再次关闭 gedit。
图 6.15. 文件可以通过应用程序打开。这在桌面环境和操作系统中都是通用的。

打开文件的最后一种方式是使用 Dash。你不需要输入应用程序的名称,而是可以输入文件的名称(见图 6.16)。输入myfirstnote,文件就会出现在 Dash 中(如果你使用的是应用程序范围,则不会出现,因为应用程序范围只搜索程序而不是文件)。GNOME 和 KDE 都具备这种功能(见图 6.17 和 6.18)。
图 6.16. Unity Dash 搜索文件。

图 6.17. KDE 是另一个提供无需通过文件夹导航即可轻松访问文件的桌面环境。

图 6.18. GNOME 可以搜索文件以及应用程序。

然而,许多人更喜欢通过文件管理器或应用程序导航到文件。一旦您养成通过键入文件名打开文件的习惯,您会发现这是一种更快、更有效的工作方式——跨发行版和操作系统。
6.2.4. 移动文件夹和文件
在各个发行版中移动文件夹和文件是标准的。只需单击一次文件以选择它,然后将它拖动到您希望它出现的位置的目录。Nautilus 允许您像其他文件管理器一样书签目录。书签目录的优点是它使得将文件移动到常用目录变得更加容易。让我们将 linux.lunches 目录书签,然后将一个文件拖入其中。
首先,打开我们在本章前面提到的 Nautilus 文件管理器。然后,导航到我们之前创建的 linux.lunches 目录(它在文档中)。要访问 Nautilus 书签区域,您需要将光标移到屏幕顶部,即顶部面板,其中包含时钟(见图 6.19)。
图 6.19. 要访问 Nautilus 书签菜单,您需要使用顶部的 Unity 面板激活它。

当您的鼠标移到顶部时,您可以点击书签菜单,然后书签此位置。现在您将在 Nautlius 的左侧导航区域下的书签中看到 linux.lunches(见图 6.20)。
图 6.20. 大多数文件管理器,包括 Nautilus,都允许您书签常用目录。

现在,使用 Nautilus 导航到桌面文件夹,创建一个名为 mysecondnote 的空文档。单击一次,然后将其拖入 linux.lunches(见图 6.21)。
图 6.21. 您可以将文件拖动到目录中,这有助于您组织它们。

6.2.5. 复制文件夹和文件
要复制文件夹或文件:
1. 右键单击它以获取上下文菜单(见图 6.22)。
图 6.22. 右键单击文件以获取其上下文菜单。
2. 如果您想使用文件管理器将其复制到另一个目录,请选择“复制到”,该文件管理器将在您选择此选项后打开(见图 6.23)。
图 6.23. “复制到”会调用文件管理器。
3. 如果您想手动将其粘贴到文件夹中,请选择“复制”。
4. 要将它粘贴到文件夹中,导航到目标文件夹,然后在文件夹中右键单击。上下文菜单中会出现“粘贴”选项(见图 6.24)。
图 6.24. 在目标文件夹中右键单击以粘贴复制的文件。
6.2.6. 删除文件夹和文件
到目前为止,可能不会令人惊讶,删除文件夹和文件的操作也与其他操作系统类似。您可以通过点击文件夹或文件并按下键盘上的 Delete 键,或者通过右键点击并使用上下文菜单将其移动到回收站(图 6.25)。
图 6.25. 右键点击文件将其移动到回收站。

6.2.7. 更改文件夹和文件的外观
您可能已经注意到 Nautilus 文件图标很大,占用的空间很多。
如果您更喜欢更简洁的视图,您可以在 Nautilus 中轻松更改。首先,转到顶部面板,这将使 Nautilus 面板出现。然后,转到编辑菜单并选择首选项。从那里,您可以自定义 Nautilus 的一些行为。例如,如果您不喜欢将文件和文件夹表示为粗大的图标,您可以将它们切换到列表视图,这可以在“视图”选项卡下找到(见图 6.26)。首选项区域允许您更改一些事情,例如,如果您想通过单击而不是双击来打开文件夹,您可以选择这样做。更改将在您下次打开 Nautilus 时生效。图 6.27 显示了我们的文件夹在更紧凑的列表视图中。
图 6.26. 您可以通过切换到列表视图来简化 Nautilus 界面。

图 6.27. 在 Nautlius 列表视图中,文件夹和文件占用的屏幕空间更少。

这种配置在文件管理器中是标准的。例如,您可以使用 Dolphin,默认的 KDE 文件管理器(见图 6.28)做类似的事情。
图 6.28. 大多数 Linux 文件管理器提供不同的视图选项,包括 KDE 的 Dolphin。

6.3. 总结
现在您应该对如何在桌面上导航有了很好的感觉。本书假设您正在使用 Ubuntu 上的 Unity。如果您在不同的发行版或 Ubuntu 中的不同桌面环境中使用不同的环境,这里我们讨论的所有概念都将适用——您的桌面环境或发行版中的某些事物可能看起来略有不同。
我希望您会关注通过启动器启动文件的能力,无论是像 KDE 那样的菜单区域,还是像 Unity 和 GNOME 那样的 Dash/启动器区域。无需深入文件夹即可打开文件可以节省大量时间。尽管并非每个桌面环境都支持该功能,但像 GNOME 和 KDE 这样的主要桌面环境都支持。没有这种能力的桌面可以通过安装启动器来实现,我们将在第十六章中讨论。拥有复杂文件文件夹层次结构的用户将喜欢能够立即调用所需文件的能力。然而,喜欢传统点击打开文件访问的用户在 Linux 中始终有这个选项。
但总的来说,我希望你现在看到,Linux 并不像其他操作系统那样不同。Linux 非常可定制,正如我们通过不同桌面环境中打开文件的不同方式所看到的,但在其核心,GUI 应该感觉非常熟悉。
术语表
在本章中,我解释了以下内容:
上下文菜单
显示额外选项的菜单。通常通过右键单击文件或文件夹来找到它们。
超级键
键盘上的 Windows 标志键。
6.4. 实验室
本章重点介绍了 Ubuntu 和 Unity,但正如你所看到的,在不同桌面环境之间导航和文件操作基本上是相同的。对于你的作业:
1. 在您的文档文件夹中创建一个名为 homework 的文件夹。
2. 在作业文件夹中创建一个名为 homeworkfile 的文档。
3. 将作业文件夹添加到书签。
4. 将作业移动到 linux.lunches。
5. 当你访问作业书签时会发生什么?homeworkfile 是否随它一起移动?
完成这些操作有多种方法。只要文件夹被创建,文件和文件夹被移动,就没有正确或错误的方法。
额外加分
1. 你会如何查看文件的属性?
2. 你会如何查看文件夹的属性?
3. 你如何创建文件或文件夹的快捷方式?
第二部分. Linux 家庭办公
在《一个月午餐学会 Linux》的第二部分中,这些章节将为你准备使用 Linux 进行家庭办公,以及你如何在日常生活中使用 Linux。你将了解可用的庞大软件世界,如何安装它,以及如何使用它。你还将学习神秘的、看似令人生畏但实际上并不那么糟糕的命令行。你还将学习:
-
如何使用 Linux 生产力软件来完成诸如文字处理和编辑照片等工作
-
文本编辑器的美和便利
-
命令行是什么以及如何使用它
-
如何在 Linux 中运行 Windows 程序
-
在 Linux 中高效工作的技巧
第七章. 安装软件
欢迎来到我们旅程的第二部分 part 2!现在你已经让 Linux 运行起来并了解了它的工作原理,比如发行版和桌面环境,我们将花时间让它准备好供你使用。接下来的 10 章将教你如何使用和自定义你的 Linux 环境,以便你能够高效工作。例如,一旦你学会了命令行,你可能就再也不想回到图形程序了。现在,让我们来谈谈基本级别的自定义——在你的系统上安装新的软件。
每个发行版都预装了软件。在上一章中,我们看到了 GNOME 和 Unity 各自带了 Nautilus 文件管理器和 gedit 文本编辑器。但如果你不喜欢这些工具呢?Linux 的美妙之处在于你很少会陷入软件的困境。在这一章中,你将学习如何使用 Linux 安装和删除软件。更具体地说:
-
我将讨论软件包管理器,它用于安装和删除软件。
-
我们将打开并使用 Ubuntu 软件管理器来安装 Synaptic,另一个软件包管理器。
-
我们将打开并使用 Synaptic 来安装 Vim。
我还将讨论一些关于软件在 Linux 中如何工作的基本概念。然而,这一章将专注于安装软件的机制。我将在下一章中探索更多“一切是如何工作的”内容。现在,我猜你可能有一些你希望在电脑上安装的喜欢的软件,所以我将首先向你展示如何做到这一点。
7.1. 软件包管理器
Linux 的软件安装、删除和更新由软件包管理器处理。软件包管理器是我们用户和发行版软件仓库之间的操作工具。这是你寻找要安装的软件的地方。
软件包管理器也是保持你的计算机上软件更新的工具。正如我之前提到的,一些发行版比其他发行版有更新的软件版本。一些发行版可能使用 gedit 的 3.17 版本,而另一个可能使用 3.4 版本(版本号越高,软件越新)。使用的版本取决于仓库中可用的内容。
如果软件在仓库中不可用,则无法使用软件包管理器进行安装。如果您想安装新的桌面环境,您也会使用软件包管理器。您找到它并安装它,您就拥有了另一个桌面。
此外,在大多数情况下,您将使用软件包管理器来安装、删除和更新软件,而不是从网站上下载软件。正如我之前提到的,从手机应用商店安装软件而不是从不同网站下载,这个过程对习惯于应用商店的人来说很熟悉,但可能对 Windows 用户来说感觉有些奇怪(尽管 Windows 通过添加/删除软件区域使用类似软件包管理器的概念从计算机中删除软件)。然而,一旦您习惯了它,您会对软件的安装和删除的便捷性感到兴奋。
您的计算机只有一个软件包管理器,但有不同的界面。尽管外观不同,您始终在与之交互。稍后,我们将使用命令来安装和删除软件。
在本章中,我们将探讨 Synaptic(见图 7.1),它是由基于 Debian 的系统使用的图形化软件包管理器。我们还将探讨 Ubuntu 软件商店,它也是另一个图形化软件包管理器。您可以使用其中一个或两个来安装软件,而不会对您的系统造成任何影响。
图 7.1. Synaptic 适用于每个基于 Debian 的系统,这使得了解它非常有用。

尽管它们是不同的界面,但它们使用的是相同的后端。对于基于 Debian 的发行版,后端是Apt,代表高级包装工具。不同的发行版使用不同的软件包管理器,但它们背后的概念是相同的。例如,Fedora 和 OpenSUSE 共享一个名为RPM的后端,代表RPM 软件包管理器(另一个迷人且令人愤怒的递归 Linux 缩写)。Fedora 上的 RPM 图形界面称为软件,是 GNOME 软件安装程序(见图 7.2)。这也是 Ubuntu 16.04 的默认软件安装程序,它不再使用 Ubuntu 软件中心。
图 7.2. Fedora 的图形化软件包管理器称为软件。它使用 RPM 软件包管理器。注意它看起来像是一个应用商店。

OpenSUSE 的图形界面称为YaST(另一种设置工具)控制中心(见图 7.3)。
图 7.3. OpenSUSE 的图形化软件包管理器称为 YaST。与 Fedora 类似,它使用 RPM 软件包管理器。注意它看起来更像是 Synaptic。

软件包管理器的工作方式与桌面管理器非常相似——技术基础相同,但图形用户界面可能不同。关键区别在于界面是针对特定发行版的,所以如果你喜欢 YaST 的外观和感觉,你无法在 Fedora 上使用它。然而,就交互方式而言,行为在各个发行版之间几乎是相同的。Ubuntu 不再预装 Synaptic,所以在我们查看它之前,我们需要安装它。让我们从 Ubuntu 的图形包管理器开始,这是我们用来安装 Synaptic 的工具。
7.2. Ubuntu 软件中心
我们使用的 14.04 版本的 Ubuntu 的默认包管理器被称为 Ubuntu 软件中心。它不是一个真正的包管理器,因为它不处理软件更新。相反,它只允许你安装和删除软件。此外,它模仿了商店的模式,因此它包括像评论和推荐这样的内容,这在大多数图形包管理器中是看不到的。最后,因为它模仿了商店的模式,所以其中并非所有内容都是免费的。这在 Linux 中是不寻常的,但在移动应用商店中相当标准。
虽然 Ubuntu 软件中心看起来很漂亮,但我发现它的速度比纯图形包管理器(如 Synaptic)慢。此外,尽管软件中心有很多优秀、值得购买的内容,但我很少需要它们。所以我们要做的第一件事就是安装一个不同的包管理器。
要启动 Ubuntu 软件中心,进入 Dash 并输入 Ubuntu Software Center,然后点击应用程序。你会看到类似图 7.4 的东西。
图 7.4. Ubuntu 软件中心看起来像是一个标准的应用商店。

这在图形包管理器中相当标准。如果你想查看所有办公软件,你可以点击 Office 链接并查看列表。
软件中心还让你可以看到你安装的程序以及你安装、删除和更新的程序的历史记录(图 7.5)。该列表按日期排序,如果你试图找到你意外删除或安装的东西,这很有帮助。
图 7.5. Ubuntu 软件中心提供了你已安装的所有软件列表,并跟踪软件的添加、删除和更新。

由于我们知道我们想要安装的软件名称是 Synaptic,我们可以使用搜索框搜索它。
软件中心会随着你的输入进行匹配,最终你将看到包含 Synaptic 在列表顶部的结果列表。点击它,你将可以选择安装它或者获取关于该程序(见图 7.6)的更多信息。
图 7.6. 一旦找到你想要的软件,你可以安装它或者获取更多关于它的信息。

更多信息屏幕(图 7.7)有有趣的信息。除了软件的描述,这在图形包管理器中相当标准之外,Ubuntu 软件中心还提供用户评价和相关软件的链接。这在图形包管理器中并不常见,但可能对新手有帮助。更多信息屏幕还有一个安装软件的链接,允许您在安装之前了解一些关于软件的信息。点击“安装”将 Synaptic 添加到您的系统中。
图 7.7. 软件可以通过 Ubuntu 软件中心的更多信息区域安装。

您将被要求输入密码进行身份验证(见图 7.8)。这也是 Linux 的一个概念。一些操作系统,包括移动和桌面操作系统,除非另有说明,否则允许任何人安装软件。然而,Linux 系统有一个管理员的概念,这意味着只有某些人有权安装新的软件。我们将在第十九章中进一步讨论这个问题。
图 7.8. 所有 Linux 系统在安装软件时都需要密码。

输入密码后,软件将被安装。安装完成后,您将看到一个中间有白色勾选的绿色圆圈以及安装日期。您现在还将看到一个“移除”按钮,以防您改变了安装的决定(见图 7.9)。
图 7.9. 软件安装后,您可以选择查看安装时间以及卸载它。

要移除 Synaptic 或其他软件,请点击“移除”。如果您在软件中心点击后退箭头,您将返回到您刚刚搜索的程序列表。如果您点击 Synaptic,您现在将看到一个“移除”链接而不是“安装”链接(见图 7.10)。一般而言,移除软件意味着在软件中心中搜索它,然后从您的系统中移除它。
图 7.10. Ubuntu 软件中心也可以用来移除软件。

我知道这看起来非常 Ubuntu 特定,但这个过程在各个发行版中都是相同的。图 7.11 展示了 Mint 软件管理器,其外观与 Ubuntu 软件中心相似。您会看到我在那里搜索 Synaptic。
图 7.11. Mint 的软件管理器外观与 Ubuntu 软件中心相似。

在图 7.12 中,您可以看到结果列表,其外观类似于 Ubuntu 软件的结果列表。您看到 Synaptic 在绿色圆圈中有一个白色勾选,表示已安装。您还可以看到星星和评价,就像在 Ubuntu 软件中心中看到的那样。然而,您不能从这个屏幕中移除它,就像您可以从软件中心中移除一样。
图 7.12. Mint 软件管理器的结果屏幕也看起来像 Ubuntu 软件中心。

当你双击 Synaptic 条目时,你会进入一个与 Ubuntu 软件中心类似的屏幕(见图 7.13)。从那个屏幕你可以移除 Synaptic(或者如果它还没有安装,你可以添加它)。
图 7.13。一旦你双击进入 Mint 软件管理器条目,你就可以移除软件。

如你所见,无论你使用什么包管理器,基本过程都是一样的。现在,只要你的 Synaptic 已经安装,我们就来看看如何使用它来安装软件。
16.04 中的 Ubuntu 软件
Ubuntu 16.04 中的软件客户端被称为 Ubuntu 软件。

Ubuntu 在 16.04 版本中使用了新的包管理器。
界面与 Ubuntu 软件中心非常相似。软件按类别排列或可以搜索。

Ubuntu 软件拥有与 Ubuntu 软件中心非常相似的界面。
一旦你找到了想要安装的东西,你点击安装按钮,这与 Ubuntu 软件中心类似。如果你发现自己正在迁移到 16.04,你不会在两个包管理器之间注意到太大的差异。就使用方式而言,最大的变化是更短的名字!
7.3. Synaptic
Synaptic 适用于所有基于 Debian 的发行版,这意味着它有相当多的发行版可以选择。Synaptic 还允许你更新软件或获取新版本,我们将在第十七章中讨论这一点。如果你还打开着 Ubuntu 软件中心,请关闭它并打开 Synaptic(你一次只能打开一个包管理器)。当你打开 Synaptic 时,它会在你尝试做任何事情之前要求你的密码。第一次打开时,它会给你一个关于其工作方式的简要说明(见图 7.14)。我们将在本节中介绍这一点,所以请随意关闭通知。
图 7.14。第一次打开 Synaptic 时,它会给你一个关于其工作方式的简要说明。

Synaptic 的布局与我们在 Ubuntu 软件中心和 Mint 软件管理器中看到的是相似的(见图 7.15)。你可以通过输入软件名称进行粗略的分类,也可以进行搜索。你会注意到一些主题的标题中包含multiverse和universe。Multiverse指的是非自由、专有软件(由于无法通过 Synaptic 购买软件,所以它不涉及成本)。Universe指的是由社区贡献但未由 Ubuntu 官方支持的软件。
图 7.15。Synaptic 的布局与其他我们查看过的图形包管理器类似。

现在,对 Vim 进行过滤搜索,Vim 是我们将在本书后面讨论的文本编辑器。在快速过滤框中输入vim,然后按 Enter 键。快速过滤搜索通常适用于搜索软件,尽管 Synaptic 有一个高级搜索选项,允许你进行诸如按依赖项(我将在稍后讨论这个术语)或软件版本进行搜索。
我们想要的软件就在列表的顶部。如果它已安装在系统中,框中会有绿色而不是白色。每一列的设置都是可排序的,所以如果你想按软件包或软件的名称排序列表,你可以点击软件包,排序将变为按软件包名称的字母顺序(见图 7.16)。S 列允许你按你已经在电脑上安装的内容排序。但由于我们看到我们想要的软件包,现在就保持排序不变。
图 7.16. Synaptic 允许你按几个参数排序。

如果你点击 vim 条目,你会得到软件的简要描述。你不会得到像在 Ubuntu 软件中心那样多的信息和反馈,但大多数时候,你知道你想要安装什么,不需要额外的信息。
点击 vim 旁边的空白框,你会得到一个小弹出框(见图 7.17)。点击标记为安装,你会被要求安装额外的软件(见图 7.18)。这是 Vim 运行所需的软件。它被称为依赖项,意味着它是另一个程序运行所需的程序。我们将在第十七章中讨论这个问题。现在,点击标记来表示你想要安装它。你现在会注意到 vim 旁边的框中有一个勾,这意味着它已准备好安装。
图 7.17. 使用标记为安装来表示你想要安装软件。

图 7.18. 软件包管理器会自动安装其他软件所需的软件。

在这个阶段,你可以继续操作,标记要安装和卸载的软件。你不需要一次只做一件事。但由于我们只安装 Vim,你可以点击应用(见图 7.19)。Synaptic 会弹出一个窗口总结你的操作,并要求你通过点击另一个应用来确认。点击它,Vim 就会安装。
图 7.19. 应用按钮是告诉 Synaptic 移除、添加或更新软件的最后一步。

当 Synaptic 完成后,你会得到一个消息告诉你更改已被应用。然后你可以关闭对话框。你会注意到 vim 旁边的框现在是绿色的,表示软件已安装到你的电脑上(见图 7.20)。
图 7.20. vim 旁边的绿色框表示软件已被安装。

如果您点击绿色框,您将看到重新安装软件的选项,如果软件运行不正确,可以删除它,这将删除软件;或者选择完全删除它,这将删除软件和相关配置文件(见图 7.21)。
图 7.21. 点击程序旁边的绿色框可以重新安装或删除程序。

现在让我们先保留 Vim 的安装状态。
7.4. 总结
如您所见,尽管不同发行版的软件安装和删除工具不同,但过程是相似的。我们专注于 Ubuntu,但如您所见,Ubuntu 软件中心与 Synaptic 类似,这在基于 Debian 的发行版中很常见。其他图形包管理器在其他发行版中也以相同的方式工作。关于软件包管理还有很多要说的,但现在,我想让您对如何操作有一个概念。我们将在接下来的几顿午餐中探讨软件包管理的原理。
术语表
在本章中,我解释了:
软件包管理器
允许您从仓库安装和更新软件,并保持计算机上的软件更新
仓库
软件包的集合
7.5. 实验室
进入 Synaptic 并删除 Vim。然后,进入 Ubuntu 软件中心并重新安装它。
1. 如何在 Synaptic 中启动搜索?
2. 如何在 Ubuntu 软件中心中启动搜索?
3. 如果您需要更新软件,您会使用哪个工具?
在这两个工具中查找办公软件(我们将在下一章讨论办公软件)。
-
您更喜欢哪个界面进行搜索?
-
哪个界面更容易发现软件?
-
您为什么喜欢这个界面?
第八章. Linux 家/办公软件简介
一旦您学会了如何安装软件,这在上一章中已经介绍过了,Linux 就真正为您打开了大门。因为软件是您定制桌面并使其个性化的方式。本章将涵盖大多数用户日常使用的典型软件。其中一些软件在 Ubuntu(或您选择的发行版)中默认安装,而一些则需要安装,而这正是您现在所知道的!我将带您了解
-
办公生产力软件,您可以使用电子表格、文字处理和收发电子邮件。
-
图像编辑器,您可以裁剪和调整您照片的大小。
-
多媒体播放器,您可以观看电影和听音乐。
这将是对您可用的各种工具的简要概述。大部分工具与 Windows/OS X 的对应工具相似,因此您应该能够轻松地使用这些程序(GIMP 图像编辑器稍微复杂一些,可能需要一本自己的书)。我将介绍很多软件,以便您了解一些可用的内容,并决定哪些工具最适合您的工作。本章讨论的许多程序也有 Windows/OS X 版本,所以如果您发现喜欢的东西,您可能能够在不同的操作系统上使用它。
网络浏览器
我不会在这里讨论网络浏览器,因为它们在各个操作系统之间几乎相同。尽管您没有 Linux 的 Internet Explorer、Edge 或 Safari,但您有 Chrome 和 Firefox,它们完全一样。
大多数仓库都有一个名为 Chromium 的浏览器,它是 Chrome 的开源版本。浏览器非常相似,但 Chromium 排除了其中的一些专有代码。排除的代码部分包括对 Adobe Flash 的支持。
有些人可能会注意到 Chrome 和 Chromium 之间的区别,但大多数人不会。然而,如果您注意到差异并且希望使用 Chrome,您可以从 Google 下载并安装它。我们将在第十七章(kindle_split_027.html#ch17)中讨论如何从外部仓库安装软件。
8.1. 办公/生产力
当我说“办公/生产力”时,我可以假装在谈论一个软件类别,但我认为每个人都知道我的意思是指 Microsoft Office。Microsoft Office 是一套程序:
-
文字(文字处理器)
-
Excel(电子表格)
-
PowerPoint(演示文稿)
-
Outlook(电子邮件)
-
访问(数据库)
-
OneNote(笔记)
-
发布者(桌面出版)
8.1.1. LibreOffice
Linux 与 Microsoft Office 最接近的等价物是 LibreOffice(见图 8.1),这是一个捆绑了类似程序的套件(您必须安装整个套件——您不能只选择一个应用程序)。
图 8.1. LibreOffice 是一套办公程序,与 Microsoft Office 相当。

LibreOffice 提供:
-
Writer(文字处理器)
-
Calc(电子表格)
-
演示(演示文稿)
-
Draw(绘图)
-
数学(数学公式)
-
基础(数据库)
虽然重叠并不完美,但您可以看到 LibreOffice 覆盖了大量的相同领域。您应该在您的系统上已经安装了 LibreOffice。让我们看看 Calc,这个电子表格应用程序的实际操作。
1. 打开 Calc。
2. 创建一个标题为“章节”的列。
3. 创建一个标题为“日期”的另一个列。
4. 输入我们已涵盖的章节和完成它们的日期。
那么,OpenOffice 怎么样?
您可能听说过 OpenOffice 作为一个开源的办公套件。许多人知道它是一个免费、流行的跨平台替代品,用于 Microsoft Office。实际上,它可能比 LibreOffice 有更广泛的名字认知度。
OpenOffice 已经经历了许多名称变更,从 OpenOffice.org 到 Apache OpenOffice.org 再到 Apache OpenOffice。LibreOffice 是 Open-Office 的分支,这意味着 LibreOffice 团队使用了 OpenOffice 的代码来开发他们的套件。LibreOffice 团队将 OpenOffice 的代码引向了不同的方向(因此有了分支这个术语),尽管两个套件很相似,但 LibreOffice 的开发更为活跃,并且普遍被认为优于 Apache OpenOffice。
Apache OpenOffice 仍在开发中,尽管速度比 LibreOffice 慢,但大多数仓库中仍然有提供,所以如果你出于任何原因更喜欢它,你仍然可以访问它。
LibreOffice 与 Office 不完全相同。界面相似(见图 8.2),但习惯使用 PowerPoint 的用户可能需要花时间适应它。处理复杂文件的用户可能会发现在这两个程序之间切换有些困难,但对于大多数用户来说,进行诸如创建预算和撰写报告等简单操作,LibreOffice 应该能够很好地工作。LibreOffice 也适用于 Windows 和 OS X。
[图 8.2]. LibreOffice Writer 看起来与 Word 相似,但并不完全相同。

8.1.2. Calligra
当然,在办公套件方面,你不仅限于 LibreOffice。Calligra 是另一个例子。虽然它与 KDE 桌面相关联,但它可以在任何桌面环境中使用。它提供:
-
Words(文字处理器)
-
Stage(演示文稿)
-
Sheets(电子表格)
-
Flow(流程图)
-
Kexi(数据库)
与 LibreOffice 一样,界面略有不同,但对于大多数用户来说应该很熟悉(见图 8.3)。
[图 8.3]. Calligra Stage 是 Linux 版的 Microsoft PowerPoint。

大多数仓库中也有可用的独立办公程序。例如,AbiWord 是一个简单的文字处理器,不捆绑任何其他程序。Gnumeric 是一个简单的电子表格,单独提供。如果你不需要像 Calligra 或 LibreOffice 这样的套件中包含的所有功能,这些是不错的选择。
8.1.3. 电子邮件客户端
在 Outlook(微软电子邮件客户端)方面,Linux 用户有很多替代选择。Linux 有很多电子邮件客户端。其中两个最受欢迎的是 Evolution 和 Thunderbird。Evolution 由 GNOME 项目开发,因此它与 GNOME 桌面环境集成。当你点击 GNOME 顶部的导航栏中的时间时,它会从你的 Evolution 日历中获取信息(见图 8.4)。
[图 8.4]. Evolution 数据可以通过 GNOME 桌面环境轻松访问。

Evolution 通过免费插件支持 Exchange 电子邮件协议,而 Thunderbird 需要 ExQuilla 扩展程序,该扩展程序需要年度订阅。Evolution 内置日历支持,并且与 Outlook 更直接可比,因为它感觉像是一个全面的电子邮件工具(见图 8.5)。Thunderbird 对不希望有太多花哨功能的家庭用户来说更为合适(见图 8.6)。两者都支持 IMAP 和 POP3,这些协议用于非商业电子邮件服务,如 Gmail 和 Yahoo!,无需任何插件或扩展程序。
图 8.5. Evolution 是一个强大的电子邮件程序,它包含自己的日历应用。

图 8.6. Thunderbird 是一个简单的电子邮件程序,可能对不在企业环境中工作的用户有吸引力。

Thunderbird 也适用于 Windows 和 OS X。Evolution 仅适用于 Linux。Thunderbird 已安装在您的系统上。打开它,看看您是否能用它来处理邮件。它设计为自动从大多数主要电子邮件提供商导入设置,因此您只需输入您的姓名、电子邮件地址和密码,Thunderbird 就会完成剩余的工作。
8.1.4. 选择您的办公程序(们)
那么,哪个程序最好?LibreOffice 可能是最常用的,这意味着有最多的帮助和文档可用。但在选择程序时,您可能需要考虑两件事:
1. 界面
2. 文件渲染
当我说界面时,我指的是易用性:
1. 哪个程序在布局方面对您来说最有意义?
2. 哪个程序在导航方面对您来说最有意义?
3. 哪个程序在行为上对您来说最有意义?
打开 LibreOffice Writer 文字处理程序:
1. 写下您使用文字处理器的五个用途。
2. 使列表加粗并双倍行距。
3. 更改字体。
4. 看看上面的问题,并思考 Writer 是如何为您工作的(并保持文件打开)。
这里讨论的所有程序都像它们的 Office 等效程序一样运行,但有一些细微之处,比如菜单的组织,这可能意味着程序易于使用或难以使用。
文件渲染意味着程序处理您的文件的方式。例如,如果 LibreOffice 在与您的工作场所使用的模板中遇到困难,另一个文字处理程序,如 AbiWord,可能是一个更好的选择。
由于 Microsoft 使用专有文件格式,其他程序有时难以与之协同工作,这就是为什么某个程序中看起来可能没问题,但在另一个程序中却不同。一般来说,当文件以 OpenDocument 格式保存时,您会发现更容易处理文件,因为这些格式是为了共享而设计的,并且其中不包含专有代码。OpenDocument 格式通常在您跨程序和操作系统的“另存为”菜单中作为选项。OpenDocument 文件格式包括:
-
OpenDocument 文本 (.odt)
-
OpenDocument 演示文稿 (.odp)
-
OpenDocument 电子表格 (.ods)
-
OpenDocument 图形 (.odg)
养成使用 OpenDocument 文件的习惯会使文件在不同程序间渲染得更好。
为了练习,将你刚刚创建的 Writer 文件保存为 .odt 文件。
电子邮件是基于标准的,这意味着你不会在任何一个客户端遇到任何技术问题。选择你的电子邮件客户端可以是一个纯粹基于界面的决定。
表 8.1. 你应该选择哪种办公软件?
| 办公软件 | 原因 |
|---|---|
| 选择 LibreOffice 如果 ... | 你需要一个完整的办公程序套件 |
| 选择 Calligra 如果 ... | 你需要一个完整的办公程序套件,并且使用 KDE |
| 选择 AbiWord 如果 ... | 你需要一个非常简单的文字处理器 |
| 选择 Gnumeric 如果 ... | 你需要一个电子表格程序 |
| 选择 Thunderbird 如果 ... | 你需要一个基本的电子邮件客户端 |
| 选择 Evolution 如果 ... | 你想要感觉像在使用 Outlook |
8.2. 图像编辑
在 Linux 上进行图像编辑是一个更简单的过程。一方面,选项较少。但另一方面,使它变得简单的是,你选择的工具取决于你想要对图像做什么。
GNU 图像处理程序(GIMP)可以做很多事情,但学习曲线有点陡峭。LibreOffice 更基础,但使用起来也更直观。
8.2.1. GIMP
GIMP 是一个强大的图像编辑和创建程序。它允许你分层图像,并提供访问各种工具,如过滤器、颜色工具等。正如我所说,它很强大,但它也非常复杂,有一个臭名昭著的具有挑战性的界面(见图 8.7)。这可能是 GIMP 不会作为默认软件与所有发行版(包括 Ubuntu)一起发货的原因,但它可在所有仓库中找到。
图 8.7. GIMP 拥有一个复杂的界面,这使得它既强大又具有挑战性。

你会注意到 GIMP 有三个窗口。左侧的窗口包含你将用于操作图像的工具。这包括像画笔、拾色工具和橡皮擦等东西。中间的窗口是你看到图像的地方。右侧的窗口控制层,如果你在构建复杂图像时将使用它。
还有一个顶部导航菜单区域,有很多其他选项。GIMP 有很多选项,这既是祝福也是诅咒。
我使用 GIMP 的第一件事就是点击顶部的导航窗口,并将 GIMP 切换到单窗口模式。这显示一个窗口,使得工作更加容易(见图 8.8)。
图 8.8. 在单窗口模式下,GIMP 更容易操作。

使用 GIMP 的技巧是确定哪个菜单有你的选项。例如,如果你想要缩小一张照片:
1. 点击顶部导航栏中的图像菜单(见图 8.9)。
图 8.9. GIMP 的顶部菜单控制着很多功能,包括缩小和放大图像。
2. 点击“缩放图像”...
3. 选择你想要缩放的方式。GIMP 默认使用像素,但你也可以使用百分比(参见图 8.10)。
图 8.10. “缩放图像”菜单控制图像的大小和分辨率。
一旦你知道该怎么做,这个过程就很简单了。但学习曲线有点陡峭。
从 Amazon.com 下载一个书封面并调整大小,使其变小。要保存图像,在浏览器中右键单击它并点击“另存为图片...”确保保存图像。
我没有艺术或 Photoshop 背景,我使用 GIMP 来满足所有我的图像处理需求,包括这本书的图像。我不使用所有功能,但我能完成我需要做的事情,我怀疑大多数人也是这样使用的。学习 GIMP 需要一些时间,但如果你经常处理照片或图像,这是值得的。
GIMP 也适用于 Windows 和 OS X。
8.2.2. LibreOffice Draw
LibreOffice Draw 更基础,这使得它更容易使用。它并不出色,但如果偶尔需要轻微修饰照片,它应该没问题。
LibreOffice Draw 的界面比 GIMP 简单得多(参见图 8.11)。
图 8.11. LibreOffice Draw 的界面简单,与 Microsoft Word 的界面相似。

如果你想要使用 LibreOffice Draw 缩小或放大照片,请点击图像。你会在图像周围看到一些小方块(参见图 8.12)。
图 8.12. 使用图像周围的方块可以让你在 LibreOffice Draw 中改变其大小。

如果你点击并拖动方块,你会改变图像的大小。用 GIMP 缩小后的书封面,将其放大。
表 8.2. 你应该选择哪个图像编辑器?
| 编辑器 | 原因 |
|---|---|
| 如果你想寻找一个强大的 Adobe Photoshop 替代品,请选择 GIMP | |
| 如果你想偶尔轻微裁剪照片和图像,请选择 LibreOffice Draw |
8.3. 多媒体
让我们诚实一点。你不是只工作。尽管你花午餐时间学习 Linux,但你也很享受你的空闲时间。也许你喜欢看电影。或者也许你喜欢听音乐。本节将帮助你使用 Linux 桌面放松。
8.3.1. 电影
Ubuntu 没有默认的视频播放器,我认为这与现在大部分观看都在网页浏览器中进行有关。曾经有一段时间,你无法从 Ubuntu 中流式传输 Netflix,但现在通过大多数最新版本的 Chrome 浏览器可以实现。但如果你想要观看自己的内容,Linux 有选择。
VLC
我最喜欢的视频播放器是 VLC 媒体播放器(它也可以播放音乐,但我们会在这个部分稍后讨论)。它处理不同格式的视频时无需太多戏剧性或思考。双击你的视频,VLC 就会处理剩下的部分。并非所有电影播放器都如此,有时它们需要你的帮助下载和安装编解码器(你可能还记得第四章 chapter 4 中提到的)。
VLC 的界面非常简单(见图 8.13figure 8.13)。底部的控件用于处理视频。
图 8.13. VLC 的外观与其他大多数电影播放器相似。

关于 VLC 没有多少可说的,因为它工作得如此出色和简单。它也适用于 Windows 和 OS X,并且由于同样的原因,它也是我在这些操作系统上首选的视频播放器。
1. 安装 VLC。
2. 下载一个视频和一个音频剪辑从
archive.org/,并使用 VLC 播放这两个文件。
GNOME 视频
如果出于某种原因 VLC 对你不适用,Linux 还有其他电影播放器。GNOME 视频(GNOME Videos)是另一个,外观与 VLC 类似。然而,它没有 VLC 那样的编解码器支持。幸运的是,它会提供下载所需内容以播放特定视频(见图 8.14figure 8.14)。尝试在 GNOME 视频中播放你从 archive.org 下载的视频。
图 8.14. GNOME 视频(GNOME Videos)将帮助你获取播放某些视频所需的编解码器。

8.3.2. 音乐
音乐播放器,如 iTunes,代表了你电脑上所有音乐的单一界面。iTunes 不适用于 Linux,但有许多类似的程序。
Rhythmbox
Ubuntu 默认自带 Rhythmbox,它与 iTunes 类似,但内容不是通过它购买的(尽管它提供了一个与在线音乐商店 Magnatune 交互的插件)。
使用 Rhythmbox,你只需将其指向你的音乐目录(或目录),然后它就会处理剩下的部分。Rhythmbox 拥有简单的界面,具有音乐播放器上应有的播放/快进/快退命令(见图 8.15figure 8.15)。
图 8.15. Rhythmbox 拥有标准的音乐播放器界面。

它还有一个不错的插件架构,可以安装软件以添加更多功能,如前面提到的连接到第三方音乐商店的能力。插件可以从发推文你正在播放的内容到自动导入封面艺术,无所不能。
Rhythmbox 是 GNOME 项目的一部分,但可以在 Linux 发行版和桌面之间工作。使用它播放你从 archive.org 下载的音频剪辑。
Amarok
KDE 有自己的音乐播放器,名为 Amarok。它看起来与 Rhythmbox 类似,并且具有大多数相同的功能(见图 8.16figure 8.16)。然而,它会做一些事情,比如从维基百科中拉取艺术家信息。它还会记录你的音乐习惯统计。尽管与 KDE 相关,Amarok 也适用于 Windows 和 OS X。
图 8.16. Amarok 是 KDE 的默认音乐播放器,但它可以在不同的桌面环境中工作。

还有其他音乐播放器,如 Banshee 和 Clementine。也许比任何其他软件,不同的发行版似乎与不同的音乐播放器搭配。
如果你花很多时间用电脑听音乐,我认为花时间尝试不同的播放器是值得的,因为界面是个人化的东西,它们都会完成简单的播放音乐的工作。表 8.3 提供了选择多媒体播放器的建议。
表 8.3. 你应该选择哪个多媒体播放器?
| 玩家 | 原因 |
|---|---|
| 如果你想用最简单的方式播放视频... | 选择 VLC |
| 如果 VLC 对你不起作用... | 选择 GNOME Videos |
| 如果你想使用相对简单的程序... | 选择 Rhythmbox |
| 如果你想有一个带有更多功能的音乐播放器... | 选择 Amarok |
8.4. 总结
本章的目标是为你提供一个关于 Linux 上常用软件的概述。它基于人们在 Windows 和 OS X 上倾向于使用的内容。这个列表绝对不是完整的。
Linux 的要点(和乐趣)在于你拥有的选择量,所以你绝对不仅限于这里讨论的内容。相反,我选择了一些较大的软件项目,这些项目可能是开始的好地方。当我调整照片大小或构建电子表格时,我想要一个简单地工作的程序。我不需要任何戏剧性或令人兴奋的东西。我想让我的照片变小或让我的公式工作。本章中的所有软件都能实现这个目标。但就像桌面环境一样,你需要考虑对你来说什么才是合适的,以及你喜欢的操作方式。
术语表
在本章中,我解释了以下内容:
办公生产力软件
通常用于办公工作的程序,如电子表格、文字处理器和电子邮件客户端
多媒体播放器
播放音频和视频的软件
8.5. 实验室
在进行以下实验室之前,请考虑这些问题。你也应该将这些问题应用到本章和本书中讨论的任何程序上:
-
你喜欢你目前使用的界面的哪些方面?
-
你知道如何导航它,还是你一直在寻找找不到的功能?
-
你喜欢界面的美学,还是觉得它很丑陋?
-
它与你在 Windows 和 OS X 中使用的这些程序版本相比是否感觉有显著的不同?
-
你更喜欢这些程序中的哪些?
-
这些界面对你来说更有意义吗?
-
这些工具上是否有你当前工具缺少的功能?
-
你觉得缺少哪些功能和功能?
在考虑这些问题的情况下,让我们使用你刚刚学到的程序:
1. 使用 LibreOffice Writer 创建一个简短的文档。
2. 使用 LibreOffice Calc 计算 10、15、19 和 18 的平均值。
3. 下载 GIMP 并尝试从 archive.org 缩放一个图像,这次将其放大。
4. 使用 Rhythmbox 安装歌曲歌词插件。提示:它在工具中。
第九章. 文本文件和编辑器
文本编辑器是一个简单的编辑器,它以没有任何格式(如粗体、斜体或下划线)的方式呈现文本。文本编辑器只显示文本和换行符(一些可能会保留缩进)。文本编辑器,如 Windows 记事本和 OS X 的 TextEdit,在任何操作系统中都是优秀的工具,但在 Linux 系统中尤其有用,因为:
-
它们允许您编辑 Linux 系统中的配置文件。
-
它们让您远离可能需要特定软件的专有格式。
-
它们永远存在。在文明终结很久之后,文本文件仍然可以打开和阅读。
本章将讨论文本文件的力量与美丽,并带您了解一些常见的 Linux 文本编辑器。在前一章中,我们讨论了文字处理器,这些是出色的工具,但也很复杂。文本编辑器允许您仅与文本进行工作,而不涉及格式化,这使得文本文件可以在不同的操作系统之间轻松移动而不会丢失任何信息。我并不是在文字处理器中编写这本书,而是在文本编辑器中。我将在本章后面讨论这个过程。
文本编辑器还允许您以一种在其他操作系统中不可能的方式与 Linux 系统进行交互。例如,我使用 ThinkPad 笔记本电脑,内置 TrackPoint 鼠标。大多数 Linux 发行版允许我使用 TrackPoint 滚轮在不做任何操作的情况下滚动内容,但有些发行版,出于某种原因,则不行。在这种情况下,我可以通过进入目录,向文件夹中添加一个包含我从指南中复制粘贴的几行文本的文本文件,然后重启后,滚动功能就会工作。许多桌面环境,如 Openbox,允许您使用文本文件来更改界面。这种力量、灵活性和多功能性使得文本编辑器在 Linux 社区中非常受欢迎。
9.1. 获取了解文本编辑器
本节将向您介绍三种文本编辑器,为您概述它们的工作方式以及它们最适合执行的任务。文本编辑器的好处在于产品始终如一——一个没有任何格式的简单文件。它可以是从编程到 HTML 到文件中的文字。所有文本编辑器都能很好地完成这项工作,所以您永远不需要担心您使用的是错误的文本编辑器。任何文本编辑器都可以打开其他文本编辑器的作品。有了这个心理安全网,您只需专注于您喜欢使用的编辑器即可。或者,在我的情况下,您喜欢使用的编辑器。
最后一点说明:本章中讨论的编辑器也适用于 Windows 和 OS X,所以如果您发现您喜欢使用其中之一,您也可以在其他操作系统上使用它们。
9.1.1. gedit
你可能还记得 gedit 来自第六章。它是 GNOME 和 Ubuntu 的默认文本编辑器。你也可能记得它的界面简单直观。你输入文字,它们就会出现在屏幕上。顶部导航面板上有一些基本控制(见图 9.1),顶部导航菜单上还有一些。
图 9.1. gedit 在其界面顶部提供简单的编辑工具:撤销、重做、查找和查找替换。

顶部导航菜单包括 gedit 首选项,位于“编辑”菜单下。首选项允许你更改 gedit 的外观,包括其颜色。它还让你可以访问一些插件,这些插件为 gedit 提供了额外的功能,如片段,允许你保存常用文本片段,并通过快捷键或特定单词后的制表符部署它们。如果你经常写复杂的单词、句子或代码,你可以为其分配一个字母或单词触发器。然后,每次你输入那个字母或单词并按 Tab 键时,gedit 就会用你分配给该组合的内容替换文本。
gedit 附带一些插件,并非所有插件都已被激活。你可以在“首选项”菜单下看到它们(见图 9.2)。
图 9.2. gedit 有许多插件可以为其提供额外的功能。

由于其代码对任何人都是免费可用的,你会在网上找到许多 gedit 插件。开始的最佳地方是 GNOME 维基百科wiki.gnome.org。在那里,你可以找到各种 gedit 插件项目的链接。Linux 基于权限的特性使得这些插件不太可能损害你的计算机。我们将在第十九章中更多地讨论权限。
让我们花几分钟时间再次使用 gedit:
1. 通过 Dash 启动它。你可以输入
gedit或text editor。2. 在 gedit 中输入一句话。我推荐输入
Text editors are fun!3. 突出显示句子。你可以使用 Ctrl-A 选择所有文本或使用鼠标。
4. 使用 Ctrl-C 或使用顶部栏上的图标(它是一个包含两页纸的图标)复制文本。
5. 移动到第一句话的末尾,并使用 Ctrl-V 或粘贴图标(它是一个剪贴板图标)将其粘贴到后面。
6. 突出显示第二句话,并使用 Ctrl-X 或剪切图标(它是一个剪刀图标)剪切它。
所有这些步骤都应该感觉熟悉。它就像使用大多数文字处理器、网页浏览器或几乎所有其他类型的程序一样。我倾向于使用 gedit 来进行大部分写作,因为它非常简单。我熟悉所有的键盘快捷键,因为它们与大多数其他程序使用的快捷键相同。插件让我能够做一些事情,比如在屏幕上添加字数统计并预览某些类型的标记(我们稍后会讨论这一点)在一个单独的窗口中。它简单而有效。现在让我们转向 Vim,它比 gedit 能做更多的事情,但学习曲线也更陡峭。
9.1.2. Vim
Vim 是另一个流行的文本编辑器,它拥有自己的语法,几乎像一门语言。学习起来并不容易,但如果你能掌握它,你就可以完全控制你的文档和文字。
例如,如果你想删除文档第四行的第三个单词,Vim 有命令可以帮你做到这一点,而不需要像在 gedit 中那样移动光标到那个单词。Vim 基于 vi,这是一个 UNIX 程序,你可以在终端中使用它(Vim 代表 vi Improved)。如果你在任何地方都可以访问终端,并且你使用的是基于 Unix 的系统,如 Linux 或 OS X,那么你就有了 vi。Vim 是 vi 的一个版本,它更加用户友好,因为它允许你使用箭头键来移动(vi 使用 H-J-K-L 键,因为它在箭头键之前出现!)。我们将使用 Vim,因为它稍微友好一些,但它的外观和行为与 vi 几乎相同,所以如果你发现自己被困在终端中,你应该能够生存下来。你也可能记得它在第七章中,当我们安装它时。
与 Vim 交互有两种方式。这两种方式被称为 模式(实际上有更多模式,但我们不会探索它们)。一种模式是用于创建文本(插入模式),另一种是用于通过命令来操作它(正常或命令模式)。
插入模式是你在创建文本时使用的模式。在这个模式下,它感觉像是一个传统的文本编辑器,因为你正在输入单词,它们会出现在屏幕上。然而,你无法在插入模式下更改文本。要执行像复制或移动文本这样的操作,你需要切换到命令模式。你会在屏幕底部输入命令;屏幕的其余部分用于插入模式(图 9.3)。
图 9.3. Vim 的命令区域是屏幕底部的冒号。屏幕的其余部分用于内容。

我们稍后将会学习一些 Vim 命令。我认为插入模式用于创建文本,命令模式用于操作文本。这与 gedit 非常不同,在 gedit 中,所有操作都在一个窗口和一个模式下进行。
我们将花几分钟时间来学习使用 Vim。学习它需要一段时间,而且它能够很好地完成许多不同的事情,多到甚至无法在这里全部涵盖。但如果使用 Vim 能引起你的兴趣,我鼓励你花些时间学习如何使用它(我也认为它会是“午餐月”主题的一个绝佳选择!)。
自定义 ViM
你会注意到 Vim 没有偏好菜单(实际上也没有任何菜单)。
如果你希望对其进行自定义,比如颜色、字体、如何换行,或者是否在启动时开启拼写检查,你可以在你的主目录中创建和编辑 .vimrc 文件(使用文本编辑器!)来做到这一点(我们将在第十四章中更多地讨论目录)。网上有很多示例 .vimrc 文件可以帮助你开始。
让我们试驾一下 Vim。
1. 通过 Dash 启动终端(你只需输入单词
terminal)。2. 在终端中输入单词
vim并按 Enter 键。Vim 将会打开。3. 一旦开始输入,你将进入插入模式。你会知道这一点,因为屏幕底部会显示 -- INSERT --。再次输入
Text editors are fun!。4. 尝试像我们在 gedit 中做的那样突出显示并复制粘贴这句话。注意,你做不到。相反,通过按 Escape 键然后按冒号(
:)进入命令模式。5. 一旦进入命令模式,输入字母
y,它代表剪切或复制文本。6. 现在输入
p来粘贴。你会在新的一行看到这句话。7. 要删除多余的句子,输入
dd两次,这将剪切掉多余的句子。8. 要返回到输入状态,按 Escape 键然后按
i。9. 当你完成 Vim 的工作后,点击冒号进入命令模式,并输入
q!来退出而不保存。
Vim 自带教程。要在终端中启动它,输入 vimtutor。
9.1.3. Emacs
Emacs 与 Vim 类似,是一个功能强大但复杂的文本编辑器。与 Vim 一样,它有热情的粉丝,他们喜欢它的多功能性。例如,Emacs 可以用来阅读和发送电子邮件。它还有一个组织模式,可以保存列表和笔记。它还有游戏和日历。有些人通过 Emacs 来生活,就像 Vim 一样,学习它可能需要一本书。
Emacs 使用很多基于 Ctrl 键的组合键,它将其简称为 C,以及基于 Alt 键的组合键,Emacs 将其简称为 M。有些人将使用 Emacs 比喻为演奏乐器,因为许多快捷键与在钢琴或吉他上弹奏和弦类似。你会注意到 Emacs 在顶部有一些与 gedit 类似的图标,以及一些菜单。
图 9.4. Emacs 有与 gedit 类似的图标。

与 Vim 不同,你可以不用学习太多就能使用 Emacs。非常有帮助的是,菜单显示了每个命令的快捷键,这样你在使用它的同时就能学习(参见图 9.5)。
图 9.5. Emacs 的菜单显示了你可以使用的快捷键,而不是菜单。

你可以通过其顶部的选项菜单自定义 Emacs。我们只会花几分钟时间使用 Emacs,但就像 Vim 一样,如果你喜欢它,我鼓励你投入时间去学习如何使用它。在 Emacs 的启动屏幕中有一个教程链接。每次你打开 Emacs 都会看到它。让我们试试 Emacs 吧。
开始使用 Emacs
1. 安装 Emacs(就像我们在第七章 chapter 7 中安装 Vim 一样),然后从 Dash 中启动它。
2. 通过按 Ctrl-X 然后按 Ctrl-F 来打开一个新文件。你会在屏幕底部,就像你在 Vim 的命令模式中一样。Emacs 会要求你为新文件命名。只需将其命名为 test 并按 Enter 键。
3. 现在你在一个空文件中,输入
Text editors are fun!4. 使用 Ctrl-x 然后按字母
h来突出显示所有文本。5. 使用 Alt-w 来复制句子。
6. 使用 Ctrl-y 来粘贴它。
7. 要删除多余的句子,用鼠标(或 shift 和箭头键)突出显示它,然后按 Ctrl-w 来剪切它。
9.2. 使用文本编辑器工作
现在你已经看到了几个文本编辑器,让我们更具体地谈谈 你可以用它们做什么。
9.2.1. 使用文本编辑器进行写作
正如你所看到的这三个文本编辑器,用它们写作只是打字的问题。那个过程中的难点在于思考要打什么。但你不能责怪文本编辑器。文本编辑器的真正挑战是它们不提供格式化,所以你不能对你的文档做任何像添加项目符号或粗体/斜体文本这样的事情。然而,在某些 标记语言 中有一个解决方案。标记语言是格式化文档的方式。有些很复杂,比如 HTML,但其他则相当简单。例如,Markdown 是一种流行的标记方法。你可以在文本文件中编写它,但如果你想使某些内容加粗,你可以在单词或短语前后使用两个星号。所以这个:
**bold**
它看起来会是这样
粗体
要将文件保存为 Markdown 格式,你需要在文件名末尾加上 .md。这样你就有了一个 Markdown 格式的文本文件,你可以在任何操作系统上的任何文本编辑器中编辑它。但如何将文本文件转换为另一种类型的文档呢?答案是名为 Pandoc 的实用程序,它可以在格式之间转换文本。要使用它,你首先从你的仓库中安装它,然后使用简单的语法将一种类型的文件转换为另一种类型。例如,要将名为 notes.md 的 Markdown 文件转换为我们在上一章中提到的 OpenDocument Text 文件或 .odt,你将进入终端,导航到文件的目录(我将在下一章中展示如何做),然后运行一个类似以下命令的命令
pandoc notes.md -o notes.odt
你将在这个目录中有一个新的 OpenDocument Text 文件,与原始 Markdown 文件在同一目录下。这种转换内容的能力使其更具可分享性。当我突然被要求就某个主题进行演示时,我可能会有一些很好的内容在 HTML 文件中。我可以使用 Pandoc 将其转换为幻灯片格式。有了 Pandoc,文件格式就不再是限制。
当然,有些人只是将所有内容都保留在文本文件中而不进行转换,这就是他们能够使用像 Emacs 这样的工具来处理所有事情的原因。
我用 Asciidoc 编写这本书,这是一种另一种标记语言。我喜欢文本文件和转换工具的组合,因为我不必担心渲染或某人使用什么软件的版本。有了文本文件,你知道任何人都可以在他们的手机或电脑上打开它们,没有任何复杂性。
我喜欢 Markdown 也是出于类似的原因。我写所有内容都是 Markdown,然后使用 Pandoc 将 Markdown 转换为从 HTML 到 Word 文档的任何东西,而不必在处理文本的方式上转换思维模式。
Markdown 和 Pandoc 不仅限于 Linux,所以如果你觉得这里的流程有帮助,你也可以将其扩展到其他操作系统。
9.2.2. 深入文本文件内部
正如我在本章开头提到的,你可以通过文本文件与 Linux 操作系统的不同部分进行交互。你可以通过编辑某些文本文件来更改你的 Linux 系统的一部分,就像我修复我的 TrackPoint 一样。你还可以通过查看文本文件来了解你的系统情况。现在,我们快速简单地做到这一点的方法是检查日志文件,我们在第四章中讨论过。日志是关于你的操作系统中发生的事情的记录。你可能会记得,从第四章中,Ubuntu 有一个名为系统日志的工具来查看日志文件,但你也可以使用任何文本编辑器来查看它们。
如果你想要查看所有日志的日志,以查看系统上发生的所有事情,你可以在文本编辑器中查看 syslog 文件。
要在 gedit 中这样做,你会:
1. 使用 Ctrl-O 或单击打开按钮。
2. 从文件目录中单击计算机(见图 9.6)。
图 9.6. 使用计算机链接访问你的日志文件。
3. 双击 var 目录(我将在第十四章中解释)。
4. 双击日志目录。
5. 双击 syslog。
6. 日志文件将在 gedit 中打开。
你可以滚动浏览文件,查看你在工作时电脑上发生的一切。这可以帮助你排查问题,比如无法解释的崩溃。只需滚动浏览文件,看看崩溃前发生了什么(或没有发生什么)。
要在 Vim 中打开相同的文件:
1. 进入命令模式(:)并输入
edit /var/log/syslog。2. 文件将在 Vim 中打开。
3. 不要忘记如何退出 Vim:命令模式然后按
q!
在 Emacs 中打开它:
1. 前往文件菜单。
2. 点击“打开文件...”?
3. 导航到文件,就像我们用 gedit 做的那样。
9.3. 总结
你现在对文本编辑器的强大和美丽有了感觉。这里提到了三个具体的例子,但就像上一章一样,还有更多我没有时间介绍。我在表 9.1 中简要提到了一些。你不需要在 Linux 的文本编辑器上花费太多时间,但拥有一个让你感到舒适的编辑器是很好的,这样当你需要使用它时你会感到舒适。
表 9.1. 选择文本编辑器
| 文本编辑器 | 优点 | 缺点 |
|---|---|---|
| Atom | 简单的界面 插件(Atom 称其为插件)增加功能 | Linux 版本仍然有点问题 无法很好地渲染某些标记 |
| Brackets | 简单的界面 扩展(Brackets 称其为插件)增加功能 | Linux 版本仍然有点问题 |
| gedit | 简单的界面 插件增加功能 学习曲线最小 | 三者中功能最少 |
| Emacs | 强大 可扩展到几乎成为操作系统的程度 无需鼠标即可使用 | 有一点学习曲线 执行命令需要很多手指伸展 |
| nano | 非常简单的界面 基于终端,如 Vim 在界面上列出快捷键 | 你不能做很多除了输入、剪切/复制和粘贴之外的事情。 |
| Vim | 强大 几乎可以安装在任何地方 占用很少的磁盘空间 | 学习曲线陡峭 |
我希望你会认真考虑在文本编辑器中做更多的工作,因为它让你摆脱了格式化的干扰,并且是一种很好的强迫自己专注于文字或代码或你正在处理的事情的方法。
那么,你应该选择哪个文本编辑器呢?到现在为止,你知道这取决于你!然而,表 9.1 可能有助于你决定使用哪一个。
术语表
在本章中,我解释了:
标记
一种用于格式化文档的语法
Markdown
一种标记形式,允许文本轻松地转换为其他格式,如 HTML 和文档处理文档
文本编辑器
一个简单的编辑器,显示没有格式化(如粗体、斜体或下划线)的文本
9.4. 实验室
1. 打开 gedit 并写下关于本章的笔记和想法。
2. 保存文件并在 Vim 中打开,添加一条额外的笔记。
3. 删除你添加的笔记并保存文件。
4. 使用终端安装 Emacs。
5. 在 Emacs 中打开文件,重新输入你在 Vim 中添加和删除的笔记。
6. 删除文件中的所有内容。
7. 撤销删除操作。
8. 按照个人喜好在文件中对文本编辑器进行排序,并在 Emacs 中保存。
高级实验室
1. 在 Vim 中打开文件,并将每一行复制粘贴,使每行在文件中重复出现一次。
2. 使用
dd删除重复的行。
第十章. 在命令行上处理文件和文件夹
我们大多数人使用图形用户界面(GUI)与计算机交互,这是一种视觉化的软件工作方式。它们使我们能够使用鼠标打开程序和更改目录。但在这些视觉界面之下,是文本命令。GUI 将我们的点击转换为命令,而无需我们了解这些命令。在 Linux 中,您可以通过终端访问这些命令。您有时会听到终端或命令行被称为 Bash 或命令行界面(CLI)。
大多数时候,这种与设备交互的图形方式很方便。我们用鼠标指向某个东西,就会发生某些事情,无论是打开文件还是更改设置。但有时您需要自己知道这些命令。有时,就像我们在上一章中看到的 Vim 一样,我们需要进入命令行来亲自发出命令,而无需 GUI 在我们和操作系统之间。这可能是因为方便、更有效地在我们系统中移动文件,或者修复无法通过 GUI 修复的系统上的某些东西。
Linux,您可能还记得,是基于基于文本的 UNIX 操作系统的,它允许您自由且轻松地在命令行和图形界面之间切换。此外,由于 OS X 基于 UNIX,您将能够在您的 OS X 命令行中使用这些相同的命令(Windows 有一个命令提示符,但它不是基于 UNIX 的)。尽管大多数命令都有图形等价物,但有时在终端中做某事要快得多。
本章以及接下来的几章的目的,是让您在命令行环境中感到舒适,并帮助您理解它如何使您的生活变得更轻松。当您试图修复系统中的问题时,命令行经常派上用场。但我也发现,当我在一台老旧、缓慢的机器上工作时,它同样很有帮助。在这些情况下,命令行要快得多。
我的目的是不让您完全转向命令行。事实上,我自己在命令行上花费的时间很少。然而,对于我选择通过命令行完成的少数任务,了解它是一件非常有益的事情。在下一章中,您将学习如何使用命令行关闭顽固的程序。在第十二章中,您将学习如何将命令的输出移动到文本文件中。所有这些都是在保持 Linux 系统高效运行的有用工具。但在我们能够使用这些命令之前,让我们从基础知识开始。
在第六章中,我们使用了 Nautilus 来移动、创建和删除文件和文件夹。现在我们将使用命令行来完成同样的操作。
对于使用实时镜像的用户
如果您正在使用实时镜像,您需要翻回到第六章并将我们放在“文档”中的 linux.lunches 文件夹放回原处。确保在我们开始之前完成这件事。
10.1. 与文件和文件夹一起工作
让我们从查看我们的文件结构中的位置开始我们的终端工作。打开您的终端。你应该会看到类似以下内容:
steven@steven-VirtualBox:~$
在这种情况下,我的用户名是 steven,我的电脑名称是 steven-VirtualBox。你会有类似登录名@电脑名称和:~$的内容。这被称为命令提示符,它引用了电脑中某个目录或文件夹的位置,但具体在哪里呢?
输入ls,按回车键,你将看到当前目录中的所有文件和文件夹。这有助于确定你的位置。
你应该会看到一个文件夹列表。你知道它们是文件夹,因为它们的颜色与终端中的其他内容不同。你应该会看到:
-
桌面
-
下载
-
音乐
-
公共
-
视频
-
文档
-
图片
-
模板
现在打开 Nautilus 或其他图形文件管理器。你应该会看到相同的文件夹。现在你知道你在文件系统中的位置了。
在第六章中,我们双击进入了文档目录。但在终端中不能双击。所有操作都是通过命令完成的。我们将输入cd Documents并按回车键(命令提示符区分大小写,所以请确保第一个 D 是大写的)。cd代表更改目录,而 Documents 是我们要更改到的目录名称。输入后,你会注意到你的命令提示符已经改变。现在,在冒号之后,你会看到~/Documents$。这意味着你现在在 Documents 目录中。
输入ls并再次按回车键以查看该目录中的其他内容。你应该能看到来自第六章的我们的 linux.lunches 文件夹。
10.1.1. 创建文件夹
在第六章中,我们使用鼠标创建了一个名为 linux.lunches 的文件夹。现在我们将使用命令行来完成同样的操作。让我们创建另一个名为 linux.lunches.terminal 的文件夹。为此,输入
mkdir linux.lunches.terminal
并按回车键。mkdir代表创建目录。可能看起来没有发生什么,但如果你再次输入ls,你将在 Documents 文件夹中看到两个目录,其中一个将是 linux.lunches.terminal。这与第六章类似,但这次是通过输入而不是右键点击。
现在,让我们进入这个新目录,以便我们可以添加一个文件。输入
cd linux.lunches.terminal
并且你的命令提示符将再次改变。在冒号之后,你现在会看到~/Documents/linux.lunches.terminal$。提示符显示你现在位于 Documents 目录中的 linux.lunches.terminal 目录(参见图 10.1)。
图 10.1. 命令提示符显示目录层次结构。

重要的是要记住,在命令行上执行的操作将出现在我们的 GUI 中。它们不是独立的系统。所以我们在命令行中创建的目录在 GUI 中是可见和可访问的(反之亦然)。返回 Nautilus 文件管理器。你会在你的 Documents 目录中看到这个新目录。保持 Nautilus(或你喜欢的文件管理器)打开,这样你就可以看到我们在命令行中做出的更改。
10.1.2. 创建文件
现在我们将在这个新文件夹中放置一个文件,这样你就可以看到如何使用命令行创建文件。新文件将命名为 mysecondnote。要创建它,输入
touch mysecondnote
并按 Enter。现在切换到你的文件管理器,查看 linux.lunches.terminal 文件夹。你会看到一个名为 mysecondnote.touch 的文本文件,它会自动更新文件,就像你保存了它一样,而不需要打开文件。但是,它也会在文件不存在的情况下创建空文件。如果你在文件管理器中双击 mysecondnote,你会看到它是空的。再一次,你没有打开文本编辑器就创建了一个文本文件,这仍然相当令人印象深刻!你只用两个命令词就创建了一个新文件,没有打开或保存任何东西!
现在你已经打开了文件,输入一条简短的消息,比如我正在学习命令行。然后保存并关闭文件,返回终端。你可以通过命令行使用你选择的文本编辑器打开文件。
实时镜像用户
记住:实时镜像用户需要重新安装 Vim 和 Emacs。
-
要在 Emacs 中打开它,输入
emacs mysecondnote -
要在 gedit 中打开它,输入
gedit mysecondnote -
要在 Vim 中打开它,输入
vim mysecondnote
每次你这样做,文件都会在你指定的文本编辑器中打开。
10.1.3. 复制文件夹和文件
复制文件或文件夹的命令是cp。当你使用它时,首先指明要复制的文件或文件夹,然后是目标位置。让我们将 mysecondnote 移动到我们的 linux.lunches 文件夹或目录中。
要做到这一点,你将输入:
cp mysecondnote ../linux.lunches
我们正在执行一个命令,将文件 mysecondnote 复制到文件夹 linux.lunches 中(见图 10.2)。
图 10.2. 复制命令包括要复制的文件和文件将被复制到的位置。

.. 表示向上移动一个目录。并且每当你在命令中看到 / ,你就是在处理一个目录或文件夹。所以如果我们从 Documents/linux.lunches.terminal 开始,我们就是在告诉文件回到 Documents 文件夹,然后进入 linux.lunches 文件夹。
返回 Nautilus,你会看到文件现在在两个地方。
现在让我们复制一个文件夹。让我们将 linux.lunches.terminal 复制到我们的 linux.lunches 文件夹中。为此,你可能需要输入
cp /linux.lunches.terminal ../linux.lunches
但发生了什么?你应该得到了一个错误 cp: cannot stat '/linux.lunches.terminal': No such file or directory。这是因为你不能用 cp 从目录内部复制文件夹或目录。所以你需要离开那个目录。记得我们是如何在复制命令中使用 .. 来向上移动一个目录的吗?这也适用于 cd 命令。要向上移动一个文件夹,输入
cd ..
你会发现自己回到了文档文件夹。现在尝试你的命令(你可以删除 ..,因为你没有向上移动目录)。
cp /linux.lunches.terminal /linux.lunches
你应该得到相同的错误。问题在于你需要在斜杠之前加上一个句点,这样复制命令才能知道你正在当前目录下工作。加上这些并再次尝试。你的命令现在应该看起来像这样:
cp ./linux.lunches.terminal ./linux.lunches
现在又出现了一个新错误!
cp: omitting directory './linux.lunches.terminal'
最后一个拼图是我们目录中有一个文件,所以我们需要告诉命令包含目录内的文件。当你包含文件夹或目录中的文件时,这被称为 递归复制,因此你将在命令中添加一个修饰符或标志。尝试这样做(并查看图 10.3):
cp -R ./linux.lunches.terminal ./linux.lunches
图 10.3. -R 标志表示递归复制;你正在复制目录内的文件。

你现在会看到 linux.lunches.terminal 目录以及随附的文件在 linux.lunches 文件夹中。我们将在第十二章中更多地讨论标志。现在,我想让你习惯在终端中使用命令。
10.1.4. 移动文件夹和文件
在目录之间移动文件的过程将类似。移动命令是 mv。它与 cp 的工作方式相同,即你首先指定源文件,然后指定目标。你应该仍然在终端中的文档文件夹中。使用以下命令进入你的 linux.lunches.terminal 目录:
cd linux.lunches.terminal
我总是喜欢执行一个 ls 来确保我确实在我想在的地方。我有时希望我能在现实生活中执行一个 ls。
让我们把 mysecondnote 移动到我们的文档文件夹中。为此,你将输入:
mv mysecondnote ..
又是 ..。这告诉命令将文件放在一个目录之上。
现在让我们把它放回去。为此,你将输入以下内容(注意句点):
mv ../mysecondnote .
.. 指向的是当前目录之上的文件(参见图 10.4)。单个句点表示当前目录。
图 10.4. 移动命令与复制命令类似。

移动目录的过程类似。使用 cd .. 返回你的文档目录。然后,使用以下命令将 linux.lunches.terminal 目录移动到桌面:
mv ./linux.lunches.terminal ../Desktop
./ 表示我们正在指示当前目录中的一个文件夹。桌面文件夹在文档文件夹之上。别忘了命令是区分大小写的。你现在应该能在你的桌面上看到 linux.lunches.terminal 文件夹,mysecondnote 就在里面。与 cp, mv 不同,不需要明确告诉它递归。它会自动包含移动目录内的文件。
10.1.5. 删除文件夹和文件
文件使用rm命令删除。文件夹使用rmdir命令删除。文件夹在为空之前不能被删除。
在使用rm命令时要非常小心!当你使用 GUI 删除东西时,它最终会进入你的回收站,所以文件很少真正消失。但当你使用rm删除东西时,它将永远消失。这意味着如果你不小心导航到错误的目录并删除了一个文件,就无法恢复。这就是为什么我很少使用rm。我不信任自己。rmdir更安全,因为它只对空目录有效。这两个命令不需要目标路径,因为它们是在删除文件和文件夹。
让我们仔细地从我们的桌面上删除那个文件和文件夹。我们仍然在终端中的 Documents 文件夹中。首先,我们将删除 mysecondnote,然后我们可以删除 linux.lunches.terminal 目录。要删除文件,我们将使用:
rm ../Desktop/linux.lunches.terminal/mysecondnote
我们将命令向上发送到目录,通过..进入桌面文件夹,然后进入 linux.lunches.terminal 文件夹,并从该文件夹中删除 mysecondnote 文件。一旦该文件被删除,我们就可以使用以下命令删除目录:
rmdir ../Desktop/linux.lunches.terminal
就这样,空目录消失了。如果你收到目录不为空的消息,这意味着 gedit 保存了一个备份文件,其名为mysecondnote~。请继续删除该文件,然后删除目录。
通配符
我们一直一次处理一个文件,但命令行允许你使用通配符。
假设你想要移动目录中的所有文本文件。
与逐个列出所有文件相比,你可以使用通配符来指示具有相同文件扩展名的所有文件。在这种情况下,它将类似于*.txt,意味着任何以.txt 结尾的文件。\*.\*将删除任何名称中包含点的文件,包括文件扩展名。
但在使用通配符的rm时要小心!如果你的语法不够精确,你可能会永久删除错误的文件或文件。
10.2. 总结
你现在应该对如何使用命令行操作文件有了概念。我不期望你会停止使用文件管理器,转而使用终端来处理所有的文件移动需求,但我确实期望你理解这个过程,足以理解其他人的命令并了解正在发生的事情。
一旦你知道如何移动和复制文件,你通常会发现自己比使用文件管理器更快、更简单。例如,通配符允许你快速将所有特定类型的文件移动到新目录中,这比打开图形文件管理器的时间还要快。如果你有很多文件要移动,这可以节省大量时间。
我知道我们在本章中覆盖了大量的信息,所以我设计了一个表 10.1 来帮助你记住这些命令。
表 10.1. 简单 Linux 命令指南
| 命令 | 功能 |
|---|---|
| cd | 更改目录(需要指定目录) |
| cd .. | 向上一级目录 |
| cp | 复制(使用 cp -R 获取目录内容);首先包括源然后是目标 |
| ls | 列出当前目录中的文件 |
| mv | 移动;首先包括源然后是目标 |
| rm | 删除文件;指示要删除的文件 |
| rmdir | 删除空目录;指示要删除的文件夹 |
| . | 指示当前目录 |
| .. | 表示当前目录以上的目录 |
| * | 表示通配符 |
术语表
在本章中,我解释了:
命令提示符
命令输入的终端部分
递归
在命令中包含目录内的文件和子文件夹
10.3. Lab
在这个实验中,我们将使用命令而不是文件管理器来重新创建第六章实验中的任务。使用终端执行以下操作:
1. 在你的 Documents 文件夹中创建一个名为 command_line _homework 的文件夹。
2. 在 command_line_homework 文件夹中创建一个名为 homeworkfile 的文档。
3. 将 homeworkfile 移动到 linux.lunches。
4. 进入 linux.lunches 并创建另一个名为 homework2 的文件。
5. 将 homeworkfile 复制到 Documents 中。
6. 从 linux.lunches 中删除 homework2。
7. 删除 command_line_homework。
高级实验
1. 在单个名为 recursive 的目录中创建三个.txt 文件。
2. 将 recursive 复制到你的桌面。
3. 使用单个通配符命令一次性删除所有三个递归.txt 文件。
第十一章. 使用常用命令行应用程序,第一部分
UNIX 的程序员道格·麦克伊罗里(Doug McIlroy)被认为是提出了被认为是 UNIX 哲学的格言:“只做一件事,做好它。”对于 UNIX 来说,这意味着只做一件事情的程序,比如移动或复制文件,而不是两者都做。这种方法与大多数软件程序非常不同,其中一种工具可能具有多个功能。只做一件事的程序:这正是 Linux 的亮点。
想想我们的文件管理器:它显示文件,移动文件,复制文件,并删除文件。这个模型对我们来说很适用,因为它完美地完成了所有这些事情。在上一章中,你学习了一些基本但至关重要的命令,它们执行非常简单的事情。你可能也注意到了,我们使用的每个命令都只做一件事。例如,当我们移动文件时,我们使用了mv命令,但当我们复制文件时,我们使用了 cp。
我们经常想要执行比移动和复制文件更复杂的任务。上一章是关于让你对命令行感到舒适。这一章是关于学习使用五个专门的命令行程序来完成非常具体的任务:top,用于跟踪系统使用情况;xkill和killall,用于关闭程序和进程;wget,用于下载文件;以及grep,用于搜索文件。这些是我经常使用的五个应用程序,因为它们比它们的图形化等价物要快得多。一旦你掌握了这些命令,你就会想知道没有它们你是如何生活的。
11.1。top
我们都经历过计算机因某些未知问题而变慢的经历。大多数操作系统都有一个任务管理器,让您可以看到正在运行的程序和进程以及它们占用的 CPU 百分比和内存量。Ubuntu 的任务管理器被称为系统监视器(大多数桌面环境和发行版都有类似的东西,如果不是完全相同——否则您可以从软件仓库中下载一个)。要启动它,请在 Dash 中输入System Monitor。您会看到它有三个标签页。我们感兴趣的是进程标签页(见图 11.1)。
图 11.1。系统监视器显示了您计算机上正在运行的过程以及它们使用的内存和 CPU 百分比。

如果您的系统变慢,您可以使用系统监视器来了解/辨别原因。您会知道问题所在,因为占用内存或 CPU 资源比系统中的其他任何东西都要多。您可以通过点击“% CPU”或“内存”列来查看占用这两种资源最多的是什么。系统监视器会相应地排序。
假设我看到 Firefox 在我的计算机上占用了大部分内存或 CPU 百分比。我可以自己关闭 Firefox 并释放一些内存。但有时程序占用了太多的内存或 CPU,以至于它们不会关闭。在这种情况下,程序使用的内存或 CPU 太多,计算机没有剩余的资源来关闭程序。您的计算机正在某个程序上窒息。在这种情况下,您可以通过系统监视器关闭程序。右键单击进程,您会得到一个选项列表(见图 11.2)。
图 11.2。系统监视器让您结束那些使计算机变慢的进程。

您将看到结束进程和终止进程(停止进程会暂停程序)的选项。您通常想从结束进程开始,这样计算机就会尝试为您正确关闭程序。如果不起作用,终止进程会强制关闭有问题的程序或进程。终止就像从插座中拔掉电源插头来关闭电器。这很困难但有效。
top命令与系统监视器做的是同样的事情。那么为什么使用它呢?因为它速度快。
当您打开系统监视器时,您正在使用系统资源,如果您的计算机因无响应的程序而卡住,打开另一个程序,尤其是图形程序,它比命令更占用系统资源,会使情况变得更糟。这会变得有多糟糕取决于您计算机硬件的规格。然而,使用top,您打开一个终端并输入命令。您使用的资源更少,并且获得相同的功能。让我们看看top的实际操作。打开一个终端并输入top。您应该会看到类似于图 11.3 的内容。
图 11.3。top命令让您在不占用太多系统资源的情况下查看系统资源。

布局与我们之前在系统监视器中看到的是相似的。你会注意到有%CPU 和%MEM 列,它们代表内存。你会在最右列看到程序或进程的名称。你也会注意到最左列,它被称为 PID。这代表进程 ID。运行在您计算机上的每个进程都有一个唯一的 PID。我们稍后将讨论这一点。
在系统监视器中,要按 CPU 或内存使用量排序,你点击了列。但在终端中这不起作用。如果你想按 CPU 百分比使用量排序,请输入P(确保是大写)。排序会立即改变。要按内存使用量排序,请输入M(确保是大写)。
所有列都是可排序的,我们将在第十二章中讨论如何了解这些命令中可用的排序和配置。
现在关于杀死阻碍你计算机的进程或程序怎么办?为了做到这一点,你需要查看有问题的进程的 PID。它会有非常高的%CPU 或%MEM 使用率——可能是你计算机上最高的。如果你回到图 11.3,你会注意到 Firefox 的 PID 是 4020。所以为了杀死它,我们将输入k。你会在列上方看到一条类似的消息(见图 11.4):
PID to signal/kill [default pid = 2808]
图 11.4。要使用top杀死一个信号,你需要知道它的 PID。

然后,你将输入你想关闭的任何程序的 PID。在我的例子中,它是 PID 4020,分配给了 Firefox。输入4020并按回车键。你会被询问是否要发送信号。它看起来会像这样:
Send pid 4020 signal [15/sigterm]
按下回车键。分配给该 PID(在我的例子中,是 Firefox)的程序将会关闭。
当你完成top后,输入q来关闭它。确保它是小写。top在查看系统状态而不减慢任何东西时很有用。能够杀死程序和进程的能力特别方便,尽管在下一节中,我们将探讨从命令行杀死程序和进程的其他方法。
11.2。杀死命令
有时程序会卡住。无论什么原因,它都不会响应,也不会关闭。在这些情况下,你想执行一个 kill 命令。在本节中,你将学习两个命令来杀死挡在你路上的程序。
11.2.1。xkill
当你不确定是什么减慢了你的计算机时,top很有用。但通常当你知道一个程序卡住时,你会立刻知道。你仍然可以使用top来获取 PID 并杀死它,但这是一个多步骤的过程。对于我知道要关闭什么的时候,我使用xkill命令。xkill以其简洁性而著称。你将它输入到终端,你的光标就会从箭头变成一个 X(见图 11.5)。
图 11.5。xkill将你的光标变成一个 X。然后你可以用它来关闭程序。

一旦它变成 X,点击任何程序,它就会关闭。这对于无法通过常规方式关闭的无响应程序非常有用。正如我提到的,这是一个终端命令,但你是在桌面上使用它,这使得它与其他章节中的其他命令略有不同。
你在终端中启动 xkill,但并不在终端中使用它。由于这种差异,你可以以稍微不同的方式启动它。与其进入终端,你可以使用 Alt-F2,这是一个将命令输入终端的快捷键,而不需要首先打开终端。这个快捷键在 Linux 发行版和桌面环境中相当标准。在 Ubuntu 中,它看起来像是你调用了 Dash,但如果你查看搜索栏,你会注意到它说运行一个命令(见图 11.6)。在我们的例子中,这节省了我们的时间,因为我们不需要在终端中看到任何东西。我们运行了我们的命令,然后离开了终端,这样就节省了后来必须关闭终端的步骤。
图 11.6. Alt-F2 允许你输入命令到终端,而不需要首先打开终端。

在另一个桌面环境中,输入区域可能看起来略有不同。例如,在 Xfce 中,你会得到一个小窗口,可以从那里运行命令(见图 11.7)。
图 11.7. 在 Xfce 中,Alt-F2 给你一个小窗口,可以选择在终端中运行命令。

xkill
1. 启动 Firefox。
2. 按 Alt-F2 启动终端窗口。
3. 在框中输入
xkill。你会注意到你的光标现在是一个 X。4. 点击 Firefox 强制关闭它。
使用 xkill 比进入你的系统监视器更快,也比使用 top 更快。
11.2.2. killall
有时候你知道哪个程序或进程正在减慢你的电脑,但你却看不到它。例如,我有时会关闭我的 Chrome 或 Firefox 浏览器,但它会在后台继续运行,减慢我的系统。或者有时我会遇到声音问题,我知道我需要关闭控制声音的 PulseAudio 程序。在这些情况下,我知道问题是什么,但 xkill 不起作用,因为没有可以点击的东西。问题是程序正在后台运行。在这些情况下,我会使用 killall,这是一个命令行工具,它允许我通过名称关闭程序。
例如,有时我会关闭 Firefox 并尝试稍后打开它。当我尝试打开它时,我会收到一条消息,比如 Firefox 已经运行,但没有响应。我可以进入 top 并获取仍在运行的 Firefox 进程的 PID,或者我可以省去运行 top 并在终端中输入来找到 PID 的麻烦:
killall firefox
这个命令将关闭所有 Firefox 的实例。killall 的好处是,如果有多个具有相同名称的进程正在运行,比如说多个 Chrome 浏览器实例,它将关闭所有这些实例。这在 Chrome 冻结时很方便,因为每个打开的标签页都是一个单独的进程,有自己的 PID。killall 会帮你关闭它们。
需要注意的是,当你使用 killall 和 xkill 等方式关闭程序时,你并没有正确地关闭程序。当你使用 killall 或 xkill 关闭程序时,你可能会丢失数据,并且通常会重新打开程序以找到错误信息。这些杀戮实用程序是在你无法正确关闭程序或进程时使用的。
11.3. wget
wget 是一个命令行应用程序,可以从互联网下载文件。这些文件可以是 HTML 页面、声音文件或 PDF 文件。你将命令指向文件或网站,wget 处理其余部分。我知道你在想什么——难道网页浏览器不做同样的事情吗?你说得对!网页浏览器下载文件。但我喜欢 wget 的地方是,我下载大文件时不需要离开我的浏览器,这可以让我的电脑运行得更快。我也不必担心下载被损坏,这有时会在你通过浏览器下载非常大的文件时发生,而浏览器并不是为这种下载设计的。而且 wget 的下载速度比浏览器快得多。
我不经常使用 wget。我主要用它下载非常大的文件(小文件下载得很快,很少值得用 wget 代替浏览器)。
例如,当我下载 Linux 映像文件时,就像我们在第三章 chapter 3 中做的那样,我使用 wget 下载文件。首先,我找到映像文件的网址,它是一个 .iso 文件。然后我进入终端,导航到我想要下载文件的文件夹。例如,如果我想从 example.com 下载映像到我的文档文件夹,语法看起来像这样:
1.
cd Documents2.
wgetwww.example.com/sample.iso
我可以关闭我的网页浏览器,让文件下载。或者我可以做其他事情。文件将在后台下载,同时我工作。
我还喜欢 wget 的另一个原因是,如果下载过程中有任何问题,它会继续尝试完成工作。如果下载被中断,它会自动继续。
有些人使用 wget 下载网站,这意味着不是特定的单个文件,而是整个网站。我从未有过这样的需求,但如果你有这个需求,你会使用一个标志,我们在第十章 chapter 10 中提到了。要下载整个网站 www.example.com,你会使用:
wget -r http://www.example.com
-r 表示递归。这与我们在上一章中使用的 cp 命令类似,只是用小写的 r 而不是大写。
wget 有很多选项,从告诉服务器它应该如何显示(你可以让它看起来像浏览器一样,因为服务器可能会反对命令而不是人类下载内容)到下载之间的等待时间。我在日常工作中很少需要这些。相反,wget 对于将大型的互联网文件,特别是大型的 Linux 图像文件,下载到我的电脑上非常有帮助,而无需保持浏览器打开。
11.4. grep
grep 是一个用于搜索文本文件的命令行工具。它就像一个 Ctrl-F,可以在一瞬间搜索成百上千的文本文件。它非常强大,因为它允许用户使用 正则表达式(也称为 regex)进行搜索,这是一种复杂的语法,允许你搜索模式,比如特定的单词、单词之间的特定空格数量,甚至某些位置包含特定字母的单词。
我很少使用 grep,除非我在解决电脑问题。对我来说,它是一个我理解的工具,但不是我经常需要的。它对于从日志和文件中提取文本非常有帮助,而且当你试图在文本文件堆中找到那根针时,你会很高兴你理解了它。
记得 第四章 中的 lspci 命令吗?它显示了你的计算机上的硬件。这是一个很好的概述,但通常你只想知道一件具体的事情。也许你想知道你的显卡。所以,而不是滚动整个列表,你可以执行 lspci 命令,然后使用 grep 搜索特定术语。这个命令看起来是这样的:
lspci -v | grep Graphics
你正在运行 第四章 中我们执行过的 lspci 命令,然后使用 grep 搜索单词 Graphics。grep 是区分大小写的,这就是为什么 Graphics 中的 G 是大写的。| 是一个管道。我们将在 第十二章 中更多地讨论管道。这个命令的结果是,你不会在无用的文本中筛选。grep 只会带给你在那个时刻想要看到的文本。
你也可以在日志文件上使用 grep。在 第四章 中,我们讨论了使用系统日志或文本编辑器来查看日志文件。但那有很多内容。你可以在文本编辑器中使用 Ctrl-F 来查找特定单词,但使用 grep,你可以在打开日志之前就搜索这些单词。比如说,你的电脑崩溃了,你想找出原因。你可以搜索系统日志中的单词 fail。这个搜索看起来是这样的:
grep fail /var/log/syslog
第一部分,grep fail 是你的搜索词。第二部分,/var/log/syslog 是你正在搜索的文件。结合起来,你是在说在 /var/log/ 目录下的 syslog 文件中搜索单词 fail(见 图 11.8)。
图 11.8. grep 需要一个搜索词和一个搜索位置。

也许你想在系统日志文件中搜索单词 fail 或 crash。这个搜索看起来是这样的:
grep 'fail\|crash' /var/log/syslog
在 grep 中,OR 用 \| 表示。你将搜索词放在单引号 (') 中(见图 11.9)。
图 11.9. grep 可以使用

如果你已经在第九章(kindle_split_018.html#ch09)中发现了一个你喜欢的文本编辑器,并且现在正在处理大量的文本文件,你也可以使用 grep 在目录中搜索文本文件。为此,你需要进行如下搜索:
grep -r *searchterm*.
-r 使搜索递归,遍历子目录。. 是搜索当前目录,你可能还记得上一章的内容。
标志符和命令
标志符是添加到命令中的文本,以提供进一步指令。我喜欢把它们想象成一个使用破折号和字母而不是点击的选项菜单。例如,我们之前使用 -r 来使 grep 和 wget 递归。
标志符很重要,因为命令没有图形菜单。如果你想使命令模块化,比如递归搜索而不是仅搜索当前目录,你需要一种修改命令的方法。标志符就是那种方法。在下一章,你将学习关于 man 命令的内容,这是一种了解命令如何工作的方法。提供的信息中包括命令的标志符。标志符告诉你如何使用 -r 与 grep 一起使用,但与 cp 一起使用 -R。如果命令的默认行为不适合你,可以通过在线搜索或使用 man 命令(你将在明天学习)来查看可用的标志符。
11.5. 总结
这些是我最常用的几个命令。正如我提到的,我并不每天都使用它们,但我经常使用它们,以至于我认为这五个都是不可或缺的。其中一些,如 top,有图形化等价物,但命令行更快,对系统的消耗也更少。在使用这些命令一段时间后,你可能会发现它们自己的用途。在下一章,我们将讨论如何了解更多关于命令的信息。表 11.1 概述了我们刚刚讨论的内容:
表 11.1. 有用的 Linux 命令
| 命令 | 使用时机 |
|---|---|
| grep | 在文本文件中查找文本。用于解析文件和从长屏幕输出中提取关键信息。 |
| killall | 通过名称结束进程和程序。当你知道需要关闭的程序时,这个功能很有用。 |
| top | 显示占用 CPU 和内存的资源;也可以通过 PID 来结束进程。当你不确定是什么导致电脑变慢时,这个功能很有用。 |
| wget | 适用于下载可能在浏览器中损坏的大型文件。 |
| xkill | 允许你使用光标关闭无响应的程序。当你需要强制关闭的程序就在你面前打开时,这个功能很有用。 |
术语表
在本章中,我解释了:
标志符
添加到命令中,以破折号开头,以提供进一步指令。它们是改变命令默认行为的一种方式。
进程 ID (PID)
分配给计算机上每个进程和程序的唯一编号
11.6. 实验室
1. 你会用什么命令来关闭 Firefox 的所有实例?打开 Firefox 并使用该命令强制关闭。
2. 你会用什么命令来查找硬件配置中的音频信息?运行该命令以定位你的信息。
3. 你会用什么命令从
mng.bz/o25h下载美国宪法的 PDF 版本?使用wget下载它。4. 哪个命令需要进程的 PID 来关闭它?打开 Firefox 并使用该命令来关闭它。
5. 打开一个程序并使用
xkill来结束它。提示:如果你不确定程序的名字,你可以使用另一个命令来查看所有正在运行的事物的名字。
高级实验室
1. 使用
wget从 Project Gutenberg (www.gutenberg.org/ebooks/6527.txt.utf-8)下载《Debian GNU/Linux : 安装和使用指南》的纯文本版本。2. 使用
grep在文件中搜索单词 linux,但使搜索不区分大小写。
第十二章. 使用常见命令行应用程序,第二部分
前一章讨论了几种对保持系统平稳运行有用的命令行程序。本章从第十一章章节 11 结束的地方继续,让我们接触到更多具有系统影响的程序。
本章我们将讨论的命令是强大的。我们将使用su和sudo命令,这些命令让你能够在系统上执行许多管理任务。我们还将讨论使用命令安装和卸载软件,而不是图形包管理器。然后我们将通过学习管道以及如何组合使用不同的命令来结束本章。
前两章是关于让你熟悉命令行并展示命令行能做什么。本章将为你准备与系统一起工作。这些是你需要了解和理解的命令,以成为一个有效的 Linux 用户。例如,你需要su或sudo来执行系统上的大多数管理任务。但别让这吓到你!前两章的工作已经为你准备好了这一刻。让我们开始吧。
12.1. su 和 sudo 用于管理任务
Linux 系统是基于权限的。这意味着只有某些类型的用户可以更改系统。这包括添加和删除软件,以及编辑和更改某些文件。这是一个安全性和安全预防措施,我们将在第十九章章节 19 中进一步讨论。
即使你自己安装了 Linux,即使你可能是系统上的唯一用户,你的 Linux 安装仍然不信任你!但这是一件好事。这意味着你更难意外地破坏你的系统,或者其他人故意这样做。
你可能还记得从 第七章 中,为了安装软件,无论是使用 Synaptic 还是 Ubuntu 软件中心,我们都需要输入密码。这是因为 Ubuntu 授予创建系统的账户完整的系统管理权限,在 Linux 中称为 root。root 账户拥有对系统上任何事物和行为的完全访问权限和权限。尽管并非所有发行版都给予主要用户账户 root 权限。一些发行版要求用户创建自己的账户,但也需要一个单独的 root 密码(root 登录总是 root)。这是一个额外的安全层。
例如,假设我的常规账户密码是 changeme,我的 root 密码是 bosco。如果我的常规账户被黑客攻击,或者如果我在某人嬉戏或恶意登录之前忘记退出系统,他们无法不使用我的 root 密码对我的系统进行任何重大更改。
su 和 sudo 命令是在不退出你的会话的情况下输入管理员密码,然后以 root 身份登录的方法。这两个命令非常相似。让我们看看它们的功能以及如何使用它们。
12.1.1. su
su 命令代表超级用户。或者切换用户。(这些事情有时很难确定。)技术上,它允许你切换到另一个用户的账户。但如果你没有指定账户,它允许你切换到 root(或超级用户)账户,前提是你知道密码。从那里,你可以做一些事情,比如安装软件和更改系统全局配置。
Ubuntu 锁定了 root 账户,所以使用该发行版的 su 命令无法用于 root 访问。锁定它的理念是保护 root 密码不被任何人泄露,但用户仍然可以使用 sudo 与系统交互,我们将在下一节讨论。
12.1.2. sudo
sudo 命令在功能上与 su 类似,但在工作方式上略有不同。你使用 sudo 来获取计算机上的管理员权限,但你并不是使用 root。取而代之的是,有一个名为 sudoers 的文件,它控制哪些账户可以访问 root 权限。但你不使用 root 密码,而是使用自己的密码进行身份验证。
这两个命令之间的区别在于 su 让你以 root 身份登录,而 sudo 让你在可以充当 root 的用户列表中,但它们本身并不是 root。
虽然区别不大,但要知道,对于 Ubuntu 来说,如果你想通过命令行安装软件,我们将在下一节中这样做,你将使用 sudo 命令。
如果你在一个没有sudo的系统上,你可以安装它并将用户添加到文件中。为此,你首先使用su成为 root 用户,然后使用adduser命令添加用户,该命令将用户添加到不同的组中,不同的组有不同的权限(我们将在第十九章中更多地讨论这个问题)。步骤看起来是这样的:
su
你的命令提示符将变成类似root@yourcomputer的样子。到现在你可能已经注意到,提示符有你的用户名@你的电脑名。使用su,你是在切换到 root 账户,这会改变命令提示符。
从那里,你会使用
adduser *user* sudo
以将命令中命名的用户添加到sudo列表。然后该用户将能够使用sudo命令执行诸如安装软件等操作。
要在你的系统上查看此过程:
1. 进入终端。
2. 输入
sudo adduser你的登录名sudo。
你会收到一条消息,告诉你已经是sudo成员,因为你确实是,但步骤对于添加系统上的其他用户也是相同的。
现在是时候回答那个价值百万的问题了——哪个命令更好?正如你所见,并非所有发行版都允许你使用su,这意味着你必须使用sudo。sudo命令要求你将用户添加到组中,虽然这只需要一分钟,但有些人并不欣赏这个额外的步骤。我自己就是一个sudo用户,因为我是在基于 Ubuntu 的系统上学习 Linux 的。你使用哪个工具并不那么重要,重要的是确保你在使用 root 级访问时,要留意自己在做什么。
我们将在下一节中更多地使用sudo,因为不使用它就无法使用基于文本的包管理器。但在我们继续之前,我会给你留下一幅 xkcd 漫画(见图 12.1),它可能会帮助你更好地理解sudo。
图 12.1. sudo命令并不完全是魔法,但有时感觉就像是。图片来自xkcd.com/149/。

12.2. 使用命令行安装和删除软件
如果你还记得,在第七章中我们讨论了包管理器。不同的发行版使用不同的包管理器。你会记得,基于 Debian 的发行版使用 Apt,而像 Fedora 和 OpenSUSE 这样的其他发行版使用 RPM。这些包管理器还关联着基于文本的命令。在基于 Debian 的发行版,如 Ubuntu 中,该命令是apt-get。在 Fedora 中,命令是dnf。由于我们在这里使用 Ubuntu,所以我将在大多数示例中使用apt-get。但命令之间的差异并不太大。例如,如果你在一个基于 Debian 的系统上,并且你想安装 Clementine 音乐播放器,你只需输入
sudo apt-get install clementine
你会输入你的密码,然后软件就会安装。如果你尝试在没有sudo的情况下使用apt-get,你将没有安装软件所需的权限。
所以 sudo 是设置你的权限,而 apt-get 是包管理程序的名称。我们正在告诉 apt-get 使用 install 这个词来安装。而 clementine 是我们想要安装的包的名称(包总是小写)。
如果我们的系统没有 sudo,我们会使用 su 变成 root 用户,然后使用 apt-get install clementine 安装软件。
使用 dnf 几乎是一样的:
sudo dnf install clementine
就像之前一样,sudo 是设置权限,install 是说安装程序,而 clementine 是要安装的程序名称。唯一的不同是使用的包管理器名称。
你可能记得在 第七章 中提到,Synaptic 和 Ubuntu 软件中心负责我们安装的软件所需的额外软件。apt-get、dnf 和任何其他命令行包管理器也是这样。它们都会安装程序所需的任何程序。实际上,当你通过命令行安装时,包管理器会显示将要安装的其他包,它们将占用多少空间,并要求你确认是否要安装软件。
使用命令行删除软件是一个类似的过程。比如说,在安装了 Clementine 之后,你发现它不适合你。在基于 Debian 的系统上,你会输入
sudo apt-get remove clementine
我们使用 sudo 的方式与之前相同——让系统知道我们有权限删除软件。我们使用 apt-get 作为我们的命令,而 remove 告诉 apt-get 这次软件将从计算机上移除。而 clementine,就像之前一样,是我们程序的名称。
在 Arch Linux 这样的另一个发行版中,那个命令会是
sudo pacman -R clementine
即使它是一个不同的包管理器,即使命令和术语都不同,从概念上你可以看到它是一个相同的命令。我们仍然使用 sudo,就像我们使用 apt-get 一样。Arch 的包管理器名为 pacman。与 apt-get 中的 remove 不同,我们使用 -R。并且我们以要删除的程序名称结束。
我们将在 第十七章 中更多地讨论包管理器。现在,请注意,命令行是安装软件的另一种选项。如果你系统有问题,无法渲染图形,这是一个很好的选项。了解如何使用包管理命令允许你在没有 GUI 的情况下修复程序。此外,请记住,包管理器是协同工作的。这意味着你可以使用 Synaptic 安装东西,然后用 apt-get 删除它。你可以在它们之间自由移动。
让我们继续学习如何了解更多关于命令的知识。
12.3. 使用 man 命令阅读手册
你已经注意到在我们的命令讨论中,有很多标志、选项和修饰符。你怎么知道它们所有的一切?现实是大多数人会使用互联网搜索来了解更多关于命令的信息。你正在阅读这本书,到结束时你应该对许多命令和标志有牢固的掌握。任何你想了解更多信息的命令,你可能会通过我提到的第四章中的网站进行探索。但 UNIX 系统有一个内置的帮助机制,非常令人惊叹。
它是一个名为man的命令,代表手册。要使用它,输入man以及你想要了解更多信息的命令名称。进入你的终端并输入
man apt-get
你将得到很多信息(见图 12.2)。
图 12.2. man命令告诉你有关命令行程序的信息。它是手册。

你将得到命令的描述,一个可用选项的列表,例如使用它来安装或删除软件,以及示例。你也会注意到顶部有一些标志。你可能会记得昨天提到的标志是改变命令默认行为的一种方式。你知道它们是标志,因为它们以-开头。man页面正在向我们展示如何更改apt-get命令。例如,如果我们想让apt-get只从某个仓库安装软件,我们可以使用-t标志来告诉它使用哪个仓库。
使用你的箭头键在手册的安装部分滚动。现在使用 k 键滚动回顶部。你可以使用上箭头和下箭头键滚动,也可以使用 j 和 k 键,你可能还记得在第九章中提到的 Vim。man命令中的很多信息都可以在网上找到,但如果你已经在终端中,使用man通常比打开浏览器并搜索信息要容易。当你完成man后,输入q来退出。
在上一章中,我们讨论了top命令以及你可以如何使用字母P按 CPU 使用率排序,以及使用字母M按内存排序。
使用 man
1. 在终端中输入
man top。2. 滚动并找到关于任务窗口排序的部分和其他排序选项,例如按 PID(N)和时间(T)排序。
你可能已经注意到,要找到排序信息需要滚动很多。让我们尝试一种不同的方法。
1. 使用
q退出man页面,然后重新打开它。2. 使用 Ctrl-f 查找单词
sort。但是你做不到!Ctrl-f 只会向前移动页面。要在man中查找术语,你需要使用/键。
现在输入
/sort
并且你会看到所有单词“sort”或以“sort”开头的单词都被突出显示。输入字母n来移动,或者在这些之间导航。
我最喜欢的关于man的事情之一是它不歧视。如果你想了解更多,输入man man,你将得到man的手册!你还可以通过点击启动屏幕上的h来了解更多关于在man中移动的信息。
现在我们知道了如何研究命令,让我们来练习如何组合命令。
12.4. 使用管道和重定向扩展命令
管道是将两个命令行程序连接起来的方式。这是一种节省时间和打字的方式。你不需要输入一个命令,按回车,处理输出,然后再输入另一个命令来处理输出,你可以使用管道来创建由命令组成的一行程序。你正在将一个命令的输出输入到另一个命令中,所有这些都在一行中完成。例如,在上一个章节中,我们使用管道将 lspci 和 grep 结合起来。我们不需要运行 lspci,将输出放入文件,然后搜索单词 graphic,我们能够在一条简单的命令中完成相同的事情:
lspci -v | grep Graphics
| 是管道。
命令的输出也可以重定向到文件。这意味着,而不是信息显示在屏幕上,你可以将内容移动到文件中,这通常使得阅读更容易。
回到我们的 lspci 命令,结果最终显示在我们的屏幕上。如果我们想将其保存到文件中,我们会使用 > 来将其重定向到文件。这个命令看起来是这样的:
lspci -v | grep Graphics > output.txt
现在,不再是 lspci 的信息显示在屏幕上,而是在一个名为 output.txt 的文件中。
记得第十章中的 ls 命令吗?这是列出你目录中内容的命令。你可以使用 grep 与 ls 结合来列出所有标题中包含特定单词的文件。当你需要查找一大堆文件时,这非常有用。例如,由于这本书,我有很多文件名中包含“Learn”。当我想要查看所有这些文件时,我有时会使用这个命令:
ls | grep Learn
我得到了一个包含“Learn”(注意大小写)的文件名的文件列表。如果我想得到这些文件名,我只需将输出重定向到文件。这个命令看起来是这样的:
ls | grep Learn > filelist.txt
这将使我得到一个包含目录中所有文件名的文本文件,这些文件名中包含“Learn”。
管道和重定向对于操作文件以及将复杂的命令输出从屏幕转移到文件中非常有用。我并不经常使用管道和重定向,但了解它们对于故障排除你的系统以及节省你的工作是有价值的。很多时候,你可能不得不做一些枯燥且重复的事情,比如更改一大堆文件名或将多个文件合并成一个更大的文件(作为一个经常在文本文件中处理条形码的图书管理员,我经常这样做)。几分钟的互联网搜索(也许是在我提到的第四章中的某些地方)可能会揭示一种使用命令和管道来完成它的方法,所以如果其他方法都不行,了解它们的工作原理会给你提供很多选择。
12.5. 总结
本章简要介绍了几个与命令相关的先进概念。一些,如 su 和 sudo,对于使用 Linux 立即至关重要。其他,如 man 和管道,随着你越来越多地使用 Linux,将揭示它们的实用性。在下一章中,我们将讨论如何有效地使用命令行。表 12.1 总结了今天我们所涵盖的内容。
表 12.1. 有用的 Linux 命令
| 命令 | 何时使用 |
|---|---|
| man | 命令的手册 |
| su | 切换到 root 用户;用于安装软件 |
| sudo | 以 root 用户的权限执行管理任务;用于安装软件 |
| | | 连接两个命令 |
| > | 将命令的输出放入文件中 |
术语表
在本章中,我解释了:
管道
一种连接两个命令行程序的方法
12.6. 实验室
你今天学习了几个不同的命令和过程。这个实验室将确保你理解如何使用这些命令,并知道如何使用管道和重定向与命令一起工作。
1. 使用命令行在你的计算机上安装 Midori 网络浏览器。提示:软件包名为
midori。2. 使用命令行将其删除。
3. 在
sudo的手册中找到所有关于 root 的提及。4. 使用单行命令复制名为 sudo.txt 的
sudo手册文本文件。
高级实验室
1. 返回你从 Project Gutenberg 下载的 Debian GNU/Linux : 安装和使用指南 的副本(可通过 www.gutenberg.org/ebooks/6527.txt.utf-8 获取)。
2. 将之前实验室中
grep搜索的输出(搜索 Linux 或 linux)通过管道输入到名为 linux.txt 的文本文件中。
第十三章. 高效使用命令行
我们过去的三次午餐都在讨论命令行,重点是命令本身。在本章中,我们将讨论在使用终端时如何高效和高效地工作。本章将涵盖两种替代终端界面:定制你的终端以及帮助你回忆和重用命令而不必每次都重新输入的技术。
本章是关于创建一个让你感到舒适并提供所需信息的命令行环境。正如你在前面的章节中看到的,命令行在本质上是一种节省时间的方式。你直接与系统交谈,而不是通过 GUI 工作。在一个你试图高效工作的环境中,你想要工具帮助你更加高效是有意义的。本章就是关于这些工具的。让我们从最基本的工具——终端界面开始。
13.1. 替代终端界面
当你在 Linux 上使用终端时,你实际上是在使用一个模拟器或程序。这意味着它是你和系统之间的接口。即使有时感觉你是在直接与操作系统交谈,但你实际上并不是。因为终端是一个程序,这意味着你可以使用不同版本的终端,它们都会做同样的事情。从概念上讲,终端界面就像桌面环境一样。它们可以有不同的外观和感觉。桌面环境和终端之间的主要区别是终端要简单得多,所以终端界面不会变化很大。但它们的变化足以让你想要尝试几个,看看你是否更喜欢默认的 Ubuntu 终端,它被称为 GNOME 终端。但不要忘记——你使用的终端界面在命令方面并不重要。你在任何一个终端界面中能做的事情,你都可以在另一个终端界面中做。
13.1.1. Guake
Guake 从经典的第一人称射击视频游戏 Quake 中汲取灵感。在那个游戏中,有一个菜单可以从屏幕上滚下来。当你用完它时,你可以将它卷回去。Guake 完全一样。你使用 F12 来召唤它,用完之后也用 F12 来关闭它。
我喜欢 Guake,因为它嵌入在我的桌面中。由于它几乎是透明的,它几乎让我感觉我的整个电脑都是一个终端(见图 13.1。figure 13.1)。但是,当我用完它时,它就会消失,不会妨碍我。让我们安装它,这样你可以看到它的样子。
图 13.1. Guake 几乎是透明的,所以在你工作时不会妨碍你。

如你可能在上一章中回忆的那样,你可以使用以下命令来安装它:
sudo apt-get install guake
使用 Guake 与使用我们一直在使用的标准终端略有不同。第一次使用 Guake 时,你需要将 Guake 输入到启动器中。之后,你可以使用 F12 键来调用 Guake。
现在你已经安装了 Guake,你会发现它的工作方式与我们在练习中使用的 GNOME 终端几乎一样。如果你输入 ls,你会看到它列出了你的目录中的所有内容。默认终端和 Guake 之间的唯一区别是你可以更快地调用 Guake。而且当你用完 Guake 时,你可以按 F12 来卷起它并让它消失。
你会注意到 Guake 在底部有一个栏。最右边的图标用于创建新的标签页。左边的框代表不同的终端窗口或会话(见图 13.2。figure 13.2)。你可以打开多个终端,它们都在做不同的事情,一个终端从一个网站下载文件,另一个终端从另一个网站下载文件。(GNOME 终端也支持这样做,它允许你打开新的终端窗口或标签页——Guake 将所有标签页和窗口都放在一个地方供你使用。)要切换会话,点击代表你想要切换的会话的框。如果你打开了大量的会话,你可以右键点击一个会话并给它命名。
图 13.2. Guake 有一个底部栏,让您可以跟踪不同的终端会话。

Guake 也可以进行自定义。自定义选项在一个名为 Guake 预设的独立程序中。要启动它,请在 Dash 中输入 Guake preferences。
选项(图 13.3)可以执行诸如更改 Guake 窗口的高度、更改启动它的键(如果您不喜欢使用默认的 F12),甚至更改透明度级别,如果您希望终端看起来更亮或更暗。
图 13.3. Guake 提供了多种自定义选项,从配色方案到启动键。

我喜欢 Guake 的速度。当我需要终端时,它就在那里。在某种程度上,它非常适合那些在终端上花费时间不多的人,因为它几乎是为了消失而设计的。作为一个在终端上花费时间不多的人,我发现它非常实用。而且作为一个在大学里花了太多时间玩 Quake 的人,我也欣赏使用它带来的怀旧感。
现在,让我们看看一个面向希望在终端上花费更多时间的人的界面。
13.1.2. Terminator
Terminator 更像 GNOME 终端。主要区别在于它处理多个窗口的能力,允许您将它们平铺。这意味着所有窗口都是打开的,并排列在您面前,就像地板上的瓷砖一样,只不过窗口可能大小不同。图 13.4 展示了 Terminator 平铺窗口。
图 13.4. Terminator 平铺终端窗口,让您可以看到一切。

Terminator 工作方式更像是我们习惯的终端。它只是有一些额外的功能。让我们稍微了解一下它。
首先,使用 sudo apt-get install terminator 安装它。安装完成后,您可以在 Dash 中打开它。
它看起来就像 GNOME 终端。如果您输入 ls,您会得到您在任何终端中预期的相同输出。让我们看看是什么让 Terminator 与我们之前使用的其他工具不同。
使用 Terminator 平铺
1. 输入 Ctrl-Shift-e。您会注意到终端垂直分割成两半。如果您需要帮助记住这个,想想垂直这个词的第二个字母。
2. 现在输入 Ctrl-Shift-o。现在终端已经水平分割。如果您需要帮助记住这个,想想水平这个词的第二个字母。
如果您在多个终端中工作,比如在一个终端中用 Vim 写东西,同时在另一个终端中安装软件,并且希望一次性看到所有内容,Terminator 是一个很好的选择。
您可以使用 Ctrl-Shift-n(下一个)和 Ctrl-Shift-p(上一个)在窗口之间切换。您也可以使用鼠标选择并拖动窗口。
Terminator 的另一个优点是其广播选项。这允许你同时将相同的内容输入到每个终端窗口中,而不是逐个窗口输入相同的内容。如果你想在不同的目录中使用相同的命令,这个功能非常有用。让我们看看如何做到这一点:
1. 点击左上角的四个方块(见图 13.5)。
图 13.5. Terminator 允许你同时向所有终端窗口发送相同的命令。
2. 点击“广播全部”。
3. 输入你的命令。在我们的例子中,输入
exit。注意,当你输入时,字母会在每个窗口中显示出来。当你按下 Enter 键时,一切都会关闭,因为exit是关闭终端窗口的命令。我们输入了相同的命令一次,但在三个不同的终端会话中执行了三次。
Terminator 可能最适合那些在命令行中花费大量时间的人或使用多个终端窗口的人。但即使你不这样做,有一堆打开的终端也很酷。这肯定会在咖啡馆中给人留下深刻印象。
我们刚刚看了两个额外的终端界面。如果你想了解更多关于其他终端的信息,维基百科有一个很好的列表,你可以逐个查看:en.wikipedia.org/wiki/List_of_terminal_emulators#Linux。现在让我们来谈谈定制终端的方法。
13.2. 定制终端
之前我们只看了如何自定义 Guake 的外观。GNOME 终端也有同样的能力。要查看你的选项,请转到顶部导航菜单下的“编辑”菜单中的“配置文件首选项”选项(见图 13.6)。
图 13.6. 默认终端允许你通过配置文件首选项菜单自定义其外观。

如你所见,GNOME 终端允许你拥有配置文件,这意味着你可以为不同的人或不同的活动配置终端。我们稍后会谈到配置文件元素。现在,你应该看到你面前有类似图 13.7 的东西。
图 13.7. GNOME 终端配置文件首选项菜单的不同选项卡。

使用这些菜单,你可以更改关于你的终端的许多事情。从使用角度来说,定制终端非常重要。如果你发现默认的紫色背景上的白色文本难以阅读,你可以将其更改为更容易阅读的内容。你还可以更改你的字体。要这样做:
1. 取消选中“使用系统固定宽度字体”选项,这样你可以为终端选择自己的字体和字体大小。
2. 取消选中复选框后,点击“Monospace”(Monospace 12 是默认的终端字体和字体大小)并更改字体、字体大小或两者(见图 13.8)。
图 13.8。你可以更改终端的字体和字体大小。
3. 将字体大小更改为 20,点击“选择”,然后返回终端。你的终端现在应该看起来不同,字体要大得多。
4. 再次进入“配置文件偏好设置”并将字体恢复为 12 号。
你还可以更改终端使用的颜色。让我们一起来做这件事。
1. 点击“颜色”选项卡(见图 13.9)。
图 13.9。你的终端有一些内置的颜色方案,或者你可以选择自己的颜色。
2. 取消勾选“使用系统主题颜色”复选框。
3. 从内置方案中选择“黑白”。
你的终端现在应该是白色而不是紫色,文字应该是黑色而不是白色。你也可以通过使用“自定义方案”选项并选择自己的颜色来选择自定义的背景和文字颜色。
最后,如果你点击“背景”选项卡,你可以选择一个背景图片而不是颜色(见图 13.10)。我不推荐这个选项,因为文字与图片对比难以阅读。然而,如果你有这个偏好,它是可用的。
图 13.10。你可以使你的终端半透明,就像 Guake 一样。

你还可以给自己一个透明的背景,就像 Guake 使用的那样。我喜欢这个选项,因为它让我可以看到终端后面的屏幕,这在我在网上查找命令时非常有帮助。要更改终端的不透明度,勾选“透明背景”选项。使用滑块来更改不透明度。当你从左边的“无”移动到右边的“最大”时,你的终端将变得越来越不透明。这是另一个取决于你的视觉和工作流程偏好的个人设置。要了解更多关于 GNOME 终端偏好的信息,请按 F1 打开帮助菜单,然后点击“偏好设置”。
在所有可用的选项中,你可能会有不同活动的不同终端颜色方案和配置。例如,当你使用 Vim 编写时,你可能需要一个更大的字体。或者,当你安装软件时,你可能需要一个不同的颜色方案,以便记住要小心。你可以使用配置文件来保持它们分开。要创建一个配置文件,点击顶部导航栏上的“文件”按钮,然后点击“新建配置文件...”。你会看到一个弹出窗口要求你为新配置文件命名,并询问你基于哪个现有配置文件创建新配置文件。由于你只有一个配置文件,你的第一个新配置文件将基于“默认”。
如果你发现阅读紫色背景上的白色文字会让你的眼睛感到疲劳,你可能更喜欢一个白色背景黑色文字的阅读配置文件,字体更大,用于阅读 man 页面。你可能还会创建一个透明的配置文件,用于在网上研究命令时使用。随着你对终端使用得越来越多,你可能会发现创建配置文件很有帮助,这些配置文件允许你在不每次改变活动时重新配置终端的情况下自定义终端。要更改你的启动终端配置文件,请转到“编辑”然后“配置文件”,然后更改“启动新终端时使用的配置文件”设置(图 13.11)。
图 13.11. 你也可以更改启动终端时使用的配置文件。

下一个部分将向你展示一些快捷键,这些快捷键可以帮助你在命令行工作时节省时间。
13.3. 在终端中节省时间
随着你对 Linux 的了解和操作,你会积累很多技巧。本节将带你了解我知道的一些最有用的技巧。它们代表了我希望早点知道的所有关于命令行的事情。这些技巧的共同点是它们都帮助你回忆起你已经使用过的命令,或者帮助你少打一些字。
13.3.1. 最后一条命令
你可能已经遇到过这样的情况,你输入了一个命令,不小心输入了错别字。对于相对较短的命令来说,这并不是什么大问题,但随着它们变得越来越长和复杂,从头开始重新输入可能会让人感到沮丧。幸运的是,你不需要重新输入!相反,使用上箭头可以在终端中调用你最后使用的命令。如果你需要更早的命令怎么办?只需继续按上箭头。如果你不小心跳过了所需的命令,可以使用下箭头向前移动。如果你在复杂的命令中输入了小错误,这个过程非常棒。你可以使用箭头找到命令并编辑它,而不是重新输入。
13.3.2. 历史命令
如果你的命令是最近使用的,上箭头很好,但如果你试图找到几天前使用的命令,你可能需要一种方法来查看更多命令。history 命令会给你一个之前使用过的命令的打印输出。每个终端默认保存的命令数量都不同。我的设置为保存最后 950 个。你可以在 .bashrc 文件中更改这个变量,我们将在下一章中讨论。在终端中输入 history 以查看你迄今为止运行的所有命令。
你可能已经注意到,这个命令在你的屏幕上给你显示了一个巨大的命令列表。你当然可以滚动浏览它们,但阅读或操作起来并不容易。幸运的是,在上一个章节中,我们学习了如何将文本从终端发送到文件中。如果你回到你的终端并输入
history > ../Desktop/commands.txt
你现在应该在桌面上有一个包含命令的文本文件,每个命令占一行。
13.3.3. 搜索命令
我们将要讨论的最后一个用例是当你记得你使用的命令的某些内容时。在这种情况下,你可以通过按 Ctrl-R 来搜索你的命令。在你的终端中,你会看到类似这样的内容:
(reverse-i-search)`':
输入你记得的命令的任何部分,你将看到匹配你搜索的命令。使用 Ctrl-R 来遍历所有匹配项,并在看到你想要执行的命令时按 Enter 键。如果你想调整命令,使用右箭头将其放入你的终端而不启动它。然后你可以在按 Enter 键之前编辑命令。
13.3.4. 自动补全命令
终端还可以通过自动补全命令来节省你的输入。要自动补全,你开始输入一个命令,并使用 Tab 键来完成它或查看你的选项。我通常用它来避免输入整个目录名。例如,进入你的终端并输入
cd Dow
现在按 Tab。命令现在应该读作:
cd Downloads
Tab 完成了命令。如果你输入了cd D并按了 Tab,直到你再次按 Tab,什么也不会发生。那时,你会看到以大写 D 开头的目录(文档和下载)。使用 Tab 来补全你的命令可以节省你大量的输入。
13.3.5. 复制和粘贴
你可以在终端中复制和粘贴文本。在大多数界面中,你使用 Ctrl-X 剪切,Ctrl-C 复制,Ctrl-V 粘贴。在终端中,剪切是 Ctrl-Shift-X,复制是 Ctrl-Shift-C,粘贴是 Ctrl-Shift-V(见表 13.1)。这意味着如果你在用history创建的文本文件中找到了所需的命令,而不是重新输入到终端中,你可以从你的文本编辑器中剪切它,并用 Ctrl-Shift-V 粘贴。你也可以从网站粘贴到终端,但一定要非常小心运行你不理解的命令! 你可能会意外损坏你的系统。确保你在运行命令之前通过它并理解每个部分的作用。我们将在第二十章中更多地讨论安全运行命令。
表 13.1. 复制和粘贴的快捷键
| 终端快捷键 | 操作 |
|---|---|
| Ctrl-Shift-C | 从终端复制内容 |
| Ctrl-Shift-X | 从终端剪切内容 |
| Ctrl-Shift-V | 将内容粘贴到终端 |
13.4. 总结
这并不是我们在终端工作的结束,但这是我们对其扩展关注的结束。现在,随着你翻阅本书的其余部分,我们将在 GUI 和终端之间切换,使用最适合的工具,并在适当的时候给你提供选项。你现在有足够的知识来理解命令并创建它们。你也知道足够多的知识来创建一个让你感到舒适的终端环境。最后,你现在知道了许多查看和重用命令的方法。总的来说,你现在有了使用终端进行不同任务的工具。
术语表
在本章中,我解释了:
标签页
桌面窗口都打开并排列在您面前,就像地板上的瓷砖一样,只是窗口可能有不同的大小
13.5. 实验室
这个实验室将带您了解您刚刚学到的自定义和节省时间的技巧:
1. 如果您还没有这样做,请使用命令行安装 Guake 和 Terminator。
2. 使用自动完成功能进入您的文档目录。
3. 返回到您的家目录。
4. 现在,将
history命令的输出重定向到一个文本文件。您最后三个命令是什么?5. 进入 Guake 并查看您的历史记录。它与默认终端的输出有何不同?
6. 将 Guake 配置为使用 F11 键启动。
7. 将 Terminator 分成 2 x 2 的网格中的四个窗口。
8. 输入
apt然后按 Tab 键两次。会发生什么?这个输出意味着什么?
第十四章. 解释 Linux 文件系统层次结构
我们花了一些时间探索不同的 Linux 命令,在您的家目录中工作(我马上会解释什么是家)。但是,您的系统上还有其他目录,包含与您的程序文件到系统配置文件相关的信息。在本章中,我们将探索这些目录,了解它们的内容以及您可以做什么。虽然这个过程有助于解决您系统的问题,但我想要强调,它同样重要于个性化您的系统。所以了解和理解这些目录不仅关乎修复损坏的部分,也关乎改进已经工作良好的部分。
在我们开始之前,我想指出,Linux 目录与 Windows 目录不同,因为它们不使用字母来标识硬盘或分区。所以虽然您的 Windows 安装位于 C:驱动器上,Linux(和 OS X)简单地使用目录名,如/home。
您可能认为您非常了解您的家目录,因为我们已经花了很多时间在其中,但 Linux 目录中隐藏着一些有趣的秘密。让我们更深入地看看家目录。
14.1. /home
Linux 系统上的/home 目录是用户的个人目录。正如您在过去几章中看到的,您的/home 目录包含您的个人文件夹:
-
桌面
-
下载
-
音乐
-
公共
-
视频
-
文档
-
图片
-
模板
这些是您的内容文件夹。您可以使用它们按您希望的任何方式。没有任何阻止您将音乐放入文档文件夹。您甚至可以删除这些文件夹中的任何一个。但/home 本身是一个系统文件夹,这意味着它是您的操作系统放置的,并具有特定的用途。不能删除它而不会破坏您的系统。您可能可以使用 root 权限在系统文件夹中保存个人文件,但文件可能会被删除或可能干扰一个进程,所以最好的做法是将您的个人文件保存在家目录中。让我们看看家目录:
-
进入您的终端并输入
cd ..。您应该看到类似以下的内容:steven@steven-VirtualBox:/home$现在,你已经在你的系统 /home 目录中,它包含了系统上所有用户的 /home 目录。
-
输入
ls来查看 /home 中的目录。你应该会看到一个以你的用户名命名的目录(你可以通过它加粗且颜色与文件名不同来判断它是一个目录)。
那是你的个人主目录,包含你的个人设置和配置,这就是 /home 的用途。就像你的物理家园是你居住的地方一样,/home 目录是你的个人文件和配置存放的地方。这是我们一直在工作的文件夹,也是我们启动终端或图形文件管理器的默认位置。
让我们回到终端中:
-
输入
`cd`和你的个人 /home 目录名称。 -
一旦进入终端,输入
ls。你会看到之前见过的目录。 -
现在输入
ls -A。这代表 列出所有。当你输入它时发生了什么?
你应该会看到更多文件夹和文件,它们都以点号 . 开头(见图 14.1)。
图 14.1. ls -A 命令在终端中显示隐藏文件夹和文件。

这些是供你个人使用的系统文件。例如,你会注意到一个 .mozilla 文件夹。如果你在 Live 会话中看不到它,打开并关闭 Firefox,它就会出现。
该文件夹包含你的 Firefox 配置文件信息。这些隐藏文件和文件夹在你的 /home 目录中由 Linux 用于个性化你的体验。在我们处理隐藏文件夹和文件之前,我想向你展示另一种方法来查看它们,如果你更倾向于图形用户界面的话。
要在 Nautilus 中查看这些隐藏文件夹和文件:
1. 打开 Nautilus。你会看到你常用的目录。
2. 按 Ctrl-H。Ctrl-H 是 Linux 文件管理器中显示隐藏文件的全球快捷键。
现在,你应该能在文件管理器中看到之前隐藏的文件夹和文件列表。它看起来可能像图 14.2。
图 14.2. 在大多数 Linux 文件管理器中,按 Ctrl-H 可以显示隐藏文件。

在 Linux 中,文件或目录可以通过以点号开始文件或目录名称来隐藏。例如,要在终端中隐藏一个文件,你将输入
touch .mynewhiddenfile
文件不会显示,除非你使用 ls -A 或在文件管理器中查看隐藏文件。
有很多有趣的隐藏文件可以探索。例如,你可能会记得在上一章中我们使用配置文件首选项菜单自定义了终端。但你也可以通过编辑名为 .bashrc 的隐藏文件来自定义它。让我们向我们的终端提示符添加信息。在我们这样做之前,让我们备份我们的 .bashrc 文件,以防万一出了问题。回到你的终端并输入:
cp .bashrc .bashrc-backup
这是一个需要培养的重要习惯。如果我们不小心损坏了 .bashrc 文件,我们可以删除它并将备份的 .bashrc 重命名。现在我们已经做了备份,我们可以开始用文本编辑器更改设置。你可以使用任何文本编辑器,就像你可能在第九章回忆起来的那样。我使用 gedit 文本编辑器,因为我只需要进行快速编辑。这里的要点不是关于自定义终端提示符,而是你的 /home 目录中存在这些配置文件和文件夹,允许像更改终端提示符这样的操作。要使用 gedit 打开文件,请使用以下命令:
gedit .bashrc
1. 将 .bashrc 文件滚动到末尾并输入
export PS1="\u@\h:\w \d\\$ \[$(tput sgr0)\]"。这个命令正在更改显示在我们命令提示符中的变量(见图 14.3)。图 14.3. 命令提示符由你可以选择的变量组成。
2. 保存文件。
3. 使用
exit命令退出终端,然后重新启动终端。现在你的提示符应该会显示日期:
steven@steven-VirtualBox:~ Thu Nov 12$
如果你要在系统上创建另一个用户账户,该用户将使用默认的终端提示符,直到他们决定更改它。所以你在 /home 中更改的内容只适用于该用户——系统上的其他用户不会发生任何变化。在第十六章中即将介绍,我们将创建键盘快捷键以启动某些应用程序。这些快捷键将使用位于 /home 中的 .gconf 目录。我们将更改系统部分的工作方式,将某些键组合映射到某些程序,但我们只会影响单个用户——而不是整个系统。
这些配置文件也是可移植的。一些用户会随身携带他们的 .bashrc 文件,因此当他们在一个新系统上时,他们可以立即复制自己的 .bashrc 文件并拥有一个定制的终端。
现在我们来看看你的系统级文件。
14.2. / (root)
你的整个文件系统都位于一个称为 root 的区域。它由一个 / 而不是单词 root 表示。这些是系统中的最高级目录。root 之外没有其他内容。要查看这些文件,进入你的终端并输入 cd /。这个命令的意思是将目录更改为 root。
你也可以通过点击左侧导航面板上的计算机链接从文件管理器中看到 root(见图 14.4)。
图 14.4. 你可以从文件管理器中看到你的根目录。

在 root 用户下实际上没有太多可以做的事情,但了解这一点很重要,因为它是所有系统文件夹的路径。此外,当你浏览 root 目录下的文件夹列表时,你会注意到一个名为 root 的目录。这是 root 用户的家目录。我们在第十二章中讨论了 root。你会记得 root 是所有 Linux 系统的主账户。因为这个账户非常重要,所以你几乎无法对它进行操作,这保护了系统的完整性。但 root 被以这种方式使用两种不同的方式确实令人困惑。可以安全地假设,如果有人谈论或写作关于 root 目录,他们是在谈论 / 而不是 root 用户的家目录。
14.3. /usr、/bin 和 /sbin
Linux 中更令人困惑的事情之一是你没有意识到你的程序在哪里。包管理器处理安装,而你作为用户在程序存放位置上的参与度较低,这与 Windows 不同,Windows 倾向于将程序保存在一个地方,甚至经常询问你希望程序安装在哪里。
/bin 目录,简称二进制目录,包含命令。二进制是一个程序,不能像配置文件那样直接编辑。所以虽然我们能够使用文本编辑器自己调整 .bashrc,但 bin、/sbin 和 /usr 中的文件作为最终用户是无法编辑的。
让我们来看看 /bin 目录,这将使事情更清晰。如果你是 root 用户,请进入 /bin 目录并查看文件。滚动列表,你应该会看到一些熟悉的名字——cp 和 grep。这些是我们已经使用过的命令。当我们使用它们在终端时,命令会调用 /bin 目录来执行并完成我们所要求的操作。所以当我们使用 cp 来复制文件时,cp 程序是从我们的 /bin 目录启动的。
/sbin 目录类似,但其中使用的命令是系统管理命令。它们通常需要 root 权限才能运行。
这两个目录你很少会用到,但如果了解它们,对于理解使用 mv 等命令时发生了什么是有帮助的。你通过终端启动一个程序,而这个程序位于 /bin 这样的目录中。
/usr 目录包含所谓的用户应用程序,这对我来说很令人困惑,因为我是一个用户,我经常使用 /bin 中的程序。进入 /usr 目录,你会看到它有自己的 /bin 和 /sbin 文件夹,这些文件夹也包含二进制文件。
这三个目录控制着我们的计算机的大部分功能。我们可以看到它们的结构和包含的内容。这真的很令人惊叹。这让我想起了那些皮肤透明的解剖模型,你可以看到身体内部所有部分的外观。这就像是你计算机的 X 光视力,可以让你了解它是如何工作的。
但现在让我们看看一个我们可以实际编辑的目录!
14.4. /etc
/etc 目录代表等等!它包含你的系统级配置文件。这些不是二进制文件。这些是可以编辑的文件,尽管因为它们是系统级的且很重要,你总是要小心行事。
一个可编辑文件的绝佳例子是 GRUB,这是用于启动你的计算机的程序。如果你正在双启动你的计算机,你可能需要编辑 GRUB 文件。但即使你不是双启动,也有可能需要编辑文件的原因。
例如,当你关闭或开启计算机时,你可能会看到显示系统正在发生什么的文本。默认情况下,Ubuntu 关闭此功能,因此你不会看到任何消息,但其他发行版将其保留开启。如果你正在尝试解决系统问题,这些消息可能会有所帮助,所以一般来说,当一切正常时,你可能希望关闭它,但当有问题时,则希望开启。让我们使用终端来编辑文件,看看从家编辑文件与从 /etc 编辑文件之间的区别,前者只影响单个用户,而后者影响整个系统。我们使用终端是因为我们需要对文件进行管理员访问,这需要 sudo 命令。
编辑 GRUB
1. 打开你的终端。
2. 输入
cd /etc。这将把你置于 /etc 目录。3. 输入
cd /default。这将把你移动到 /etc 的默认子目录(你也可以在第二步直接进入该文件夹,输入
cd /etc/-default)。
你需要 sudo 命令来编辑 grub 文件。
4. 输入
ls以查看目录中的文件。我们将编辑名为 grub 的 GRUB 文件。5. 输入
sudo vi grub以编辑文件。6. 一旦文件打开,你会看到一行读取为
GRUB_CMDLINE_LINUX_DEFAULT ="quiet splash"的行。Quiet splash 意味着在计算机开启或关闭时不会显示任何消息。7. 删除 quiet splash 以使其读取
GRUB_CMDLINE_LINUX_DEFAULT=""。通过删除它,我们将关闭 quiet splash 选项,这意味着我们将看到系统消息。8. 注意到文件顶部写着
If you change this file, run 'update-grub' afterwards to update。9. 保存并退出 Vim (
:wq)。10. 一旦你回到终端,运行推荐的命令,这需要 root 权限。它看起来像
sudo update-grub。11. 一旦 GRUB 更新,重新启动你的计算机。
当你关闭计算机时,你会注意到屏幕上有很多代码在运行,告诉你计算机关闭时发生的所有事情。当你启动计算机时,你也会看到这些,除非你正在使用 LiveCD,在这种情况下,设置将不会被保存。
本节的目的不是教您关于 GRUB 的知识,尽管 GRUB 非常有用,但是为了向您展示您可以在 /etc 目录中完成的全局配置类型。在本节中,我们改变了一些关于计算机关机和开机方式的小行为。/etc 目录还包含从我们使用的仓库(我们将在第十七章中讨论)到字体渲染方式的配置。别忘了——我们在家目录中编辑的 .bashrc 只影响单个用户,但我们 /etc 中所做的 GRUB 调整将影响所有用户。
14.5. /tmp
/tmp 目录代表临时文件。这些不是系统文件或配置文件。系统放置在此处的文件通常在重启之间消失。
我提到这一点是因为有时程序会在这里放置文件。例如,当我截图时,默认的文件保存位置是 /tmp 目录。在我知道这一点之前,有时我会不小心太快地保存截图,然后我找不到它。
因此,请将本节的最后部分视为一项公共服务公告。有时东西会保存在 /tmp 中。如果您不确定某物在哪里,检查那里也无妨。
14.6. 总结
本章向您介绍了我认为最重要的目录。/home 目录可能是最重要的,因为您的文件和设置都在那里,但正如您在 GRUB 示例中看到的,/etc 目录也可以用于更改系统上的某些内容。现实情况是,大多数时候,我们通过不同的第三方系统工具与 /etc 交互。
如果我们要更改键盘布局,我们通过 GUI 来做,但如果我们愿意,我们也可以手动编辑 /etc/default 中的文件。了解这些目录的工作原理有助于我们了解我们的系统——特别是如果某些事情没有按预期工作的话。大多数 Linux 用户在尝试修复或配置某些内容时,不会立即知道要访问哪个目录,但现在,当您看到文件位置时,您会立即了解您正在处理哪种设置。在您不确定要找什么的情况下,您将更好地了解哪个目录可能包含答案。
表 14.1 总结了您今天所学的内容。我还提到了一些我们将在第十七章中更详细讨论的其他目录。
表 14.1. 有用目录的解释
| 目录 | 用途 |
|---|---|
| / | 包含所有目录的目录。称为根目录。 |
| /bin, /sbin, 和 /usr | 您的二进制应用程序或程序,您无法编辑。 |
| /etc | 您的系统级配置文件。 |
| /home | 您的个人文件和个人配置。 |
| /lib | 您的系统级库(我们将在第十七章中进一步讨论)。 |
| /opt | 从你的软件仓库外部安装的应用程序(我们将在第十七章中详细讨论)。 |
| /root | root 用户的家目录。 |
| /tmp | 你的临时文件。通常这些文件在重启之间消失。 |
术语表
在本章中我解释了:
二进制
用户无法直接编辑的程序
隐藏文件
默认情况下看不到的文件
14.7. 实验室
在本章中,我们进入了一些目录来更改个人设置和系统设置。现在,你将把所有东西都恢复原状!
1. 将你的终端提示符恢复到原始状态。
2. 将你的 GRUB 恢复到原始状态,以便在没有消息的情况下启动和关闭。
3. 使用终端删除你的隐藏文件(mynewhiddenfile)。
4. 将你的/home 目录中所有文件和目录(包括隐藏的)通过管道传输到一个隐藏文件中。
5. 在你的/tmp 目录下保存一个名为 important.txt 的文件并重启你的计算机。文件会发生什么变化?为什么会这样?
第十五章. Linux 中的 Windows 程序
使用任何操作系统的挑战在于当你需要仅在另一个操作系统上可用的特定程序时。例如,美国政府有一个很好的储蓄债券计算器,储蓄债券向导,它会告诉你债券赚取了多少利息以及何时到期。Linux 有自己的版本,称为 GBonds,但这两个程序之间的文件不兼容,我最初是在储蓄债券向导中创建的文件。所以我需要 Windows 来使用我的文件。
有时候,没有 Linux 的替代程序,你唯一的选择是 Windows 版本。这通常与游戏有关,尽管随着越来越多的游戏在 Steam 平台上可用,这种情况正在改变。幸运的是,在 Windows 和 Linux 之间移动并不复杂。在本章中,我将讨论在 Linux 和 Windows 世界之间移动的两个选项。
有一个有趣的事情要注意的是,随着我在 Linux 上花费的时间越来越多,我发现我需要进入 Windows 的次数越来越少。几乎我需要的每一个 Windows 程序都有一个很好的 Linux 等价物。但是,知道如何在 Linux 机器上轻松进入 Windows 对于那些可能需要 Windows 的罕见场合来说是很方便的。我们将探讨两种在 Linux 中运行 Windows 程序的方法。一种是在 Linux 中运行完整的 Windows 安装,就像我们在第三章中在虚拟机中运行 Linux 一样。另一种是 Wine,在我们的系统中模拟 Windows 的一些方面。
15.1. 虚拟化
我们在第三章中简要地讨论了虚拟化,在那里我们使用 VirtualBox 在 Windows 中安装 Ubuntu,但我们没有太多时间来讨论我们实际上在做什么。虚拟化是模拟硬件的过程。你基本上是在欺骗软件在不存在硬件上运行。在第三章中,我们在 VirtualBox 中“构建”了一台计算机,然后在上面安装了 Ubuntu。Ubuntu 认为它正在运行在一个具有我们指定的任何 RAM 和内存的物理机器上,但实际上它是在 VirtualBox 中运行的。简单来说,虚拟机是计算机中的计算机,而无需不同硬件就能安装不同的操作系统是一项有用的技能。
就像你在 Windows 或 OS X 安装中安装 Ubuntu 一样,你也可以以类似的方式安装 Windows。这个过程与我们在第三章中使用的方法相同。首先,你会在你的 Linux 机器上安装 VirtualBox。然后,你会在 VirtualBox 中构建一个虚拟计算机。然后,你会在那个虚拟计算机中安装 Windows。
这个过程很简单。挑战在于,要虚拟安装 Windows,你需要一个 Windows 镜像。你会记得在第三章中,我们从 Ubuntu 网站上下载了我们的 Ubuntu 镜像。Ubuntu 是免费和开源的,这意味着代码对每个人都是公开可访问的,但它也是免费的。然而,Windows 是一个付费产品。你可以下载它的有限试用版,但你不能免费永久安装它(至少不是合法的)。
由于安装与产品密钥相关联,如果你已经有了 Windows 的副本,那么如果你已经在使用那个产品密钥,你就不能使用它。
获取 Windows 的一个选项是购买它。但探索其他选项。例如,我供职于一所大学,该大学为教师和员工提供 Windows 镜像和产品密钥。我也听说一些学生通过他们的大学可以访问到 Windows 镜像和产品密钥。在你的学校和工作场所周围询问可能值得,看看是否有一个可以合法提供给你的 Windows 副本。
在本章我将讨论的两个选项中,这可能处理 Windows 的最简单方法:当我需要 Windows 时,我只需通过 VirtualBox 启动它并完成我需要做的事情。然后,我关闭它并返回 Linux。这很简单,不会造成干扰。由于我运行的是完整的 Windows 版本,所以很少或几乎没有软件方面的复杂问题。虽然这确实需要有一个 Windows 镜像来实施,这并不简单,但一旦你有了镜像,它几乎就像拥有一个不占用任何物理空间的 Windows 机器一样。
我意识到并不是每个人都能访问到 Windows 镜像,但我想要快速回顾安装它的步骤。如果你确实有一个额外的 Windows 镜像,请跟随操作:
1. 确保你的 Windows 镜像是 .iso 文件。我的镜像文件是 .img 格式,所以我只将最后三个字母改为 .iso,然后一切就绪。
2. 打开 VirtualBox 并创建一个虚拟机(见图 15.1)。
图 15.1. VirtualBox 允许你在现有的操作系统中创建虚拟机。
3. 给镜像文件命名,并在下拉菜单中指明你使用的 Windows 版本。我建议至少分配 1024 MB 的基本内存,因为 Windows 的新版本可能会占用更多内存。
4. 创建一个新的硬盘和启动盘(见图 15.2)。
图 15.2. 你正在为 Windows 创建一个新机器,但不是一个新的物理机器。
5. 使用 VirtualBox 磁盘镜像(VDI)作为你的文件类型。
6. 使用动态分配的磁盘文件。
7. 至少分配 25 GB 的磁盘空间。动态分配的磁盘文件不会一次性使用完整的 25 GB。
8. 点击两次“创建”,你的虚拟机就配置好了。
9. 双击你的虚拟机,这将触发首次运行向导。
选择 Windows 镜像的位置作为媒体源(见图 15.3)。
图 15.3. 将 VirtualBox 指向你的磁盘镜像位置。
10. 点击“下一步”,然后点击“开始”,你应该可以启动到 Windows。
11. 然后,按照屏幕上的说明安装 Windows。
当你完成时,它就像你有一个仅运行 Windows 的机器,你可以通过 VirtualBox 启动它。它与你的 Linux 系统完全分离。如果那个虚拟 Windows 机器被病毒感染,你可以删除它。虽然它可能会影响你的 Linux 系统,但这种情况不太可能发生。
你可以将 Windows 软件安装到虚拟机中。回到我的储蓄债券向导,我可以在虚拟 Windows 机中安装它。当我想要使用它时,我会进入 VirtualBox,启动到 Windows,然后从那里启动储蓄债券向导。
在我们继续介绍在 Linux 中使用 Windows 的另一种方法之前,我想指出,虚拟机并不关心你使用的是哪种操作系统。在先前的例子中,我展示了如何在 Linux 中安装 Windows。如果你想尝试其他 Linux 发行版,你可以在现有的 Linux 系统中为它们创建虚拟机。
15.2. Wine:使用 Windows 而无需完整的虚拟机
Wine 是一个在 Linux 中直接运行 Windows 软件的工具。你不需要启动到 Windows。相反,你使用 Wine 安装程序,然后它们就变成了你的 Linux 系统中的常规程序。那么,为什么还要虚拟化,当你可以使用 Wine 的时候呢?因为不幸的是,并不是每个 Windows 程序都能在 Wine 中运行,而且并不是所有程序都能良好运行。
幸运的是,Wine 有一个跟踪事物工作得如何的整洁系统。该项目维护一个数据库,其中包含与 Wine 一起工作(和不工作)的程序,识别问题并分配分数。该数据库可在appdb.winehq.org/找到,使用五点量表来评估程序在 Wine 中的运行效果。白金表示完全没有问题,垃圾就是垃圾。现在访问它,了解哪些程序与 Wine 配合得很好。前 10 个白金程序的列表就在主页上。
让我们在 Linux 机器上安装一个 Windows 程序。因为您已经从我这里听到了很多关于储蓄债券向导的好消息,所以下载它。您可以在美国财政部网站上找到它,网址为 treasurydirect.gov。您需要的文件可以在www.treasurydirect.gov/indiv/tools/sbwsetup.exe找到。
此外,因为您确切知道文件在哪里,所以这是wget的一个很好的用例。为什么需要打开浏览器呢?使用wget下载文件。您还需要安装 Wine。当您安装 Wine 时,您必须同意最终用户许可协议,这是我们还没有遇到的事情。它将在安装过程中出现。一旦您接受,安装将继续。
之后,您可以安装储蓄债券向导:
1. 双击您下载的.exe 文件。Wine 将打开并引导您完成一个看起来就像 Windows 安装过程的安装过程(参见图 15.4)。如果它不是这样,右键单击文件,并用 Wine 打开它。
图 15.4. Wine 允许您在 Linux 中安装 Windows 程序。安装过程就像使用 Windows 一样。
2. 浏览选项以接受许可并安装储蓄债券向导。使用所有默认设置是可以的。
3. 完成后,您将在桌面上看到一个快捷方式来启动它。如果您试图保持桌面整洁,可以删除它。
4. 要启动储蓄债券向导,只需在 Dash 中输入其名称。
5. 程序将启动。它看起来就像一个本地的 Linux 程序(参见图 15.5)。当您启动它时,Wine 会自动在后台运行 Windows 程序。
图 15.5. 一旦使用 Wine 安装了程序,您就可以像启动任何其他程序一样启动它。
如果您想卸载使用 Wine 安装的程序,请在终端中输入Uninstall Wine以启动卸载程序(参见图 15.6)。点击您想要卸载的程序,然后点击移除按钮。
图 15.6. Wine 也会为您卸载程序。

Wine 允许您根据您的喜好进行自定义。这些自定义可以通过在 Dash 中输入Configure Wine来访问。
应用程序选项卡允许你选择 Wine 模拟的 Windows 版本,无论是应用程序级别还是全局(见图 15.7)。我从未需要覆盖 Wine 的默认选择,但如果你在使用需要特定版本 Windows 才能运行的软件时,这可能是有必要的。
图 15.7. Wine 允许你选择它模拟的 Windows 版本,无论是应用程序级别还是全局。
![15fig07.jpg]
驱动器选项卡允许你向 Wine 添加额外的驱动器。这意味着你可以更改程序的安装位置,并为 Wine 创建不同的 Windows 驱动器以供使用。如果你想要为了节省空间而将 Wine 文件保存在外置硬盘上,这可能很有帮助。默认情况下,Wine 在你的计算机上创建一个假的 C: 驱动器。它是一个位于你主目录中名为 .wine 的隐藏文件夹中的名为 drive_c 的文件夹。回想一下上一章的内容,由于它在你的主目录中,这意味着虽然系统上的其他用户可以访问 Wine,但他们无法访问你安装的任何程序。让我们看一下这个目录,以便你知道如果遇到困难找到你用 Wine 保存的东西应该去哪里查看:
1. 进入终端并输入
ls -A以查看你的隐藏文件。你应该能看到 .wine 目录。2. 使用
cd .wine进入。3. 输入
ls来查看周围环境。你应该能看到drive_c。这就是 Wine 存储你的 Windows 程序的地方。4. 进入
drive_c,你会看到 Windows 程序文件目录,这是你的 Wine 程序所在的地方。5. 进入 Program Files。在输入
cd P后按 tab 键,以便终端为你完成 Program Files 文件夹的名称。6. 再次使用
ls来查看周围环境,你现在可以看到储蓄债券向导。
15.2.1. Winetricks
一些 Windows 软件使用 Wine 安装时可能会出现问题。因此,Wine 附带了一个名为 Winetricks 的程序,这是一个旨在帮助你安装难以安装的软件的脚本集合。如果你在 Wine 中遇到问题,请尝试使用 Winetricks。Winetricks 的工作方式类似于仓库,它会为你下载许多必需的文件,然后安装程序。并非每个程序都在 Winetricks 中表示,但如果你在安装某物时遇到困难,这是一个很好的查找地方。让我们快速看一下它:
1. 通过 Dash 打开 Winetricks。
2. 点击安装应用程序并点击确定。
3. 你将看到一个所有可用程序的列表,就像 Synaptic 一样。媒体状态为下载意味着 Winetricks 将为你下载程序。媒体状态为手动下载意味着你必须自己下载程序(见图 15.8)。如果 Winetricks 没有为你下载,它通常会告诉你去哪里以及在哪里安装文件。
图 15.8. Winetricks 会为你处理大多数下载,并指出它无法下载的程序。
![15fig08_alt.jpg]
当你查看这个列表时,你可能会注意到没有多少值得安装的。但如果你迫切希望在 Linux 上运行较旧的 Windows 软件,这是一个相当具体的情况,Winetricks 可能是你的解决方案。
我已经多年没有在使用 Wine 时遇到任何问题,但这款软件有一个名为 CrossOver 的付费版本,它提供了更多的支持。如果你发现某个 Windows 程序在 Wine 中无法运行,那么尝试使用 CrossOver 可能是个不错的选择。CrossOver 网站是www.codeweavers.com。
15.3. 总结
在虚拟机和 Wine 之间,你不应该有任何问题在 Linux 上运行 Windows 程序。但在你花太多时间探索这些选项之前,我希望你会考虑我们在第八章中探讨的软件。Linux 的软件生态系统令人印象深刻,你应该会发现大多数 Windows 程序都有强大的 Linux 版本。
在这个阶段,你可能想知道在我们讨论的两个选项中,你应该选择哪一个来处理那些需要在 Linux 系统上运行 Windows 程序的情况?我的建议是使用两者,这正是我所做的!我使用 Wine 来运行我的债券程序,因为它运行良好,就像任何其他程序一样打开。但我也保留了一个虚拟的 Windows 机器,以防 Wine 不起作用。这两个选项可以很好地并行工作,一个不会影响另一个。
术语表
在本章中,我解释了:
虚拟化
模拟硬件的过程
15.4. 实验室
1. 使用 Wine 卸载储蓄债券向导。
2. 使用 Wine 在 USB 上创建一个 D:驱动器,就像你想要将 Wine 程序从主硬盘上分离出来一样。
3. 访问在线 Wine 数据库,找到一个铂金 Windows 程序进行安装。
4. 使用 Wine 下载并安装 Amber 金字塔纸牌游戏(这是一款免费游戏)。你可以在www.gametop.com/download-free-games/pyramid-solitaire/找到它。
5. 玩一局纸牌游戏。如果有人问你在做什么,告诉他们这是这本书的作业。
第十六章. 建立工作流程
到这个时候,你应该开始组装你的 Linux 系统组件了。现在你可以:
-
查找并安装软件。
-
使用 Unity 的 GUI 与系统交互。
-
使用终端创建、移动、复制和删除文件。
-
了解你的计算机文件系统是如何组织的,以及各种文件如何控制系统的不同方面。
-
在你的系统中运行 Windows 程序。
换句话说,你对自己的 Linux 工作方式有了感觉。你可能甚至有一个偏好的文本编辑器!接下来的这部分将向你展示如何真正使你的系统成为你自己的。今天我们将讨论两个概念:
-
文件/应用程序启动器—— 帮助你快速打开文件和启动程序的工具。我们在第五章中简要讨论了它们,但我们将在本章中更深入地探讨。
-
快捷键—— 将某些程序和任务分配给特定的按键组合,这可以帮助你更有效地使用电脑。你不需要通过菜单点击,而是使用按键组合来打开所需的程序。
应用程序启动器和键盘快捷键是使你常用的程序在仅几个按键内即可轻松访问的绝佳方式。就我的工作方式而言,我更喜欢应用程序启动器,因为它们涵盖了一切,而键盘快捷键则需要预先配置。Unity 的 Dash 启动器对很多人来说都很棒,但如果你在寻找比 Dash 功能更丰富的工具,你可能会考虑 Kupfer 或 GNOME Do(我们将在下一节中讨论它们),它们不仅可以打开文件和文件夹,还可以让你使用它们来移动文件和文件夹。
本章是思考你使用最多的程序以及最快、最简单的方式打开它们的时机。如果你对默认的工作流程感到满意,那太好了!但请完成本章内容并将其添加书签,因为最终你可能会想要调整你的 Linux 工作流程。
16.1. 文件/应用程序启动器
为什么我要讨论应用程序启动器,尽管 Ubuntu 自带了一个?你可能有一些原因希望超越 Unity 的 Dash。一个原因可能是你决定迁移到一个没有内置启动器的桌面环境。你可能会记得在第五章中,我们介绍了几种桌面环境。其中一些,如 KDE、GNOME 和 Unity,具有内置的文件/应用程序启动功能。但其他一些,如 Xfce,则没有。所以如果你决定离开一个带有内置启动器的桌面环境,了解如何在不同的桌面中复制该功能是有用的。
如果你不喜欢你的桌面环境自带的启动器,应用程序启动器也很有用。我们一直使用 Unity 的 Dash,但可能不符合你的口味。我个人觉得它有点慢,而且我不喜欢它打开东西时占据整个屏幕的方式。
你的品味可能不同。你可能喜欢 Dash。这完全没问题!你不必切换。但我们将探讨另外两个启动器,以便让你了解其他可用的工具。
在我们开始之前,你需要安装启动器。你可以使用命令行、Synaptic 或 Ubuntu 软件中心。你需要安装的两个程序(括号内为包名)是:
-
GNOME Do (
gnome-do) -
Kupfer (
kupfer)
16.1.1. GNOME Do
GNOME Do 启动应用程序并打开文件和文件夹。它与众不同的地方在于,它允许您在界面中结合这两种活动,因此您可以执行诸如使用特定程序打开特定文件以及移动/复制文件和文件夹等操作。在我们尝试之前,我们需要对其进行配置。这将让我们选择 GNOME Do 的外观,并允许我们选择启动它的键(或键组合)。进入 Dash 并启动 GNOME Do。您会看到它在屏幕中间打开。要自定义它,点击右上角的三角形并进入首选项(见图 16.1)。让我们创建一个键盘快捷键来启动 GNOME Do。
图 16.1. 在 Unity 中使用之前,GNOME Do 启动器需要配置。

首选项区域是您修改 GNOME Do 行为的地方。您将看到四个标签页(见图 16.2):
-
一般,它控制启动行为
-
键盘,它是如何更改哪些键控制 GNOME Do 行为的部分
-
插件,它为 GNOME Do 提供额外的功能(我们将在本节稍后讨论)
-
外观,它控制着 GNOME Do 的外观
图 16.2. GNOME Do 的首选项区域允许您配置启动器的行为。

点击键盘,以便我们可以分配一个启动键(见图 16.3)。我将使用 Ctrl-space,但可以是系统上其他任何未被使用的组合键:
1. 双击 Summon Do 动作旁边的快捷键。可能需要尝试几次才能将点击速度调整得恰到好处,以便将禁用状态更改为新加速器...
2. 一旦您看到新加速器...,您可以通过输入它来分配启动键组合。使用 Ctrl 和空格键一起作为键组合。它应该看起来像图 16.4。
图 16.4. Ctrl-space 现在将启动 GNOME Do。
3. 关闭 GNOME Do 并输入 Ctrl-space。现在 GNOME Do 将启动。
图 16.3. Summon Do 允许您为启动 GNOME Do 分配键盘快捷键。

要使用 GNOME Do 启动应用程序,将名称输入到 GNOME Do 框中并按 Enter。例如,在 GNOME Do 框中输入 Firefox,您将看到 Firefox 图标出现(见图 16.5)。按 Enter 键,Firefox 将启动。您仍然可以使用 Dash 启动程序。这两个应用程序不会冲突。
图 16.5. GNOME Do 允许您启动程序,就像 Unity 的 Dash 一样。

我提到您可以使用 GNOME Do 启动文件夹和文件。但这不是默认行为。让我们激活它,这样 GNOME Do 就会始终启动文件夹和文件:
1. 返回到 GNOME Do 的首选项。您应该在插件标签页上。
2. 在文件和文件夹旁边的框中勾选(见图 16.6)。这将激活插件,允许 GNOME Do 打开单个文件以及文件夹。
图 16.6. GNOME Do 允许你在激活插件后启动文件和文件夹。
3. 点击关闭并关闭 GNOME Do。
现在启动 GNOME Do 并输入 documents。你会在左侧面板中看到文档文件夹。在右侧面板中,你会看到它写着“打开”。按 Tab 键,你会从左侧面板移动到 GNOME Do 的右侧面板。然后,使用向下箭头显示你可以使用 GNOME Do 对该文件夹执行的所有操作,从打开它,到复制它,到移动它,到在其内部创建一个空文件夹(见图 16.7)。
图 16.7. GNOME Do 不仅打开文件夹和文件,还允许你操作它们。

让我们使用 GNOME Do 创建一个新文件。这将是我们第三次在不打开编辑器的情况下创建空文件的方法。第一种方法是在文件管理器中,这是你在第六章(kindle_split_014.html#ch06)中学到的,第二种方法是使用 touch 命令,这是你在第十章(kindle_split_019.html#ch10)中学到的。
1. 启动 GNOME Do。
2. 再次输入
documents(这里的大小写无关紧要,与终端不同)。3. 一旦你的文档文件夹出现,切换到右侧面板。
4. 使用向下箭头滚动,直到你到达创建新文件选项。
5. 按 Enter 键。
6. GNOME Do 将立即为你提供打开文件的选项,它将其命名为“未命名”。
7. 按 Enter 键打开文件。
8. 文件将在
gedit中打开。9. 将文件保存为
gnomedotest并关闭。
如果你开始一个新项目,这种工作流程非常有用。你将使用 GNOME Do 在工作目录中创建一个文件来开始你的项目。然后,你可以使用“另存为”给文件一个比“未命名”更有意义的名字。然而,如果你恰好想要一个名为“未命名”的文件,这非常方便。
虽然 GNOME Do 的应用程序启动功能与 Dash 相当,但它能够用来处理文件和文件夹的能力也很方便。要使用 Dash 移动文件,你需要启动文件管理器,而使用 GNOME Do,你可以直接移动文件,无需文件管理器。到现在,你可能已经注意到这本书中有很多关于节省时间和按键的内容。GNOME Do 是这个节省时间工具箱中的一个好工具,因为它可以在 GNOME Do 界面内完成所有操作,而不是在文件管理器中找到文件然后将其复制到其他地方,就像我们在终端中做的那样。
当然,GNOME Do 只是一个启动器。让我们看看 Kupfer,它与 GNOME Do 类似,但专为 KDE 系统 设计。
16.1.2. Kupfer
Kupfer,一个 KDE 应用程序启动器,可以在任何桌面环境中工作。KDE 部分之所以重要,仅仅是因为它需要一些默认不在其他桌面环境中的程序。当您安装它时,那些文件会自动下载(我们将在第十七章中详细介绍这一点),但由于这一点,Kupfer 会占用更多空间。但这不是什么大问题。
您可以通过输入Kupfer通过 GNOME Do 启动 Kupfer。
您会注意到 Kupfer 看起来很像 GNOME Do。这两个工具非常相似,您很快就会看到。现在,让我们分配一个键组合来启动 Kupfer。
要做到这一点,点击右上角的齿轮图标(见图 16.8),然后点击首选项。
图 16.8. 与 GNOME Do 一样,Kupfer 有一个配置选项。

与 GNOME Do 一样,您将看到一个包含四个选项卡的配置区域(见图 16.9):
-
一般,控制启动行为
-
键盘,控制键盘快捷键
-
插件,控制哪些 Kupfer 插件被使用
-
目录,允许您选择 Kupfer 搜索的设置和文件
图 16.9. Kupfer 的首选项区域类似于 GNOME Do。

它与 GNOME Do 非常相似。要将键组合分配给 Kupfer:
1. 点击键盘选项卡(见图 16.10)。
图 16.10. Kupfer 允许您选择您用于启动它的键组合。
2. 在显示主界面区域,快捷键是 Ctrl-space。由于我们现在正在使用该组合为 GNOME Do,双击 Ctrl-space 并将 Alt-Ctrl-space 分配给显示主界面。
3. 点击关闭。
您现在可以使用 Alt-Ctrl-space 启动 Kupfer。与 GNOME Do 一样,您可以使用系统上未使用的任何键组合。
此外,您只需输入程序名称即可启动应用程序,例如 Firefox。
与 GNOME Do 不同,Kupfer 默认可以打开文件和文件夹。然而,它默认不会索引您的文档目录。让我们配置 Kupfer,以便我们可以使用它来打开文档目录中的文件和文件夹:
1. 转到 Kupfer 的首选项。
2. 点击目录选项卡。
3. 点击添加(见图 16.11)。
图 16.11. Kupfer 默认允许您启动文件和文件夹,但您必须指定您希望它索引的目录。
4. 双击文档。
5. 点击确定。
您现在应该看到您的文档文件夹是 Kupfer 索引文件夹之一。这意味着您可以在文档中启动任何文件或文件夹。索引可能需要几分钟。如果您想加快索引速度,您可以退出 Kupfer 并重新启动它。
一旦您的文档文件夹被索引,您就可以输入gnomedotest,您将看到打开文件的选项(见图 16.12)。
图 16.12. 您已经告诉 Kupfer 在哪里查找文件后,Kupfer 允许您打开文件。

与 GNOME Do 类似,你可以按 Tab 键切换到右侧面板,使用向下箭头,并通过 Kupfer 界面操作文件。让我们用 Kupfer 将 gnomedotest 文件移动到桌面:
1. 启动 Kupfer。
2. 输入
gnomedotest。3. 切换到右侧面板。
4. 使用向下箭头滚动到你的选项,直到你得到“移动到...”。
5. 切换到出现的第三个面板,并选择桌面(见图 16.13)。
图 16.13. Kupfer,就像 GNOME Do 一样,允许你通过其界面移动文件和文件夹。
6. 按 Enter。
现在,你将在桌面上看到你的 gnomedotest 文件。
在选择哪一个时,Kupfer 通常被 KDE 用户使用,而 Xfce 和 GNOME 用户则倾向于使用 GNOME Do。你可以自定义两者的外观,所以某个外观选项可能更适合你。这将决定你将使用的启动器。但两者都非常相似。这两个启动器之间的区别很微妙。
现在你已经花时间学习了应用程序启动器,让我们通过学习如何创建全局键盘快捷键来结束,这将允许你启动特定的应用程序。
16.2. 键盘快捷键
如果你只想快速打开某些程序,键盘快捷键可能是一个不错的选择。我们经常在应用程序中使用键盘快捷键。例如,Ctrl-X 是从大多数应用程序中剪切文本的通用方式。Linux 也允许你使用快捷键启动程序。
一些快捷键已经为你配置好了。Windows/meta 键为你打开 Dash 区域。现在按下 Alt-Ctrl-T,将打开一个终端窗口。但你也可以创建自己的快捷键。在本节中,我将指导你通过三个不同的桌面环境的过程。我们将将 Ctrl-Alt-F 键组合映射到 Firefox。这样,当你想打开那个浏览器时,你可以使用快捷键,而不是启动器或点击。虽然每个桌面环境中的过程都相似,但它们的不同之处足以使指南变得有用。
16.2.1. Unity/GNOME
Unity 和 GNOME 中的过程是相同的。
创建键盘快捷键
1. 启动设置(GNOME)或系统设置(Unity)。如果你在 Ubuntu 中没有系统设置选项,请安装 unity-control-center 软件包。
2. 点击键盘。
3. 一旦进入键盘区域,点击“快捷键”选项卡。如果你想更改现有的键盘快捷键,如终端快捷键,你可以从这里进行更改。要创建新的快捷键,请点击“自定义快捷键”。
Unity 和 GNOME 都有创建自定义快捷键的键盘快捷键区域。
自定义快捷键区域需要程序的名称和快捷键。
4. 点击加号创建快捷方式。要创建快捷方式,你需要知道软件包的名称。在 Firefox 的情况下,软件包是
firefox。如果你不确定软件包的名称,你可以在 Synaptic 中查找。5. 将名称(这是一个描述符,以便你知道快捷键的作用)设置为 Firefox(软件包的名称),并将命令设置为
firefox(软件包的名称)。6. 按 Enter 键。
7. 点击一次“禁用”这个词。
8. 当文本变为新加速器时,按下 Ctrl-Alt-F 键。
9. 关闭设置工具。
按下 Ctrl-Alt-F 组合键以确保快捷键正常工作。
16.2.2. KDE
在 KDE 中为应用程序创建键盘快捷键的过程略有不同。这里你将使用 KDE 菜单编辑器。以下是如何在 KDE 中创建相同的 Firefox 快捷方式:
1. 右键单击 KDE 菜单图标。
2. 选择编辑应用程序...(见图 16.14)。
图 16.14. KDE 用户使用 KDE 菜单编辑器创建快捷方式。
3. 你现在将看到一个按功能排列的程序列表。由于我们需要 Firefox,请点击互联网,然后是网络浏览器,然后是 Firefox(见图 16.15)。
图 16.15. 在 KDE 菜单编辑器中创建快捷方式是一个高级选项。
4. 切换到右侧面板并点击高级选项卡。
5. 点击当前快捷键处,并将快捷键设置为 Ctrl-Alt-F。
6. 点击保存并退出菜单编辑器。
现在你可以使用 Ctrl-Alt-F 组合键启动 Firefox。
16.2.3. Xfce
在 Xfce 中设置键盘快捷键的过程与 GNOME/Unity 的过程类似:
1. 点击设置。
2. 点击键盘(见图 16.16)。
图 16.16. Xfce,就像 Unity 和 GNOME 一样,有一个专门的键盘快捷方式区域。
3. 点击应用程序快捷方式选项卡。
4. 点击添加(见图 16.17)。
图 16.17. 使用软件包名称添加新的快捷方式,该名称可能与程序名称不同。
5. 将命令设置为
firefox。它将全部小写,因为它是软件包的名称。6. 然后 Xfce 会要求你设置一个快捷键。按下 Ctrl-Alt-F,它将把这个组合分配给 Firefox。
7. 关闭键盘设置窗口。
现在你可以使用 Ctrl-Alt-F 组合键启动 Firefox。
16.3. 总结
启动器和键盘快捷键需要一些时间来学习,但当你工作时可以节省时间。还有其他的应用程序启动器,如 Launchy 和 Synapse。我们将在下一章中讨论 Synapse,但若想了解其他启动器,你可以查看维基百科:mng.bz/XfJH。别忘了,你可以将这些工具和技术一起使用。例如,你可能使用应用程序启动器来打开文件,但使用键盘快捷键来启动程序。Linux 是关于创建适合你的工作流程。现在,你有几个选项可以考虑来设置你的工作流程。
术语表
在本章中,我解释了:
文件/应用程序启动器
用于快速打开文件和启动程序的工具
键盘快捷键
将某些程序和任务分配给按键组合
16.4. 实验室
1. 使用 GNOME Do 在您的桌面上创建一个名为 testfolder 的文件夹。
2. 使用 Kupfer 将该文件夹移动到 Documents。
3. 使用 GNOME Do 在您的桌面上创建一个名为 linuxlunches.doc 的文件。
4. 使用 Kupfer 使用
gedit打开 linuxlunches.doc 文件。5. 将
gedit映射到 Ctrl-Shift-G。6. 在本章中我们探索的启动器和快捷键技术中,哪些是你认为会经常使用的?
高级实验室
为我们在第十一章中使用的 xkill 命令分配一个按键组合。使用此快捷键来关闭一个打开的程序。
第三部分. Linux 的家用系统管理员
这本《一个月午餐学 Linux》的第三部分和最后一部分向您展示了如何成为您家用 Linux 设置的系统管理员。本节完全是关于像系统管理员一样照顾您的系统,但规模更小,更易于管理。您将学习如何保持系统更新,如何设置打印,以及基本网络概念。本节是您的高级 Linux 课程。在本节的最后一部分,您将学习以下内容:
-
包管理
-
更新您的操作系统
-
Linux 安全
-
连接到其他计算机
-
打印(一个令人惊讶有趣的章节!)
-
使用版本控制进行协作
第十七章. 深入了解包管理和维护
欢迎来到我们旅程的第三部分!您刚刚完成了第二部分,该部分是关于学习如何作为日常用户与 Linux 一起工作。这就是为什么我们学习了命令、文本编辑器和软件。这些都是您完成个人工作所需的东西。
在第三部分中,我们将探讨运行 Linux 的行政方面。本节将帮助您完成自己的工作,同时也有助于系统平稳运行。为了明确起见,当我提到行政时,我指的是系统管理,而不是那些在工作场所指挥您的人。虽然,从某种意义上说,您将学会指挥您的系统。所以,也许这个术语在几个层面上都是适用的。
在第七章中,我们讨论了软件的安装和卸载,重点是使用随 Linux 系统提供的软件仓库。在本章中,我们将进一步探讨安装和卸载软件,重点关注以下三个领域:
-
从仓库外部安装软件。 从仓库外部安装软件的能力对于您想要的软件未包含在您的发行版中的情况很有用。您会记得在前一章中我提到了一个名为 Synapse 的启动器,它不在 Ubuntu 仓库中。在本章中,您将学习如何安装它。
-
包依赖。 本节将帮助您了解您的 Linux 系统及其运行程序的方式。您已经了解了安装软件的机制,但现在您需要学习在底层发生了什么。许多软件问题都是由依赖性问题引起的,这意味着其他程序需要的程序。本节将帮助您了解这些挑战。
-
高级命令用于安装和卸载软件。 高级命令将帮助您保持系统无不必要的依赖,这些依赖最好是在您的计算机上占用内存,最坏的情况下可能会干扰其他程序。
本章还将帮助您为第十八章做准备,在那里您将更新和升级您的系统,这也涉及到包管理器。
让我们开始安装 Synapse,它不在 Ubuntu 14.04 的存储库中。
17.1. 从存储库外部安装软件
在 第七章 中,您学习了软件存储库的便利性。您需要的所有软件都在一个地方,只需点击或执行一条命令即可。但是,当您想要的软件 不在 存储库中时怎么办?
这可能由许多原因造成。有时,某个软件没有包含在特定的发行版中。有时,由于许可原因,某个软件不在存储库中。例如,Dropbox,这个流行的文件同步/共享程序,是商业软件,在任何存储库中都无法获得。如果您想在您的系统上安装 Dropbox 呢?
在主存储库之外安装软件通常有三个选项:
-
通过软件包文件安装软件。
-
将另一个存储库添加到您的系统中,然后通过您的软件包管理器安装软件。
-
从源代码安装软件。有好多不同的方法可以做到这一点。软件通常会有安装说明,通常以 README 文件的形式提供,其中包含安装指南。因为这个过程非常独特,所以我在本章中不会对其进行探讨。
您选择的方法取决于软件的可用性。大多数时候,您没有选择,所以您使用可用的任何选项。让我们从软件包文件开始。
17.1.1. 使用软件包文件安装软件
软件包文件就像您用来安装 Windows 软件的 .exe 文件一样。基于 Debian 的系统,如 Ubuntu,使用 .deb 文件,而其他系统则使用其他格式。Fedora 和 OpenSUSE 都使用 .rpm 文件。通过这种方法安装软件就像下载一个文件然后打开它一样简单。例如,我们曾在 第九章 中提到的 Brackets 和 Atom 文本编辑器,以及 Dropbox,都可以通过软件包文件获得。让我们来安装 Dropbox(如果您没有 Dropbox 账户也不要担心;在这个练习中您不需要它):
1. 访问 www.dropbox.com/install?os=lnx。
2. 点击下载 Ubuntu (.deb) 32 位版本。
3. 将文件保存到您的下载文件夹中。
4. 双击 .deb 文件,在您输入密码后,Ubuntu 将使用 Ubuntu 软件中心安装 Dropbox(参见 图 17.1)。
图 17.1. Ubuntu 将使用 Ubuntu 软件中心安装 .deb 文件。
5. 一旦 Dropbox 安装完成,您将看到一个绿色的勾选标记。现在您可以删除下载文件夹中的 .deb 文件。
安装 .deb 文件
如果你不喜欢使用 Ubuntu 软件中心来安装.deb 文件,你可以安装 GDebi,这是一个用于安装.deb 文件的工具。我更喜欢 GDebi 而不是 Ubuntu 软件中心,它在我看来总是有点慢。一旦你有了 GDebi,右键单击.deb 文件,点击“打开方式...”并选择 GDebi,将其用作打开.deb 文件的默认程序。
这是在系统上安装软件的一种相当不痛苦的方式。然而,在安装软件包时,总是要小心谨慎。你可能会在系统上安装一些有害的东西。研究软件包文件的来源。如果它来自你听说过的企业,比如谷歌或 Dropbox,那么应该没问题。但如果它来自你不太熟悉的网站或论坛上的独立文件,那么你可能应该避免使用它——至少在你基于研究其他人关于该包的评论确认文件不会损害你的系统之前。
现在你已经知道了如何使用软件包文件,让我们来探索如何安装一个仓库。
17.1.2. 查看和添加仓库
当你从仓库下载软件时,感觉就像你从一个大集合中拉取软件。但现实是你在与多个仓库合作,并通过单个界面(如 Synaptic)与他们互动。当你将仓库添加到你的系统时,就像你将一根软管连接到你的包管理器,而这根软管正在从你刚刚添加的仓库中引入新的软件包(见图 17.2)。
图 17.2. 软件包管理器连接到多个仓库。

在我们将仓库添加到我们的系统之前,让我们确保我们想要添加的软件不在我们当前的仓库中。不用担心!如果你尝试安装不在仓库中的软件,不会发生任何坏事。你只会得到一个错误消息。
首先,让我们查找 Synapse。进入 Synaptic,查找一个名为synapse的包。但是它不会出现。它是一个启动器,但与 Kupfer 和 GNOME Do 不同,它不在 Ubuntu 仓库中。如果你对 Kupfer 和 GNOME Do 不太满意,Synapse 可能会成为你首选的启动器。软件是个人选择,在我选择工具之前,我喜欢先试几个。
要查看系统上的仓库
在我们添加 Synapse 仓库之前,让我们查看我们的当前仓库,看看哪些被包含在内。
1. 进入 Dash 并启动软件和更新。这是一个管理你的仓库的工具。我们在第四章中使用它来查看我们的驱动器。如果你在这里更改仓库,它将在整个系统中更改——即使你使用不同的包管理器。打开屏幕显示了构成我们系统软件列表的四个仓库:main、universe、restricted 和 multiverse(见图 17.3)。我们在第七章中讨论过这个问题,但为了复习:
- 主要是由 Ubuntu 开发者维护的免费和开源软件。
- 宇宙指的是由社区贡献但未由 Ubuntu 官方支持的软件。
- 多元指的是非自由、专有软件(通过 Synaptic 无法购买软件,因此它不涉及成本)。
- 受限指的是专有驱动程序。
图 17.3. Ubuntu 的软件列表由四个仓库组成。
现在我们准备添加 Synapse 仓库。
使用图形方式添加仓库
添加仓库是一个两步过程:
1. 点击“其他软件”标签页。任何带有勾选框的软件都是你的仓库中的软件,但不是 Ubuntu 项目的官方部分。例如,现在你可以看到 Dropbox 仓库,因为我们已经安装了它(见图 17.4)。任何没有勾选框的软件不在你的仓库中,但可以通过勾选来添加。
图 17.4. 其他软件显示了来自 Ubuntu 主项目的仓库之外的内容。
2. 点击“添加”按钮。将弹出一个窗口,要求你输入要添加为源的仓库的完整 APT 行。你将输入
ppa:synapse-core/ppa。PPA 信息来自 Launchpad.net 上的项目页面,这是 Canonical 托管不同软件项目的地方。
Ubuntu 将使用这些信息为你拉取仓库的网址:
1. 点击“关闭”。Ubuntu 现在将提示你重新加载其软件,因为它已经过时。
2. 点击“重新加载”按钮。Ubuntu 现在将重新索引仓库。软件和更新完成时将关闭。
3. 返回到 Synaptic。
4. 点击“重新加载”以刷新 Synaptic 的库存。
- 再次搜索 synapse。
- 该软件包现在可供您使用。
- 就像我们在第七章中安装 Vim 一样安装它。
- 一旦 Synaptic 完成,关闭它。
- 进入 Dash 并启动 Synapse。如果你在上一个章节中没有玩够启动器,这又是一个很好的选择!
当你输入仓库信息时,你使用了 PPA 的首字母缩写。它是“个人软件档案”的缩写,这是一个由项目或个人维护的仓库,而不是发行版。PPA 是针对基于 Debian 的系统,但其他发行版也有类似的概念。回到本节开头的水管类比,PPA 是将软件包引入系统的水管。大多数发行版都有添加仓库的方法,其概念与 PPA 相似。例如,Arch Linux 有AUR,代表Arch 用户仓库。这是 Arch 用户可以放置不在主要 Arch 仓库中的软件并与 Arch 社区分享的地方。OpenSUSE 有一个类似的概念,称为Open Build Service。
使用命令添加仓库
如你所料,也有添加新仓库的命令(见图 17.5):
-
sudo add-apt-repository ppa:synapse-core/ppa -
sudo apt-get update -
sudo apt-get install synapse
图 17.5。正如您可能预料的那样,也有命令可以添加仓库和安装新软件。

现在您已经了解了安装软件的不同方法,我们准备进入依赖项,它们是其他程序运行所需的程序。在下一节中,我们将探讨依赖项是什么,它们如何工作,以及您如何移除不必要的依赖项以节省系统空间。
17.2. 依赖项
我在这本书的不同时间讨论了包依赖项。依赖项是程序运行所需的文件和库(由多个程序共享和使用的模块化软件)。包管理器的一部分工作是为您处理依赖项。它会查看一个包需要哪些文件来运行,确保您系统上有这些文件,如果没有,则会安装它们。包管理器甚至确保您有程序或库的正确版本,因为有时软件需要特定版本文件或库。
当您刚刚安装 Synapse 时,您不仅安装了 Synapse。您还安装了它运行所需的程序和库。它们是什么?让我们看看:
1. 打开 Synaptic 并搜索 Synapse。
2. 右键单击它并点击属性。这个区域将告诉您有关包的所有信息。
3. 点击依赖项标签(见图 17.6)以查看 Synapse 运行所需的其它程序。括号中的数字表示 Synapse 需要的包或库的版本。例如,程序 libgee2 需要版本大于或等于 0.5.0。如果您在使用程序时遇到问题,这很有用。有时包管理器正在使用依赖项的不正确版本。查看依赖项让您能够看到可能的问题是什么——是缺少依赖项还是某个依赖项版本不正确。
图 17.6。Synaptic 包管理器允许您查看依赖项。
4. 关闭属性窗口并关闭 Synapse。
当然,如果您要从系统中移除 Synapse,您将不再需要一些这些依赖项,但它们将保留在您的系统上,占用空间。在下一节中,您将了解如何移除它们。
17.2.1. 使用高级命令移除依赖项
在您能够移除依赖项之前,您必须先移除程序。如果您尝试移除一个依赖项,包管理器也会移除使用该依赖项的软件。这不会破坏您的系统,但如果您使用的程序被移除,那就很烦人,因为您不得不重新安装它。
首先,让我们使用命令行来移除 Synapse。在第十二章中,我们使用了sudo apt-get remove命令来卸载系统上的软件。该命令会移除软件,但会留下配置文件。移除一个程序几乎所有的内容的一个更完整的方法是使用sudo apt-get --purge remove和包名。这是我通常用来移除软件以保持我的系统尽可能干净的方法。进入终端,使用sudo apt-get --purge remove synapse来移除 Synapse。
如果你查看终端文本,你会看到一条消息在顶部,你可能之前在移除软件时没有注意到:
The following packages were automatically installed and are no longer
required:
consolekit libck-connector0 libgtkhotkey1 libpam-ck-connector pastebinit
python-gnome2 python-pyorbit
Use 'apt-get autoremove' to remove them.
这些包被 Synapse 使用,但不在你们的系统上被其他任何东西使用,所以你们不需要它们。它们所做的只是占用空间。如果你安装了需要这些程序之一的软件,包管理器会重新安装它需要的。回到终端,输入sudo apt-get autoremove来移除这些不必要的依赖项。
Autoremove
autoremove可能是一个有争议的命令,因为它偶尔会移除其他包需要的包,从而破坏你的系统。我从未遇到过这个问题,但我读过其他用户遇到这个问题的情况。我唯一会跳过 autoremove 的情况是当与:
-
元包— 元包是一个预配置的程序集合,允许你轻松地安装复杂的东西,如桌面环境,而不必逐个安装许多包。元包中捆绑的包不一定是依赖项。相反,通过预先选择使软件正常工作所需的所有内容,它们使软件对用户更易用。如果我移除了像
xfce或kde这样的元包,它们都是桌面环境,我不会跟随autoremove。相反,我会留下系统上留下的任何包。 -
GNOME 应用程序— GNOME 桌面环境与许多软件紧密集成,如 Evolution 电子邮件客户端和 GNOME Videos 视频播放器。这些程序紧密集成到 GNOME 中,当你移除这些程序及其依赖项时,往往会破坏 GNOME。在处理 GNOME 应用程序和 GNOME 桌面时,我让依赖项保持不变。你们可以在 GNOME wiki 上看到 GNOME 应用程序的列表:
wiki.gnome.org/
除了这两种情况之外,我经常使用autoremove,并且个人从未遇到过问题。
你们会记得我们检查了 Synapse 的依赖关系,并看到了一个名为libgee2的程序。它不在autoremove列表中,这意味着我们的系统中至少还有另一个程序在使用它。让我们看看当我们尝试移除libgee2时会发生什么。进入终端并输入sudo apt-get --purge remove libgee2。
你们会看到一个长的消息,开头是:
The following packages were automatically installed and are no longer
required:
这些都是也使用 libgee2 的程序。如果我们删除 libgee2,包管理器将删除使用它的所有程序。以这种方式处理依赖项是一种有用的行为,因为它防止我们删除其他程序需要的程序。而不是留下损坏的软件,包管理器会提供删除所有因依赖项被删除而会损坏的东西。
这也是为什么您在删除程序时需要小心,因为如果您盲目地同意删除这两个程序,您可能会想知道终端消息中显示的那个庞大的软件列表去哪里了。这就是为什么始终仔细阅读系统消息很重要。输入 N 并按 Enter 键取消删除 libgee2。
17.3. 总结
您现在知道了当您想要的软件不在仓库中时安装软件的不同方法。这将使您的 Linux 世界更加开放。您还应该对依赖项的工作方式以及如何从系统中删除不再需要的依赖项有一个概念,这有助于节省空间。所有这些工作将在下一章中派上用场,当我们讨论更新和升级系统时,这也依赖于您的包管理器。
术语表
在本章中,我解释了:
Arch 用户仓库 (AUR)
包含由项目或个人提交的软件包的仓库,而不是 Arch 发行版。
依赖项
程序运行所需的文件和库(由多个程序共享和使用的模块化软件)。
个人软件包存档 (PPA)
由项目或个人维护的仓库,而不是发行版。PPA 专门针对基于 Debian 的系统。
软件包文件
您用于安装 Windows 软件的 .exe 文件的 Linux 版本。基于 Debian 的系统,如 Ubuntu,使用 .deb 文件,而其他系统使用其他格式。例如,Fedora 和 OpenSUSE 使用 .rpm 文件。
17.4. 实验室
本章是关于从您的计算机安装和删除软件的教训:
1. 仅使用命令安装 Atom 文本编辑器。它的 PPA 是 ppa:webupd8team/atom,详细信息可以在项目的页面
launchpad.net/~webupd8team/+archive/ubuntu/atom上找到。2. Atom 有哪些依赖项?
3. 删除 Kupfer 及其依赖项。如果您正在使用实时会话,您将不得不再次安装它,这是我们之前章节中做的。
第十八章. 更新操作系统
保持您的 Linux 系统更新对于安全性和功能都很重要。当您更新系统时,您不仅更新了操作系统,还更新了软件,这意味着您会随着软件包库中的新功能和新改进而获得它们。
您还需要修复已发现并纠正的安全漏洞。程序员也是人。他们在代码中会犯错误,有时这些错误可能会损害我们电脑的安全性。更新通常发生在有人发现错误并修复它之后。保持系统更新对于系统良好运行至关重要。
更新和升级系统
定期更新和升级系统被视为最佳实践,从您首次安装新发行版开始。我大约每周更新一次。
在我们的案例中我们没有这么做,因为我想要逐步进行这项活动。
但当您下次安装另一个发行版时,请确保立即升级它!
在上一章中,我们使用包管理器添加了新的仓库,现在我们将使用它来更新我们的系统。在本章中,我们将讨论两个概念:
-
更新系统,确保所有最新包都包含在我们的仓库中。
-
升级系统,即安装所有那些新包。
我们还将学习如何通过图形界面和命令来完成这两项任务。让我们从更新我们的系统开始,这在我们升级之前必须完成。
18.1. 更新 Linux
您会记得从第十七章中,在我们将 Synapse 仓库添加到 Synaptic 之后,我们重新加载了 Synaptic,以便 Synapse 包能够显示在其中。那是一个更新。更新是指您告诉包管理器出去获取所有最新版本的包。包管理器会查看哪些包是您系统中的新包,并将它们作为更新目标。包管理器通常自动处理这些操作,尽管您可以像我们对 Synapse 所做的那样,强制更新仓库。您可能已经注意到 Ubuntu 在通知您有关更新包的信息。您会看到一个像图 18.1 那样的弹出消息。
图 18.1. Unity 显示包何时已更新。

这是 Ubuntu 软件更新器。它也会出现在您的左侧导航托盘上(见图 18.2)。
图 18.2. 当 Ubuntu 软件更新器检测到更新包时,其图标也会出现在导航托盘上。

不同的桌面环境以不同的方式显示已更新的包。例如,在 Cinnamon 中,您会在底部任务栏中收到通知(见图 18.3)。
图 18.3. Cinnamon 桌面在其底部任务栏中也显示了已更新的包。

KDE 也会在屏幕底部给您一个通知(见图 18.4)。
图 18.4. KDE 桌面在其底部任务栏中也显示了已更新的包。

桌面环境不会影响系统更新和升级的方式。它控制着您如何得知这些操作已经发生。
您可以通过点击软件更新器上的设置按钮来控制您的系统检查更新的频率,甚至可以控制哪些软件会自动升级(见图 18.5)。
图 18.5. 您可以通过点击设置按钮来控制 Ubuntu 检查升级的频率以及允许哪些升级。

这个更新屏幕(图 18.6)令人困惑,因为它虽然使用了“更新”这个词,但它更新的是仓库,而不是您系统上的软件。这个屏幕正在检查新软件包,然后在没有您的指示下将它们引入您的包管理器。软件的最终安装,技术上是一个升级,取决于您,管理员。
图 18.6. 更新屏幕指的是更新仓库,而不是您系统上的软件。

更新屏幕的顶部部分是自动更新的软件包。我会保持这些不变。重要的安全更新对于保持系统安全非常重要。
推荐更新对于保持系统稳定非常重要。名称令人困惑的“不支持的更新”允许您安装软件的新主要版本。当 Ubuntu 的一个版本完成时,它被视为一个成品,而新的软件版本则保留供未来发布。不支持的更新允许您在不迁移到新版本的情况下获取软件的新版本。我们稍后会更多地讨论版本。
屏幕的底部部分允许您选择软件更新器检查更新的频率以及它多久向您显示一次更新可用。我个人喜欢保持这些设置不变,这样我就可以在不记得手动更新包管理器的情况下保持我的系统更新。但我知道很多人会关闭这个选项,并在他们抽出时间维护系统时每周手动更新和升级一次。重要的是,您的系统要定期更新和升级。您知道如何最好地完成这项任务。
最后,点击“当有安全更新”下拉菜单(见图 18.7)。在这里,您可以配置更新器自动为您安装软件。我个人喜欢看到正在安装的升级,但对于希望排除在升级/更新过程之外的非技术用户来说,自动更新是一个好选项。在这种情况下,非技术用户将拥有一个可以自动升级的系统。
图 18.7. 您可以设置安全更新以自动安装,这对于非技术用户来说是一个好选项。

如果您要在您兄弟的电脑上安装 Ubuntu,而他不太擅长处理像软件维护这样的事情,您可能要配置它为他处理更新和升级。
如您所预期的那样,也有一种使用命令来更新您系统的方法。让我们接下来看看这个。
18.1.1. 更新命令
使用命令更新有两个原因:
-
通过命令行更新是快速的。
-
通过命令行更新可以在所有桌面环境中工作,即使您没有桌面环境。
如果您要通过命令升级,我们将在下一节中学习如何做,您应该首先运行update命令,这样您就有所有最新的软件在您的仓库中。当您图形化更新时,软件更新器会自动检查更新。
update命令在您已禁用我们在上一节中查看的所有自动更新和通知时也很有用。如果您是那种每周只想更新和升级一次的人,那么update命令是一种快速获取所有最新软件包的方法。它让您免于等待计算机告诉您更新已准备好的麻烦。
最后,正如我之前提到的,升级软件包的显示取决于桌面环境。但有些桌面环境不会显示软件包何时已升级。所以,如果您使用的是这类桌面环境,update命令是一个确保在升级之前您拥有所有最新软件包的好方法。命令的优点是它在任何系统上总是有效。您永远不必担心更新器使用的是哪种 GUI。
您的软件仓库可能自我们安装 Synapse 以来就已经是最新的(除非您正在使用 Live 会话),但为了确保这一点,请进入终端并输入
sudo apt-get update
您将看到所有仓库都在更新。现在,您已经准备好升级您的系统。
18.2. 升级 Linux
一旦您的仓库已经更新,您就可以升级您的系统,这意味着将更新的软件包安装到您的系统上。
在 Live 环境中升级
如果你从 Live CD 或 USB 启动 Linux,你将能够升级你的系统,但当你重启时,这些升级将会消失,除非你设置了一个可以保存更改的持久环境。
在 Live 环境中升级没有坏处,这是一种良好的实践,但当你重启时,所有这些升级都消失了,请不要感到惊讶:
1. 打开软件更新器。
2. 点击“更新详情”旁边的三角形(见图 18.8)。任何带有勾选的软件包都将升级。这是您可以排除软件包升级的区域。这也是您可以查看升级类型的地方。有其他更新,这些是无关安全的软件更新。
图 18.8。您可以手动选择要升级的软件包。
所有在安全标题下的都是安全升级,应该允许升级。但如果出于某种原因,您不想升级某个安全升级的软件包,您有权阻止它:
1. 点击“立即安装”以升级您的系统。这可能需要几分钟的时间,因为我们已经有一段时间没有升级了。VirtualBox 用户可能会看到一个关于替换文件的消息。点击“替换”。
2. 升级完成后,您需要重新启动计算机。您不总是在升级后需要重启。通常,在内核升级后需要重启,因为这是一个重大变化。否则,升级根本不会造成干扰。
3. 重新启动您的计算机。(如果您正在使用 Live 镜像,计算机将在重启后恢复到更新前的状态,但这对于下一个练习来说是可以的。)
当您的计算机重启时,您应该会收到一条消息,表明有更多升级可用。这是因为我们等待了相当长的时间来更新我们的系统,所以不是所有内容都能一次性升级。
一些软件包在重启后才能升级,但您的系统并不需要重启。相反,它耐心地等待下一个最佳机会来升级您的计算机,而不会打扰到您的工作。
如果您没有收到有关更多升级可用的消息,请不要担心。您的系统可能还没有检查。因为我们只有一小时的时间,我们将假装它已经通知了您。让我们继续使用upgrade命令来完成这项工作。
18.2.1. 升级命令
使用upgrade命令的原因与使用update命令的原因相同。这是使用三个词来升级您系统的方法。要完成升级:
1. 进入终端并输入
sudo apt-get upgrade。2. 输入密码后,您将看到所有剩余的升级软件包。按
y键并按 Enter 键完成升级。
您的系统现在完全是最新的。从现在开始,当存储库中有更多更新时,您将收到通知。您可以自行安装这些更新,以保持系统安全,并确保您始终使用软件的最新版本。
在第二章中,我们讨论了我们的 Ubuntu 版本支持五年。这意味着更新将保持五年(在我们的例子中是 2019 年,因为 Ubuntu 14.04 是在 2014 年发布的)然后 Ubuntu 将不再为我们版本的 Ubuntu 提交更新。在下一节中,我们将比较像 Ubuntu 这样的标准、基于版本的发行版与持续更新的滚动发行版。随着我们接近本书的结尾,了解这一重要区别对您来说非常重要,因为它将帮助您选择自己的发行版。
18.3. 滚动发行版与标准发行版
标准 Linux 发行版支持固定的时间,这意味着它们会收到更新,直到支持期结束。然后,您可以选择继续使用不再接收更新的操作系统,这从安全角度来看并不是一个好主意,或者您可以迁移到新的标准发行版。
滚动发布 是持续更新的系统。这意味着它们在整个系统生命周期中不断接收更新和新版本的软件。相比之下,我们的 Ubuntu 版本只会在 2019 年之前接收更新。有些发行版的支持时间甚至更短。例如,Fedora 的发布版只会在大约 13 个月内接收更新。
我认为滚动发布和标准版本之间的区别可以比作手动变速器和自动变速器之间的区别。滚动发布就像手动变速器。你拥有更多的控制权,但这种控制需要更多的关注。像更新和升级系统这样的工作需要一些工作。
标准版本就像自动变速器。你的系统正在为你处理工作,在这种情况下确保升级不会损害你的系统,但代价是控制力和性能。例如,有时滚动发布可能需要按照特定的顺序升级某些软件包。标准版本为你处理这类事情。让我们更详细地看看这两种模型。
18.3.1. 标准版本
一些发行版允许你在标准版本之间迁移。例如,当一个新的长期稳定版本的 Ubuntu 准备就绪时,你的软件更新器会给你提供选项,将你的整个系统从 14.04 升级到 16.04。然而,我总是觉得这种 Ubuntu 版本间的升级比它值得的麻烦要多,因为很多东西最终都需要修复和重新配置。这些可能是小事情,比如我设置的启动程序的快捷方式,或者更大的事情,比如不再工作的程序。
我发现从一张全新的安装开始更容易。当我准备好迁移到一个新的 Ubuntu 标准版本,一旦支持结束,我会从头开始安装 Ubuntu 并复制我的文件。我发现从头开始可以获得更好的性能,而且这每五年只需要做一次。
新版本信息
对最新标准版本中的新功能和不同之处感到好奇?Linux 新闻网站通常会很好地覆盖这些差异,让你知道有什么变化。对于这类新闻,我通常访问:
-
LXer:
lxer.com/ -
Linux Subreddit: www.reddit.com/r/linux/
-
OMG!Ubuntu (关于 Ubuntu 新闻): www.omgubuntu.co.uk/
Fedora 有一个名为 DNF 系统升级的工具,它帮助用户在每隔大约六个月发生的不同 Fedora 发布版之间进行升级。
Linux Mint 有一个有趣的更新理念。它强烈建议除非你对当前的版本不满意,否则不要升级到新的标准版本!
标准发布通常比较稳定,因为负责发布工作的人员了解仓库中的所有软件,并能查看特定的升级是否会破坏任何东西。然而,标准发布的缺点是您通常不会使用软件的最新版本,因为新软件更有可能破坏旧系统。标准发布的目的是保持系统运行,但稳定性的代价通常是较旧的软件。
18.3.2. 滚动发布
滚动发布的例子包括 Arch、openSUSE Tumbleweed 和 Gentoo。这些发行版没有固定的版本。一些固定发布发行版有一个可以启用的滚动选项。openSUSE、Fedora 和 Debian 都可以配置为滚动发布。
相反,新的软件不断流入这些仓库。正如我们在第二章中讨论的那样,这种做法的好处是拥有软件的最新版本,并且无需安装您发行版的全新版本。然而,缺点是可能存在不稳定性的风险。滚动发布本身并不一定不稳定,但它们确实需要更多的关注来保持稳定。您看到了我们如何通过 Ubuntu 关注升级和更新,但在滚动发布中,通常需要更积极的研究以确保特定的升级不会破坏您的系统。
当基于发布的发行版如 Debian 或 Ubuntu 推出升级时,它们已经过测试以确保不会破坏您的系统中的任何东西。但测试更容易,因为要处理的软件版本数量较少。在标准发布中,每个人的系统相对相似。然而,在滚动发布中,人们使用的软件版本种类繁多,因为那取决于他们最后一次更新时间。这使得测试新软件和查看它可能破坏什么变得更难。滚动系统中变量更多,这使得预测升级可能对系统产生的影响更困难。
为了了解软件版本可能有多大的差异,让我们将我们的 LibreOffice 版本与 Arch 仓库中的版本进行比较,这些仓库可在您的网络浏览器中查看:
-
要查看您拥有的 LibreOffice 版本,请进入终端并输入
libreoffice --version。截至本文撰写时,版本是 LibreOffice 4.2.8.2。根据该软件包的更新和升级情况,您的版本可能略有不同。 -
将其与 Arch 仓库中找到的版本进行比较,这些仓库位于www.archlinux.org/packages/。在仓库中搜索 libreoffice。您将看到两个版本:
libreoffice-still,这是 LibreOffice 的稳定版本,截至本文撰写时为 4.4,以及libreoffice-fresh,这是 LibreOffice 的开发版本,具有新功能但可能存在一些错误。
这已经是第 5 版了,对于软件来说是一个巨大的飞跃,因为发布号中的第一个数字用来指示版本之间的重大变化。
18.3.3. 哪个更好?
使用滚动发布或标准发布的决定归结为两个问题:
-
您想花多少时间来管理您的系统?
-
新软件对您来说有多重要?
如果您不想花太多时间研究更新,标准发布是一个更好的选择,因为更新通常比滚动发布测试得更多。然而,如果您想要最新的软件,并且愿意承担破坏整个系统的风险,那么滚动发布可能是一个更好的选择。公平地说,滚动发布也是学习 Linux 的一个很好的方式,因为它给您提供了很多解决问题的机会!
18.4. 总结
您现在知道如何更新和升级您的系统,这是 Linux 的一个重要部分。表 18.1 显示了更新和升级之间的区别。
表 18.1. 更新与升级的比较
| 术语 | 说明 |
|---|---|
| updating | 将所有最新软件包移动到您的仓库 |
| upgrading | 安装软件包 |
执行这两个任务确保您使用的是软件的最新版本,消除旧版本中的错误,并使计算机更加安全,因为安装更新可以修复安全漏洞。我们将在下一章中更多地讨论安全问题。
我们还花了一些时间讨论了滚动发布和标准发布之间的区别。随着我们接近本书的结尾,现在是开始思考您的未来发行版可能看起来像什么的好时机。要考虑的一个变量,我们在第二章中提到了,是您用于保持系统更新的时间以及最新软件的重要性。
术语表
在本章中,我解释了:
滚动发布
一个持续更新的系统,在整个系统生命周期中不断接收更新和新版本的软件。
标准发布
一个支持固定时间的 Linux 发布版,这意味着它会在支持期结束前进行更新。
更新
将所有最新软件包移动到您的仓库中。
升级
在您的系统上安装这些软件包。
18.5. 实验室
今天的课程全部关于尽可能保持操作系统更新。
1. 您的系统上安装的是哪个版本的 Firefox?Arch 仓库中是哪个版本?这告诉您 Firefox 为 Ubuntu 更新的频率是多少?
2.
update命令和upgrade命令之间的区别是什么?3. 配置 Ubuntu 软件更新器,自动下载安全更新。
4. 配置 Ubuntu 软件更新器,立即显示非安全相关更新。
5. 前往 Gentoo 仓库
packages.gentoo.org/。它的 Firefox 和 LibreOffice 持有量与 Arch 和 Ubuntu 相比如何?是更老还是更新?更新了多少?
第十九章. Linux 安全
安全是一个重要但复杂的话题。挑战在于它是一个不断变化的概念。我们认为是安全的软件,随着黑客找出如何突破曾经编码的安全保障,可能会变得不安全。对于用户来说,这意味着要保持警惕——始终关注你的系统,并将安全视为一个持续的任务,而不是一次性的任务,完成后就认为完成了。
在本章中,我将介绍保持系统安全的最佳实践。我不是黑客或安全专家,所以不会非常详细。相反,我将解释一些基本、根本和必要的安全概念,并给你一些可管理的做法来保持你的电脑安全。
在本章中,我们将讨论:
-
用户和超级用户的概念以及它是如何和为什么能保护你的电脑安全
-
Linux 病毒(以及反病毒软件)
-
Linux 防火墙
-
Linux 中的隐私,包括加密你的硬盘,以保护你的个人数据
-
安全运行命令的最佳实践
但不要忘记你在上一章中学到的重要安全教训:确保你的系统始终保持最新状态。定期的安全更新有助于通过不断修复任何安全漏洞来保护你的系统。安全漏洞可能会将个人信息,如登录和密码,发送给恶意第三方。这些问题还可能让这些同样坏的人获得访问你所有个人文件的权限。
将安全漏洞想象成你家里的一个洞。有了这个洞,像小偷一样的东西就可以进入你的家。而将安全更新想象成补洞的补丁。一旦补洞,别人要进入就困难得多。
现在我们来谈谈其他保持系统安全的方法。让我们从 Linux 用户和超级用户的概念开始。这个概念是保持 Linux 系统安全的关键。
19.1. Linux 中的用户和超级用户
如果你仔细想想,安全是关于阻止某人未经你允许做某事。在现实生活中,这可能是某人从你那里偷东西,这根据定义是未经你允许发生的。在你的电脑上,这可能是某人未经你允许从你那里窃取数据。
在第十二章中,我们讨论了 Linux 中超级用户的概念。超级用户是在系统上拥有一定特权的用户。这些特权是权限。超级用户有权限在系统上执行某些操作,如安装软件、配置互联网访问,甚至打印。
这就是为什么你需要在添加或删除软件之前输入密码的原因。因为你不希望任何人都可以在你的系统上安装软件。否则,他们可能会安装一些恶意和令人讨厌的东西。
Linux 有一份可以执行特定任务的用户列表,如果你不在列表中,你就不能执行那些任务——比如安装或删除软件。恶意程序通过未经你同意安装某些东西来工作。这些恶意程序可以执行从破坏你的数据到发送你所有私人数据(包括有价值的部分,如密码)的任何操作。Linux 权限概念使得未经你同意安装东西变得困难。
Linux 有一系列具有特定权限的用户组,或基于分配给它们的用户组的访问权限。
这对于有多于一个用户的系统很有用,比如如果你和某人(或一组人)共用笔记本电脑。每个人都可以有自己的权限集,这可以防止未经授权或不知情的人执行可能损害计算机的操作。
让我们假设你打算和不太了解 Linux 的人共用你的电脑。你将想要创建一个具有受限权限的新用户。让我们这样做,这样你可以看到这个过程是什么样的,并且可以了解这些权限是如何保护你的电脑的。
创建新用户
1. 进入 Dash 并启动用户账户。
点击“解锁”并输入你的密码(见下一图)。此外,请注意你的账户是管理员账户,这意味着你可以控制你的系统(除非你正在使用 Live 会话,在这种情况下,你将看不到任何账户,尽管你仍然可以创建它们)。
一旦你解锁了 Ubuntu 用户账户工具,你就可以向系统中添加新用户。
2. 点击左下角的加号以添加新用户。
3. 为新用户命名为 george(如果你的用户名已经是 george,你可以使用 jerry)并选择账户类型为“标准”。
4. 点击“添加”以创建账户。一旦创建账户,点击密码旁边的“账户已禁用”。
当你创建账户时,你可以给它设置一个新的密码,这是我们目前跳过的最佳安全实践。
5. 将操作设置为“无密码登录”并点击“更改”按钮(见下一图)。虽然这并不是一个好的安全习惯,但我们不会保留这个账户。这纯粹是为了演示目的。
修改密码屏幕允许你设置密码或不需要密码。
但标准账户意味着什么呢?现在让我们看看 george 属于哪些组。这将显示用户可以访问系统的哪些部分。
组控制对系统某些部分的访问。在第十二章中,我们看到了如何将用户添加到sudo组。组只是可以执行某些任务的用户列表。在sudo的情况下,是访问sudo命令的权限。要查看 george 属于哪些组,请进入终端并输入:
groups george
我们的 george 账户属于两个组:george 和 nopasswordlogin。成为 nopasswordlogin 组的一员使我们能够无需密码登录该账户。如果 george 账户离开该组,我们需要密码才能进入该账户。让我们看看 george 的访问权限与我们的访问权限相比如何。回到终端,并输入:
groups *your user name*
(或对于 Live Session 用户,只需输入groups)。
你应该会看到更多的组,包括我们讨论过的sudo组。现在让我们看看 george 账户在你的系统中能做什么,不能做什么:
1. 现在你已经创建了一个新账户,你可以直接通过点击右上角的注销齿轮并选择 george 账户来登录它(见图 19.1)。
图 19.1。您可以使用右上角的 Ubuntu 齿轮图标登录账户。
2. 在 george 账户中,进入终端并输入:
sudo apt-get install leafpad
Leafpad 是一个小巧的文本编辑器。但当你输入自己的密码时会发生什么?什么都没有!因为,正如我们所见,george 不在sudo列表中。这意味着该账户无法使用sudo命令。在 Ubuntu 的情况下,如果 George 有你的密码,george 账户仍然可以通过 Synaptic 安装软件,但否则该账户在系统上能做的事情有限。(当然,如果你的系统密码被破解,你的电脑和安全也会受到威胁。)
让我们删除那个假的 george 账户。从 george 账户注销,然后登录到你的账户。不要使用我们之前进入账户时使用的齿轮快捷方式——否则 george 账户仍然会活跃,我们无法删除它。使用注销选项代替。
登录您的个人账户。让我们使用命令删除 george 账户。要从系统中删除账户,请使用:
sudo userdel -r george
(除非你给该账户起了其他名字。)userdel命令删除账户,-r选项删除创建的主目录(所以在日常系统中使用此命令时要小心)。你会收到一个可以忽略的邮件邮箱消息。george 账户现在已不存在。
组和用户的概念是保持 Linux 系统安全的关键。只有某些账户可以执行某些操作。这就像限制拥有你家钥匙的人一样。
如你所见,没有你的批准,任何东西都无法在你的系统上安装。计算机病毒是你不希望安装在你系统上的东西的一个很好的例子。让我们更深入地了解一下 Linux 和病毒。
19.2. 病毒和 Linux
计算机病毒是能够在计算机上自我复制的软件。复制意味着病毒正在你的整个计算机上传播,这使得它很难被删除。病毒似乎理解,数量越多越安全。
病毒可以破坏数据或将数据发送给恶意第三方,这意味着一个令人不安的人可能会查看你的密码、你的财务文件,甚至你的照片。
计算机可以通过无数种方式感染病毒,但共同点是用户被欺骗安装了它,无论是通过访问危险网站、安装软件还是下载电子邮件附件。
19.2.1. Linux 是否对病毒免疫?
杀毒软件是 Windows 安全的重要组成部分,但由于 Linux 与 Windows 构建方式不同,因此它的重要性较低。但不要将此理解为“Linux 对病毒免疫。”事实并非如此。用户可能会被欺骗,这就是为什么我在第十七章中强调谨慎,当我们讨论从外部仓库安装软件时。(来自仓库的软件理论上可能会感染病毒,但这种情况非常罕见。)
但总的来说,Linux 通常比 Windows 更安全。为什么?部分原因是 Linux 的本质,正如我们刚刚学到的,Linux 为用户分配权限。如果你是具有管理权限的 Linux 用户,你可能知道足够多的知识来避免病毒。与可能容易欺骗任何使用计算机的人安装病毒的其他操作系统相比,这一点尤为明显。
使桌面 Linux 比 Windows 更安全的另一个原因是市场份额相对较小,没有太多的人为其设计病毒。这并不是说在 Linux 上感染病毒是不可能的。事实并非如此。但你在知识渊博的用户和你的系统之间有足够的安全措施,你的系统有自己的保护措施,因此你可以感到相对安全。
19.2.2. Linux 杀毒软件
但如果相对安全还不够?如果你想要极其安全,就像同时系上背带和皮带一样?我尊重你的谨慎!
Linux 实际上有一些杀毒工具。最受欢迎的程序称为 ClamAV。对于 Linux(以及 Windows;OS X 版本是付费产品)来说,它是免费的。
ClamAV 可以检测你系统上的病毒,然后你可以将其删除。这是一个基于终端的程序,但你可以安装一个名为 ClamTk 的图形前端。它允许你将 ClamAV 作为一个图形程序使用,这就是为什么它有一个稍微不同的名字。一些用户可能会发现图形程序更容易配置首选项。让我们安装图形版本并使用它。
ClamTk
1. 使用
sudo apt-get install clamtk安装 ClamTk。2. 使用命令
sudo freshclam更新其病毒定义。你可能会收到一条关于你的 ClamAV 版本过时的消息。这是因为 Ubuntu 并不总是拥有仓库中最新的版本。这不是理想的情况,但现在不用担心。如果你想要最新版本,你可以从 ClamAV 网站安装:www.clamav.net/。无论哪种方式,病毒定义(用于查找和识别病毒)都将是最新的。
更新完成后(这可能需要一段时间,所以这可能是吃午饭的好时机),通过 Dash 启动它。杀毒定义应该显示为“当前”。
要运行杀毒软件,点击主页按钮,这将扫描你的主目录。你可以通过使用扫描菜单(如图中所示)来配置更具体的扫描。
3. 完成后,你会得到一个扫描文件和发现威胁的报告。

ClamTk 是 ClamAV 程序的一个图形界面。确保你的杀毒定义是当前的,使用sudo freshclam命令。

ClamTk 允许你选择要扫描的文件夹或文件。
任何病毒都可以通过 ClamTk 隔离,并由你手动删除。只是要小心,不要删除重要的东西。
你怎么知道它很重要?如果它是我们从第十四章中查看的系统文件夹之一发送的,那么研究受感染的文件并确保你没有得到误报可能是有价值的,这意味着 ClamAV 认为某物是病毒,但实际上它不是。要研究 ClamTk 报告,可以在互联网上搜索受感染的文件,看看其他用户对文件性质的报告。第二十三章(kindle_split_033.html#ch23)中也有研究技巧的列表。
如果文件是那个给你转发一切的那个朋友转给你的,那么很可能它实际上是一个病毒。
我在我的 Linux 机器上不使用杀毒软件,因为我认为病毒不是风险。我们在上一章学习了如何更新我们的系统,这正是保护我们操作系统的关键,同时,小心我们在电脑上安装的软件(这些相同的做法也能保护我们的 Windows 安装安全)。但如果运行 ClamTk 或 ClamAV 能给你带来安慰和安心,那么请随意使用它。这不会伤害任何东西。维基百科列出了其他 Linux 杀毒工具:en.wikipedia.org/wiki/Linux_malware#Anti-virus_applications。
现在,让我们谈谈防火墙,这是另一种用于保护你的电脑免受外部入侵者的工具。
19.3. 防火墙
除非你的电脑没有连接到互联网,否则它会有进出的流量。流量只是网络活动的另一种说法。
当你访问一个网站时,流量会离开你的电脑。如果你从另一台电脑连接到你的电脑,那么流量就会进入你的电脑。流量通过端口传输,端口基本上是你电脑上编号的出口和入口。有成千上万的端口用于特定的目的,比如发送电子邮件、聊天,甚至打印。
防火墙是用来控制这类流量的,对于想要对系统有细粒度控制的用户来说。例如,浏览器流量使用端口 80 或 443。
如果你不想你的电脑上有互联网流量(我打这句话的时候都在颤抖),你可以封锁端口 80 和 443,这样流量就不能通过它们。这意味着你的网页浏览器将无法从外部世界接收任何东西。你会封锁出口端口,因此你无法访问网页。
然而,如果你想要拒绝进入你电脑的流量,这意味着你可以外出获取内容,但没有人可以从外部连接到你的电脑,那么防火墙就是一个有用的东西。配置 Linux 防火墙需要一定的知识。你必须知道你想要封锁或允许哪些端口和 IP 地址。
如果你从另一台电脑远程连接到你的电脑,事情会变得更加复杂。如果你有一个像我一样简单的设置,你只使用电脑来访问互联网,你可以开启防火墙而不去调整它。如果你有一个更复杂的设置,我将在本节末尾展示如何了解更多。
Linux 自带一个可配置的防火墙,称为 iptables。然而,因为它可配置性很高,所以也很复杂。为了帮助解决这个问题,Ubuntu 附带了一个名为 ufw 的命令行程序,ufw 代表 uncomplicated firewall。
ufw 程序控制 iptables,但简化了过程。默认情况下,ufw 是未启用的。要开启它,请输入 sudo ufw enable。
现在它已经开启,你可能想看看它正在封锁和允许什么。为此,请输入 sudo ufw status verbose。你应该会看到类似以下的内容:
Default: deny (incoming), allow (outgoing)
这意味着你的防火墙正在拒绝所有入站流量并允许所有出站流量。这是安全的,除非你想连接到你的电脑。
下面的内容可能对那些不通过其他电脑连接到自己的电脑的人来说稍微有些技术性。如果你确实需要访问你的电脑,你需要在防火墙中打开一个入站端口。例如,如果你使用 Secure Shell (SSH) 来连接到你的电脑,你需要打开端口 22,因为 SSH 就是使用这个端口。我们将在下一章中详细讨论这个问题。SSH 在你想连接到另一台电脑、交换文件或与远程网页服务器工作时有用。要允许 SSH,请输入:
sudo ufw allow ssh/tcp
要查看新的防火墙配置,请再次输入 sudo ufw status verbose。你会看到端口 22 现在正在允许入站流量。这意味着你可以从另一台电脑连接到你的电脑。正如我之前说的,我们将在下一章中详细讨论这个问题。如果你改变主意关于规则,并想拒绝 SSH 流量,你可以将命令更改为:
sudo ufw deny ssh/tcp
但是,一个人如何学习所有这些选项和命令呢?一个很好的开始是使用我们旧的第十二章朋友,man 命令。输入 man ufw 将会给你一个关于调整防火墙选项和参数的感觉,如果你对此感兴趣的话。例如,如果你不希望系统上的某人使用聊天,你可以找出他们的聊天服务使用哪些端口(互联网搜索会揭示这一点)并阻止该特定端口的出站流量。
如果你配置了防火墙?命令 sudo ufw reset 将会移除你创建的所有规则并禁用 ufw,这样你就可以重新开启并从一张干净的状态开始。
ufw 有一个名为 Gufw 的图形界面,它有预配置的规则。我们将在实验室中探索这一点。让我们继续到加密,这是另一种安全措施。
19.4. 加密
加密是一种通过使数据对肉眼不可读来保护数据的方式。如果我们双击一个未加密的文件,它就会打开,我们可以阅读它。然而,如果我们打开一个加密的文件,我们无法阅读其中的内容。加密文件需要以某种方式转换,通常使用一个密钥,这有点像一种代码,它将加密文件转换为可读的内容。
这是超出密码的另一个保护级别。
你的 Linux 系统有一个用户名和密码,这可以防止未经验证的用户运行管理命令。它还有一个密码,可以防止没有密码的人访问你的系统。然而,还有其他获取数据访问权限的方法。例如,其他人可以运行一个实时会话并获取你的文件访问权限。这需要物理访问你的电脑和一定的技术知识,但仍然是一个风险。然而,如果你的家目录被加密了,有人需要知道一个密码短语才能访问你的文件。即使他们有物理访问你的电脑。
你可能记得在第三章中,当你第一次安装 Ubuntu 时,有一个关于加密的问题(见图 19.2)。这是加密家目录的一种方法——在安装时进行加密。然而,如果你当时没有考虑到,或者你改变了主意,你仍然可以使用一个名为 eCryptfs 的程序来加密你的家驱动器。
图 19.2. 你可以在安装操作系统时加密你的家目录,或者使用 eCryptfs 在之后进行加密。

我们不会加密你的家目录,因为这需要大量的磁盘空间。有些人加密他们的家目录是为了确保所有文件的安全,而不是决定他们想要保护哪些文件。
相反,我们将加密我们的部分家目录。这将是一个安全的地方来存放你不想未经加密整个目录就泄露的重要文件。
对于我来说,磁盘空间通常是决定是否加密整个家目录还是只加密部分目录的关键因素。
然而,如果您有空间和意愿,在安装操作系统后,eCryptfs 提供了一个方便的逐步过程来加密您的家目录。它被称为 ecryptfs-migrate-home 命令。ArchWiki (wiki.archlinux.org) 上有一些关于如何使用它的极好信息。但就目前而言,让我们在我们的家目录中创建一个加密文件夹:
1. 安装 eCryptfs。软件包名称为
ecryptfs-utils。2. 运行命令
ecryptfs-setup-private --nopwcheck --noautomount。此命令将创建一个需要密码(nopwcheck)的加密目录,该密码不同于登录密码(见图 19.3)。默认情况下,该目录也将不可访问(noautomount)。图 19.3.
encryptfs-setup-private允许您使用标志指定密码和挂载行为。
3. 您将被要求输入登录口令。这是您用于打开加密目录的密码。请将密码保存在安全的地方!如果您丢失了它,您将失去对文件的访问权限。遗憾的是,这不是像您的 Netflix 那样可以重置的密码。
4. 您将被要求输入挂载口令。按 Enter 键以生成一个口令。这将生成一个文件,用于让您访问目录。如果该文件丢失或损坏,您将失去对目录的访问权限,就像丢失了盒子的钥匙一样。我们稍后会讨论如何备份此文件。
5. 一旦创建目录,请注销并重新登录。
6. 在您的家目录中,您将看到一个名为 Private 的目录。它上面有一个锁。要使用它,进入终端并输入
ecryptfs-mount-private。现在您已经挂载了它或使其可用,您可以点击进入 Private 目录。7. 在私有目录中保存一个空白文件。
8. 使用
ecryptfs-unmount-private卸载目录。9. 现在进入该目录。由于目录不可访问,您将无法看到文件。如果重启,您将需要再次挂载加密目录。
您可以看到加密是如何保护您的数据的。有一个只有您才能解锁的私有目录。任何拥有您电脑的人如果没有密码都无法进入那个加密目录。我们只是加密了您家目录的一部分,但如我所说,您也可以加密整个家目录。
在我们继续之前,还有最后一件事。我提到过,为了以防万一密钥文件出现问题,要备份挂载加密目录时使用的口令。要显示口令,输入ecryptfs-unwrap-passphrase。你将被要求输入口令,这是你在第 3 步中创建的密码。输入它,你将得到一串字母和数字。打印出来并保存在安全的地方,以防密钥文件出现问题(或者如果你忘记了创建的密码)。
现在你已经知道了如何保护你的数据隐私,让我们进入 Linux 安全性的最后一部分,即安全地运行命令。
19.5. 安全地运行命令
我们在第十三章中讨论了安全地运行命令,但这是一个足够重要的主题,值得在此回顾。正如你所看到的,Linux 真正的安全风险是社交性的。如果有人诱骗你泄露密码或运行错误的命令,他们可以控制你的系统。
安全漏洞通常是由于用户的行为或未行为造成的,而不是代码本身的错误。新 Linux 用户经常发现自己在线上,试图学习新事物。虽然你在线上找到的大部分建议至少是善意的,但有些人发布的内容可能会损害你的系统或使其面临风险。表 19.1 总结了四种确保你不会意外运行有害命令的方法。
表 19.1. 安全地运行命令
| 命令... | 安全行为 |
|---|---|
| ...需要 sudo 吗? | 问问自己你运行的命令是否需要 sudo。如果你只是想移动一个文件,有人推荐使用 sudo,想想这为什么不合理,因为移动文件不是管理任务。 |
| ...对你来说有意义吗? | 理解一个复杂命令的作用。如果它使用了管道,研究管道的每一部分。确保你大致了解你使用的命令的每一部分在做什么,以及你为什么要这样做。如果你需要复习管道,我们已经在第十二章中讨论过。在 Linux 的早期,有些人认为建议新用户运行 rm -rf 命令(这将删除系统上的所有内容)很有趣。这并不好笑,但却是可能的,因为人们会运行命令而不知道命令会做什么。 |
| ...删除或覆盖文件吗? | 备份正在更改的文件。因为除非你 100%确定更改,否则你可能会破坏你的系统。备份文件永远不会伤害到,你可以通过复制文件并将其保存在不同的位置来备份文件。如果你的命令成功执行,你可以删除备份。如果它没有成功,你会很高兴你很小心。 |
| ... 好像被普遍使用? | 在运行你在网上找到的命令之前,做一些研究,看看其他人是否推荐相同的命令来解决相同的问题。有很多论坛和很多命令,但仅仅因为有人发帖并不意味着它是正确的。在 第二十三章 中有一个很好的网站列表,你可以访问这些网站。如果你能找到其他人使用相同的命令来解决相同的问题,那么命令是你需要的可能性就更大。 |
19.6. 总结
这些是 Linux 安全的裸骨基础。如果你想深入了解安全,有几个地方可以探索:
-
我之前提到的 ArchWiki (
wiki.archlinux.org/) 在这里讨论的所有工具上都有大量有用的信息。尽管它是为 Arch 分发版的用户准备的,但上面的一切在其他分发版上也能工作。 -
Ubuntu Wiki (
wiki.ubuntu.com/) 的深度不如 Arch,但也提供了一些有用的安全信息。 -
许多这些工具的
man页面非常适合了解它们能做什么。如果没有其他,man页面也为你提供了更精确地搜索互联网的方法。
通过这一章的学习,你现在对如何根据你个人的舒适度来保持系统安全有了感觉。就我个人而言,我打开 ufw 并从不调整它。而且,正如我之前提到的,我也不运行杀毒软件。我加密了我携带的电脑的家用驱动器,但对我的台式机不感兴趣,它一直在家。而且我 总是 保持我的系统更新。
从小开始。加密一个目录,并将你的重要文件保存在那里。看看这对你的效果如何,然后再去玩防火墙。即使你决定不使用这里描述的所有工具,至少你将做出一个明智的选择。
术语表
在这一章中,我解释了:
加密
通过要求一个电子密钥来解密数据以保持数据安全的方法。
防火墙
控制计算机的进出网络流量。
端口
你计算机上编号的出口和入口,数据通过这些端口传输。有成千上万的端口用于特定目的。
病毒
在计算机上自我复制的软件片段。
19.7. 实验室
现在是时候看看你学到的关于 Linux 安全的知识了。
1. 创建一个名为 tommy 的管理员账户。这个账户有
sudo访问权限吗?你怎么知道?2. 使用命令行删除账户。(如果你收到消息说用户正被某个进程使用,你可以使用
sudo kill -9杀死该进程及其进程号。)3. 当你尝试在未挂载的私有目录中保存文件时会发生什么?为什么会这样?
4. 安装 Gufw(软件包名称
gufw)并创建一个规则(图 19.4 中的步骤 1 和 2)拒绝从应用程序 BitTorrent(见图 19.4 和 19.5)流出流量。图 19.4. Gufw 允许你使用 GUI 创建规则
图 19.5. Gufw 有预配置的规则,使得允许和拒绝某些应用程序变成只需搜索一个框的事情。
5. 关闭防火墙。我们不想在下一章中打开它。
第二十章. 连接到其他计算机
我们在这本书中花费了很多时间使用互联网来完成不同的事情,从拉取更新以便我们可以升级软件包到下载软件包文件,再到在线研究不同的发行版。然而,我们并没有花太多时间讨论如何连接到互联网。如果你使用虚拟机来探索 Linux,那么虚拟机正在使用你的主要操作系统所使用的任何互联网连接。如果你使用的是 Linux 的实时版本,你已经花了一些时间使用 NetworkManager,这是 Ubuntu 用来帮助你连接到互联网的工具。
就像安全一样,网络也是一个复杂的话题。系统管理员使用网络概念来让不同地方的机器能够快速高效地相互通信。我们在这里不会深入探讨这些概念。本章的目标,就像安全章节一样,是给你足够的信息去做你需要做的事情,在这个案例中,就是配置你的互联网连接并连接到其他计算机。
在本章中,我们将涵盖:
-
使用 NetworkManager 连接到无线和有线网络。
-
使用 SSH 连接到其他计算机,我们在上一章中简要讨论过。
到本章结束时,你将能够调整你的互联网连接设置,改变你的计算机查找互联网地址的方式。你还将了解如何使用 SSH 连接到 Linux 计算机,这是系统管理员连接到远程服务器时常用的。
然而,SSH 有更实用的用途。正如你将在本章后面看到的那样,它可以用来在两台计算机之间传输文件。还有其他有趣的用途。例如,如果一个键盘坏了,你可以通过 SSH 进入一台机器,使用一个有工作的键盘的机器来访问文件。SSH 在与类似树莓派这样的设备一起使用时也非常方便,它本质上是一个服务器。
现在我们首先来看一下 NetworkManager。
20.1. 使用 NetworkManager 连接到互联网
NetworkManager 是 Ubuntu 和其他许多发行版用来管理你的互联网连接的工具。它做一些事情,比如显示哪些无线网络可用,并帮助你连接到隐藏的网络或需要密码的网络。正如我之前提到的,如果你在使用虚拟机,你不必考虑这些事情,因为虚拟机正在使用其安装的计算机上设置的连接。如果你在使用实时 CD/DVD/USB,或者你已经在你的计算机上安装了 Linux,那么你可能已经与之互动过了。
Unity 有一个名为 NetworkManager 小程序,它出现在屏幕顶部(见图 20.1)。小程序是一个小程序,让你可以与更大的程序交互。在 Linux 中,任务栏项目通常是小程序,为你提供快速便捷地访问某些程序的方式。
图 20.1. NetworkManager 小程序让你可以与 NetworkManager 交互。

NetworkManager 小程序是与 NetworkManager 交互并轻松查看连接状态的一种方式,因为它位于你的顶部导航栏上。
如果你点击 NetworkManager 小程序,你会得到更多选项。在虚拟会话中,你不会看到太多,因为 NetworkManager 认为你的计算机已经连接到有线连接,并且没有使用你的系统无线配置(见图 20.2)。这是有道理的。如果你的主要操作系统正在使用无线网络,那么该操作系统内的虚拟机怎么可能使用不同的网络呢?因此,虚拟机将连接视为有线连接。
图 20.2. 在虚拟会话中,NetworkManager 显示的内容不多,因为连接是由虚拟机安装的操作系统处理的。

然而,在实时会议中,或者当 Linux 完全安装后,NetworkManager 就变得更有趣了,它会显示无线网络,并允许你连接到那些没有广播其名称的隐藏无线网络(见图 20.3)。
图 20.3. NetworkManager 显示可用的无线网络,并给你连接隐藏网络的选择。

使用 NetworkManager 相当直接。如果你使用有线连接,通过以太网线连接到互联网,你已经设置好了。如果你想使用无线连接,点击小程序。你会看到所有可用的无线网络列表。然后,点击你想连接的网络。这个过程对大多数计算机用户来说应该很熟悉。
如果无线网络需要密码,你只需输入密码即可。
由于使用 NetworkManager 连接到网络只需点击网络名称,我觉得展示如何更改你的域名系统(DNS)设置可能会更有趣。
20.1.1. 自定义你的域名系统
当您输入一个网址时,您会被引导到一个 DNS 服务器,该服务器查找网址,例如www.manning.com,并将其转换为互联网协议(IP)地址,这是一个分配给网络中设备的唯一数字。
在网站的情况下,您正在连接到一个服务器,或者连接到互联网的计算机(并且正在接受传入流量!),然后它提供(或服务)您的内容。
有时您的 ISP 没有提供优质的 DNS 查找服务,这可能会减慢您的计算机速度。当您输入一个网址时,例如www.google.com,它可能需要一段时间才能被转换成 IP 地址,例如 216.58.218.132。这个地址是 IPv4,这意味着它可以是 4 位数字,也可以是 12 位数字。
IPv6,它正逐渐被用于 IP 地址,是一个更长的数字。在您的 URL 栏中输入 216.58.218.132,您将被直接带到www.google.com。
一种绕过缓慢的 DNS 查找的方法是更改您连接的 DNS 设置。您可以选择许多 DNS 服务,如 Google 公共 DNS 或 OpenDNS。要查看您的当前 DNS 设置,我们将使用nm-tool命令。nm-tool命令是一种命令行方式,可以查看关于 NetworkManager 及其网络和配置的信息——例如它正在使用哪个 DNS 服务器,它正在使用哪种连接(有线或无线),甚至它正在使用哪个驱动程序。
在其输出的末尾,您将看到它正在使用哪个 DNS 服务器。它看起来可能像这样:
DNS:*IP address of DNS server*
要更改您的 DNS 设置:
1. 点击 NetworkManager 小程序。
2. 前往“编辑连接”。
3. 点击您的连接。如果您使用无线网络,它将是您的无线网络名称。如果您使用虚拟机,它将是有线连接。
4. 点击“编辑”按钮以更改该单个连接的 DNS 设置(见图 20.4)。如果您正在编辑家庭无线网络的 DNS 设置,您只更改该连接的 DNS 设置,而不是在同一台计算机上使用的其他任何连接。
图 20.4. NetworkManager 允许您更改单个连接的 DNS 设置。
5. 前往“IPv4 设置”标签页(见图 20.5)。
图 20.5. IPv4 是目前大多数人使用的 IP 地址版本。
6. 前往“附加 DNS 服务器”并添加 208.67.222.222, 208.67.220.220。这些是 OpenDNS 服务器。尽管它的名字叫 OpenDNS,但它是一家公司,而不是开源项目,它提供免费的 DNS 查找服务。我发现它的服务器速度快且可靠。
7. 点击“保存”按钮并关闭 NetworkManager。
你已经更新了 DNS 设置!但再次运行nm-tool。发生了什么?新的服务器没有显示。现在我们需要告诉计算机重新检查它们。我们可以重启,但更快的方法是使用sudo service network-manager restart命令,这将为我们重启 NetworkManager。现在运行nm-tool,你会看到新的服务器。希望你会注意到你的浏览速度现在稍微快了一些,尽管改进可能很微妙。
许多发行版使用 NetworkManager 作为处理互联网连接的默认工具。但并非只有这一个选择。还有其他工具。
其中一个是 Wicd,你也会在 Ubuntu 仓库中找到它。我有一些笔记本电脑、无线网卡和网络与 NetworkManager 配合得不好,导致很多无线连接丢失。Wicd 总是作为一个有用的备用方案。但为了公平起见,NetworkManager 在我的机器上运行得很好,已经好几年了。然而,如果你发现它不起作用,请注意你有其他选择。
Linux 的一个优点是,你很少被锁定在单一类型的软件中。如果你对 NetworkManager 有什么不喜欢的地方,即使它只是任务栏显示的问题,你都可以安装 Wicd。
现在我们已经设置好了连接,让我们谈谈如何使用 SSH 从另一台计算机连接到我们的计算机。
20.2. 使用 Secure Shell (SSH)连接到你的计算机
我们在上一个章节中简要地讨论了 SSH。这是一种安全地将一台计算机连接到另一台计算机的方式。它最常用于连接服务器,服务器通常不在用户所在的物理空间内。它也可以用来连接到台式计算机。例如,如果你需要从你的家用计算机中获取文件,你可以使用 SSH 从你的办公室访问它。
然而,这种情况很少见,多亏了我们现在可以使用的众多基于云的文件共享服务。但如果你与服务器一起工作,或者想要与服务器一起工作,了解 SSH 是有用的。
为了展示 SSH,我们需要两台计算机。幸运的是,我怀疑你们中的许多人都在使用虚拟化的 Linux,这是我向你们展示 SSH 的完美方式。如果你已经在你的计算机上安装了 Linux,你可以创建一个虚拟的 Linux 机器。第三章将指导你完成这些步骤。对于实际用户来说,可能没有足够的磁盘空间来构建虚拟机。建议至少有 8GB 的空间。
我还假设你们中的许多人正在使用 Windows 作为底层操作系统,其中包含虚拟的 Linux 机器。如果你使用 Windows 来虚拟化 Linux,你需要下载一个名为 Putty 的工具,它是 Windows 的 SSH 客户端。它可以在www.putty.org/找到。如果你使用 OS X 或 Linux 作为主要操作系统,你已经有 SSH 安装了。
你还需要在你要连接的 Linux 计算机上安装一个 OpenSSH 服务器。这个软件包叫做openssh-server。
对于本章的目的,托管虚拟机的机器是 主机 机器,虚拟 Linux 计算机是 远程 机器(见 图 20.6)。
图 20.6. 对于本章,主机机是你的物理计算机,远程机是你的虚拟 Linux 安装。

完成这些任务后,你需要配置你的虚拟机,以便我们能够 SSH 进入它。
20.2.1. 配置你的虚拟机
配置你的虚拟机是一个简单的过程:
1. 关闭你的虚拟机。
2. 进入 VirtualBox 客户端,右键点击你的 Linux 映像,并进入设置(见 图 20.7)。
图 20.7. 在你能够 SSH 进入你的虚拟机之前,你需要更改一些网络设置。
3. 点击网络并确保你连接到桥接适配器(见 图 20.8)。这个更改将允许你在两个操作系统之间发送数据。
图 20.8. 确保你在 VirtualBox 中连接到桥接适配器。
4. 重启你的虚拟 Linux 机。
5. 确保你的防火墙已关闭。该命令是
sudo ufw disabl。6. 使用
ip addr命令获取你的虚拟机的 IP 地址。该机器的 IP 地址将是 eth0 连接旁边的 inet 地址,这是虚拟机认为它正在使用的有线连接(见 图 20.9)。图 20.9.
ip addr命令会告诉你你的虚拟机的 IP 地址。
7. 将 IP 地址复制到 PuTTY 的主机名字段(见 图 20.10)并点击打开。
图 20.10. PuTTY 是 Windows 的 SSH 客户端。
8. PuTTY 将会要求你以一个名字登录。请使用你的 Ubuntu 账户的用户名。
9. 使用你的 Ubuntu 密码。
10. PuTTY 将会给你一个安全警报,并询问你是否信任主机。你可以回答是。但是,连接到外部机器时一定要小心。请再次检查 IP 地址,以确保你连接的是一台安全的机器。
11. 如果你使用 Linux 或 OS X,你可以跳过 PuTTY,使用命令
sshusername@virtual machine's IP address 连接到虚拟 Linux 机。12. 输入你的 Ubuntu 密码。
你现在已经连接到了你的虚拟 Linux 机,但由于 SSH 是基于终端的,你无法访问 GUI。这就是我们花这么多时间使用终端的原因!你一直在为此训练!你还记得如何查看你的位置吗?输入 ls。你会认出目录,并意识到你处于虚拟机的家目录中!
在读取文件方面,你受限于在终端中可以读取的内容。你无法查看图像或甚至文档处理文件。然而,你可以创建一个文件。使用 touch 命令创建一个名为 hi 的文件。现在进入你的虚拟 Linux 机器。你会在桌面上看到这个文件。使用 exit 命令结束 SSH 会话。
在我们的例子中,我们使用了 SSH 连接到一个我们容易物理访问的机器。然而,正如我之前提到的,你只需要机器的 IP 地址、用户名和密码就可以 SSH 到一台机器上。所以你可以从工作中 SSH 到你的家用 Linux 机器,只要家用机器是开启的,并且你的防火墙允许这种访问。而且正如你所看到的,由于 SSH 可用的图形工具有限,你依赖于命令行来做诸如在远程机器上打开和移动文件等事情。但如果你想在两台计算机之间传输文件呢?让我们试试!
20.2.2. 使用 SSH FTP 传输文件
如果你曾经与远程服务器进行过任何工作,你可能已经使用过 FTP 客户端上传文件。同一个客户端可以用来在计算机之间传输文件。我们将使用在虚拟 Linux 机器上托管的操作系统的 FileZilla FTP 客户端。
FileZilla (filezilla-project.org/) 是一款免费软件,适用于 Windows、OS X 和 Linux 系统,因此我知道它对阅读此文档的每个人来说都会工作。它也是我在任何操作系统上最喜欢的 FTP 客户端,但你可以使用任何支持 SSH 文件传输协议 (SFTP) 的客户端。我们将使用 SFTP 连接 FileZilla。这是一个使用 SSH 的连接,但也允许你在服务器之间传输文件。
一旦 FileZilla 在主机机器上安装完毕,点击站点管理器(见图 20.11)并点击新建站点以创建新的连接:
1. 在“主机”处输入虚拟机的 IP 地址(见图 20.12)。
图 20.12. SFTP 协议允许你使用 SSH 安全地移动文件。
2. 将协议更改为 SFTP - SSH 文件传输协议。
3. 在登录类型部分选择“要求密码”,这样 FileZilla 在连接之前总是会要求你输入密码。
4. 输入 Ubuntu 账户的用户名。
5. 点击连接。
6. 与之前的 SSH 一样,FileZilla 会询问是否可以信任你正在连接的机器。点击确定。
图 20.11. 一个 FTP 客户端,如 FileZilla,可以用来在不同物理(和虚拟)机器之间移动文件。

您现在已连接到您的虚拟 Linux 机器。如果您查看右侧的 FileZilla 窗格,它代表远程机器上的文件,您会看到您现在回到了虚拟机的家目录,就像使用 SSH 一样。左侧窗格显示了主机计算机上的文件。导航到虚拟机的桌面,并将 hi 文件拖到您的本地桌面上。现在,您已经复制了文件,使其在两台机器上都存在。
也有一个命令可以做到这一点。在 Linux 和 OS X 上,它被称为 scp。在 Windows 上,这个工具被称为 PSCP。您可以通过 Putty 网站下载 Windows 版本。scp 和 PSCP 工作方式相同,但您在 Windows 上运行命令时,它必须是从您下载 PSCP 文件的同目录下运行。
在 Windows 系统上
pscp *localfile user@ip* :Desktop
将您执行命令的目录(以及您下载 PSCP 的位置)中的文件发送到远程服务器的桌面目录。在 Linux 或 OS X 系统上
scp *user@ip:file name* Desktop
将远程机器的家目录中的文件移动到本地机器的桌面上。这两个命令使用类似的语法,第一个变量是要移动的文件或目录,第二个变量是目的地。
20.3. 总结
我们今天讨论了家庭网络的一些不同方面。您现在知道如何使用 NetworkManager 连接到网络。我们还通过 SSH 连接到虚拟 Linux 机器,并使用 SFTP 在计算机之间传输文件。
网络是一个复杂的话题,但如果这个话题对您感兴趣,这个概述将帮助您开始学习更多。然而,即使您没有管理和服务器的抱负,了解 SSH 和 SFTP 仍然可能很有用。正如我之前提到的,树莓派经常需要使用 SSH。
最后一点。明天我们将打印!可能没有把打印机带到午餐上(除非您与您的打印机关系非同寻常地亲密),但明天章节中可能有助于将其放在附近。
术语表
在本章中,我解释了:
小程序
一个让您与更大的程序交互的小程序。
DNS
将域名转换为 IP 地址的过程。
FTP
允许您在远程机器之间传输文件和目录。
IP 地址
互联网协议地址。分配给网络上设备的唯一数字。
SFTP
SSH FTP。允许您使用 SSH 在远程机器之间传输文件和目录。
20.4. 实验室
花时间连接到您的虚拟机。这与您连接到远程服务器的方式非常相似,所以这是一个很好的实践。
1. 启用虚拟机的防火墙,然后 SSH 进入它。您能否连接到远程机器?
2. 如果您在虚拟机中使用
sudo ufw deny ssh/tcp块 SSH,会发生什么?3. 使用
PSCP(如果您的宿主机器是 Linux 或 OS X,则使用scp)将hi文件移动到您的本地机器。4. 您可以通过 SSH 更新和升级虚拟机吗?如果是这样,请这样做。
第二十一章. 打印
打印机是那种在正常工作时看不见,但一旦出现问题就极其烦人的东西。打印问题,比如让电脑识别你的打印机,在各个操作系统之间可能具有挑战性。就大多数情况而言,在 Linux 上打印很简单。你插上打印机,配置它,然后一切就绪。但这并不意味着本章会很长或很吸引人。因此,本章的其余部分将关于解决在 Linux 上出现的打印挑战。
为什么打印在各个操作系统之间都是一个挑战?大部分挑战来自打印机驱动程序。还记得第四章中的驱动程序吗?驱动程序是允许操作系统,或者在我们的情况下,Linux 内核,与你的硬件(在这种情况下,是打印机)通信的软件。
当驱动程序不起作用时,你的电脑就无法与打印机通信。这就是你遇到问题的地方。但这些问题是可以解决的。这并不难——主要是试错,正如你将看到的。
在本章中,我们将探讨打印,了解:
-
Ubuntu 的打印机工具,它允许你将打印机添加并配置到系统中。它有一个友好的界面,所以我通常从它开始,只有在遇到打印机问题,如双面打印时,才会转向 CUPS,我们将在下一刻讨论。
-
常见的 Unix 打印系统(CUPS),另一种配置打印机的方法,在所有 Linux 发行版中都很常见,而不仅仅是 Ubuntu。了解如何使用 CUPS 是很有用的,以防你将来使用没有自己打印工具的发行版。
-
其他解决打印机问题以及避免它们成为问题的方法。打印机,就像任何设备一样,并不是所有都与 Linux 兼容得很好,这并不是因为硬件问题,而是因为帮助 Linux 与硬件通信的驱动程序。我们将在本章后面部分更多地讨论如何选择与 Linux 兼容的打印机。
最后一点。在本章中,我们将进行大量的实际操作,但可能比之前的内容稍微抽象一些,因为我猜测你们中的一些人午餐时可能没有打印机。然而,我将假设你们中的一些人正在家中工作,那里可以访问打印机。但由于我不知道你们使用的是什么类型的打印机,所以指导和练习将是通用的。我希望你们对我不知道你们个人生活中的事情,比如你们有什么类型的打印机,感到如此宽慰,以至于这不会影响你们对本章的享受。那么,让我们开始打印吧!
21.1. 使用 Ubuntu 的打印机工具安装打印机
如我之前所说,Ubuntu 的打印机工具有一个用户友好的界面,所以我们将从这里开始。打印机工具与 CUPS 一起工作。当我们使用该工具设置打印机时,当我们在本章后面进入 CUPS 时,一切都将配置好。
我假设您是通过 USB 电缆连接到打印机的。即使您希望无线打印,您通常也会从 USB 连接开始配置。如果您使用的是虚拟机,您需要启用 USB,这样虚拟机才能访问您的打印机。要这样做,请参阅侧边栏。
在虚拟机中启用 USB
1. 将您的打印机连接到计算机。
2. 启动 VirtualBox,右键单击您的虚拟 Linux 机器,然后点击设置。
3. 点击 USB,然后点击图标从设备添加过滤器。如果您计算机上插入了多个 USB 设备,您需要选择您的打印机。
4. 点击确定,您将在虚拟机中访问打印机。
5. 现在启动您的虚拟 Ubuntu 机器。

虚拟机用户需要通过设置菜单使打印机可用。
一旦您的打印机连接到计算机,从 Dash 启动打印机。
要将您的打印机添加到计算机:
1. 点击任一添加按钮(见图 21.1)。
图 21.1. Ubuntu 打印机工具允许您向系统添加新打印机。
2. 您的打印机应显示为设备(见图 21.2)。选择它并点击前进按钮。如果信息不完全正确,请不要担心。例如,它可能不会显示您的确切打印机名称或型号。您将有机会进行更正。
图 21.2. Ubuntu 应该会检测到您的打印机。如果信息不完全正确,请不要担心。
3. Ubuntu 现在将为您打印机的驱动程序查找。这取决于您的打印机,我们的路径会有所不同。Ubuntu 现在将为您提供安装打印机的选项(见图 21.3)。
图 21.3. 要安装您的打印机,您需要一个 PPD 文件,这是一种打印机驱动程序。
- 选项 1 是从数据库中选择打印机。您选择制造商,然后是型号,Ubuntu 将尝试找到匹配的驱动程序。不幸的是,数据库并不大,Ubuntu 无法访问专有驱动程序,所以即使它找到了匹配项,通常也不是一个好的匹配,因此您在打印时可能会遇到问题。这个选项对惠普打印机效果很好,因为惠普打印机通常有开放的驱动程序,但对其他制造商则效果不佳。您始终可以从这个选项开始,看看它是否允许您打印。如果您的打印机不在数据库中,您也可以使用它。如果这两个选项都不能让您打印,请删除打印机,然后使用选项 2 重新开始。
- 选项 2 是提供 PPD 文件。PPD 文件是 PostScript 打印机描述。它是一种通常从打印机制造商的网站上下载的打印机驱动程序。除非是 HP 打印机,否则我通常选择选项 2 并下载 PPD 文件。只需在网上搜索您的打印机型号和 PPD 即可。遗憾的是,这并不总是那么简单。例如,我的打印机是 Brother HL-2340DW。Brother 的网站上没有 PPD 文件,而是有一个包文件(一个 .deb,就像我们在第十七章中学到的)。为了获取 PPD,我下载了 .deb 文件,右键单击,并使用 Ubuntu 归档管理器打开它。(我将在本章稍后向您展示如何操作。)然后我在包文件中四处寻找,直到在 opt 文件夹中找到一个 PPD 文件。最后,我将 PPD 移动到桌面,并让 Ubuntu 打印机工具指向它。之后,Ubuntu 安装了我的打印机,我能够打印。
一旦您将 PPD 上传到打印机工具,它将为您配置打印机设置,允许您打印测试页(见图 21.4)。
图 21.4. 打印测试页以确保打印机工作正常。

打印测试页以确保一切正常。如果不行,删除打印机(我稍后会向您展示如何操作)并重新开始,这次选择不同的选项。
如果您使用了打印机数据库但不起作用,请尝试在线查找 PPD。有时您需要做一些研究才能让打印机工作。配置打印机并不难,但确实需要尝试和错误。
一旦您的打印机安装并开始打印,请关闭打印机工具。在下一节中,我将向您展示如何删除打印机以及如何配置打印机。
21.1.1. 使用 Ubuntu 打印机工具删除和配置打印机
下次您打开打印机工具时,应该会看到您的打印机在那里,旁边有一个绿色的勾号,表示它是默认打印机。如果您右键单击打印机,您将看到一些选项(见图 21.5)。
图 21.5. 在打印机工具中右键单击您的打印机,可以删除和配置您的打印机。

让我们启用双面打印。右键单击您的打印机并点击属性链接。
-
点击打印机选项链接,进行更改纸张大小和配置双面打印等操作,双面打印由 Duplex 选项控制(见图 21.6)。
图 21.6. 双面打印选项控制双面打印。
![]()
-
将其更改为 DuplexNoTumble。我们将在本章稍后讨论这个问题。
您还可以使用属性区域来更改打印机的一些其他设置。例如,在设置区域,您可以更改打印机的 URI,这将允许您根据打印机的设置打印到无线打印机(见图 21.7)。
图 21.7. 更改您的设备 URI 将允许您打印到无线打印机。

要删除打印机,右键点击你的打印机并选择删除。要查看正在打印的作业,右键点击打印机并使用查看打印队列链接。
现在打印机已经启动并运行,让我们来看看 CUPS。CUPS 是另一个你可以用来配置打印机的工具。如果你在一个没有用户友好的打印工具的系统上,了解它是有帮助的。如果你发现 Ubuntu 打印机工具对你不起作用,这也很有用。
21.2. CUPS
CUPS 比 Ubuntu 打印机工具提供了更细粒度的打印机控制。管理员经常用它来配置网络打印机,但鉴于阅读这篇文章的大多数人没有运行复杂的网络打印环境需要策略,你可能不太会在家里经常使用它。
尽管如此,它是一个有用的工具来探索,因为并非所有的 Linux 系统都有像 Ubuntu 打印机工具那样漂亮的 CUPS 界面。
要访问 CUPS(这在大多数发行版中是标准的),你将使用你的网页浏览器,这在与本地计算机交互时有点奇怪(尽管你可能还记得从第五章中,GNOME 桌面可以通过网页界面进行自定义)。要查看 CUPS,打开任何网页浏览器并访问 http://localhost:631/。它应该看起来像图 21.8。
图 21.8. CUPS 允许你通过网页界面控制你的打印机。

你会在 CUPS 的顶部菜单中看到我们在 Ubuntu 打印机工具中看到的大部分相同功能,因为 Ubuntu 打印机工具本质上是一个用户友好的 CUPS 界面。当你使用 Ubuntu 打印机工具时,你实际上是在使用 CUPS:
-
作业允许你查看你的打印队列。
-
打印机允许你查看你的打印机。
-
管理允许你添加更多打印机。它还赋予你将打印机分组到类别的权限。类别允许你集中设置谁可以打印到哪个打印机。它们还允许你做一些事情,比如在打印机上设置页面限制。这些是在办公环境中你可能想要做的事情,但大多数人不太可能在家需要这些选项。
点击顶部的打印机链接,你会看到你的打印机列出来。如果我们没有使用 Ubuntu 打印机工具,我们本可以通过 CUPS 安装打印机。点击你的打印机,你会看到它的配置情况(见图 21.9)。
图 21.9. CUPS 是另一种更改打印机设置的方法。

如果你点击维护下拉菜单,你会得到打印测试页和取消所有作业等选项。如果你点击修改打印机下拉菜单,你可以做一些事情,比如只允许某些用户访问打印机(这可能是你在家不太需要但网络管理员有帮助的事情)并修改打印机。
切换到“修改打印机”选项。系统会要求您输入登录名和密码。您需要提供具有打印机访问权限的人的凭据。还记得我们在第十九章中查看组的情况吗?我们的默认 Ubuntu 账户是名为lpadmin的组成员。该组可以访问 CUPS。任何属于该组的人都可以配置它,而不属于该组的人将无法进行更改。如果您想亲自查看,请进入终端并输入groups以查看您是否属于该lpadmin组。
一旦您输入了 Ubuntu 用户名和密码,您就可以看到您的打印机是如何连接到您的计算机的。点击“继续”进入下一个屏幕,在那里您可以更改打印机的描述和位置(这在网络情况下很有帮助),并设置网络中的多个打印机。这可以让您标记打印机的物理位置,而不是在列表中有一堆打印机型号。
再次点击“继续”,您可以选择更改驱动程序和上传新的 PPD 文件。如果您正在尝试安装打印机,这个屏幕(见图 21.10)非常有帮助。从这个屏幕尝试不同的驱动程序和 PPD 文件非常容易——也许比从 Ubuntu 打印机工具还要容易。
图 21.10. CUPS 使调整驱动程序和尝试新的 PPD 文件变得容易。

如果您在用 Linux 安装打印机时遇到麻烦,您可以考虑切换到 CUPS 并导航到这个屏幕,以快速测试不同的配置。
说到解决打印问题,在下一节中,我将为您提供一些帮助您解决打印机问题的技巧,但更好的是,帮助您避免这些问题。
21.3. 使用 Linux 打印的技巧
在 Linux 中安装打印机有时很简单,但有时需要一些工作。我希望您的情况属于简单的那一端。但如果不是,或者只是为了将来参考,以下是一些一般性的技巧,可以帮助您在 Linux 上进行打印:
1. 仔细选择打印机。关于解决打印机问题的最佳建议是首先防止它们发生。如何做?通过选择已知与 Linux 兼容性良好的打印机。
我很乐意列出您应该购买哪些打印机,但打印机很快就会停产。互联网是跟踪快速变化的硬件的完美格式。Ubuntu 在这里保持了一个很好的资源列表:
help.ubuntu.com/community/Printers。不幸的是,并非所有打印机都与 Linux 兼容。有时根本不存在允许 Linux 与打印机通信的驱动程序。除了制造商的驱动程序页面外,它还链接到使用开放驱动程序的打印机制造商。正如我们在第四章中讨论的那样,开放驱动程序使得打印机更容易安装,因为操作系统可以看到连接到打印机所需的所有信息。当使用专有驱动程序时,操作系统有时得不到足够的信息。当这种情况发生时,你的系统就无法与打印机通信,你也就无法打印。
2. 找到 PPD 文件。如果你的 Ubuntu 内部数据库不起作用,请在网上找到你的打印机 PPD 文件。希望它在制造商的网站上,并且很容易找到。但正如我们在我家的 Brother 打印机上看到的那样,有时它会被隐藏起来。如果没有 PPD 文件,但有某种.deb 或.rpm(另一种软件包格式),你可以下载它,将其作为存档打开(见图 21.11),然后四处寻找直到找到 PPD。这并不容易,但很有效。
图 21.11. 有时 PPD 文件隐藏在软件包中。不要害怕四处看看。
3. 双面打印。我们都环保。我们喜欢节约纸张。所以我们打印双面(假设我们的打印机有这个功能)。出于任何原因,Linux 打印机实用程序通常不使用“双面”这个术语。它们使用术语duplex。
DuplexTumble是指你想要一个宽度大于长度的文档(见图 21.12)。它也被称为横向。
图 21.12. Linux 打印系统使用 DuplexTumble 和 DuplexNoTumble 术语来表示在双面打印时页面是如何翻转的。
DuplexNoTumble是指你想要一个长度大于宽度的文档。这可能是大多数人想要的设置,因为我们就是这样打印报告和信件的。这也被称为纵向。
4. 利用挑战。有时让打印机工作可能会让人沮丧,但正因为它并不总是容易,这意味着其他人也在经历同样的事情,所以通常网上有答案。我在第四章中提到了一些可以寻求帮助的网站,比如 Unix 和 Linux Stack Exchange 以及 Ask Ubuntu,但搜索你的打印机型号以及 Linux 或 Ubuntu 这个词也很有帮助。如果你遇到了麻烦,别人也遇到过。而且他们很可能在某处发布了答案,因为 Linux 用户通常都很乐于助人。
5. 打印到 PDF。Linux 的一个很酷的功能是打印对话框可以将任何文档转换为 PDF。这虽然不能帮助打印到纸张,但这是一个很酷的技巧,可以快速将任何东西转换为 PDF,而不需要安装任何特殊软件。
要将某个东西转换为 PDF:
打开打印对话框。
对于打印机,选择“打印到文件”(见图 21.13)。
图 21.13. 打印对话框可以用于从任何程序生成 PDF。
给文件命名并选择 PDF 作为输出格式。
21.4. 总结
我们今天学习了两种安装打印机的办法,一种使用 Ubuntu 打印机工具,另一种使用 CUPS。对于大多数用户来说,Ubuntu 工具就足够了,但如果您打算成为一名打印服务器管理员,或者万一您需要使用一个没有更友好打印工具的系统,了解 CUPS 是很有帮助的。我们还提供了一些帮助您让打印机运行的技巧,具体请见表 21.1。
表 21.1. 使用 Linux 打印的技巧
| 提示 | 说明 |
|---|---|
| 选择仔细 | 如果您使用 Linux 并即将购买打印机,请找一款与之兼容性好的打印机。 |
| 找到 PPD | 如果您能找到 PPD 文件,那么在 Linux 中让打印机工作会容易得多。 |
| 记住双面打印 | 双面打印意味着双面打印。 |
| 寻求帮助 | 如果您遇到麻烦,其他人也遇到过。从他们的痛苦中学习。 |
| “打印” PDFs | 在 Linux 中打印不仅仅是指打印到纸张上。打印实用程序还可以将任何内容转换为 PDF。 |
术语表
在本章中,我解释了:
DuplexTumble
打印时的横向布局
DuplexNoTumble
打印时的纵向布局
PostScript 打印机描述 (PPD)
一种通常可以在打印机制造商网站上找到的打印机驱动程序
21.5. 实验室
在本章中,我们讨论了打印以及为什么它可能在不同操作系统之间构成挑战。
1. 您的打印机工作正常吗?使用 Ubuntu 打印工具打印一个测试页面。如果您的打印机不工作,找出问题并尝试修复它。提示:首先回顾本章关于 PPD 文件的部分。
2. 一旦它开始工作,删除您的打印机并重新安装它,这次使用 CUPS。
3. 打开 Firefox 并将网页打印成 PPD 文件。
第二十二章. 非程序员的版本控制
您可能有一个文件夹,里面装满了诸如 importantpresentation.final.odp、importantpresentation.real.final.odp 和 importantpresentation .final.changesfromjen.odp 等文件。文件的创建日期可能有助于您确定哪个是最新版本,但很容易变得混乱。版本控制通过为您跟踪文档版本来解决这一问题。
版本控制是一种让您跟踪电子物品更改的过程。它被那些可能会造成故障的更改的程序员所使用。版本控制允许他们回到最后一个工作版本。但这也适用于协作编辑文档的工作流程。因为您现在对 Linux 了解很多,从安装软件到使用命令行,再到打印,我认为我们可以以版本控制的高级概念作为结束。
在本章中,您将学习如何使用版本控制来协作编辑文档。我们将使用一个名为 Git 的程序来跟踪我们的文件,并使用一个名为 GitLab 的网站来托管它们。Git 是一个完美的工具,因为它是一个可以与图形工具(如文本编辑器)一起使用的命令行工具。换句话说,它使用了您过去一个月一直在学习的大量概念。Git 与 Linux 兼容得很好,是一种您可能已经听说过的流行技术。对于像您这样的 Linux 新手来说,这是一个很好的下一步。
到本章结束时,您将设置好自己的仓库,以便跟踪文件的版本。这在您与他人协作时很有帮助,但即使您单独工作也是如此。让我们通过学习更多关于版本控制的知识来开始吧。
22.1. 什么是版本控制?
版本控制允许您跟踪文件的不同版本,无论是代码文件、文字处理文档、图像还是声音文件。只要文件是电子的,版本控制就可以跟踪其变化并记住不同版本。理解版本控制以及它如何帮助您的一个最简单的方法,就是了解我是如何编写这本书并与我的编辑们协作的。
到现在为止,您可能已经猜到了,我写了一本关于一个月内学习 Linux 的书。我独自一人写这本书,但在编辑弗朗西斯和技术编辑加里的帮助下完成了它。他们阅读了我写的每一件事,通过更改、建议和在我手稿中提出问题来使其变得更好。所以我们有三个人在查看和编辑同一份文档。我们如何确保一切井然有序,没有人编辑文件的错误版本?我们使用版本控制。我们的工作流程如下:
1. 我完成写作我的章节,并将我的文件上传到一个只有我们三个人可以访问的中心仓库。
2. 加里和弗朗西斯然后在他们的电脑上运行一个命令,将文件下载到他们的电脑上。
3. 他们完成编辑后上传文件。有时其中一个人先进行更改,然后另一个人下载文件的较新版本。但即使他们同时进行更改,我们的版本控制系统也会为我们协调这些更改。结果是包含两组更改的单个文档。
我们都能进行更改,并轻松地上传和下载文件的最新版本。因此,我们不再通过电子邮件发送不同的草稿,最新版本总是立即可供我们使用。然而,如果更改存在问题,比如有人意外删除了我们决定保留的内容,我们的版本控制系统会跟踪文档的不同版本,所以没有任何东西真正消失。
如我之前提到的,版本控制在与他人协作时非常出色,但即使您单独工作,它也很有帮助。它提供了您文档的历史记录,而无需您保存不同版本的文件。
在这本书的情况下,我们的版本控制工具是 Git。尽管还有其他版本控制工具,比如 Subversion、Mercurial 和 Bazaar。在选择一个时,你会选择一个对你和你的合作者都有意义的工具。如果你合作的每个人都喜欢使用 Subversion,那么使用 Mercurial 就没有太多意义。但就目前而言,让我们使用 Git,因为它很受欢迎,可能在不同的工作场所和所有操作系统上都会被使用。
22.2. Git 快速入门
我们已经讨论了 Git 的开发者。他是林纳斯·托瓦兹,也就是开发了 Linux 的人!他创建 Git 是为了帮助我们的朋友,Linux 内核,该内核接受来自世界各地的人的代码。Git 允许多个人对内核进行工作,让托瓦兹接受增强内核的代码并拒绝有缺陷的代码。Git 还保留了内核代码的完整历史,因此以前的版本总是可用,以防发生不应该改变的更改。
关于 Git 的一些令人困惑的事情是它有两个组件:
1. Git 软件,你从电脑的命令行使用
2. Git 仓库,它们是基于网络的,并持有正在跟踪的内容。
因此,虽然每个使用 Git 软件的人都在使用相同的程序,但内容同步和跟踪的仓库可以不同。如果你停下来思考这个问题,这种设置是有意义的。你有 Git,你本地机器上的一个程序,跟踪文件。但你需要一个地方,让合作者可以看到并访问文件,这就是基于网络的仓库的作用所在。
最受欢迎的仓库可能是 GitHub,它包含了来自许多不同项目的代码,并已成为程序员的一种活生生的简历。但还有其他可以与 Git 一起使用的仓库。我们将使用 GitLab 仓库,我将在下一节中讨论。
在开始使用 Git 进行项目之前,你需要了解一些 Git 的概念。
我将向你展示你需要的一切,以便开始使用它进行一个非常简单的项目,但如果你真的想了解 Git 能做什么,我强烈推荐 Rick Umali(Manning 2015)的《一个月午餐学 Git》。我知道你几乎完成了这本书,你可能在寻找一些午餐时间可以做的事情。
这里有一些你将经常使用的基本命令。
-
git add将文件添加到 Git 中以便跟踪。 -
git commit用于表示你打算将文件提交到仓库。它还允许你为你的更改添加一条消息,以便合作者了解发生了什么变化。在我的情况下,提交信息可能像“2Fixed chart with Git commands”这样的内容。 -
git push origin master将你的更改提交到仓库。(Origin 是我们的在线仓库,master 是我们使用的仓库部分的名字;Git 为我们选择了这些名字。) -
git pull从你的存储库中下载最新的文件版本。这是确保你正在使用最新文件版本的方法。
我们将在本章的后面部分详细介绍这些命令。
为了与他人协作,你需要一个 Git 存储库。在下一节中,你将学习关于存储库的知识,以 GitLab 为例。
22.3. 使用 GitLab 作为存储库
如我所述,有许多基于网络的存储库。有些是托管在服务器上的,但你也可以在自己的服务器上托管自己的存储库。我们将使用 GitLab,因为它允许你创建免费的私有存储库,这意味着全世界的人都无法看到你的文件——只有你的合作者可以看到。GitHub 可能更受欢迎,但私有存储库需要收费,这就是我们不使用它的原因。然而,对于某些项目,你可能需要一个公开的存储库。
开源项目通常有公开的存储库,因为代码需要公开可用,贡献者可以是任何人,而不仅仅是项目运行者所认识的人。但即使是创建非代码项目的人也可能想要一个公开的存储库。如果你正在创建可共享的教育资源,如课程、教学大纲和作业,你可能希望尽可能多的人能够访问,因此你将使用公开存储库来托管它们。任何希望使用你的材料的人都可以轻松下载,但他们也可以提供他们修改后的版本。本质上,你可以开始与从未见过面的人合作!
然而,在本章的目的上,我们将在 GitLab 中创建一个私有存储库。
创建私有 Git 存储库
1. 前往 GitLab (www.gitlab.com) 并创建一个账户。
2. 一旦你确认了你的电子邮件地址,你就可以登录了。
3. 点击新建项目。
我们将在 GitLab 中配置我们的存储库。
4. 确保项目路径以
linuxlunches结尾,并保持可见性级别为私有,这样在没有你的许可的情况下,没有人能看到你的存储库。
将你的新存储库命名为
linuxlunches并使其为私有。5. 点击创建项目。
6. 你现在有一个存储库了!
在你能够从命令行使用 Git 之前,你需要将一个 SSH 密钥添加到你的个人资料中。还记得第二十章中的 SSH 吗?SSH 是一种安全地将一台计算机连接到另一台计算机的方式。
这个密钥将帮助 GitLab 授权你使用存储库。这是 Git 和存储库使用的额外安全措施。它允许你无需密码即可对存储库进行身份验证。相反,你的 SSH 服务器将使用你创建的密钥来验证你的身份。
SSH 密钥有两个部分:一个只有您能访问的私钥和一个您可以广泛分享的公钥。这两个密钥一起用来验证您的身份。要添加一个密钥,可以点击页面顶部的链接(见图 22.1)或者访问gitlab.com/profile/keys/new。
图 22.1. GitLab 要求您为账户添加 SSH 密钥以帮助保持其安全。

22.3.1. 为 GitLab 生成 SSH 密钥
要生成 SSH 密钥,我们将回到我们自己的电脑上的 Linux 系统并打开终端:
1. 使用命令
ssh-keygen -t rsa -C"你在 GitLab 账户中使用的电子邮件地址"。确保您的电子邮件地址在引号内。2. 按回车键以在默认位置保存 SSH 文件,这是我们在这个情况下想要的。
3. 为您的密钥创建一个密码,并将其写在安全的地方。
4. 您现在有一个 SSH 密钥,可以帮助 GitLab 确认您的身份。
5. 要生成一个可以安全分享的公钥,使用命令
cat ~/.ssh/id_rsa.pub。6. 您将看到一个以
ssh-rsa开头并以您的电子邮件地址结尾的长字符串。将其复制并粘贴到 GitLab 密钥页面上,然后点击添加密钥。
您已经配置好了 GitLab 仓库。现在,是时候使用 Git 进行工作了。
22.4. 使用 Git 连接到您的仓库
您需要做的第一件事是在您的电脑上安装 Git 包。方便的是,这个包就叫做git。
22.4.1. 创建您的 Git 身份
一旦安装了git,您需要告诉 Git 您的身份。您将通过两个命令来完成这个操作。第一个命令将设置您的电子邮件,第二个命令将设置您的名字。这将让您的合作者知道在仓库中谁在做什么:
1.
git config --global user.email"你的电子邮件地址"2.
git config --global user.name"你的名字"
完成这些后,在您的文档目录中创建一个名为 repo 的文件夹,并通过命令行进入它。这个文件夹就是我们将在 GitLab 中添加我们刚刚创建的仓库的地方。要获取您仓库的地址,进入 GitLab 并点击您项目的链接。您应该看到一个以git@gitlab.com开始的 SSH 链接(见图 22.2)。复制这个链接。
图 22.2. GitLab 会告诉您仓库的地址,您需要告诉 Git。

22.4.2. 克隆仓库
现在我们有了我们仓库的地址,我们可以告诉 Git 克隆它,或者将其复制到我们本地电脑上的那个 repo 目录中。
1. 复制仓库的命令是
git clone以及您刚刚复制的完整的*git@gitlab.com*链接。2. 您将被要求输入您的密钥密码。幸好您已经将它记在了某个安全的地方!现在您应该在您的仓库文件夹中看到一个 linuxlunches 目录。
22.4.3. 将文件添加到您的基于 Web 的仓库
当你克隆仓库时,你可能看到了一条消息说它是空的。这没关系。现在让我们添加一个文件。进入 repo 文件夹内的 linuxlunches 目录。创建一个名为 firstfile.txt 的文件。要将它上传到你的仓库:
1.
git add firstfile.txt。现在 Git 正在跟踪这个文件。2. 使用
git commit -m "My first file"(见图 22.3)准备文件上传。文件现在可以上传到仓库。图 22.3. 当使用 Git 提交文件时,添加关于你更改的描述性信息是个好习惯。
3. 完成工作,使用命令
git push origin master。这将把提交的文件或文件推送到仓库。
通过 Web 界面进入你的 GitLab 仓库并点击文件。你会在仓库中看到你的空文件。你刚刚通过 Git 上传了你的第一个文件!现在,让我们看看如何拉取其他人添加到仓库的文件。
22.4.4. 从基于 Web 的仓库中拉取文件
由于我们目前还没有与任何人协作,我们可能不需要等待有人向你的仓库添加文件。我们可以自己完成,这次使用 Web 界面:
1. 点击屏幕右侧的加号并添加一个新文件(见图 22.4)。将文件命名为 mysecondfile.txt,在文本框中输入一些文本,并向下滚动以添加提交信息,这是必需的。
图 22.4. 文件也可以通过 GitLab 的 Web 界面添加到仓库中。
2. 然后,点击提交更改。
回到你的 Linux 系统。要获取文件的最新版本,使用 git pull 命令。新文件将被下载或拉入你的 linuxlunches 文件夹。这个命令是你知道你在本地计算机上使用最新版本文件的方法。
22.4.5. 查看文件的历史记录
如我之前提到的,版本控制让你能够跟踪文件的变化。让我们更改一个文件并查看这些更改。回到你的 Linux 系统,打开 mysecondfile.txt 并向其中添加文本。我们将将其上传回我们的仓库。为此,使用之前的相同命令:
1.
git add mysecondfile.txt告诉 Git 开始跟踪这个文件。2.
git commit -m "edits to second file"准备文件上传,并附带关于我们更改的消息。3.
git push origin master将文件上传到仓库。
现在我们可以在 GitLab 中查看文件的版本历史:
1. 切换回 GitLab 并点击文件。
2. 点击 mysecondfile.txt。
3. 你会在浏览器中看到文件。点击历史记录(见图 22.5)
图 22.5. 你可以通过 GitLab 的 Web 界面跟踪文件的历史记录。
4. 点击文件列表顶部的最新版本。
5. 你可以看到文件是如何变化的:删除的是红色,以减号开头;添加的是绿色,以加号开头(见图 22.6)。
图 22.6。GitLab 显示了你文件的添加和删除。
你可能已经看到了这有多有用。例如,假设你有一个早期的草稿,其中有一个很棒的段落。假设你也删除了那个段落,因为你认为你不需要它。但现在你需要它了!在你的仓库中保存整个文档的历史记录让你可以回过头去抓取你需要的文本——前提是你一直勤奋地将更改推送到仓库。这是一个伟大的安全网,让你可以看到代码和文本是如何随着你的创建而演变的。
这也说明了为什么描述性的提交信息如此重要!它们允许你看到你做了什么,而无需阅读大量的文件。但关于只有你一个人创建文本的情况怎么办?
22.4.6. 分享你的仓库
到目前为止的工作流程对我们来说很好,但如果你像我一样想要分享你的仓库怎么办?例如,假设你与世界上三个不同的人一起制作播客,并且你希望每个人都能为节目笔记做出贡献。在这种情况下,你可能会使用 Git 来协作跟踪脚本。
你可以通过 GitLab 界面添加成员到你的项目:
1. 进入你的项目,点击右侧的齿轮图标,然后选择“成员”(见图 22.7)。
图 22.7。GitLab 网页界面允许你添加合作者。
2. 通过姓名或电子邮件搜索你的合作者(见图 22.8)。如果他们有 GitLab 账户,他们就会出现。否则,你会得到一个选项邀请他们加入项目。他们需要创建 GitLab 账户才能访问你的仓库。
图 22.8。你可以通过姓名或电子邮件地址搜索合作者。
3. 你还可以选择合作者对仓库的访问级别。如果你想让他们能够拉取你的项目,你需要给他们比访客更高的访问权限。
4. 完成添加合作者后,点击“将用户添加到项目”按钮,你的合作者就设置好了。
22.5. 总结
这只是一个非常快速且有限的关于如何使用 Git 进行项目协作的概述。然而,这已经足够让你开始使用 Git 和仓库进行版本控制,无论是单独使用还是与他人协作。虽然像 Git 这样的工具与代码紧密相关,正如你所看到的,你几乎可以用它来做任何事情。我鼓励你尝试使用 Git,因为它是一个了不起的工具。用它来跟踪自己的文档很棒,但如果你与他人合作进行项目,那就更好了。
它让您跟踪文件的历史记录,并且是轻松协作编辑文档的绝佳方式,无需发送数百万封电子邮件或使用基于网络的编辑器,如 Google Docs。如果您想在技术相关领域找到工作,这是一项很好的技能,可以添加到您的简历中。
表 22.1 是今天我涵盖的 Git 命令表。
表 22.1. Git 命令
| 命令 | 说明 |
|---|---|
| git config --global user.email "你的电子邮件地址" | 在 Git 中配置您的电子邮件地址 |
| git config --global user.name "你的名字" | 在 Git 中配置您的显示名称 |
| git clone 地址库地址 | 将新的仓库复制到您的本地计算机。您在第一次使用新的仓库时使用此命令。 |
| git add | 将文件添加到 Git 中以便跟踪。 |
| git commit | 表明您要将文件提交到仓库的意图,并允许您添加一条消息来总结您的更改。 |
| git push origin master | 将您的更改提交到仓库 |
| git pull | 从您的仓库下载最新版本的文件 |
术语表
在本章中,我解释了:
SSH 密钥
一种验证您身份的方法。它由一个只有您才能访问的私钥和一个您可以共享的公钥组成。
版本控制
跟踪电子项目更改的过程。
22.6. 实验室
在本章中,我们学习了如何使用 Git 跟踪我们的文件并将它们托管在 GitLab 上。您的作业是:
1. 从头开始在 GitLab 中创建一个新的公共项目。
2. 从终端将文件推送到项目中。
3. 通过网络界面将文件添加到项目中。
4. 使用 Git 拉取文件。
Bonus
使用网络界面使您的项目私有。
第二十三章. 永无止境
恭喜!您已经完成了这本书!您现在知道 Linux 了。但学习的旅程并没有结束。接下来会发生什么?这取决于您。
您面前有一个软件、发行版、桌面环境和命令的世界要探索。但面对整个世界有时可能会感到令人生畏。所以在这最后一章中,我会向您指出一些可以应用您新获得知识的地方。但总的来说,我鼓励您:
-
如果您还没有这样做,请通过在硬件上安装 Linux 来跳入 Linux 的世界。虚拟化和实时会话是开始学习 Linux 的绝佳方式,但您会惊讶地发现,当您在专用的硬件上定期使用它时,您能学到更多。是的,偶尔会有一些问题需要调试,但这就是您学习的方式。但如果您像我一样,一旦您全职使用 Linux,您会发现您的工作效率会大大提高,因为您对自己的系统有更多的控制权。
-
尝试不同的发行版和桌面环境。我们使用了 Ubuntu 和 Unity,但正如我提到的,还有许多其他发行版和桌面。尝试新的发行版时,总会有一个学习曲线,如果你尝试的不是基于 Debian 的发行版,比如 Ubuntu,那么曲线会更加陡峭——但我总是从新的发行版中学到一些东西,无论是安装软件的首选方式,还是桌面环境配置的细微差别。我从新的桌面环境中学到的东西也很多。探索新的发行版和桌面可以让你的思维保持开放和灵活,对新计算理念保持敏感。此外,这就像是从你通常的计算机设置中短暂休假,无论那是什么。
当然,直接在硬件上安装 Linux 并尝试新的发行版可能会带来一些挑战。让我们回顾一下去哪里寻求帮助。
23.1. 在 Linux 中寻找帮助
我们在 第四章 和本书的其他地方讨论了去哪里寻求帮助。我想在这里回顾一下,这样你就可以把它们都放在一个地方,同时也提醒你,总有大量的帮助和支持可供你选择:
-
我首选的故障排除工具是网络搜索。我会访问我偏好的搜索引擎 DuckDuckGo (www.duckduckgo.com),并搜索问题。通常,错误信息或日志文件中的某些内容可以帮助缩小搜索范围。但我甚至搜索过“sound stuck Ubuntu”这样的问题,看看会返回什么结果。现实是,随着你了解你的硬件和发行版,你会知道哪些方面容易出问题。你也会拥有更好的词汇来描述你特有的问题。
-
UNIX 和 Linux Stack Exchange (
unix.stackexchange.com/) 是用户可以投票选择答案的网站。这里的答案往往出现在我的搜索结果中,所以通常没有必要直接在这里搜索。然而,如果我有一个非常技术性的问题,我通常会跳过中间人,直接来这里寻求答案。+Ask Ubuntu_ (askubuntu.com/) 是这个网站的 Ubuntu 专用版本,尽管答案通常适用于其他发行版。 -
ArchWiki (
wiki.archlinux.org/) 是一个令人惊叹的全面资源,包含有关配置和安装软件的信息,以及关于某些过程如何在 Linux 中工作的出色解释。虽然它是 Arch Linux 社区的产物,并且有 Arch Linux 的倾向,但其中大部分信息对 任何 发行版都很有用。 -
Ubuntu Wiki (
wiki.ubuntu.com/),尽管内容并不完全,范围也相对较窄,但以类似的方式也有帮助——尤其是如果你是 Ubuntu 用户的话。但如果你不是,那么帮助就相对较少。Ubuntu 还有自己的论坛 (ubuntuforums.org/)。那里的信息可能有点随机。它通常是我最后的求助手段,因为它缺乏 UNIX 和 Linux Stack Exchange 以及 Ask Ubuntu 中的投票功能。然而,Ubuntu 论坛帮助我解决了一些特定的 Ubuntu 问题,所以值得考虑。 -
大多数发行版都有自己的论坛和帮助区域。它们都不如 ArchWiki 精美,但它们是搜索特定发行版帮助的好地方。
-
Manning 论坛 (
forums.manning.com/) 是另一个获取帮助的地方,特别是如果你需要关于这本书相关内容的帮助时!
现在你已经完成了这本书,你可能会想知道如何了解新的、酷的 Linux 事物。别担心!我已经涵盖了这一点。
23.2. 查找 Linux 新闻
你是如何了解到所有这些 Linux 的有趣功能的?你是如何跟上变化、增强和新项目的?我经常访问以下几个网站:
-
和许多人一样,我从 Twitter 上的 Linux 人士那里获取了很多新闻。如果你是 Twitter 用户,可以关注我 @steven_ovadia。我还有一个 Linux 人士的 Twitter 列表:
twitter.com/steven_ovadia/lists/linux。 -
LXer (
lxer.com/) 是一个 Linux 新闻聚合器,汇集了来自许多不同 Linux 网站的新闻。它内容全面,但有时会让人感到不知所措。如果你每天只有时间检查一个网站,这可能是你想要检查的网站。 -
Linux 基金会的新闻页面 (
www.linux.com/news) 除了新闻外,还有很好的教程、软件和发行版评测。Linux 基金会是一个非营利组织,支持 Linux(实际上支付给林纳斯·托瓦兹以供其工作)并推广 Linux。 -
无论你对 Reddit 怎么看,Linux 子版块 (www.reddit.com/r/linux/) 总是有有趣的链接和新闻。也有针对特定分发的子版块。有些比其他的好。例如,不太受欢迎的分发的子版块往往比较安静。我大部分时间都在 Linux 子版块,而且我觉得我没有错过太多。
-
Opensource.com (
opensource.com/) 由 Red Hat 支持,这是一家为公司创建和支持 Linux 分发的公司。它也是 Fedora 背后的公司之一,我们在第二章中讨论过的 Linux 分发之一。Opensource.com 并非纯粹是 Linux 新闻。然而,由于它专注于免费和开源软件,很多内容都以某种方式与 Linux 相关。 -
我的 Linux Rig(
mylinuxrig.com/)是我的 Linux 博客。这里有 Linux 新闻,我还采访了 Linux 用户关于他们的 Linux 配置,这样你可以了解人们在使用 Linux 系统时使用哪些工具。我建立这个网站是因为我总是很好奇人们如何配置他们的 Linux 系统。如果你曾在咖啡馆里好奇地盯着某人的笔记本电脑配置,试图弄清楚他们在使用什么,你可能喜欢这个网站。
尽管 Linux 不仅仅是一个有趣的爱好,你还可以以此为职业。我们将在下一节讨论如何实现这一目标的一些途径。
23.3. 在专业领域使用 Linux
系统管理是希望专业使用 Linux 的人的一个常见职业路径。系统管理员,或称 SysAdmin,负责保持服务器运行。他们无处不在,从银行到医院到证券交易所。虽然这个月我们讨论了很多,但你可能还不知道足够多,可以直接进入这个领域。但你现在知道得足够多了,可以开始为其中一个认证学习。
23.3.1. 你需要认证吗?
我既不在 IT 行业工作,也不作为 SysAdmin 工作,所以我问了一些我的 SysAdmin 朋友们。他们说,认证并不总是必要的,但在大型公司中通常都是必需的。像初创公司这样的小公司可能更感兴趣的是你的技能和经验。所以,如果你从这本书开始自学系统管理,你可能符合某些工作的资格。
23.3.2. 哪个认证?
一些主要的 Linux 认证包括:
-
Linux 专业学院(www.lpi.org/our-certifications/summary-of-certifications)
-
Oracle Linux(
education.oracle.com/) -
Linux 基金会(
training.linuxfoundation.org/certification)。
大多数朋友都推荐各种 Red Hat 认证,因为它们广为人知且受到尊重,需要实际操作知识,而不仅仅是考试。然而,如果你是刚开始,Red Hat 认证可能有点高级。
在那种情况下,他们推荐 Linux+认证,这比 Red Hat 认证更通用。Linux+是一套三个认证,所以如果你通过了,你也将获得 Linux 专业学院的 LPIC-1 认证和 SUSE 认证的 Linux 管理员认证。在 Linux+之后,如果你想要的话,你将更有利于继续获得 Red Hat 认证。但你也可能能够使用 Linux+认证在一家较小的公司找到工作,在那里你可以在工作中提升你的系统管理员技能。
在确定哪种认证适合你之后,就是学习考试、利用培训材料,甚至可能参加一个在线或面对面的课程的问题。每个认证网站都有链接,可以帮你找到你想要的培训,尽管培训不是免费的。
对于许多想成为系统管理员的人来说,挑战是适应 Linux。你的优势是你已经习惯了它!你已经花了一个月的时间使用它!所以,如果你想要的话,你已经为你在职业生涯中的下一步做好了充分的准备。
我鼓励你和你所在城市的系统管理员交谈。询问你所在地区的市场情况,并询问他们认为哪些认证很重要。这不仅会让你获得关于当地就业市场的宝贵信息,而且你还会遇到可能最终雇佣你的人!
23.4. 总结
现在我要说的最后一句话。我想提醒你,你可以在不成为系统管理员的情况下专业地使用 Linux。我是一名学术图书馆员,我使用 Linux 来完成所有的研究和写作(包括这本书的写作)。有很多非技术人士使用 Linux 来完成他们的专业工作:
-
有记者用它来写作。
-
有音乐家使用 Linux 来创作和录制音乐。
-
有一些艺术家使用 Linux 来创建标志、编辑照片等一切事情。
他们出于许多原因使用它。对一些人来说,Linux 代表了一种省钱的方式,因为它免费且在旧硬件上运行良好。其他人选择 Linux 是因为它可定制,允许你选择和调整你的计算体验。还有其他人使用 Linux 是因为他们与免费和开源软件的美学产生了共鸣。
我希望你现在看到了 Linux 的潜力,并让它成为你日常生活的一部分。也许它将成为你作为系统管理员的日常生活的一部分,但正如你现在所看到的,它也可以成为你作为教师、小企业主或物业经理的日常生活的一部分。如果你用电脑工作,Linux 可以推动你的工作前进!
附录。答案键
第四章
1
你会如何找出你的电脑上有什么类型的无线网卡?
答案:
lspci -v2
你在哪里找到你的电脑的日志文件?
答案: /var/log 目录或系统日志。
第六章
1
当你访问作业书签时会发生什么?作业文件是否随它移动?
答案: 文件随它移动。
加分题
1
你会如何查看文件的属性?
答案: 右键点击然后选择属性。
2
你会如何查看文件夹的属性?
答案: 右键点击然后选择属性。
3
你如何创建一个文件或文件夹的快捷方式?
答案: 右键点击然后创建链接。
第七章
1
你如何在 Synaptic 中启动搜索?
答案: 使用屏幕中间的搜索框。
2
你如何在 Ubuntu 软件中心中启动搜索?
答案: 使用屏幕右侧的搜索框。
第八章
1
使用 LibreOffice Calc 计算 10、15、19 和 18 的平均值。
答案: 使用公式
=AVERAGE(10, 15, 19, 18)。2
下载 GIMP 并尝试从 archive.org 缩放一个图像,这次将其放大。
答案: 图像 → 缩放图像。
3
使用 Rhythmbox 安装歌曲歌词插件。提示:它在工具菜单下。
答案: 工具 → 插件 → 歌词 → 关闭。
第九章
1
使用终端安装 Emacs。
答案:
sudo apt-get install emacs
高级实验
1
在 Vim 中打开文件并将每一行复制粘贴,使每一行在文件中重复出现。
答案: 使用
:y和p。
第十章
1
在你的文档文件夹中创建一个名为 command_line_homework 的文件夹。
答案:
mkdir command_line_homework2
在 command_line_homework 文件夹中创建一个名为 homeworkfile 的文档。
答案:
cd command_line_homework touch homeworkfile3
将 homeworkfile 移动到 linux.lunches。
答案:
mv homeworkfile ../linux.lunches4
进入 linux.lunches 并创建另一个名为 homework2 的文件。
答案:
cd .. cd linux.lunches/ touch homework25
将 homeworkfile 复制到文档中。
答案:
cp homeworkfile ..6
从
linux.lunches中删除homework2。答案:
rm homework27
删除
command_line_homework。答案:
cd .. cd command_line_homework rm homeworkfile cd .. rmdir command_line_homework
高级实验
1
在名为 recursive 的单个目录中创建三个.txt 文件。
答案:
mkdir recursive cd recursive touch 1.txt touch 2.txt touch 3.txt2
将递归复制到你的桌面。
答案:
cd .. cp -R recursive ../Desktop3
使用单个通配符命令一次性删除三个 recursive.txt 文件。
答案:
cd .. cd Desktop cd recursive rm *.txt
第十一章
1
你会使用什么命令来关闭 Firefox 的所有实例?打开 Firefox 并使用该命令强制关闭。
答案:
killall firefox2
你会用什么命令来查找硬件配置中的音频信息?运行该命令以定位你的信息。
答案:
lspci -v | grep Audio3
你会用什么命令从
mng.bz/o25h下载美国宪法的 PDF 文件?使用wget下载它。答案:
wgetconstitutioncenter.org/media/files/constitution.pdf4
哪个命令需要进程的 PID 来关闭它?打开 Firefox 并使用该命令关闭它。
答案:
top
高级实验
1
使用
wget命令从 Project Gutenberg (www.gutenberg.org/ebooks/6527.txt.utf-8)下载Debian GNU/Linux:安装和使用指南的纯文本版本。答案:
wgetwww.gutenberg.org/ebooks/6527.txt.utf-82
使用
grep在文件中搜索单词 linux,但使搜索不区分大小写。答案:
grep 'linux\|Linux' 6527.txt.utf-8
第十二章
1
使用命令行在你的计算机上安装 Midori 网络浏览器。
答案:
sudo apt-get install midori2
使用命令行将其删除。
答案:
sudo apt-get remove midori3
在 sudo 的手册中查找所有关于 root 的提及。
答案:
man sudo /root4
使用单行命令复制名为 sudo.txt 的 sudo 手册文本文件。
答案:
man sudo > sudo.txt
高级实验
1
将上一个实验中
grep搜索的输出(搜索 Linux 或 linux)导入名为 linux.txt 的文本文件。答案:
grep 'linux\|Linux' 6527.txt.utf-8 > linux.txt
第十三章
1
如果你还没有这样做,请使用命令行安装 Guake 和 Terminator。
答案:
sudo apt-get install guake sudo apt-get install terminator2
使用自动完成功能进入你的文档目录。
答案:
cd Doc <Tab>3
现在,将历史记录的输出导入到文本文件中。
答案:
history > history.txt4
进入 Guake 并查看你的历史记录。它与默认终端的输出相比如何?
答案: 历史记录相同。
5
将 Guake 配置为使用 F11 命令启动。
答案: Guake 首选项 → 键盘快捷键
6
将 Terminator 分成四个窗口,形成一个 2x2 的网格。
答案: Ctrl-Shift-E, Ctrl-Shift-O 在每个垂直终端中
7
输入
apt然后按 Tab 键两次。会发生什么?那个输出意味着什么?答案: 这些是以
apt开头的命令。
第十四章
1
将终端提示符恢复到原始状态。
答案: 从.bashrc 中删除
export PS1="\u@\h:\w \d\\$ \[$(tput sgr0)\]"。2
将你的 GRUB 返回到原始状态,以便在没有消息的情况下启动和关闭。
回答: 将
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"返回到 GRUB 文件 (/etc/default/grub),替换GRUB_CMDLINE_LINUX_DEFAULT=""。别忘了你需要以 root 用户身份执行此操作,并在更改后运行sudo update-grub。3
使用终端删除你的隐藏文件(mynewhiddenfile)。
回答:
rm .mynewhiddenfile4
将你的家目录中所有文件和目录的列表(包括隐藏的)管道到一个隐藏文件中。
回答:
ls -A > .hiddendirectories.txt5
在你的 tmp 目录中保存一个名为 important.txt 的文件,然后重新启动你的计算机。文件会发生什么?为什么会这样?
回答: 它消失了,因为 tmp 目录不是持久存储——它只是用于临时文件。
第十五章
1
使用 Wine 卸载 Savings Bond Wizard。
回答: 卸载 Wine 软件 → Savings Bond Wizard → 删除。
2
使用 Wine 在 USB 上创建一个 D: 驱动器,就像你想要将 Wine 程序从你的主硬盘上分离出来一样。
回答: 配置 Wine → 添加驱动器 → D: → 浏览到 USB 驱动器路径。
3
只玩一次纸牌游戏。如果有人问你在做什么,告诉他们这是这本书的作业。
回答: “我不是在玩。我是在学习 Linux!天哪!”
第十六章
1
使用 GNOME Do 在你的桌面上创建一个名为 testfolder 的文件夹。
回答: GNOME Do → 输入
testfolder→ Tab → 创建新文件夹。2
使用 Kupfer 将该文件夹移动到文档中。
回答: Kupfer → 输入
testfolder→ Tab → 移动到... → Tab → 文档。3
使用 GNOME Do 在你的桌面上创建一个名为 linuxlunches.doc 的文件。
回答: GNOME Do → 输入
linuxlunches.doc→ Tab → 创建新文件。4
使用 Kupfer 使用 gedit 打开 linuxlunches.doc 文件。
回答: Kupfer → 输入
linuxlunches.doc→ Tab → 打开方式... → Tab → gedit5
将 gedit 映射到 Ctrl-Shift-G。
回答: 键盘 → 快捷键 →
+→ 名称:gedit;命令:gedit → 点击禁用以映射。
高级实验室
Q1:
为我们在第十一章中使用的
xkill命令分配一个键组合。使用该快捷键来结束一个打开的程序。回答: 键盘 → 快捷键 →
+→ 名称:xkill;命令:xkill → 点击禁用以映射到快捷键。
第十七章
1
仅使用命令安装 Atom 文本编辑器。它的 PPA 是 ppa:webupd8team/atom,详细信息可以在项目页面上找到
launchpad.net/~webupd8team/+archive/ubuntu/atom回答:
sudo add-apt-repository ppa:webupd8team/atom sudo apt-get update sudo apt-get install atom2
Atom 有哪些依赖项?
答案: gconf2, gconf-service, libgtk2.0-0, libudev0, libudev1, libgcrypt11, libgcrypt20, libgnome-keyring0, gir1.2-gnomekeyring-1.0, libnotify4, libxtst6, libnss3, python, gvfs-bin, xdg-utils, libdbus-1-3, libcap2.
3
删除 Kupfer 及其依赖项。
答案:
sudo apt-get --purge remove kupfer
第十八章
1
你的系统上 Firefox 的版本是什么?Arch 存储库中的版本是什么?这告诉你关于 Ubuntu 更新 Firefox 频率的什么信息?
答案: 在 Ubuntu 中,Firefox 版本为 45.0.1,截至本文写作时。在 Arch 中,Firefox 版本为 45.0.1-5,截至本文写作时。Firefox 在 Arch 中更新得更频繁,因为它是滚动发布,尽管两个版本很接近,正如你可以通过版本号看到的。
2
update命令和upgrade命令之间的区别是什么?答案:
update下载更新,但upgrade安装它们。3
配置 Ubuntu 软件更新器以自动下载安全更新。
答案: 软件与更新 → 更新 → 当有安全更新时:→ 自动下载和安装。
4
配置 Ubuntu 软件更新器以立即显示非安全相关更新。
答案: 软件与更新 → 更新 → 当有其他更新时:→ 立即显示。
5
前往 Gentoo 存储库
packages.gentoo.org/。它的 Firefox 和 LibreOffice 库与 Arch 和 Ubuntu 相比如何?它们是更旧还是更新?相差多少?答案: Gentoo 的 Firefox 版本为 45.0.1,截至本文写作时,比 Arch 略旧,但与 Ubuntu 相同。Gentoo 的 LibreOffice 版本为 5.1.2.2,截至本文写作时。Arch 版本为 5.1.1-4,截至本文写作时,略旧。Ubuntu 的 LibreOffice 版本为 4.2.8.2,比两者都旧得多。
第十九章
1
创建一个名为 tommy 的管理员账户。这个账户有
sudo访问权限吗?你怎么知道?答案: 用户账户 → 解锁 →
+→ 账户类型:管理员 → tommy;tommy如果你使用
groups tommy,你会看到该账户在sudo组中。2
使用命令行删除账户。(如果你收到消息说用户正被某个进程使用,你可以使用
sudo kill -9和进程号来结束该进程。)答案:
sudo userdel -r tommy3
当你尝试在未挂载的私有目录中保存文件时会发生什么?为什么会这样发生?
答案: 你会收到一条没有权限的消息。在没有首先解锁它的情况下,你不能访问加密目录。
4
安装 Gufw(软件包名称
gufw)并创建一条规则拒绝从应用程序 BitTorrent(图 19.9 和 19.10)流出流量。答案:
+→ 策略:拒绝 → 方向:出 → 应用程序:BitTorrent。5
关闭防火墙。
答案:
sudo ufw disable
第二十章
1
启用你的虚拟机的防火墙,然后通过 SSH 连接到它。你能否连接到远程机器?
答案: 是的。
2
如果你使用
sudo ufw deny ssh/tcp在虚拟机中阻止 SSH,会发生什么?答案: 你无法连接。
3
使用
PSCP(或如果你的主机机器是 Linux 或 OS X 则为scp)将 hi 文件移动到你的本地机器。答案:
scp user@ip:Desktop/hi Desktop(Linux/OS)或pscp user@ip :Desktop/hi Desktop(Windows)4
你能否通过 SSH 更新和升级你的虚拟机?如果是的话,请这样做。
答案: 是的。
第二十二章
1
在 GitLab 中从头创建一个新的公开项目。
答案: 新项目 → 公开 → 创建项目
2
从终端向项目中推送文件。
答案:
git add *your file* git commit -m *"your commmit message"* git push origin master3
通过网页界面向项目中添加文件。
答案: 文件 → + → 新文件 → 提交更改
4
使用 Git 拉取文件。
答案:
git pull
附加问题
Q1:
使用网页界面使你的项目私有化。
答案: 齿轮图标 → 编辑项目 → 可见性级别 → 私有
附录. 核心概念
桌面环境的概述,Linux 桌面的可变图形界面
| 桌面环境 | 接口 | 自定义 | 软件生态系统 | 学习曲线 |
|---|---|---|---|---|
| GNOME | 启动器 | 通过第三方工具和扩展 | 自有生态系统 | 平均 |
| KDE | 启动器和菜单 | 内置 | 自有生态系统 | 复杂 |
| Unity | 启动器 | 通过第三方工具 | 倾向于使用 GNOME 程序 | 平均 |
| Xfce | 启动器、菜单和/或 Dock | 内置 | 倾向于使用轻量级程序,但缺乏自有生态系统 | 简单 |
简单 Linux 命令指南
| 命令 | 它的作用 |
|---|---|
| cd | 更改目录(你需要指定目录) |
| cd .. | 上一个目录 |
| cp | 复制(使用 cp -R 以获取目录内容);首先指定源然后指定目标 |
| ls | 列出当前目录下的文件 |
| mv | 移动;首先指定源然后指定目标 |
| rm | 删除文件;指示要删除的文件 |
| rmdir | 删除空目录;指示要删除的文件夹 |
| . | 表示当前目录 |
| .. | 表示当前目录的上级目录 |
| * | 表示通配符 |








































































浙公网安备 33010602011771号