手册页命令:man 3 与 man

手册页命令:man 3 与 man

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 系统上,这些部分包括:

  1. 可执行程序或 shell 命令
  2. 系统调用(内核提供的函数)
  3. 库调用(程序库内的函数)
  4. 特殊文件(通常在 /dev 中)
  5. 文件格式和约定,例如 /etc/passwd
  6. 游戏
  7. 杂项(包括宏包和约定),例如 man(7)、groff(7)
  8. 系统管理命令(通常仅适用于 root)
  9. 内核例程[非标准]

对于在多个部分中存在同名内容的情况,指定部分会很有用。例如,man printf将显示第 1 部分中用户命令的手册页;要查看该函数printf的手册页,请使用。您经常会看到这些手册页分别称为和。printfman 3 printfprintf(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

读第二本。

相关内容