我想在所有系统手册页中搜索某个字符串,但我只想获取出现此文本的手册页列表。Google 返回的前 2 页结果没有提供我想要的答案,如果存在这样的答案的话。
让我解释:
我想查看hairpin
出现该词的所有手册页。我继续输入man -K hairpin
,出现的内容与我输入的内容相似man nmcli
。当我通过 退出此手册页时q,屏幕上会出现以下内容:
--Man-- next: bridge(8) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
Run Code Online (Sandbox Code Playgroud)
从这里,我可以连续键入Ctrl+D并最终返回到命令提示符,在提示符上方显示以下内容:
--Man-- next: bridge(8) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
--Man-- next: lldptool-evb22(8) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
--Man-- next: systemd.network(5) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
--Man-- next: nm-settings(5) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
--Man-- next: nm-settings-ifcfg-rh(5) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
--Man-- next: systemd.directives(7) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
Run Code Online (Sandbox Code Playgroud)
什么我问的是,是有可能得到的一个列表man pages
,其中hairpin
会出现如下面?:
man -<some-option> -K hairpin
nmcli(1)
bridge(8)
lldptool-evb22(8)
systemd.network(5)
nm-settings(5)
nm-settings-ifcfg-rh(5)
systemd.directives(7)
Run Code Online (Sandbox Code Playgroud)
编辑:
使用句子搜索 Google 并不总是返回解决特定查询的结果。这个问题显然就是这种情况,正如一些人指出的那样,它确实是重复的。
但是,最好不要删除它,因为它显示了在 Ubuntu 系统上返回的特定输出。Ubuntu 上的用户可能会从这个问题中受益。
编辑 2:现在
搜索skip (Ctrl-D)
此问题出现在 Google 结果的第一页中,以前没有返回任何内容!
您可以使用以下-w
选项:
-w, --where, --path, --location
Don't actually display the manual pages, but do print the loca?
tion(s) of the source nroff files that would be formatted.
Run Code Online (Sandbox Code Playgroud)
这几乎返回了您要求的内容:
$ man -wK hairpin
/usr/share/man/man1/nmcli.1.gz
/usr/share/man/man8/ip-link.8.gz
/usr/share/man/man8/bridge.8.gz
/usr/share/man/man5/systemd.network.5.gz
/usr/share/man/man5/nm-settings.5.gz
/usr/share/man/man5/nm-settings-ifcfg-rh.5.gz
/usr/share/man/man7/systemd.directives.7.gz
Run Code Online (Sandbox Code Playgroud)
如果这还不够,您可以将其解析为形状:
$ man -wK hairpin | perl -pe 's#.*/([^/]+)\.(\d+)\.gz#$1($2)#'
nmcli(1)
ip-link(8)
bridge(8)
systemd.network(5)
nm-settings(5)
nm-settings-ifcfg-rh(5)
systemd.directives(7)
Run Code Online (Sandbox Code Playgroud)
最后,你可以把它变成一个函数。将此行添加到 shell 的初始化文件(~/.bashrc
例如):
function sman(){ man -wK "$@" | perl -pe 's#.*/([^/]+)\.(\d+)\.gz#$1($2)#'; }
Run Code Online (Sandbox Code Playgroud)
然后,您可以运行:
$ sman hairpin
nmcli(1)
ip-link(8)
bridge(8)
systemd.network(5)
nm-settings(5)
nm-settings-ifcfg-rh(5)
systemd.directives(7)
Run Code Online (Sandbox Code Playgroud)