コンテンツを表示せずに特定のテキストを含むすべてのマニュアルページを一覧表示するには? [コピー]

コンテンツを表示せずに特定のテキストを含むすべてのマニュアルページを一覧表示するには? [コピー]

特定の文字列に対してすべてのシステムマニュアルページを検索したいのですが、このテキストが表示されるマニュアルページのリストを取得したいと思います。 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 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)

編集:
文を使用してGoogleを検索すると、特定のクエリを解決した結果が常に返されるわけではありません。これは明らかにこの質問の場合であり、一部の人々が指摘したように、実際には重複していました。

ただし、Ubuntuシステムから返された特定の出力が表示されるため、削除しないことをお勧めします。 Ubuntuユーザーはこの質問から助けを得ることができます。

編集2:今この質問を
検索すると、skip (Ctrl-D)Googleの結果の最初のページに表示されますが、以前は何も返されませんでした!

答え1

次の-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)

最後に、これを関数に置き換えることができます。シェルの初期化ファイルに次の行を追加します(~/.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)

関連情報