例如,的手册页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
按字母顺序排列。