特定のセクションのすべてのマニュアルページのリストを出力するには?

特定のセクションのすべてのマニュアルページのリストを出力するには?

たとえば、マニュアルページはforkシステムコールセクションにあり、番号は2です。

man 2 fork

Google を使わずに Part 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を使用してセクション内のすべてのコマンドを取得するように指示します。一致するものをすべて見つけてページを表示するのではなく、パス名を印刷して最初のセクションを指定します。検索したい部分に変更してください。*-a-W-S 11

このsedコマンドはファイル拡張子を削除します。フルファイル名を表示するには、拡張子を削除してください。sort結果を並べ替えます(-u重複項目を削除)。

再利用を容易にするために、Bashシェル関数がここで定義されています。

function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }

たとえば、これを呼び出して3番目のセクションmansect 3の項目を表示できます。

[macOSでテスト済み。 ]

答え4

私はこれが非常に古い質問であることを知っていますが、ここに与えられた答えのどれも私には役に立ちませんでした。だから私は次のような効果を思いついた。Ubuntu18.04とアップルシステムモハーベ、10.14.6:

find $(man --path | tr ':' ' ') -type f -path '*man2*' \
  -exec basename {} \; | sed 's/\..*//' | sort

クイックラン:

  • Thors回答を書く:$(man --path | tr ':' ' ')マニュアルページの現在のパスを入手してください。
  • find <man paths> -type f -path '*man2*' -exec basename {} \;man パス内のすべての一般ファイルのファイル名を取得します。
  • sedファイル拡張子を削除
  • sortアルファベット順に。

関連情報