たとえば、fork
のマニュアルページは、システムコールのセクションにあり、番号は2です。
man 2 fork
Googleに頼らずに、セクション2の他の内容をどのように見ますか?
このコマンドは、指定されたセクションのすべてのエントリのソートされた名前を一覧表示します。
man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u
パス名を表示したい場合は、次を使用します。
man -aWS 1 \* | sed 's/\.[^.]*$//' | sort
これは、ワイルドカードパターン*
を使用してすべてのコマンドのセクションを検索するようにman
に指示します(シェルが解釈しないようにバックスラッシュで囲まれています)。 -a
はすべての一致を検索し、-W
はページを表示する代わりにパス名を出力し、-S 1
はセクション1を指定します。 1
を検索したいセクションに変更します。
sed
コマンドは、ファイル名拡張子を取り除きます。完全なファイル名を見たい場合は削除してください。 sort
は結果をソートします(-u
は重複を削除します)。
再利用を容易にするために、これはBash Shell関数を定義します。
function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }
たとえば、これをmansect 3
として呼び出して、セクション3のエントリを表示できます。
[macOSでテスト済み。]
特定のセクションのすべてのインストール済みのマニュアルページを一覧表示するには、 apropos を使用できます。
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
マンページは通常/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/
Mac OS Xでは、セクション3にすべてをリストしているman -k . | grep -F '(3)'
だけが機能します。
これは非常に古い質問であることはわかっていますが、ここでの回答はすべてうまくいきませんでした。したがって、私はbunt 18.04およびmacOS Mojave、10.14.6で動作する次のワンライナーを思いつきました。
_find $(man --path | tr ':' ' ') -type f -path '*man2*' \
-exec basename {} \; | sed 's/\..*//' | sort
_
クイックランダウン:
$(man --path | tr ':' ' ')
は、manページの現在のパスを取得しますfind <man paths> -type f -path '*man2*' -exec basename {} \;
_は、manパスにあるすべての通常ファイルのファイル名を取得しますsed
はファイル拡張子を取り除きますsort
アルファベット順に。