如何输出特定部分中所有手册页的列表?

如何输出特定部分中所有手册页的列表?

例如,的手册页fork位于系统调用部分,编号为 2:

man 2 fork

如果不借助 Google,您如何了解第 2 部分还有哪些内容?

答案1

列出所有已安装您可以使用特定部分的手册页恰到好处:

apropos -s 2 .  # use an regex for apropos . means anything
apropos -s 2 -w '*'  # use unix globbing for apropos

答案2

联机帮助页通常放置在 中/usr/share/man,但请检查$MANPATH,并组织成如下部分:

 Section 1:
 /usr/share/man/man1/

 Section 2:
 /usr/share/man/man2/

 ...

因此,要列出所有已安装的第 2 部分联机帮助页,请执行以下操作:

ls /usr/share/man/man2/

或者更完整的:

find $(echo $MANPATH | tr ':' ' ') -path '*/man2/*'

$MANPATH如果您的目录名称中包含空格,则后一种情况将会出现问题。

在大多数发行版上,您还可以使用软件包工具检查可用的手册页,例如在 Debian 派生发行版上,您可以apt-file像这样使用:

apt-file search /man2/

答案3

此命令列出给定部分中所有条目的排序名称:

man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u

如果您想查看路径名,请使用:

man -aWS 1 \* | sed 's/\.[^.]*$//' | sort

这告诉man我们使用通配符模式搜索一个部分中的所有命令*(反斜杠引用,因此 shell 不会解释它)。-a查找所有匹配项,-W打印路径名而不是显示页面,并-S 1指定第一节。将 更改1为您要搜索的任何部分。

sed命令去除文件扩展名;如果您想查看完整的文件名,请将其删除。sort对结果进行排序(-u删除重复项)。

为了方便重用,这里定义了一个 Bash shell 函数:

function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }

例如,您可以调用它来mansect 3查看第三部分中的条目。

[在 macOS 上测试。]

答案4

我知道这是一个非常古老的问题,但是这里给出的答案对我来说都不起作用。因此我想出了以下适用于乌班图18.04 和苹果系统莫哈韦,10.14.6:

find $(man --path | tr ':' ' ') -type f -path '*man2*' \
  -exec basename {} \; | sed 's/\..*//' | sort

快速运行:

  • 形成托尔斯答案:$(man --path | tr ':' ' ')获取手册页的当前路径
  • find <man paths> -type f -path '*man2*' -exec basename {} \;获取 man 路径中所有常规文件的文件名
  • sed摆脱文件扩展名
  • sort按字母顺序排列。

相关内容