【Linux探索之旅】第二部分第八课:RTFM 阅读那该死的手册


内容简介

1、第二部分第八课:RTFM 阅读那该死的手册

2、第二部分第九课预告:查找文件,无所遁形


RTFM 阅读那该死的手册


今天这一课也会很轻松。


一般Windows的用户不太习惯看使用手册。有些Windows下的软件下载后是带有使用手册的,但是谁会花时间看呢?


在Linux下,阅读手册应该成为一个反射动作,一个自然而然的反应。虽说一开始要我们去看手册会有点让人生畏,但是我们学习各种Linux命令的使用方法的最好去处就是手册了。


我们这个系列教程也绝不能和手册相比,因为我们的教程里对于每一个知识点,不可能做到巨细靡遗,全盘托出。比如,对于某个Linux的命令,我们不可能详尽地列出每个参数及其用法,只能举几个最常用的参数。所以,如果要深入了解一个命令,阅读命令的手册就是最好方式了。


这一课就是为了揭开Linux手册的神秘面纱,带大家学习如何阅读手册。


这一课是系列课程中极重要的,因为如果你学会了如何阅读手册,那么大部分问题都可以自己解决。


今天的题目里的RTFM稍微有点小“暴*力”,因为它是Read The F*cking Manual的缩写,翻成中文是“阅读那该死的手册”。这个缩写经常被Linux老鸟用来回复一些初学者,并无侮辱之意,只是提醒及表示无奈,因为这些初学者的问题大多在手册中可以轻松找到解答。就好比我们会说:“我晕,这么简单的问题,百度或google一下就出来了,何必要来论坛里问。”


man命令,显示使用手册


man是manual的缩写,就是英语“使用手册”的意思。


man命令用法很简单,后接你想要显示使用手册的命令,函数或者其他。


用来查看系统中自带的各种参考手册,但是手册页分为好几个部分,如下所示:


  1. 可执行程序或shell命令

  2. 系统调用(Linux内核提供的函数)

  3. 库调用(程序库中的函数)

  4. 特殊文件(通常在/dev下)

  5. 文件格式和惯例(例如 /etc/passwd)

  6. 游戏

  7. 杂项(包括宏包和惯例,比如man(7),groff(7))

  8. 系统管理命令(通常只能被root用户使用)

  9. 内核子程序


在shell中输入 man+数字+命令/函数,即可以查到相关的命令和函数。若不加数字,那man命令默认从数字较小的手册中寻找相关命令和函数。


例如,本来是想寻找C语言标准库中的rand()函数,直接使用man rand得到的是一个rand命令的手册,直接用来产生一个随机数,这个内容在手册第1部分中。如果使用man 3 rand就可以得到想要的库函数中rand()的用法了。


man这个词本身又是英语“男人”的意思,所以Linux和Unix世界流行着一句有趣的话:不懂就问一问“男人”。


比如,我们举个例子,用man命令来显示ls命令的使用手册:


man ls



如上图所见,运行man ls后,就显示了ls命令的使用手册,这里有你想知道的关于ls命令的一切。


在手册中移动


我们来学习如何在手册页面中移动:


  1. 键盘上的方向键:向上键和向下键可以使我们实现上一行和下一行的跳转。

  2. 键盘上的PgUp和PgDn(或者空格键)键:实现上一页和下一页的跳转。

  3. 键盘上的Home和End键:实现开始和结尾的跳转。

  4. 键盘上的/键(斜杠):实现搜索,和之前在less命令中功能类似。

  5. 键盘上的Q键:退出手册页。

  6. 如果我们使用图形界面的终端来打开手册页,那么可以使用鼠标的滚轮来实现上下滚动。


手册页的不同区域


正如我们在上图中所看到的,手册页分为不同的区域。这些区域的名字是用大写和粗体表示,且靠左对齐:


  1. NAME:手册页对应的命令或函数名字,后接简单描述。

  2. SYNOPSIS: 使用此命令的所有方法。下面我们会详述这个区域,因为此区域的内容极为关键。

  3. DESCRIPTION: 命令的更深入的描述。这个区域也会包括所有参数及其用法。一般来说这个区域是文字最多的。

  4. AUTHOR: 命令的作者。有时候不止一个作者。

  5. REPORTING BUGS: 如果使用时遇到bug(程序的缺陷),有汇报问题的联系方式,通常是邮件。

  6. COPYRIGHT: 版权。也就是用了什么许可证(Licence)。大多数命令都是在GPL许可证之下的开源代码。

  7. SEE ALSO: 与此命令有关的其他命令。扩展阅读。


一般来说,前三个区域(NAME, SYNOPSIS, DESCRIPTION)是最重要的。


手册页的语言


不好意思,如你所见,手册页的语言全是英语。并不是所有人都精通英语,那假如你英语不好怎么办呢?


我只能给出一个最好的建议,也许你不会喜欢:花点时间学学英语。


不需要精通英语,但至少要会阅读,而且大胆使用什么金山词霸,灵格斯翻译家,有道词典,谷歌翻译等等。


如果你做编程工作,在信息技术领域做研究,那么英语可以说是必不可少的语言。


接下来我们学习一下SYNOPSIS这个区域。


SYNOPSIS区域


SYNOPSIS这个区域是手册页很重要的一个区域,但也是最难理解的区域之一。


SYNOPSIS这个区域的作用就是列出使用命令的所有可能方法。简单地说,SYNOPSIS这个区域显示了所有可能的参数组合。


有些命令的SYNOPSIS区域比较简单,但有些就很复杂了,会是一长串,看得人头大。


我们下面就用一些实际的例子来学习。


man mkdir


我们从mkdir命令的使用手册开始。




如上图所见,mkdir命令的使用手册的NAME区域是:


mkdir  -  make directories


make是英语“创建”的意思,directories是directory(目录)的复数。所以我们知道mkdir命令是用于创建目录。


mkdir命令的SYNOPSIS区域如下:




虽然这个SYNOPSIS区域比较短,但已经包含不少信息了。它告诉我们如何使用mkdir命令。


我们一点点解析此SYNOPSIS区域:


  1. mkdir:使用mkdir命令,我们当然需要先输入mkdir,这是很好理解的。

  2. [OPTION]:option是英语“选项”的意思。表示在mkdir之后,我们可以加选项参数(就是 -v,-h之类)。在SYNOPSIS区域中,中括号中的内容表示可选,所以我们并不一定要添加选项参数。

  3. DIRECTORY:directory是英语“目录”的意思。就是需要用mkdir命令创建的目录。这个参数是必须的,因为并没有用中括号括起来。这也不难理解,因为mkdir命令就是用于创建目录的,那最少也要输入一个目录的名字吧。

  4. ... :省略号表示可以有多个此类内容。在[OPTION]和DIRECTORY后都有省略号,分别表示可以有多个选项和多个目录名。也即是说可以同时指定多个选项参数,也可以用mkdir同时创建多个目录。


那么为什么mkdir使用粗体,而OPTION和DIRECTORY都是用下划线呢?


SYNOPSIS区域中,粗体的文字表示要原封不动地输入,下划线的文字表示要用实际的内容替换。


这也不难理解:mkdir命令肯定要原封不动地输入,而DIRECTORY就要替换成实际要创建的目录名称。


用例


根据SYNOPSIS区域的语法,我们使用mkdir命令时至少要输入一个创建的目录名。


例如:


mkdir photo


用于创建一个名为photo的目录。


而且,DIRECTORY之后的省略号表明我们可以同时输入多个目录名,用于同时创建多个目录,例如:


mkdir photo video music


用于创建photo,video,music三个目录。


我们也可以加选项参数,选项参数在DESCRIPTION区域中:




以上所有的选项参数都可以替换[OPTION],而且可以同时写多个选项参数,例如-pv。


man cp


我们再来看一个比较复杂的SYNOPSIS区域的例子:cp命令的SYNOPSIS区域。


我们之前学过cp命令,它用于拷贝文件或目录。




上图是cp命令的手册,可以看到SYNOPSIS区域如下:




是否有些惊讶?一下子来了三行...


为什么有三行而不是一行呢?原因很简单,因为没法只用一行表达清楚cp命令的使用方法。


逐行来解释:


  1. cp [OPTION]... [-TSOURCE DEST 拷贝源文件到目标文件。除了cp是原封不动输入外,还必须输入SOURCE和DEST这两部分内容,分别用实际的源文件名和目标文件名代替。也可以加上一个或多个选项参数(替换OPTION),还可以加上-T参数。

  2. cp [OPTION]... SOURCE... DIRECTORY 拷贝一个或多个源文件到目录,除了cp是原封不动输入外,还必须输入SOURCE和DIRECTORY这两部分内容,分别用实际的源文件名和目录名代替。也可以加上一个或多个选项参数(替换OPTION)。

  3. cp [OPTION]... -t DIRECTORY SOURCE... 拷贝一个或多个源文件到目录。除了cp是原封不动输入外,还必须输入DIRECTORY和SOURCE这两部分内容,分别用实际的目录名和源文件名代替。与第二种方法其实效果是一样的,只不过这里把目录名放在了前面,后接需要拷贝到目录的文件名(一个或多个)。但是这里的-t参数是必须加的。也可以加上一个或多个选项参数(替换OPTION)。


比如我们可以这样用:


cp file.jpg file_copy.jpg


是将file.jpg拷贝为file_copy.jpg。


cp file.jpg file_copy.jpg photo/


是将file.jpg和file_copy.jpg两个文件拷贝到photo这个文件夹中。


man apt-get


我们最后来看一个更复杂一些的实例:apt-get的使用手册。




如上图所见,我们的apt-get命令的手册的SYNOPSIS区域如下:




虽然这次的SYNOPSIS区域多得有点吓人,这酸爽...


但是比起cp命令,至少这个SYNOPSIS区域只有一行,虽然这一行略长。


我们逐步分析:


  1. apt-get:这个粗体部分是必须原封不动输入的,这不难理解。

  2. [-sqdyfmubV]:我们可以使用-s,-q,-d,-y,-f,-m,-u,-b,-V这些选项参数中的一个或多个。例如-s,-sqfm,-bV,等等。

  3. -o,-c,-t:这三个选项参数比较特别,也是可选的参数,但是如果要使用它们,必须要接上=xxx,xxx是参数的值。

  4. 用大括号括起来的(从update,到最后的-h | --help):大括号括起来的是一个整体,而每个部分又由|号隔开,说明必须要使用大括号里的某一项,但是每次只能使用一项,不能多项同时使用。


例如:


  1. update:更新软件包的缓存。

  2. upgrade:更新所有已安装的软件。

  3. install pkg:安装pkg字段对应的软件包。实际使用时,用实际的软件包名替换pkg。

  4. 等等。


当然,可以仔细阅读DESCRIPTION区域,以便了解每个参数的不同含义。


用例


根据apt-get的手册的SYNOPSIS区域的语法,我们使用apt-get时,须要选择大括号里用一竖隔开的任意一个选项。因此,我们可以这样使用:


apt-get install xxx


或者


apt-get update


或者


apt-get autoclean


等等。


但是我们不能同时使用两个或以上大括号里用一竖隔开的选项。例如,下面的用法是错误的:


apt-get update install xxx


SYNOPSIS区域的语法总结


  1. 粗体:原封不动地输入。

  2. 下划线的部分:用实际的内容替换。

  3. [-hvc]:-h,-v和-c选项都是可选的,非强制性的。

  4. a|b:你可以输入a或者b选项,但是不能够同时输入a和b。

  5. option...:省略号表示前面的内容可以输入任意多个。


apropos命令:查找命令


在使用man命令时,我们需要先知道我们要显示使用手册的那个命令的名字。那如果不知道那个命令叫什么怎么办呢?


这时候我们就需要请apropos命令上场了,apropos是英语“关于”的意思。


apropos命令的用法很简单,只要后接一个关键字,apropos命令就会为你在所有手册页中查找相关的命令。


因此apropos命令与man命令有点对立的关系,man命令用于显示命令的使用手册,而apropos命令用于根据手册中的关键字来找到命令。


我们用实际例子来学习:你想要知道如何用终端的命令来控制音量。


你可以这样查找:


apropos sound


为什么用sound这个关键字呢?因为sound是英语“声音,音量”的意思。




如上图所见,运行apropos sound之后,就列出了所有使用手册中有sound这个关键字的命令。


可以看到,左侧是命令的名字,后边是命令的手册中出现关键字的句子。


我们就知道了要调节音量可以用的命令是:


alsamixer


我们运行此命令:



可以用加号和减号来调节。


其他阅读手册的方式


虽说man命令和apropos命令是最常用的两个有关手册的命令,但是还有其他查阅手册的方式。


那么哪些是man的替代品呢?


-h或--help参数


虽然并不一定,但是大多数命令都接受-h这个参数(有时候它等价的参数--help也可以)。


-h参数中的h是help的首字母,help是英语“帮助”的意思。所以-h或--help参数的作用是显示帮助文档。


虽说一般帮助文档没有man命令显示的使用手册那么详细,但是也很有用,且往往比man显示的手册易于阅读。


比如我们要查看apt-get命令的帮助文档,可以这样:


apt-get -h




whatis命令


what是英语“什么”的意思,is是英语“是”的第三人称单数形式。所以连起来what is就是“是什么”的意思。


whatis命令可以说是man命令的精简版,它只会列出man命令显示的手册的开头部分,就是概述命令的作用。


例如用whatis命令来查看ls命令的作用:


whatis ls




只显示list directory contents,就是说ls命令用于列出目录的内容。


在网络上查看手册


我们不仅仅能在Linux系统里查找到手册,在网络上也可以找到。


如果你暂时不在Linux系统里,又想查一个命令或函数的使用手册,可以用搜索引擎如google或者百度来搜索。


例如,我要查看ls命令的手册,可以在google或百度里搜索:


man ls


一般搜索结果的第一个就是你要找的。


总结


  1. 在Linux中,命令和函数都有使用手册。每次遇到命令和函数的用法不明确的情况,都可以通过查考手册来解决。

  2. man命令可以显示命令或函数的使用手册。man后接要显示使用手册的名字。比如:man touch

  3. 在手册页时,我们可以用键盘上的上下箭头,PgUp,PgDn,空格来移动到手册的其他部分,用/(斜杠)键来查找,用q键来退出手册。

  4. 手册的SYNOPSIS区域很重要,列出了我们使用此命令的所有方法。中括号里的内容是可选的。

  5. apropos命令可以用来查找有相应关键字的命令,比如我们要找和音量,声音有关的命令,可以用apropos sound。


第二部分第九课预告


今天的课就到这里,一起加油吧!

下一课我们学习:查找文件,无所遁形

你可能感兴趣的:(linux,程序员,操作系统,程序员联盟)