Man

如何在不顯示內容的情況下列出所有具有特定文本的手冊頁?

  • March 28, 2016

我想在所有系統手冊頁中搜尋某個字元串,但我只想獲取出現此文本的手冊頁列表。Google返回的前 2 頁結果沒有提供我想要的答案,如果存在這樣的答案的話。

讓我解釋:

我想查看該詞hairpin出現的所有手冊頁。我繼續輸入man -K hairpin,出現的內容與我輸入的內容相似man nmcli。當我通過 退出此手冊頁時q,螢幕上會出現以下內容:

--Man-- next: bridge(8) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]

從這裡,我可以連續輸入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) ]

我要問的是,是否可以獲得如下所示位置的列表?man pageshairpin

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)

編輯:

使用句子搜尋 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.

這幾乎返回了您要求的內容:

$ 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

如果這還不夠,您可以將其解析為形狀:

$ 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)

最後,你可以把它變成一個函式。將此行添加到 shell 的初始化文件(~/.bashrc例如):

function sman(){ man -wK "$@" | perl -pe 's#.*/([^/]+)\.(\d+)\.gz#$1($2)#'; }

然後,您可以執行:

$ sman hairpin
nmcli(1)
ip-link(8)
bridge(8)
systemd.network(5)
nm-settings(5)
nm-settings-ifcfg-rh(5)
systemd.directives(7)

引用自:https://unix.stackexchange.com/questions/272438