man 3
我想知道command 和command之间有什么区别man
?
我在维基百科中阅读在 Linux 中,man 3 的使用见手册页第 3 部分。第 3 部分涉及库函数,特别介绍了 C 标准库。
我尝试man 3 ls
并得到了这个:
手册第 3 节中没有 ls 的条目
我想知道何时使用man 3
,何时使用 man,以及它们的用途有何不同?
答案1
man 3 ls
只会显示ls
手册第 3 部分中的手册页。第 3 部分涵盖库函数;由于(可能)没有名为的库函数ls
,因此它不会找到任何内容。
没有部分编号的命令man
会按照我不记得的预定义顺序搜索部分,但它可能接近从 1 开始的数字顺序。因此man ls
会在第 1 部分中找到ls
手册页,其中涵盖了用户命令。
在我的 Ubuntu 系统上,这些部分包括:
- 可执行程序或 shell 命令
- 系统调用(内核提供的函数)
- 库调用(程序库内的函数)
- 特殊文件(通常在 /dev 中)
- 文件格式和约定,例如 /etc/passwd
- 游戏
- 杂项(包括宏包和约定),例如 man(7)、groff(7)
- 系统管理命令(通常仅适用于 root)
- 内核例程[非标准]
对于在多个部分中存在同名内容的情况,指定部分会很有用。例如,man printf
将显示第 1 部分中用户命令的手册页;要查看该函数printf
的手册页,请使用。您经常会看到这些手册页分别称为和。printf
man 3 printf
printf(1)
printf(3)
偷窃借用abernert 的回答,通常会看到用户命令(第 1 部分)是同名系统调用(第 2 部分)或库调用(第 3 部分)的包装器;chown
并且chmod
就是很好的例子。
答案2
正如您的问题所述,第 3 节是关于库函数的,涵盖了 C 标准库。C 标准库中没有ls
函数,因此当您询问其手册页时,没有。
我明白您为什么会感到困惑。在许多情况下,有一种工具只是将一些 C 或 POSIX 函数包装在一个简单的命令行可执行文件中。例如,该chmod
工具(在第 1 节中)基本上只是解析您的参数并chmod
在每个文件上调用 POSIX 函数(在第 2 节中)。因此,您可以键入man 1 chmod
以获取有关该工具的文档,并man 2 chmod
获取有关该工具使用的库函数的文档。如果您只键入man chmod
,它将选择第 1 节而不是第 2 节,因此您将获得该工具。
但这不是总是正确。例如,主要函数ls
使用的可能是readdir
。因此,您可以使用查找工具man 1 ls
,并使用查找函数man 3 readdir
。在这种情况下,man readdir
可能会执行与相同的操作man 3 readdir
,因为优先级较高的部分中没有同名的内容。
答案3
有些页面存在于 man 中的不同条目中。然后,为了找到特定的页面,您可能经常需要使用要查看的部分。例如,请参阅whatis find
。您将被引用到三个不同的页面。尝试使用它在括号中输出的每个部分 ID。
答案4
有时,当您阅读手册页或使用 man -k 搜索特定页面时,您可能会得到两个名称相似但位于不同库中的页面:
[mini-nevie:~] nevinwilliams% man -k route
route(4) - kernel packet forwarding database
route(8) - manually manipulate the routing tables
然后要阅读每个手册页,请执行以下操作:
man 4 route
阅读第一篇,
man 8 route
读第二本。