如何在Linux的手册页中查看特定部分

时间:2020-03-21 11:45:06  来源:igfitidea点击:

当寻找Linux/Unix命令的用法时,实际上我们不必使用Google或者在讨论论坛,Wiki页面,教程 或者任何离线/在线资源中进行搜索。
所有内容都记录在命令的手册页(简称手册页)中。
我们只需要学习有效地使用手册页,即可轻松快速地获取命令或者其选项/标志的详细信息。

今天,将介绍一个鲜为人知的手册页技巧,例如:如何在Linux和Unix中查看手册页中的特定部分。

手册页默认结构

手册页由几个不同的部分组成,每个部分的标题组织在一起,例如名称,大纲,配置,描述,选项,退出状态,返回值,错误,环境,文件,版本,符合,注释,错误,示例,作者,另请参阅。
每个手册页都有其命令名称,后跟括号中的节号。

以下是手册的章节号列表,以及其包含的页面类型:

1   - Executable programs or shell commands.
2   - System calls (functions provided by the kernel).
3   - Library calls (functions within program libraries).
4   - Special files (usually found in /dev).
5   - File formats and conventions e.g. /etc/passwd.
6   - Games.
7   - Miscellaneous (including  macro  packages  and conventions), e.g. man(7).
8   - System administration commands (usually only for root).
9   - Kernel routines [Non standard].

有些页面包含所有这些部分,有些则没有。
现在让我们看看如何查看命令手册页的特定部分。

在Linux的手册页中查看特定部分

让我们打开命令的手册页,例如uname。

$man uname

向下滚动手册页的末尾,我们将看到对其他命令的引用。

[...]
SEE ALSO
       arch(1), uname(2)
[...]

我们是否在命令末尾看到所有这些数字?
在几乎所有命令的手册页末尾,我们都会看到一个或者多个参考命令,并在括号中带有数字。
这些数字表示我们要查看的命令手册页中的特定部分。
换句话说,该数字与该页面来自手册的哪个部分相对应。

要明确告诉man 打开uname命令的第2节,只需运行:

$man 2 uname

或者,

$man uname.2

在以下屏幕截图中,左侧的“终端”窗口显示了“ man uname”命令的输出。
“终端”窗口的右侧显示“ man 2 uname”(即uname的第2节)命令的输出。

请注意,当我们运行不带任何数字的man命令时,它通常等效于:

$man 1 <command>

一些手册页没有特定的部分。
在这种情况下,尝试查看带有节号的手册页时我们什么也收不到。
例如,我运行以下命令来查看uname命令的第5部分:

$man 5 uname

由于uname命令没有第5节,因此得到以下输出:

No manual entry for uname in section 5
See 'man 7 undocumented' for help when manual pages are not available.

连续显示所有部分

就像我已经说过的那样,特定命令的手册页包含许多部分。
要连续查看每个匹配的页面,请使用-a标志,如下所示。

$man -a uname

按q退出一个部分并移至下一个部分。

显示所有与具有段号的字符串匹配的命令

我们可以使用-k标志来搜索包含搜索字符串的手册页。
因此,如果要在手册页中检索特定命令的所有节号,请使用-k选项,如下所示。

$man -k uname

输出示例:

arch (1)             - print machine hardware name (same as uname -m)
oldolduname (2)      - get name and information about current kernel
olduname (2)         - get name and information about current kernel
uname (1)            - print system information
uname (1posix)       - return system name
uname (2)            - get name and information about current kernel

如我们在上面的输出中看到的,我们列出了与给定关键字字符串匹配的所有命令(即子字符串)。
要严格限制在匹配的字符串中进行搜索,请使用:

$man -k '^uname'

输出示例:

uname (1)            - print system information
uname (1posix)       - return system name
uname (2)            - get name and information about current kernel

我们也可以使用-f标志。

$man -f uname

输出示例:

uname (1)            - print system information
uname (2)            - get name and information about current kernel
uname (1posix)       - return system name

有关更多详细信息,请查看“ man”的手册页。

$man man

另外,请参见手册页的其他帮助部分。

$man -k man
$info man