Answers:
此命令列出了给定部分中所有条目的排序名称:
man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u
如果要查看路径名,请使用:
man -aWS 1 \* | sed 's/\.[^.]*$//' | sort
这告诉man
您使用通配符模式*
(用反斜杠加引号,以便外壳程序不解释它)在部分中搜索所有命令。-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上测试。]
uniq
可以解决问题。
sort -u
以删除重复项。
要列出特定部分中所有已安装的手册页,可以使用apropos:
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
man -a -s 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/
lman 2
并在新行上列出了每个页面的未修饰名称并对其进行了分页。该函数的主体为:find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
我知道这是一个非常老的问题,但是这里给出的答案都对我不起作用。因此,我想出了以下可在Ubuntu 18.04和macOS Mojave 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
按字母顺序。