web-dev-qa-db-ja.com

特定のセクションのすべてのマニュアルページのリストをどのように出力しますか?

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

man 2 fork

Googleに頼らずに、セクション2の他の内容をどのように見ますか?

26
xyz

このコマンドは、指定されたセクションのすべてのエントリのソートされた名前を一覧表示します。

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でテスト済み。]

4
Chris Page

特定のセクションのすべてのインストール済みのマニュアルページを一覧表示するには、 apropos を使用できます。

apropos -s 2 .  # use an regex for apropos . means anything
apropos -s 2 -w '*'  # use unix globbing for apropos
26
Ulrich Dangel

マンページは通常/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/
20
Thor

Mac OS Xでは、セクション3にすべてをリストしているman -k . | grep -F '(3)'だけが機能します。

2
zellyn

これは非常に古い質問であることはわかっていますが、ここでの回答はすべてうまくいきませんでした。したがって、私はbunt 18.04およびmacOS Mojave、10.14.6で動作する次のワンライナーを思いつきました。

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

クイックランダウン:

  • フォームThors回答:$(man --path | tr ':' ' ')は、manページの現在のパスを取得します
  • _find <man paths> -type f -path '*man2*' -exec basename {} \;_は、manパスにあるすべての通常ファイルのファイル名を取得します
  • sedはファイル拡張子を取り除きます
  • sortアルファベット順に。
0
Ben