【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]... [-T] SOURCE 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。

第二部分第九课预告

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

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

版权声明:本文为博主原创文章,转载请务必注明出处,否则追究法律责任。

时间: 2024-10-12 03:24:22

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

Linux探索之旅 | 第五部分第二课:一入Shell深似海,酷炫外壳惹人爱

-- 简书作者 谢恩铭 转载请注明出处 内容简介 前言 Shell是什么? 我们的第一个Shell脚本 运行Shell脚本 总结 第五部分第三课预告:变量在手,Shell不愁 1. 前言 上一课是 Linux探索之旅 | 第五部分第一课:Vim岂是池中物,宝剑锋从磨砺出 . 现在,我们已经学习了 Vim 这样强大的文本编辑器.相信我,Vim 对我们之后的课程会非常有用. 这一课我们可以进入第五部分的重心了:Shell 编程. 什么是Shell呢? 首先,shell 是英语"壳,外壳"的

【Linux探索之旅】第二部分第七课:软件安装,如虎添翼

内容简介 1.第二部分第七课:软件安装,如虎添翼 2.第二部分第八课预告:RTFM 阅读那该死的手册 软件安装,如虎添翼 这一课也会相对比较轻松,所以好好享受吧. 我们来谈谈Linux下软件的安装,会在我们的Ubuntu这个Linux发行版中演示. 一般提到软件安装,有过Windows系统使用经验的朋友肯定会深有体会,那个麻烦啊,大致流程是这样的: 在搜索引擎(比如百度或google)中搜索我们的软件名称. 看到一个不错的结果,点击进入.如果是官网一般会进入官网. 下载此软件的安装程序. 双击下

【Linux探索之旅】第二部分第二课:命令行,世界尽在掌握

内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:"小编,你为什么每次都要起这么非主流的标题呢?不能愉快地玩耍么?" 小编:"那我问你,老子他为什么要写<道德经>咧?" 读者:"为什么咧?" 小编:"因为老子愿意!" 开个小玩笑轻松一下 O(∩_∩)O~ 没办法,不能不激动,因为我们终于来到了这一刻,

【Linux探索之旅】第三部分第二课:流、管道、重定向,三管齐下

内容简介 1.第三部分第二课:流.管道.重定向,三管齐下 2.第三部分第三课预告:监视系统活动,滴水不漏 流.管道.重定向,三管齐下 这一课我们来学一些非常有用的内容,而且相当有意思,而且内容很多,而且有可能颠覆你的三<观>(毕竟三管齐下,不颠覆三观也难). 今天的标题中的三个名称,听上去就怪怪的.什么流,管道,重定向,都啥玩意啊.不过希望学完这课,大家能够有拨云见雾的感觉. 到目前为止,我们已经学习了不少Linux的命令了,也已经比较熟悉命令行的用法了.其最基本用法是这样的: 在终端输入命令

【Linux探索之旅】第二部分第六课:Nano,初学者的文本编辑器

内容简介 1.第二部分第六课:Nano,初学者的文本编辑器 2.第二部分第七课预告:软件安装,如虎添翼 Nano,初学者的文本编辑器 这一课比较简单,没有什么太难的概念.不过这一课会讲如何配置终端噢. 大家可以泡个泡面,烤只烤鸡:剥个卤蛋,慢慢来看. 之前的课程中,我们已经学会了在终端中用多种不同的方式来查看文件的内容,但是我们还不知道如何在终端中修改文件的内容. 为什么我们把文本编辑器推迟到现在来说呢?因为这是终端可以提供的强大功能之一. 在Linux终端的文本编辑器当中,比较著名的有:Nan

【C语言探索之旅】 第二部分第八课:动态分配

内容简介 1.课程大纲 2.第二部分第八课: 动态分配 3.第二部分第九课预告: 实战"悬挂小人"游戏 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己

【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见

内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是什么,以及如何安装Linux系统(我们以Ubuntu这个Linux发行版为以后的演示系统),我们也在上一课终于把Ubuntu安装好了. "很不错,掌声给自己". 安装Ubuntu遇到什么问题,可以在我们的QQ群和微信群提问,也可以私信小编,QQ.微信.邮件都行.联系方式在下面. Linux

【Linux探索之旅】第三部分第四课:后台运行及合并多个终端

内容简介 1.第三部分第四课:后台运行及合并多个终端 2.第三部分第五课预告:延时执行,唯慢不破 后台运行及合并多个终端 上一课(<[Linux探索之旅]第三部分第三课:监视系统活动,滴水不漏>)中,我们简单介绍了进程,也学习了如何列出系统中的进程,如何过滤列表结果,还有如何结束进程. 这一课我们继续乘胜追击,一路向北,来学习进程的后台运行. 我们使用的终端让我们难免有一种感觉:我们每次只能在一个终端中运行一个进程.但其实这是大错特错的. 终端还可以运行后台进程.要使进程一个在后台运行,有几种

【Linux探索之旅】第四部分第五课:源码编译,安装便利

内容简介 1.第四部分第五课:源码编译,安装便利 2.第四部分第六课:DNS和域名,一探究竟 源码编译,安装便利 这一课相对轻松,毕竟刚跨年(2015-2016)么,新年怎么能让大家一个头两个大呢~ 小编怎么可能这么坏呢?小编是这样的人吗?(是啊 -_-#). 之前的课程([Linux探索之旅]第二部分第七课:软件安装,如虎添翼)中,我们已经了解过Ubuntu这个Linux的发行版下安装软件是何等方便,用apt-get这个工具可以轻松搞定.这种方式可以让我们下载并安装大部分的软件. 其他Linu