man查询详解

其实,很早前就想写一下关于man的使用的,尽管我们都觉得man命令很简单很好用。今天,我们的Intern同学还问到我有时看到一些man page里面提到诸如"EE ALSO _exit(2), setpgid(2), wait(2)"这样的信息中,括号里面的(2)是什么意思。所以,我就想再把man这里简单说明一下吧,当然男人(man)是很强大,更详细的信息,你可以"man man"来查看。

首先,man page中包括好几种不同的查询区域,如下是某Ubuntu系统中的说明:
The table below shows the section numbers of the manual followed by the types of pages they contain.
1 Executable programs or shell commands 可执行程序或Shell命令
2 System calls (functions provided by the kernel) kernel的系统调用
3 Library calls (functions within program libraries) 库函数
4 Special files (usually found in /dev) 一些特殊的文件
5 File formats and conventions eg /etc/passwd 文件的格式与惯例
6 Games 游戏
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) 其他
8 System administration commands (usually only for root) 系统管理命令
9 Kernel routines [Non standard] 内核的例程
这里前面的数字就是前面提到的问题中的数字,man section search_item (这里可以指定到section区域去搜索man page)。
如果不指定section,则man工具会根据一个预先定义的顺序去查询你查找的东西。
那么这个预先定义的顺序是在哪里定义的呢?
一般情况下,它在/etc/manpath.conf,我的Ubuntu系统上有如下的配置,这里指定了man查找各个section的默认顺序。

所以这个系统中是按照“1 n l 8 3 2 3posix 3pm 3perl 5 4 9 6 7”的顺序来查找,你可以修改这个文件来修改man查找顺序。

因为有时搜索的一个关键字可能是一个可执行程序,也可能是一个C语言库的函数,所以这时候,直接man(不加section参数)就只能找到可执行程序的man page而找不到C语言的man page。比如,下面以"printf"为例吧:
man printf 与 man 1 printf 查到的都是关于printf这个格式化打印的工具的手册。
而,man 3 printf 则会查到C语言中的printf()函数的手册。
只要你去试一下man 1 printf 与man 3 printf的不同,就很好理解了。

master

Stay hungry, stay foolish.

发表评论

邮箱地址不会被公开。 必填项已用*标注

*