回答:
このコマンドは、指定されたセクションのすべてのエントリのソートされた名前をリストします。
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シェル関数を定義します:
function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }
たとえばmansect 3
、セクション3のエントリを表示するように呼び出すことができます。
[macOSでテスト済み。]
uniq
が、パイプラインに何も配置しても修正されません。
sort -u
して重複を削除しました。
特定のセクションからインストールされたすべてのmanページをリストするには、aproposを使用できます。
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
man -a -s 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/
lman 2
、実行されるシェル関数を作成し、各ページの装飾されていない名前を新しい行にリストして、ページングします。関数の本体は次のとおりですfind $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
これは非常に古い質問ですが、ここで与えられた答えはすべてうまくいきませんでした。そのため、Ubuntu 18.04およびmacOS Mojave 10.14.6で動作する次のワンライナーを思い付きました。
find $(man --path | tr ':' ' ') -type f -path '*man2*' \
-exec basename {} \; | sed 's/\..*//' | sort
クイックランダウン:
$(man --path | tr ':' ' ')
マニュアルページの現在のパスを取得するにはfind <man paths> -type f -path '*man2*' -exec basename {} \;
manパス内のすべての通常ファイルのファイル名を取得しますsed
ファイル拡張子を取り除きますsort
アルファベット順に。