diff --git a/CHANGES.md b/CHANGES.md index 73d400e..437a4b3 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,5 @@ +- 2023-05-28 + - 整体校对 - 2023-05-24 - 中英文混排优化 - 2016-03-20 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 57093c6..1565bf7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -138,18 +138,18 @@ $ git pull origin master | 第十八章 | [Arondight][id_name_arondight] [nnnewb][id_name_nnnewb] [zha0300][id_name_zha0300] | | 第十九章 | [coolrc136][id_name_coolrc136] | -[id_slackwarecn]: https://github.com/slackwarecn "访问The Slackware Linux CN Community" +[id_issues]: https://github.com/slackwarecn/slackbook_cn/issues "提交 Issues" [id_joinus]: http://slackwarecn.github.io/JoinUs "加入我们!" -[id_pull_requests]: https://github.com/slackwarecn/slackbook_cn/pulls "查看Pull Requests" -[id_issues]: https://github.com/slackwarecn/slackbook_cn/issues "提交Issues" -[id_name_arondight]: https://github.com/Arondight -[id_name_zhuduiyou]: https://github.com/zhuduiyou -[id_name_coolrc136]: https://github.com/coolrc136 -[id_name_unnamed42]: https://github.com/unnamed42 -[id_name_liandesinian]: https://github.com/liandesinian -[id_name_zha0300]: https://github.com/zha0300 -[id_name_abbycin]: https://github.com/abbycin -[id_name_farkasity]: https://github.com/farkasity -[id_name_cantaosir]: https://github.com/cantaosir -[id_name_ziyudiemou]: http://tieba.baidu.com/home/main?un=%E7%B4%AB%E9%9B%A8%E8%9D%B6%E7%9C%B8&ie=utf-8&fr=pb -[id_name_nnnewb]: https://github.com/nnnewb +[id_name_abbycin]: https://github.com/abbycin "访问该用户主页" +[id_name_arondight]: https://github.com/Arondight "访问该用户主页" +[id_name_cantaosir]: https://github.com/cantaosir "访问该用户主页" +[id_name_coolrc136]: https://github.com/coolrc136 "访问该用户主页" +[id_name_farkasity]: https://github.com/farkasity "访问该用户主页" +[id_name_liandesinian]: https://github.com/liandesinian "访问该用户主页" +[id_name_nnnewb]: https://github.com/nnnewb "访问该用户主页" +[id_name_unnamed42]: https://github.com/unnamed42 "访问该用户主页" +[id_name_zha0300]: https://github.com/zha0300 "访问该用户主页" +[id_name_zhuduiyou]: https://github.com/zhuduiyou "访问该用户主页" +[id_name_ziyudiemou]: http://tieba.baidu.com/home/main?un=%E7%B4%AB%E9%9B%A8%E8%9D%B6%E7%9C%B8&ie=utf-8&fr=pb "访问该用户主页" +[id_pull_requests]: https://github.com/slackwarecn/slackbook_cn/pulls "查看 Pull Requests" +[id_slackwarecn]: https://github.com/slackwarecn "访问 The Slackware Linux CN Community" diff --git a/README.md b/README.md index d1300dc..993fb32 100644 --- a/README.md +++ b/README.md @@ -4,24 +4,11 @@ 本书是 [Slackbook][id_slackbook] 的中文版,项目托管于 [Github][id_github] 。 -[id_github]: https://github.com/slackwarecn/slackbook_cn "访问项目主页" -[id_slackbook]: http://slackbook.org "访问The Revised Slackware Book Project主页" - -### 修订历史 - -你可以在 [这里][id_changes] 查看该文档的修订历史。 - -[id_changes]: https://github.com/slackwarecn/slackbook_cn/blob/master/CHANGES.md "查看修订历史" - ### 获取文档 -- [在线阅读][id_online] -- [发布页面][id_releases] +推荐直接[在线阅读][id_online]本书,当然你也可以在[发布页面][id_releases]获取电子书版本。 -[id_online]: https://slackwarecn.gitbook.io/slackbook_cn "阅读在线版本" -[id_releases]: https://github.com/slackwarecn/slackbook_cn/releases "查看已发布文档" - -### 本地编译 +### 自行编译 [GitBook][id_gitbook] 需要 [Calibre][id_calibre] 以输出 PDF、EPUB 和 MOBI 格式。安装此软件前,确保你的 Slackware Linux 中已安装 `python3` 、 `wget` 、 `xdg-utils` 和 `xz` 软件包。 @@ -35,10 +22,6 @@ make > 因为 GitBook 官方已经 [不再支持 CLI][id_gitbook_deprecation],所以这里使用了非官方维护的版本。 -[id_gitbook]: https://github.com/GitbookIO/gitbook "Gitbook项目主页" -[id_gitbook_deprecation]: https://github.com/GitbookIO/gitbook#%EF%B8%8F-deprecation-warning "查看GitBook官方不再支持CLI公告" -[id_calibre]: https://github.com/kovidgoyal/calibre/releases "点此获取Calibre" - ### 贡献力量 如果你想为项目贡献你的力量,请务必事先阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 。 @@ -46,3 +29,11 @@ make ### 版权 Copyright (c) 2016-2023 The Slackware Linux CN Community (https://github.com/slackwarecn/) + +[id_calibre]: https://github.com/kovidgoyal/calibre "访问 Calibre 项目" +[id_gitbook]: https://github.com/GitbookIO/gitbook "访问 Gitbook 项目" +[id_gitbook_deprecation]: https://github.com/GitbookIO/gitbook#%EF%B8%8F-deprecation-warning "查看 GitBook 官方不再支持 CLI 的公告" +[id_github]: https://github.com/slackwarecn/slackbook_cn "访问本项目主页" +[id_online]: https://slackwarecn.gitbook.io/slackbook_cn "在线阅读本书" +[id_releases]: https://github.com/slackwarecn/slackbook_cn/releases "查看发布页面" +[id_slackbook]: http://slackbook.org "访问 The Revised Slackware Book Project 主页" diff --git a/chapter_01/Licensing.md b/chapter_01/Licensing.md index 57e0e18..13d4753 100644 --- a/chapter_01/Licensing.md +++ b/chapter_01/Licensing.md @@ -2,6 +2,8 @@ Slackware 的每一部分都由不同的人或团队开发,因为开发者们对"自由"都有各自不同的看法,所以出现了很多协议,这些协议针对软件的使用或分发授予了用户不同的权限。好在处理这些协议并不困难。多数软件都釆用 GPL 或 BSD 协议,大部分其他协议与这两种协议都非常相似。 -在自由软件社区用的最多的协议可能就是 GNU 通用公共许可证(GNU General Public License)了。GPL 由 [自由软件基金会(Free Software Foundation)](http://fsf.org/ "自由软件基金会") 设计,事实上,“自由软件”一词就是自由软件基金会创造的。GPL 对软件的使用没有做任何限制,如果只是使用 GPL 软件甚至可以不接受协议中的条款,但如果要分发或修改 GPL 软件,就必须遵守 GPL 协议。很多 Slackware 附带的软件,从 Linux 内核到 Samba,都在 GPL 协议下发布。 +在自由软件社区用的最多的协议可能就是 GNU 通用公共许可证(GNU General Public License)了。GPL 由 [自由软件基金会][id_fsf](Free Software Foundation)设计,事实上,“自由软件”一词就是自由软件基金会创造的。GPL 对软件的使用没有做任何限制,如果只是使用 GPL 软件甚至可以不接受协议中的条款,但如果要分发或修改 GPL 软件,就必须遵守 GPL 协议。很多 Slackware 附带的软件,从 Linux 内核到 Samba,都在 GPL 协议下发布。 另一个常用的协议是 BSD 协议,BSD 协议可以说比 GPL 协议“更加自由”,因为它只要求保留版权声明和免责声明,对衍生作品几乎没有做任何限制。很多 Slackware 特有的小工具采用 BSD 协议,BSD 协议也是很多小型项目的首选协议。 + +[id_fsf]: http://fsf.org/ "访问自由软件基金会" diff --git a/chapter_02/Partitioning.md b/chapter_02/Partitioning.md index eff4078..b837e14 100644 --- a/chapter_02/Partitioning.md +++ b/chapter_02/Partitioning.md @@ -4,7 +4,7 @@ 为了对硬盘进行分区,你首先要先知道如何识别它。在 Linux 中,所有的硬件都被识别成设备文件。这些文件位于 `/dev` 目录中。今天几乎所有的硬盘都被内核识别为 SCSI 硬盘,同时它们被分配为诸如 `/dev/sda` 的设备文件(曾经有一段时间每个硬盘类型都有它自己独有的识别,像是 `/dev/hda` 表示第一块 IDE 盘。几年后,内核的 SCSI 子系统演变成了通用的驱动接入系统被用于所有的硬盘和光驱而不论它们是如何接入你的计算机的。如果你对此感到困惑,想象一下如果你有一个接入了 SCSI 硬盘,SATA 光驱和 USB 的系统,所有的都是独特的子系统识别身份。而现在的系统不仅干净而且工作得更好) -如果你不知道你的硬盘被分配了那个设备文件,fdisk 可以帮助你。 +如果你不知道你的硬盘被分配了那个设备文件,`fdisk` 可以帮助你。 ``` root@slackware:/# fdisk -l @@ -14,7 +14,7 @@ Disk /dev/sda: 72.7 GB, 72725037056 bytes Units = cylinders of 16065 * 512 = 8225280 bytes ``` -这里你可以看到我的系统有一块位于 `/dev/sda` 的 72.7GB 硬盘。你可以看到一些额外的信息。 `-l` 参数用来显示硬盘和分区信息,但是不会作出修改,为了进行分区需要告诉 fdisk 要对哪块硬盘进行操作。 +这里你可以看到我的系统有一块位于 `/dev/sda` 的 72.7GB 硬盘。你可以看到一些额外的信息。 `-l` 参数用来显示硬盘和分区信息,但是不会作出修改,为了进行分区需要告诉 `fdisk` 要对哪块硬盘进行操作。 ``` root@slackware:/# fdisk /dev/sda diff --git a/chapter_02/The_setup_Program/Configure.md b/chapter_02/The_setup_Program/Configure.md index eaa9b61..b348e83 100644 --- a/chapter_02/The_setup_Program/Configure.md +++ b/chapter_02/The_setup_Program/Configure.md @@ -20,11 +20,11 @@ LILO 是 Slackware 系统很重要的一部分,所以整个第三章就是在 下面是配置网络。如果你不想配置网络可以跳过,否则就需要给计算机提供一个主机名。如果你不清楚在做什么可以先看 [第十四章](../../chapter_14/README.md) 。 -接下来会让你输入主机名、域名。主机名和域名被用来在使用了内部 DNS 服务的网络中定位计算机或者配置 `/etc/hosts` 文件。默认主机名为“darkstar”。 +接下来会让你输入主机名、域名。主机名和域名被用来在使用了内部 DNS 服务的网络中定位计算机或者配置 `/etc/hosts` 文件。默认主机名为 `darkstar`。 有三种方法可以配置 IP 地址:分配一个静态的 IP、DHCP 或者配置环回连接。最简单的是使用 DHCP。除非你安装 Slackwar 是作为网络服务器,这样你可能需要配置静态 IP。如果选择配置静态 IP,会让你输入 IP 地址、子网掩码、网关 IP 地址。最后是确认屏幕。 -网络配置结束后会进行启动服务的配置。如果你不确定可以使用默认配置,之后可以通过 pkgtool 修改。 +网络配置结束后会进行启动服务的配置。如果你不确定可以使用默认配置,之后可以通过 `pkgtool` 修改。 之后就是设置时间和时区。 diff --git a/chapter_03/Dual_Booting/Dual_Booting_with_Partitions.md b/chapter_03/Dual_Booting/Dual_Booting_with_Partitions.md index 409a8bd..7259e43 100644 --- a/chapter_03/Dual_Booting/Dual_Booting_with_Partitions.md +++ b/chapter_03/Dual_Booting/Dual_Booting_with_Partitions.md @@ -4,41 +4,40 @@ > ##### 注意 > -> 如果你搭建的是两个 Linux 的双系统,我们不推荐两个系统共用/home。虽然这在技术上可行,但因为不同的桌面环境和软件版本,会增加你的个人配置文件损坏几率。 +> 如果你搭建的是两个 Linux 的双系统,我们不推荐两个系统共用 `/home`。虽然这在技术上可行,但因为不同的桌面环境和软件版本,会增加你的个人配置文件损坏几率。 > > 但共用交换分区是安全的。 -你应该至少给硬盘分三个区: +你应该至少给硬盘划分三个分区: -- Slackware 一个分区 -- 第二系统一个分区 -- 交换分区 +- 一个为 Slackware 准备的分区。 +- 一个为其他系统准备的分区。 +- 一个交换分区。 首先,按照“[第二章、安装](../../chapter_02/README.md)”所述,把 Slackware 安装到第一个分区。 -安装好,启动好,一切正常之后,重启进入第二系统。第二系统总会想要占用整个驱动器,你显然*不希望*这样做,所以它限制为仅第二个分区。此外,该操作系统将尝试把引导器安装到硬盘驱动器的开头,覆盖 LILO. +安装好,启动好,一切正常之后,重启进入第二系统。第二系统总会想要占用整个驱动器,你显然**不希望**这样做,所以它限制为仅第二个分区。此外,该操作系统将尝试把引导器安装到硬盘驱动器的开头,覆盖 LILO。 有关引导器,可采取如下做法: ##### 可能的启动引导器方案 -
如果第二系统是Linux,禁止它安装启动管理器。
-如果双启动进入另一Linux发行版,该发行版的安装程序通常会询问是否安装启动引导程序。你当然可以不安装引导程序,手动管理LILO来启动Slackware和另一发行版。
-取决于另一发行版,比起只安装Slackware时你可能会更频繁地修改LILO配置。有些发行版因为频繁更新内核而臭名远扬,这就意味着每次更新你都要修改LILO配置。但如果你不想时时修改配置文件,你就不会选择Slackware了。
-如果双启动进入另一Linux发行版,你完全可以用GRUB来替换LILO,或最后安装Slackware并都使用LILO。LILO和GRUB都有自动检测的特性,所以不管最后安装的是谁都要探测其他发行版的存在并为它创建一个启动条目。
-由于其他的发行版往往会自动更新他们的GRUB菜单,总有可能出点差错然后就无法启动Slackware了。发生这种情况,不要惊慌,进入其它Linux的分区,手动修改GRUB菜单的Slackware条目使之指向正确的分区,内核和initrd(如果适用的话)。
-这个选择也是可行的,尤其是第二系统是Windows的时候。经常Windows更新之后会重写MBR, 这时候就要手动重新安装LILO了。
-要在其他系统抹除LILO之后修复,启动Slackware安装介质进入配置阶段。不要重新分区或重新安装Slackware,直接跳到“配置”部分。
-使用简单模式LILO的时候,它也会自动探测并创建启动菜单。如果失败了,那么就需要手动创建条目了。
-\\
。有很多的转义序列,我们不会一个个去讨论,但是我会解释这里的这些。第一个 `\u` 会被转义成当前用户的用户名。 `\h` 是主机名。 `\w` 是当前的工作目录,`\$` 显示的要么是 `#`(root 用户)要么是 `$`(普通用户)。一个完整的转义序列列表可以在 bash 手册的“PROMOTING”一节中看到。
+是的,这个看上去有点搞笑的一串东西控制着你 bash 的提示格式。基本上,每一个在 `PS1` 变量中的字符都包含在了提示中,除非之前有转义字符 `\`。有很多的转义序列,我们不会一个个去讨论,但是我会解释这里的这些。第一个 `\u` 会被转义成当前用户的用户名。 `\h` 是主机名。 `\w` 是当前的工作目录,`\$` 显示的要么是 `#`(root 用户)要么是 `$`(普通用户)。一个完整的转义序列列表可以在 bash 手册的“PROMOTING”一节中看到。
虽然我们已经讨论了这个默认的提示,不过我还要花些时间展示给你几个提示的例子以及 `PS1` 的设置。
diff --git a/chapter_05/Terminals.md b/chapter_05/Terminals.md
index 8cdf6a1..6d7d954 100644
--- a/chapter_05/Terminals.md
+++ b/chapter_05/Terminals.md
@@ -2,8 +2,8 @@
Slackware 和其他 Linux 发行版本允许用户以各种方式和系统交互,但是最常用的,也是最有用的就是通过终端。在以前,终端是通过串行连接接到主板或服务器上的键盘和显示器(有时是鼠标)。如今,大部分的终端都是虚拟的,那意味着它们只存在于软件中。虚拟终端允许用户无需使用高昂的和不兼容的硬件来连接到计算机上。通常,用户只需要运行软件,一个自定义的虚拟终端就会呈现在眼前。
-最通用的虚拟终端(每一台 Slackware 电脑中都至少有一个)是 gettys。 `agetty` 默认在 Slackware 上运行 6 个终端实例,并允许用户(那些坐在电脑前并在键盘上输入的)登录和运行程序。每一个实例都可以在不同的 tty 设备上获取,通过按 `ALT` 键加 `F1` 至 `F6` 中的任一个键。使用这些实例允许你以不同的用户的身份登录,同时在那些用户的 shell 上运行程序。对于那些不安装桌面的服务器来说使用的很多,但是在其他机器上也可以用。
+最通用的虚拟终端(每一台 Slackware 电脑中都至少有一个)是 `gettys`。 `agetty` 默认在 Slackware 上运行 6 个终端实例,并允许用户(那些坐在电脑前并在键盘上输入的)登录和运行程序。每一个实例都可以在不同的 tty 设备上获取,通过按 `ALT` 键加 `F1` 至 `F6` 中的任一个键。使用这些实例允许你以不同的用户的身份登录,同时在那些用户的 shell 上运行程序。对于那些不安装桌面的服务器来说使用的很多,但是在其他机器上也可以用。
-在台式机、笔记本和其他使用图形化接口的工作站上,大部分的终端是图形化的。Slackware 包括很多不同的图形化终端,最常用的是 KDE 的 `konsole` 和 XFCE 的 `xfce4-terminal` 或是老式的 `xterm` 。如果你使用图形化的终端,查看你的工具栏或者菜单。每一个桌面环境和窗口管理器都有虚拟终端(通常称它们终端模拟器),它们被不同地标记这。如果你使用桌面环境,通常你可以在*系统*菜单中找到它们。执行其中的任何一个,都会显示你一个图形化的终端并运行默认的 shell。
+在台式机、笔记本和其他使用图形化接口的工作站上,大部分的终端是图形化的。Slackware 包括很多不同的图形化终端,最常用的是 KDE 的 `konsole` 和 XFCE 的 `xfce4-terminal` 或是老式的 `xterm` 。如果你使用图形化的终端,查看你的工具栏或者菜单。每一个桌面环境和窗口管理器都有虚拟终端(通常称它们终端模拟器),它们被不同地标记这。如果你使用桌面环境,通常你可以在**系统**菜单中找到它们。执行其中的任何一个,都会显示你一个图形化的终端并运行默认的 shell。
> 译者注:通常图形化的终端被称为“虚拟终端”。
diff --git a/chapter_06/cron.md b/chapter_06/cron.md
index 7947efd..3d6efe5 100644
--- a/chapter_06/cron.md
+++ b/chapter_06/cron.md
@@ -12,7 +12,7 @@ darkstar:~$ crontab -e
30 02 * * * /usr/local/bin/rsync-slackware64.sh 1>/dev/null 2>&1
```
-就像之前提到过的,cron 的语法一开始很难理解,所以让我们独立的看看每一部分。从左到右分别是*分钟*、_小时_、_天_、_月份_、*工作日*和*命令*。任何 `*` 匹配每一分钟、小时、天等等。所以上面的例子中,命令是 `/usr/local/bin/rsync-slackware64.sh 1>/dev/null 2>&1`,而且它每个月里每周的每一天的*上午 2:30*运行。
+就像之前提到过的,cron 的语法一开始很难理解,所以让我们独立的看看每一部分。从左到右分别是*分钟*、_小时_、_天_、_月份_、*周几*和*命令*。任何 `*` 匹配每一分钟、小时、天等等。所以上面的例子中,命令是 `/usr/local/bin/rsync-slackware64.sh 1>/dev/null 2>&1`,而且它每个月里每周的每一天的上午 2:30 运行。
cron 也会用命令的输出给本地用户发邮件。因此,一些任务会将输出重定向至 `/dev/null`,这是一个忽略所有输入的特殊设备文件。为了让你容易的记住它,你可能希望把下面的注释文本粘贴到 cron 配置的顶端。
diff --git a/chapter_07/Setting_Up_A_Graphical_Login.md b/chapter_07/Setting_Up_A_Graphical_Login.md
index db4082c..bf45f1e 100644
--- a/chapter_07/Setting_Up_A_Graphical_Login.md
+++ b/chapter_07/Setting_Up_A_Graphical_Login.md
@@ -36,4 +36,4 @@ id:3:initdefault:
id:4:initdefault:
```
-> 译者注:**绝对**不要把运行级别改为**0**或者**6**!
+> 译者注:**绝对**不要把运行级别改为 `0` 或者 `6`!
diff --git a/chapter_07/What_Is_And_Isnt_X.md b/chapter_07/What_Is_And_Isnt_X.md
index 12deb80..416cced 100644
--- a/chapter_07/What_Is_And_Isnt_X.md
+++ b/chapter_07/What_Is_And_Isnt_X.md
@@ -1,9 +1,11 @@
### X 是什么?
+> 译者注:“X”更多地被称为“Xorg”。
+
远古时期,电脑附加设备只有屏幕和键盘,再没有别的了。在广泛运用鼠标之前,都得靠菜单来进行交互。之后诞生了图形界面(GUI),整个世界都为之一新。今天电脑使用者们可能习惯了移动鼠标来点击图标,在酷炫的图像和动画效果下完成某项任务。但 UNIX 诞生之时还没有 GUI, 后来才加上的。很多年来,Linux 和它的 UNIX 兄弟是在没有任何图形界面的情况下完成工作的。但现在用户们应该更喜欢他们的运行在 `X(7)` 上,有酷炫善良外形,能到处点的 GUI 的 Linux 系统。
-那么,什么是“X”? 它是有图标的桌面?是菜单?窗口管理器?还是它标注着地点(译注:此处有梗——X marks the spot)?都不是。GUI 分为许多部分,“X”是其中的基础。“X”能从鼠标,键盘和其他设备读取输入,还能控制显卡的工作。总之,“X”能与你的电脑硬件交互以完成图形工作,其他程序只是与“X”交互。
+那么,什么是“X”? 它是有图标的桌面?是菜单?窗口管理器?还是它标注着地点?都不是。GUI 分为许多部分,“X”是其中的基础。“X”能从鼠标,键盘和其他设备读取输入,还能控制显卡的工作。总之,“X”能与你的电脑硬件交互以完成图形工作,其他程序只是与“X”交互。
-在这里要提一提一系列名称,“X”只是你可能遇到的名称之一。它还叫“X11”、“Xorg”、“X Window System”、“X Window”、“X11R6”、“X Version 11”等等。不管名字是什么,你知道它们指的是“X”就行了。
+> 译者注:“还是它标注着地点”源自说法“X marks the spot”。
-> 译者注:“X”更多地被称为“Xorg”。
+在这里要提一提一系列名称,“X”只是你可能遇到的名称之一。它还叫“X11”、“Xorg”、“X Window System”、“X Window”、“X11R6”、“X Version 11”等等。不管名字是什么,你知道它们指的是“X”就行了。
diff --git a/chapter_10/Permissions_Overview.md b/chapter_10/Permissions_Overview.md
index f89292b..19bb48f 100644
--- a/chapter_10/Permissions_Overview.md
+++ b/chapter_10/Permissions_Overview.md
@@ -9,13 +9,13 @@ darkstar:~$ ls -l /bin/ls
回忆一下,第四章 `ls` 的 `-l` 参数列出了文件和目录及其所有者。上面的例子中,权限是 `rwxr-xr-x`,用户是 `root` 用户组也是 `root` 。权限部分,尽管是紧密显示在一起,但实际上它们分为三组。前三个是文件所有者的权限,中间三个代表文件所属组的权限,最后三个代表所有人(对这个文件)的权限。
-表 10.1 `/bin/ls` 的权限设置
-
| 权限对象 | 内容 | 含义 |
-| :------: | ----- | -------------------------------------- |
-| 所有者 | `rwx` | 其所有者 `root` 用有读,写,执行权限 |
-| 所属组 | `r-x` | 其所属组 `root` 中的成员有读,执行权限 |
-| 其他 | `r-x` | 其他人有读,执行权限 |
+| -------- | ----- | -------------------------------------- |
+| 所有者 | `rwx` | 其所有者 `root` 用有读,写,执行权限 |
+| 所属组 | `r-x` | 其所属组 `root` 中的成员有读,执行权限 |
+| 其他 | `r-x` | 其他人有读,执行权限 |
+
+> 表 10.1:`/bin/ls` 的权限设置
对文件来说,权限含义正如其名,读(**r**ead)权限、写(**w**rite)权限、执行(e**x**ecute)权限分别能让你读、写、执行文件。但对目录来说这些又是什么含义呢?简单来说,目录的读权限能让你获取目录内容(也就是用 `ls`),写权限让你能在目录下创建文件甚至删除整个目录(即使你没有删除目录内内容的权限也没关系),执行权限能让你进入目录(举个例子,也就是可以使用内置 `cd` 进入目录)。
diff --git a/chapter_10/SUID_SGID_and_the_Sticky_Bit.md b/chapter_10/SUID_SGID_and_the_Sticky_Bit.md
index 8fcd6e1..c2d43e4 100644
--- a/chapter_10/SUID_SGID_and_the_Sticky_Bit.md
+++ b/chapter_10/SUID_SGID_and_the_Sticky_Bit.md
@@ -2,7 +2,7 @@
权限还有一部分尚未涉及,它们就是三种特殊权限,分别是 SUID,SGID 和粘滞位。只要一个文件有这三种的其中之一,它就会有一定的特殊之处。SUID 和 SGID 影响程序运行的方式,粘滞位限制该文件的删除。这些权限也能像读写执行一样用 `chmod` 设定,但稍有不同。
-SUID 和 SGID 分别表示“Set User ID”和“Set Group ID”。当程序文件设置了二者之一的权限时,程序运行起来后将拥有它所有者或所属组的权限,无论执行程序的是谁。让我们来看看一个 SUID 的例子——`passwd` 和它管理的文件:
+SUID 和 SGID 分别表示“Set User ID”和“Set Group ID”。当程序文件设置了二者之一的权限时,程序运行起来后将拥有它所有者或所属组的权限,无论执行程序的是谁。让我们来看看一个 SUID 的例子—— `passwd` 和它管理的文件:
```
darkstar:~# ls -l /usr/bin/passwd \
@@ -24,13 +24,13 @@ drwxrwxrwt 1 root root 34844 2008-03-24 16:11 /tmp
作为整个系统的临时文件存放地,`/tmp` 自然要对所有人开放读写执行权限。由于每个人都有可能在某个时间段在此存放了文件,那么为什么要禁止其他用户删除就很好理解了。你能在全局权限部分的 `x` 位置看见它,不过不是 `x` 而是 `t` 。
-表 10.5 SUID,SGID 和粘滞权限
-
| 权限类型 | 八进制表示 | 字母表示 |
| -------- | ---------- | -------- |
-| SUID | 4 | s |
-| SGID | 2 | s |
-| 粘滞 | 1 | t |
+| SUID | `4` | `s` |
+| SGID | `2` | `s` |
+| 粘滞 | `1` | `t` |
+
+> 表 10.5;SUID,SGID 和粘滞权限
使用八进制设置的时候,必须在最前方加一位来表示。比如,`/tmp` 对应的就是 `1777`,`/usr/bin/passwd` 的权限就是 `4711` 。基本上这一位都不怎么用,`chmod` 自动填充 `0` 。
diff --git a/chapter_10/chmod_chown_and_chgrp.md b/chapter_10/chmod_chown_and_chgrp.md
index 117dbc4..ac4dd6b 100644
--- a/chapter_10/chmod_chown_and_chgrp.md
+++ b/chapter_10/chmod_chown_and_chgrp.md
@@ -49,13 +49,13 @@ total 0
在八进制数表示下,2 的某一(0 到 2)次幂都代表了某个权限,把它们加起来就得到这一组权限的八进制表示。如果听起来很复杂的话,希望下面这个这个表格能帮到你。
-#### 表 10.2 八进制表示下的权限
-
| 权限 | 表示 |
| ---- | ---- |
-| 读 | 4 |
-| 写 | 2 |
-| 执行 | 1 |
+| 读 | `4` |
+| 写 | `2` |
+| 执行 | `1` |
+
+> 表 10.2:八进制表示下的权限
把它们加起来就能得到一个 0 到 7 之间的数,这个数代表了一组权限。举个例子,可读可写不可执行的八进制表示就是 `6` 。 `3` 表示不可读可写可执行。设定时,三组权限都必须指定,不可能只指定某一组权限。
@@ -69,21 +69,21 @@ darkstar:~# ls -l /tmp/foo/a
`chmod` 也可以用字母表示,后面带上 `+` 或 `-` 表示的权限,这个比较好记,但是八进制表示更方便。
-#### 表 10.3 字母表示下的权限
-
| 权限 | 字母表示 |
| ---- | -------- |
-| 读 | r |
-| 写 | w |
-| 执行 | x |
+| 读 | `r` |
+| 写 | `w` |
+| 执行 | `x` |
+
+> 表 10.3:字母表示下的权限
-#### 表 10.4 字母表示下的用户和组
+| 影响的对象 | 字母表示 |
+| ------------ | -------- |
+| 用户、所有者 | `u` |
+| 所属组 | `g` |
+| 其他、全局 | `o` |
-| 影响的对象 | 字母表示 |
-| ----------- | -------- |
-| 用户/所有者 | u |
-| 所属组 | g |
-| 其他/全局 | o |
+> 表 10.4:字母表示下的用户和组
要在 `chmod` 里使用字母表示法,首先指明权限应用的对象(`u` 针对用户,`g` 针对组,`o` 表示其他),同时还要指明权限值(`+` 表示有这项权限,`-` 表示没有)。可同时设置多组,用逗号隔开。
diff --git a/chapter_11/Local_Filesystem_Types/XFS.md b/chapter_11/Local_Filesystem_Types/XFS.md
index 7c12e2a..0b8edff 100644
--- a/chapter_11/Local_Filesystem_Types/XFS.md
+++ b/chapter_11/Local_Filesystem_Types/XFS.md
@@ -1,3 +1,3 @@
#### XFS
-XFS 由 SGI 个公司为 Linux 内核贡献,它是对大容量和大文件支持最好的文件系统之一。XFS 对内存的需求比其他文件系统要多些,但是如果你需要处理大文件的话,用多一点的内存换取更好的性能是值得的。XFS 并不是很适合桌面电脑,它的亮点是在服务器上处理大中型文件。和 ext3 一样,XFS 是完全的日志型文件系统。
+XFS 由 SGI 公司为 Linux 内核贡献,它是对大容量和大文件支持最好的文件系统之一。XFS 对内存的需求比其他文件系统要多些,但是如果你需要处理大文件的话,用多一点的内存换取更好的性能是值得的。XFS 并不是很适合桌面电脑,它的亮点是在服务器上处理大中型文件。和 ext3 一样,XFS 是完全的日志型文件系统。
diff --git a/chapter_11/Local_Filesystem_Types/ext4.md b/chapter_11/Local_Filesystem_Types/ext4.md
index c8d0021..f7bb5e5 100644
--- a/chapter_11/Local_Filesystem_Types/ext4.md
+++ b/chapter_11/Local_Filesystem_Types/ext4.md
@@ -2,4 +2,4 @@
ext4 是 ext 系列文件系统中最新的。它被设计来在 ext3 的基础上使用新的想法。虽然 Slackware 支持 ext4,但是你应该记住这个文件系统还非常的新并且仍处于开发状态。如果你对稳定性的需求大于性能,你最好选一个其他文件系统,比如 ext3。也就是说,虽然 ext4 相对于 ext3 在性能方面有着巨大的提升,但是许多人并不认为它适合稳定的使用。
-> 译者注:现在的 ext4 文件系统已经十分稳定了,通常被认为是一个最为稳妥的选择。
+> 译者注:现在的 ext4 文件系统已经十分稳定了,通常被认为是一个稳妥的选择。
diff --git a/chapter_11/The_Filesystem_Hierarchy.md b/chapter_11/The_Filesystem_Hierarchy.md
index 0b8bb4a..c171c6f 100644
--- a/chapter_11/The_Filesystem_Hierarchy.md
+++ b/chapter_11/The_Filesystem_Hierarchy.md
@@ -2,26 +2,26 @@
Slackware Linux 将所有的文件和目录都存放在单个 `/` 目录下,这个目录叫作“根”。这和微软的 Windows 不一样。不同的硬盘分区、CD-ROM、USE 驱动器甚至是软盘都可以挂在到 `/` 下,但是没有“驱动器号”一样的东西。这些设备的内容几乎随处可见,但是 Slackware 为你设置了一些理智的默认值。例如,CD-RW 驱动器通常放在 `/mnt/CD-RW` 。以下是 Slackware 中常见的目录。
-#### 表 11.1 文件系统布局
+> 译者注:使用 `man 7 hier` 以查看你系统中的文件系统层次标准。
-| 路径 | 描述 |
-| ------ | ---------------------------------------- |
-| / | 根目录,容纳所有东西的地方 |
-| /bin | 为所有用户提供的二进制程序的集合 |
-| /boot | 内核、initrd 以及其他和启动相关的东西 |
-| /etc | 系统配置文件 |
-| /dev | 允许直接访问硬件的特殊文件集合 |
-| /home | 存放用户个人文件和设置的目录 |
-| /media | DBUS/HAL 自动挂载的目录 |
-| /mnt | 临时挂载可移动媒体的目录 |
-| /opt | 某些专用软件的安装目录 |
-| /proc | 存放进程信息的虚拟文件系统 |
-| /root | root 用户的家目录 |
-| /sbin | 超级用户所使用的二进制程序集合 |
-| /srv | 存放网站数据 |
-| /sys | 内核信息的虚拟文件系统 |
-| /tmp | 存放所有用户临时文件 |
-| /usr | 存放所有非必要文件、库以及共享文件的目录 |
-| /var | 存放经常变化的数据,例如日志文件 |
+| 路径 | 描述 |
+| -------- | ---------------------------------------- |
+| `/` | 根目录,容纳所有东西的地方 |
+| `/bin` | 为所有用户提供的二进制程序的集合 |
+| `/boot` | 内核、initrd 以及其他和启动相关的东西 |
+| `/etc` | 系统配置文件 |
+| `/dev` | 允许直接访问硬件的特殊文件集合 |
+| `/home` | 存放用户个人文件和设置的目录 |
+| `/media` | DBUS/HAL 自动挂载的目录 |
+| `/mnt` | 临时挂载可移动媒体的目录 |
+| `/opt` | 某些专用软件的安装目录 |
+| `/proc` | 存放进程信息的虚拟文件系统 |
+| `/root` | root 用户的家目录 |
+| `/sbin` | 超级用户所使用的二进制程序集合 |
+| `/srv` | 存放网站数据 |
+| `/sys` | 内核信息的虚拟文件系统 |
+| `/tmp` | 存放所有用户临时文件 |
+| `/usr` | 存放所有非必要文件、库以及共享文件的目录 |
+| `/var` | 存放经常变化的数据,例如日志文件 |
-> 译者注:使用 `man 7 hier` 以查看你系统中的文件系统层次标准。
+> 表 11.1:文件系统布局
diff --git a/chapter_11/Using_mount.md b/chapter_11/Using_mount.md
index efe0fbf..3ec66ca 100644
--- a/chapter_11/Using_mount.md
+++ b/chapter_11/Using_mount.md
@@ -8,16 +8,16 @@ darkstar:~# mount -t ext3 /dev/hda3 /mnt/hd -o ro
我们来解读一下。我们有一个 ext3 文件系统在 IDE 设备的第三个分区,我们想把它挂载到 `/mnt/hd` 。此外,我们把它挂载为只读,这样就不会改变它的内容了。 `-t ext3` 参数告诉 `mount` 我们用的文件系统是什么类型,在本例中是 `ext3` 。这将告诉内核该使用那个驱动。通常 `mount` 会自行检查文件系统类型,但是最好还是显式的声明我们的分区类型。第二参数告诉 `mount` 我们想挂载的的位置,本例中是 `/mnt/hd` 。最后,我们必须决定要使用的参数,这些参数以 `-o` 开始声明。下面是最常用选项的简短列表。
-#### 表 11.2 常用的挂载选项
-
-| 选项 | 描述 |
-| -------- | ------------------------------ |
-| ro | 只读 |
-| rw | 读写(默认值) |
-| uid | 拥有此文件系统内容的用户 |
-| gid | 拥有此文件系统内容的组 |
-| noexec | 阻止执行此文件系统上的任何文件 |
-| defaults | 大多数文件系统通用的默认值 |
+| 选项 | 描述 |
+| ---------- | ------------------------------ |
+| `ro` | 只读 |
+| `rw` | 读写(默认值) |
+| `uid` | 拥有此文件系统内容的用户 |
+| `gid` | 拥有此文件系统内容的组 |
+| `noexec` | 阻止执行此文件系统上的任何文件 |
+| `defaults` | 大多数文件系统通用的默认值 |
+
+> 表 11.2:常用的挂载选项
如果这是你第一次安装 Linux,你只需要关心 `ro` 和 `rw` 选项。有个例外是当你要处理不具有 Linux 权限机制的文件系统时,比如 vfat 或者 NTFS,你需要使用 `uid` 或 `gid` 选项来确保非 root 用户能够访问这些文件系统的内容。
diff --git a/chapter_12/Moving_Around.md b/chapter_12/Moving_Around.md
index 237dc0f..cb7ac63 100644
--- a/chapter_12/Moving_Around.md
+++ b/chapter_12/Moving_Around.md
@@ -2,11 +2,11 @@
对于一个 vi 的初学者而言,移动光标可能是最难学习的事情。vi 并不使用传统的方向键来控制光标——虽然在 Slackware 中方向键也是可选的。相反 vi 使用命令模式下的简单命令来控制光标的移动。原因很简单——vi 为了兼容早期没有方向键的键盘。这样一来,光标的移动必须使用几个可用的按键来完成。所以右手经常操作的 `h` 、 `j` 、 `k` 和 `l` 被选中了。在 vi 的命令模式下,这四个键会控制光标的移动。这里有一个能够帮你快速记忆 vi 光标控制的表格。
-#### 表 12.1 vi 光标移动
-
| 指令 | 动作 |
| ---- | ---------------- |
-| h | 光标左移一个字符 |
-| j | 光标下移一行 |
-| k | 光标上移一行 |
-| l | 光标右移一个字符 |
+| `h` | 光标左移一个字符 |
+| `j` | 光标下移一行 |
+| `k` | 光标上移一行 |
+| `l` | 光标右移一个字符 |
+
+> 表 12.1:vi 光标移动
diff --git a/chapter_12/vi_Cheat_Sheet.md b/chapter_12/vi_Cheat_Sheet.md
index cbd9d1c..42a8062 100644
--- a/chapter_12/vi_Cheat_Sheet.md
+++ b/chapter_12/vi_Cheat_Sheet.md
@@ -2,36 +2,36 @@
因为 vi 较难上手,所以我准备了一份在你入门之前对你都有帮助的小表格。
-#### 表 12.2 vi 的指令
+| 命令 | 动作 |
+| --------------- | -------------------------------------------------- |
+| `h` | 光标左移一个字符 |
+| `j` | 光标下移一行 |
+| `k` | 光标上移一行 |
+| `l` | 光标右移一个字符 |
+| `10j` | 光标下移 10 行 |
+| `G` | 移动到文件尾 |
+| `^` | 移动到行首 |
+| `$` | 移动到行末 |
+| `dd` | 删除光标所在行(并存入复制缓冲区) |
+| `dd` | 删除光标所在行及其后四行(并存入复制缓冲区) |
+| `sw` | 删除光标所在单词(并存入复制缓冲区) |
+| `5dw` | 删除光标所在单词及其后四个单词(并存入复制缓冲区) |
+| `yy` | 将光标所在行存入复制缓冲区 |
+| `yw` | 将光标所在单词存入复制缓冲区 |
+| `5yw` | 将光标所在单词及其后四个单词存入复制缓冲区 |
+| `p` | 将复制缓冲区的内容插入倒光标位置之后 |
+| `P` | 将复制缓冲区的内容插入倒光标位置之前 |
+| `r` | 替换光标所在字符 |
+| `R` | 替换光标所在字符及其后若干字符 |
+| `x` | 删除光标所在字符 |
+| `X` | 删除光标所在字符的上一个字符 |
+| `u` | 撤销上一次操作 |
+| `:s/old/new/g` | 将当前行所有的 `old` 替换为 `new` |
+| `:%s/old/new/g` | 将当前行所有的 `old` 替换为 `new` |
+| `/asdf` | 定位到下一处 `asdf` 所在位置 |
+| `:q` | 退出 vi |
+| `:w` | 保存当前文件 |
+| `:w file` | 保存当前文件到 `file` |
+| `:x` | 保存并退出 |
-| 命令 | 动作 |
-| ------------- | -------------------------------------------------- |
-| h | 光标左移一个字符 |
-| j | 光标下移一行 |
-| k | 光标上移一行 |
-| l | 光标右移一个字符 |
-| 10j | 光标下移 10 行 |
-| G | 移动到文件尾 |
-| ^ | 移动到行首 |
-| $ | 移动到行末 |
-| dd | 删除光标所在行(并存入复制缓冲区) |
-| dd | 删除光标所在行及其后四行(并存入复制缓冲区) |
-| sw | 删除光标所在单词(并存入复制缓冲区) |
-| 5dw | 删除光标所在单词及其后四个单词(并存入复制缓冲区) |
-| yy | 将光标所在行存入复制缓冲区 |
-| yw | 将光标所在单词存入复制缓冲区 |
-| 5yw | 将光标所在单词及其后四个单词存入复制缓冲区 |
-| p | 将复制缓冲区的内容插入倒光标位置之后 |
-| P | 将复制缓冲区的内容插入倒光标位置之前 |
-| r | 替换光标所在字符 |
-| R | 替换光标所在字符及其后若干字符 |
-| x | 删除光标所在字符 |
-| X | 删除光标所在字符的上一个字符 |
-| u | 撤销上一次操作 |
-| :s/old/new/g | 将当前行所有的“old”替换为“new” |
-| :%s/old/new/g | 将当前行所有的“old”替换为“new” |
-| /asdf | 定位到下一处“asdf”所在位置 |
-| :q | 退出 vi |
-| :w | 保存当前文件 |
-| :w file | 保存当前文件到 `file` |
-| :x | 保存并退出 |
+> 表 12.2:vi 的指令
diff --git a/chapter_13/Emacs_Cheat_Sheet.md b/chapter_13/Emacs_Cheat_Sheet.md
index 12f7ae9..265e725 100644
--- a/chapter_13/Emacs_Cheat_Sheet.md
+++ b/chapter_13/Emacs_Cheat_Sheet.md
@@ -4,35 +4,35 @@ Emacs 入门容易,要想精通却非常困难。下面是一些有用的 Emac
#### Table 13.3. Emacs 小纪
-| 命令 | 作用 |
-| ----------------------- | ------------------------------------------------------------------------------------------------ |
-| C-f | 将光标向右(向前,f 代表 forward)移动一个字符 |
-| C-b | 将光标向左(向后,b 代表 backward)移动一个字符 |
-| C-n | 将光标向下(n 代表 next)移动一行 |
-| C-p | 将光标向上(p 代表 previous)移动一行 |
-| C-h f 函数名 回车 | 查看该函数的说明 |
-| C-h k C-x C-c | 查看对快捷键 C-x C-c 所绑定函数的说明 |
-| C-h t | 显示 Emacs 教程 |
-| C-h ? | 显示所有关于帮助的函数 |
-| M-\` | 访问菜单栏 |
-| C-g | 取消当前操作。在 minibuffer 中常会用到 |
-| M-x 函数名 回车 | 以交互方式调用该函数 |
-| M-1 M-0 C-n | 将光标向下移动 10 行 |
-| C-u 10 C-n | 将光标向下移动 10 行(同上) |
-| M-x | 将光标移动到行首 |
-| M-x | 将光标移动到行尾 |
-| M-> | 将光标移动到缓冲区末尾 |
-| M-< | 将光标移动到缓冲区开头 |
-| C-k | 删除从光标开始到行尾的所有字符,并将他们放入 kill ring 中 |
-| C-space | 进入选择模式(用普通的移动键来移动),再按一下 C-space 开选择模式 |
-| C-w | 在选择模式中,它用来删除选中的区域,并将他们放入 kill ring |
-| M-w | 在选择模式中,它用来将选中区域放入 kill ring |
-| C-y | 把 kill ring 中的内容“拖”出来放在当前光标所在位置上 |
-| C-/ | 撤销上次动作,与多数编辑器不同的是,撤销动作也可以被撤销 |
-| insert | 开启或关闭覆盖输入模式 |
-| C-s | 向下搜索“asdf”,之后重复按 C-s 可以继续搜索之后的“asdf”,或者按 C-r 命令搜索之前的“asdf” |
-| C-r | 向上搜索“asdf”,之后重复按 C-r 可以继续搜索之前的“asdf”,或者按 C-s 命令搜索之后的“asdf” |
-| M-% old 回车 new 回车 | 每搜索到一个字符串“old”,都会提示你是否要将其替换成“new”,可以在提示中输入“!”来强制替换所有“old” |
-| C-x C-c | 退出 Emacs,在这之前会提示你要不要保存未保存的缓冲区 |
-| C-x C-s | 将当前缓冲区保存到对应的文件 |
-| C-x C-w 新文件.txt 回车 | 将当前缓冲区保存到文件“新文件.txt”中 |
+| 命令 | 作用 |
+| ---------------------------------- | ----------------------------------------------------------------------------------------------------- |
+| `C-f` | 将光标向右(向前,`f` 代表 forward)移动一个字符 |
+| `C-b` | 将光标向左(向后,`b` 代表 backward)移动一个字符 |
+| `C-n` | 将光标向下(`n` 代表 next)移动一行 |
+| `C-p` | 将光标向上(`p` 代表 previous)移动一行 |
+| `C-h` `f` `FUNCTION-NAME` `Enter` | 查看函数 `FUNCTION-NAME` 的说明 |
+| `C-h` `k` `C-x` `C-c` | 查看对快捷键 `C-x` `C-c` 所绑定函数的说明 |
+| `C-h` `t` | 显示 Emacs 教程 |
+| `C-h` `?` | 显示所有关于帮助的函数 |
+| `` M-` `` | 访问菜单栏 |
+| `C-g` | 取消当前操作。在 minibuffer 中常会用到 |
+| `M-x` `FUNCTION-NAME` `Enter` | 以交互方式调用函数 `FUNCTION-NAME` |
+| `M-1` `M-0` `C-n` | 将光标向下移动 10 行 |
+| `C-u` `10` `C-n` | 将光标向下移动 10 行(同上) |
+| `M-x` `beginning-of-line` | 将光标移动到行首 |
+| `M-x` `end-of-line` | 将光标移动到行尾 |
+| `M->` | 将光标移动到缓冲区末尾 |
+| `M-<` | 将光标移动到缓冲区开头 |
+| `C-k` | 删除从光标开始到行尾的所有字符,并将他们放入 kill ring 中 |
+| `C-space` | 进入选择模式(用普通的移动键来移动),再按一下 `C-space` 离开选择模式 |
+| `C-w` | 在选择模式中,它用来删除选中的区域,并将他们放入 kill ring |
+| `M-w` | 在选择模式中,它用来将选中区域放入 kill ring |
+| `C-y` | 把 kill ring 中的内容“拖”出来放在当前光标所在位置上 |
+| `C-/` | 撤销上次动作,与多数编辑器不同的是,撤销动作也可以被撤销 |
+| `insert` | 开启或关闭覆盖输入模式 |
+| `C-s` `asdf` `Enter` | 向下搜索 `asdf`,之后重复按 `C-s` 可以继续搜索之后的 `asdf`,或者按 `C-r` 命令搜索之前的 `asdf` |
+| `C-r` `asdf` `Enter` | 向上搜索 `asdf`,之后重复按 `C-r` 可以继续搜索之前的 `asdf`,或者按 `C-s` 命令搜索之后的 `asdf` |
+| `M-%` `old` `Enter` `new` `Enter` | 每搜索到一个字符串 `old`,都会提示你是否要将其替换成 `new`,可以在提示中输入 `!` 来强制替换所有 `old` |
+| `C-x` `C-c` | 退出 Emacs,在这之前会提示你要不要保存未保存的缓冲区 |
+| `C-x` `C-s` | 将当前缓冲区保存到对应的文件 |
+| `C-x` `C-w` `new-file.txt` `Enter` | 将当前缓冲区保存到文件 `new-file.txt` 中 |
diff --git a/chapter_13/Getting_Help.md b/chapter_13/Getting_Help.md
index fa4e8dd..9432263 100644
--- a/chapter_13/Getting_Help.md
+++ b/chapter_13/Getting_Help.md
@@ -2,13 +2,13 @@
Emacs 附带了大量的文档,它常被叫做“带说明书”的编辑器,这是因为 Emacs 可以在用户使用中给用户提供这些文档。这是一些绑定了用于查阅文档的函数的快捷键(它们都以 `C-h` 开始):
-#### 表 13.2 访问 Emacs 文档
-
-| 命令 | 作用 |
-| ----------------- | ------------------------------------- |
-| C-h f 函数名 回车 | 查看该函数的说明 |
-| C-h k C-x C-c | 查看对快捷键 C-x C-c 所绑定函数的说明 |
-| C-h t | 显示 Emacs 教程 |
-| C-h ? | 显示所有有关帮助的函数 |
+| 命令 | 作用 |
+| --------------------------------- | ----------------------------------------- |
+| `C-h` `f` `FUNCTION-NAME` `Enter` | 查看函数 `FUNCTION-NAME` 的说明 |
+| `C-h` `k` `C-x` `C-c` | 查看对快捷键 `C-x` `C-c` 所绑定函数的说明 |
+| `C-h` `t` | 显示 Emacs 教程 |
+| `C-h` `?` | 显示所有有关帮助的函数 |
+
+> 表 13.2:访问 Emacs 文档
如果你需要练习一下 Emacs,`C-h t` 最适合你。
diff --git a/chapter_13/How_to_Move_Around.md b/chapter_13/How_to_Move_Around.md
index 95d82b3..781a84e 100644
--- a/chapter_13/How_to_Move_Around.md
+++ b/chapter_13/How_to_Move_Around.md
@@ -2,13 +2,13 @@
在 vi 中可以用方向键移动光标,在 Emacs 中也可以。然而像 vi 一样,在键盘上出现方向键之前,Emacs 就存在了,所以除了方向键,vi 和 Emacs 都有各自用于移动光标的快捷键,vi 的好按,Emacs 的好记,不过要想有效率的使用 Emacs 快捷键也是可以办到的。这是基本的 Emacs 光标移动快捷键:
-#### 表 13.1 Emacs 光标移动
+| 命令 | 作用 |
+| ----- | ------------------------------------------------- |
+| `C-f` | 将光标向右(向前,`f` 代表 forward)移动一个字符 |
+| `C-b` | 将光标向左(向后,`b` 代表 backward)移动一个字符 |
+| `C-n` | 将光标向下(`n` 代表 next)移动一行 |
+| `C-p` | 将光标向上(`p` 代表 previous)移动一行 |
-| 命令 | 作用 |
-| ---- | ----------------------------------------------- |
-| C-f | 将光标向右(向前,f 代表 forward)移动一个字符 |
-| C-b | 将光标向左(向后,b 代表 backward)移动一个字符 |
-| C-n | 将光标向下(n 代表 next)移动一行 |
-| C-p | 将光标向上(p 代表 previous)移动一行 |
+> 表 13.1:Emacs 光标移动
-可以像 vi 一样指定重复执行命令的次数。如果你按下 `M-1 M-0 C-p` 或者 `C-u 10 C-p`,光标就会向上移动 10 行。如果你按了 `M-5 C-f` 或者 `C-u 5 C-f` ,光标会向右移动 5 个字符。
+可以像 vi 一样指定重复执行命令的次数。如果你按下 `M-1` `M-0` `C-p` 或者 `C-u` `10` `C-p`,光标就会向上移动 10 行。如果你按了 `M-5` `C-f` 或者 `C-u` `5` `C-f` ,光标会向右移动 5 个字符。
diff --git a/chapter_16/Network_Diagnostic_Tools/dig.md b/chapter_16/Network_Diagnostic_Tools/dig.md
index 78295f4..bf108f8 100644
--- a/chapter_16/Network_Diagnostic_Tools/dig.md
+++ b/chapter_16/Network_Diagnostic_Tools/dig.md
@@ -1,6 +1,6 @@
#### dig
-`dig(1)` 工具用来手动执行更复杂的 DNS 查找。当你用 `dig` 解决 DNS 问题时,它就会变成一只“围栏里铁面无私的小狗”(the meanest dog in the pound)。使用 `dig`,你几乎可以执行任意类型的 DNS 查找,从反向查找(reverse lookups)到 A、CNAME、MX、SP、TXT 字段的查找等等。还有太多太多的命令行选项和查找类型有待深入讨论,不过 man 手册中已经列出了它们的常见用法。
+`dig(1)` 工具用来手动执行更复杂的 DNS 查找。当你用 `dig` 解决 DNS 问题时,它就会变成一只“围栏里铁面无私的小狗”(the meanest dog in the pound)。使用 `dig`,你几乎可以执行任意类型的 DNS 查找,从反向查找(reverse lookups)到 _A_、_CNAME_、_MX_、_SP_、_TXT_ 字段的查找等等。还有太多太多的命令行选项和查找类型有待深入讨论,不过 man 手册中已经列出了它们的常见用法。
```
darkstar:~# dig @207.69.188.185 www.slackware.com a
diff --git a/chapter_16/Network_Diagnostic_Tools/nmap.md b/chapter_16/Network_Diagnostic_Tools/nmap.md
index a33f1ce..e2976d8 100644
--- a/chapter_16/Network_Diagnostic_Tools/nmap.md
+++ b/chapter_16/Network_Diagnostic_Tools/nmap.md
@@ -1,7 +1,8 @@
#### nmap
假如你想知道一个机器或多个机器上运行了哪些服务,或者想判断一些机器有没有反应(responsive)怎么办?一个一个的 `ping`,然后一个一个的用 `telnet` 连接感兴趣的端口,再一个一个的分析返回信息吗?恐怕有些不妥。最好的方法是使用端口扫描工具 `nmap(1)` 。用 `nmap` 可以扫描 TCP 和 UDP 端口,判断一个网络设备的操作系统,探测每个被定位的服务以便确定它们的具体类型等等等等。也许 `nmap` 最简单的使用方法就是一下子 `ping` 很多台机器。你可以用网络地址表示方法(CIDR)来指定某个范围的所有地址,`nmap` 会挨个扫描并在完成后把结果返回给你。如果你喜欢,也可以直接使用主机名。
-为了“ping”主机,你必须使用 `-sP` 参数。下面的命令要求 `nmap`“ping”www.slackware.com以及16个从72.168.24.0到72.168.24.15的IP地址。
+
+为了“ping”主机,你必须使用 `-sP` 参数。下面的命令要求 `nmap` “ping” `www.slackware.com` 以及 16 个从 `72.168.24.0` 到 `72.168.24.15` 的 `IP` 地址。
```
darkstar:~# nmap -sP www.slackware.com 72.168.24.0/28
diff --git a/chapter_16/rsync.md b/chapter_16/rsync.md
index 41f72fa..02e0e27 100644
--- a/chapter_16/rsync.md
+++ b/chapter_16/rsync.md
@@ -10,15 +10,15 @@
| 选项 | 说明 |
| ---- | ---------------------------------------- |
-| -v | 更详细的输出 |
-| -c | 通过校验和检查每个文件而不是时间戳和大小 |
-| -a | 归档模式(与-rlptgoD 相同) |
-| -e | 使用指定的远程 shell |
-| -r | 递归模式 |
-| -u | 更新模式-跳过时间戳更新的本地文件 |
-| -p | 保留权限信息 |
-| -n | 测试运行,不更改任何数据 |
-| -z | 压缩-方便低速的网络环境 |
+| `-v` | 更详细的输出 |
+| `-c` | 通过校验和检查每个文件而不是时间戳和大小 |
+| `-a` | 归档模式(与-rlptgoD 相同) |
+| `-e` | 使用指定的远程 shell |
+| `-r` | 递归模式 |
+| `-u` | 更新模式-跳过时间戳更新的本地文件 |
+| `-p` | 保留权限信息 |
+| `-n` | 测试运行,不更改任何数据 |
+| `-z` | 压缩-方便低速的网络环境 |
`rsync` 的强大功能还在于能通过不同的方式调用。下面的两个例子使用 `rsync` 连接到*rsync*协议的服务器检索一些信息,然后使用*ssh*传输到另一台服务器。
diff --git a/chapter_17/Package_Compression_Formats/rpm2tgz.md b/chapter_17/Package_Compression_Formats/rpm2tgz.md
index a592005..80fb767 100644
--- a/chapter_17/Package_Compression_Formats/rpm2tgz.md
+++ b/chapter_17/Package_Compression_Formats/rpm2tgz.md
@@ -2,9 +2,9 @@
RPM 是最常见的 Linux 软件包格式之一,非常多的开发者只以源代码形式和 RPM 包形式提供他们的软件。在这种情况下,有三种选择:
-1. 自行创建 Slackware 包
-2. 直接从源代码编译安装
-3. 转换 RPM 包并安装
+1. 自行创建 Slackware 包。
+2. 直接从源代码编译安装。
+3. 转换 RPM 包并安装。
构建源代码或者创建 Slackware 包并不是想象中的那么复杂,但直接从源代码编译安装是不太好的,因为在执行 `make install` 之后,很难追踪哪些东西被安装在了系统中。如何自行创建 Slackware 包不在本章的讨论范围里。那么只好使用 `rpm2tgz` 了。
diff --git a/chapter_17/Package_Compression_Formats/slackpkg.md b/chapter_17/Package_Compression_Formats/slackpkg.md
index 14a709e..7edc13a 100644
--- a/chapter_17/Package_Compression_Formats/slackpkg.md
+++ b/chapter_17/Package_Compression_Formats/slackpkg.md
@@ -1,33 +1,31 @@
#### slackpkg
-slackpkg 是管理 Slackware Linux 软件包的自动化工具,它最初出现在 slackware-12.1 的 `extra/` 目录中。自 slackware-12.2 发布以来,slackpkg 已经被包含在了基本系统安装的 ap 系列中。
+`slackpkg` 是管理 Slackware Linux 软件包的自动化工具,它最初出现在 slackware-12.1 的 `extra/` 目录中。自 slackware-12.2 发布以来,`slackpkg` 已经被包含在了基本系统安装的 ap 系列中。
-> 译者注:slackpkg 并不帮你解决依赖问题,如果你想自动化地处理依赖,你或许需要的是 [slapt-get](https://github.com/jaos/slapt-get)
+> 译者注:`slackpkg` 并不帮你解决依赖问题,如果你想自动化地处理依赖,你或许需要的是 [slapt-get](https://github.com/jaos/slapt-get)
-就像用 `installpkg` 可以从安装盘的 `extra/` 目录中安装 Slackware 软件包一样,用 slackpkg 可以从网上把软件包拖过来安装。对安全更新和已被上传到 Slackware 服务器的重要软件升级来说,这非常有用。
+就像用 `installpkg` 可以从安装盘的 `extra/` 目录中安装 Slackware 软件包一样,用 `slackpkg` 可以从网上把软件包拖过来安装。对安全更新和已被上传到 Slackware 服务器的重要软件升级来说,这非常有用。
-如果没有 slackpkg,就要这么做:
+如果没有 `slackpkg`,就要这么做:
-1. 在 Slackware 变要记录中看到有能用的更新
+1. 在 Slackware 变要记录中看到有能用的更新。
+2. 在当地的 Slackware 镜像站中找到更新软件包的下载链接。
+3. 下载软件包。
+4. 使用 `installpkg` 或 `pkgtool` 安装下载的软件包。
-- 在本地的 Slackware 镜像站中找到更新软件包的下载链接
-- 下载软件包
-- 使用 installpkg 或 pkgtool 安装下载的软件包
+有了 `slackpkg`,变成了这样:
-有了 slackpkg,变成了这样:
-
-1. 在 Slackware 变要记录中看到有“foo”的更新。
-
-- 运行 `slackpkg install foo`
+1. 在 Slackware 变要记录中看到有 `foo` 的更新。
+2. 运行 `slackpkg install foo`。
很明显,效率提高了。
-要使用 slackpkg,首先用 root 权限编辑 `/etc/slackpkg/mirrors` 来为系统选择一个 Slackware 镜像站,找到和你使用的 Slackware 版本、架构都一致的镜像站,然后取消注释就可以了。镜像列表提供了 ftp 和 http 两种访问方式,但只能取消注释一个镜像站。
+要使用 `slackpkg`,首先用 root 权限编辑 `/etc/slackpkg/mirrors` 来为系统选择一个 Slackware 镜像站,找到和你使用的 Slackware 版本、架构都一致的镜像站,然后取消注释就可以了。镜像列表提供了 ftp 和 http 两种访问方式,但只能取消注释一个镜像站。
一旦选择了一个镜像站,就要用命令 `slackpkg update` 来更新远程文件的列表。如果看到有新的软件包被上传到了 Slackware 服务器,同样要更新远程文件的列表(通常 Slackware 变更记录 ChangeLog.txt 里查看,见“[第十八章、追踪系统更新](../../chapter_18/README.md)”)。
要搜索一个软件包,使用命令 `slackpkg search foo`,要安装一个软件包,使用命令 `slackpkg install foo` 。
-一旦用 slackpkg 安装了一个软件包,就可以用 `pkgtool` 或其他包管理命令移除或升级这个包,这些命令在“软件包的安装、移除和升级”小节中介绍过了。
+一旦用 `slackpkg` 安装了一个软件包,就可以用 `pkgtool` 或其他包管理命令移除或升级这个包,这些命令在“软件包的安装、移除和升级”小节中介绍过了。
-关于 slackpkg 的更多信息在 man 手册 slackpkg(8) 、slackpkg.conf(5) 以及它的网站 [http://www.slackpkg.org/](http://www.slackpkg.org/ "slackpkg") 中可以找到。
+关于 `slackpkg` 的更多信息在 man 手册 `slackpkg(8)` 、`slackpkg.conf(5)` 以及它的网站 [http://www.slackpkg.org/](http://www.slackpkg.org/) 中可以找到。
diff --git a/chapter_18/Security_Update_Mailing_List.md b/chapter_18/Security_Update_Mailing_List.md
index d916cb2..addf5e2 100644
--- a/chapter_18/Security_Update_Mailing_List.md
+++ b/chapter_18/Security_Update_Mailing_List.md
@@ -1,5 +1,5 @@
### 订阅安全更新邮件列表
-尽管 Slackware 团队有时会发布用以修复漏洞的补丁包,然而其中你最为关心的可能是稳定分支的版本发布后,那些针对程序脆弱性而发布的安全更新。Slackware 项目维护着一个邮件列表,可以通知你何时有任何针对严重错误而发布的软件包。你可以给**[majordomo@slackware.com](mailto:majordomo@slackware.com)**发送一封正文为“**subscribe slackware-security**”的邮件以订阅该邮件列表。你的邮件地址会被加入到列表中,当有新的软件包发布时,你就可以收到邮件通知。
+尽管 Slackware 团队有时会发布用以修复漏洞的补丁包,然而其中你最为关心的可能是稳定分支的版本发布后,那些针对程序脆弱性而发布的安全更新。Slackware 项目维护着一个邮件列表,可以通知你何时有任何针对严重错误而发布的软件包。你可以给[majordomo@slackware.com](mailto:majordomo@slackware.com)发送一封正文为 `subscribe slackware-security` 的邮件以订阅该邮件列表。你的邮件地址会被加入到列表中,当有新的软件包发布时,你就可以收到邮件通知。
> 译者注:你也可以在 [http://www.slackware.com/security/](http://www.slackware.com/security/) 查看所有关于安全更新的邮件通知。
diff --git a/chapter_18/The_stable_Branch.md b/chapter_18/The_stable_Branch.md
index b75795d..b93b8c8 100644
--- a/chapter_18/The_stable_Branch.md
+++ b/chapter_18/The_stable_Branch.md
@@ -1,12 +1,12 @@
### 稳定分支
-#### slackware 的稳定分支
+#### Slackware 的稳定分支
-每当 slackware 发布新版本,Slackware 的团队会按需发布升级包用以修复严重的安全问题和惹人厌的漏洞。因此让你当前版本的 Slackware 跟进最新的补丁是非常重要的,这种版本被称之为-stable 分支。与之不同的还有一个-current 分支,我们会在这个分支上进行下一个稳定版本的开发工作(所以经常会有一些引发问题的提交)。除非你愿意在一个可能出错的系统中工作并可以自食其力地解决这些问题。我们强烈建议你使用-stable 分支。
+每当 Slackware 发布新版本,Slackware 的团队会按需发布升级包用以修复严重的安全问题和惹人厌的漏洞。因此让你当前版本的 Slackware 跟进最新的补丁是非常重要的,这种版本被称之为 `-stable` 分支。与之不同的还有一个 `-current` 分支,我们会在这个分支上进行下一个稳定版本的开发工作(所以经常会有一些引发问题的提交)。除非你愿意在一个可能出错的系统中工作并可以自食其力地解决这些问题。我们强烈建议你使用 `-stable` 分支。
-由于本地无法获得-stable 分支的安全更新,所以你需要从互联网上自行获取。许多个人和组织提供 Slackware 的镜像站,你可以在这些地方以多种方式下载到 Slackware 的完整目录树(也可能只是 `patches/` 目录)。有些镜像站可以在网页上访问,但更常见的方式是从运行着 ftp/rsync 服务器的镜像站上获取更新。Slackware 项目维护着一份按照国家分类的已知镜像站清单。如果你不确定该使用哪个镜像站,可以查看 [http://www.slackware.com/getslack/](http://www.slackware.com/getslack/) 获得帮助。如果你附近有一所大学,他们很可能会提供一份维护着许多开源项目的镜像站——Slackware 可能也在其中。一个镜像站可用的必要条件只有一个——它是官方镜像站的一个完整克隆。通常来说,最好使用距离你较近的镜像站以获得最快的访问速度和最少的网络资源占用。
+由于本地无法获得 `-stable` 分支的安全更新,所以你需要从互联网上自行获取。许多个人和组织提供 Slackware 的镜像站,你可以在这些地方以多种方式下载到 Slackware 的完整目录树(也可能只是 `patches/` 目录)。有些镜像站可以在网页上访问,但更常见的方式是从运行着 ftp/rsync 服务器的镜像站上获取更新。Slackware 项目维护着一份按照国家分类的已知镜像站清单。如果你不确定该使用哪个镜像站,可以查看 [http://www.slackware.com/getslack/](http://www.slackware.com/getslack/) 获得帮助。如果你附近有一所大学,他们很可能会提供一份维护着许多开源项目的镜像站——Slackware 可能也在其中。一个镜像站可用的必要条件只有一个——它是官方镜像站的一个完整克隆。通常来说,最好使用距离你较近的镜像站以获得最快的访问速度和最少的网络资源占用。
-那么如何知道有可用更新呢?最好的方法是在任意提供及时更新的镜像站上查看 ChangeLog.txt 文件。你可以在 Slackware 官网上获得-stable 和-current 分支的更新日志。但是如果你正在使用一个较旧版本的 Slackware,你需要从镜像站上查询是否有可用的更新。
+那么如何知道有可用更新呢?最好的方法是在任意提供及时更新的镜像站上查看 ChangeLog.txt 文件。你可以在 Slackware 官网上获得 `-stable` 和 `-current` 分支的更新日志。但是如果你正在使用一个较旧版本的 Slackware,你需要从镜像站上查询是否有可用的更新。
```
darkstar:~# wget -O - \
diff --git a/chapter_18/Upgrading_Slackware_Versions.md b/chapter_18/Upgrading_Slackware_Versions.md
index 4f725d7..0657b37 100644
--- a/chapter_18/Upgrading_Slackware_Versions.md
+++ b/chapter_18/Upgrading_Slackware_Versions.md
@@ -10,10 +10,6 @@
最后,在继续之前阅读 `UPGRADE.TXT` 。做完这一切之后,你需要拿捏一下,和可能会比较棘手的升级相比,备份你的配置文件和数据并执行一次新版本的全新安装是否会更省力和更能避免潜在的问题。如果你仍然想继续,备份好你的配置文件和数据。至少备份 `/etc` 和 `/home`,这是个好习惯。这样如果升级之后出现了问题,至少能够给你一个重装系统的机会。
-> 译者注:
->
-> 1. `/home` 并不需要特别地备份,升级过程不会处理 `home` 。如果你的 `/home` 是单独分区的,重装系统时也可以选择使用已有的 `/home` 。备份 `/home` 是不明智而且不实际的——`/home` 通常占用的磁盘空间都非常大。你只需要备份一下你账号主目录中的一些配置文件即可。
->
-> - 备份的 `/etc` 绝不能覆盖新系统的 `/etc`,新的系统中配置或许已经改变,如果你有旧的配置文件需要继续使用,弄清楚是否可以直接覆盖新系统中的对应文件。
+> 译者注:绝不可直接用备份的 `/etc` 覆盖新系统的 `/etc`,应该对于每一个需要还原的文件进行对比,并手动修改内容。
由于 Slackware 每个新版本所带来的改变都是不同的,所以给一个完整的说明不仅是徒劳的,还可能引起误解。你应该到你的升级光盘或者你喜欢的镜像站仔细查阅文档。
diff --git a/chapter_19/What_Does_the_Kernel_Do.md b/chapter_19/What_Does_the_Kernel_Do.md
index 3ea28d5..f38fb8b 100644
--- a/chapter_19/What_Does_the_Kernel_Do.md
+++ b/chapter_19/What_Does_the_Kernel_Do.md
@@ -1,5 +1,5 @@
### 内核是做什么的?
-你可能听说过人们谈论编译内核或建立一个内核,但究竟什么是内核,它有什么作用?
+你可能听说过人们谈论编译内核或建立一个内核。但究竟什么是内核?它有什么作用?
内核是计算机操作系统的核心。它是整个操作系统的基础。内核充当硬件和应用程序之间的桥梁。这意味着内核(通常)是你计算机上唯一一个负责控制计算机硬件的软件。内核能指导你的硬盘驱动器在硬盘上搜索一个特定的数据流。内核也能指导你的网卡通过电压快速变化来传递数据。内核同时也监控你的硬件。当网卡检测到远程计算机发送的信息,其转发信息给内核。这使得内核成为你计算机上最重要也最复杂的一个软件。