man(1)

名前
man - オンラインリファレンスマニュアルのインターフェース

書式
man [-c|-w|-tZT device] [-adhu7V] [-m system[,...]] [-L locale] [-p string] [-M path] [-P pager] [-r prompt] [-S list] [-e extension] [[section] page ...] ...
man -l [-7] [-tZT device] [-p string] [-P pager] [-r prompt] file ...
man -k [apropos options] regexp ...
man -f [whatis options] page ...

説明
man はシステムのマニュアルページャーである。 man に与えられる引き数 page は、通常はプログラムやユーティリティ、関数などの名前である。 これらの引き数それぞれに対応する マニュアルページ が検索・表示される。 section が指定されると、 man はマニュアルを検索する対象をそのセクションに限定する。 デフォルトの動作では、すべてのセクションを既定の順序で検索し、 最初に見つかった page だけを表示する。複数のセクションに同名の page がある場合でも、表示されるのは最初の一つだけとなる。 以下の表にマニュアルの section 番号と、それぞれに含まれるページの種類を示す。
1 | 実行プログラムまたはシェルのコマンド
2 | システムコール (カーネルが提供する関数)
3 | ライブラリコール (システムライブラリに含まれる関数)
4 | スペシャルファイル (通常 /dev に置かれている)
5 | ファイルのフォーマットとその約束事。例えば /etc/passwd など
6 | ゲーム
7 | マクロのパッケージとその約束事。例えば man(7), groff(7) など
8 | システム管理用のコマンド (通常は root 専用)
9 | カーネルルーチン [非標準]
マニュアルページは、いくつかの章からなる。 それぞれには以下のような名前がついている。 名前 (NAME), 書式 (SYNOPSIS), 説明 (DESCRIPTION), オプション (OPTION), ファイル (FILES), 関連項目 (SEE ALSO), バグ (BUGS), 著者 (AUTHOR) 書式 の章では以下のような形式が用いられている。 他の章でも同様のルールを用いることができる。
ボールド体 (bold) | そのままタイプする。
イタリック体 (italic) | 適切な引き数に置き代える。
[-abc] | [ ] 内部の引き数はすべて省略できる。
-a|-b | | で区切られたオプションは同時には指定できない。
argument ... | argument は繰り返し指定できる。
[expression] ... | [ ] 内部の expression 全体を繰り返し指定できる。
コマンドや関数は、すべての起動方法の書式にマッチするパターンで示される。 複数ある起動方法のうちの排他的なものは、 場合によっては別々に示した方が良いかもしれない (このページの 書式 セクションではそのようにしている)。

例

man ls
    (プログラム) ls に関するページを表示する。

man -a intro
    マニュアルにあるすべての intro ページを順番に表示する。次のページに移るときに、以降の表示 を中止したり、見たくないものをスキップすることもできる。

man -t alias | lpr -Pps
    `alias' で参照されるページ (通常はシェルのマニュアルページだろう) を、 troff または groff のデフォルト出力フォーマットに整形して、 ps という名前のプリンターにパイプする。 groff のデフォルト出力は通常 PostScript である。 man --help とすれば、 -t オプションによって起動される整形コマンドに関する情報が得られる。

man -l -Tdvi ./foo.1x.gz > ./foo.1x.dvi
    このコマンドは nroff ソース形式のマニュアルページ ./foo.1x.gz を展開して、 デバイス非依存 (dvi) なファイルに整形する。 -T オプションによって、 stdout にページャーなしで出力されているので、この場合リダイレクションが 必要である。この出力結果は xdvi のようなプログラムで見ることができる。また dvips のようなプログラムを用いれば、さらに PostScript に変換することも できる。

man -k printf
    マニュアルページの要約文とページ名から、正規表現で表わされたキーワード printf を検索する。 マッチした結果はすべて表示する。 apropos -r printf と同等。

man -f smail
    smail と言う名前のマニュアルページを探し、 見つかったものすべての要約文を表示する。 whatis -r smail と同等。

概要
man には多くのオプションが存在し、ユーザーに可能な限りの柔軟性を提供してい る。検索パス、セクションの検索順、出力プロセッサ、その他の振る舞いや 動作などが、以下に詳細に述べられている。 また man の動作に影響を及ぼす環境変数も数多く存在する。 「万能」な環境変数である $MANOPT を用いれば、コマンドラインと同じ形式の文字列を設定することもできる。 ただしオプションの引き数の一部として用いられるスペースは、 すべてエスケープする (バックスラッシュを前置する) 必要がある。 man は、 $MANOPT をコマンドラインの前に解釈する。引き数を必要とするオプションに関して は、同じものがコマンドラインにも存在すれば、コマンドラインの方が優先さ れる。 $MANOPT に設定されたオプションをすべてリセットするには、コマンドラインオプション の最初に -D を指定すればよい。 これによって man は一時的に $MANOPT の内容を「忘れる」が、環境変数の内容自体は有効なまま残る。 man-db パッケージのユーティリティ群の動作は、 index データベースキャッシュによって、非常に効率化されている。 これらのキャッシュには、各マニュアルページのファイルシステムでの位置と そのページの whatis (そのページの短い 1 行の要約文) が保持されている。 man の仕事の一つは、このキャッシュの整合性を保証することである。 これまで用いられていた whatis テキストデータベースでは、手動でソフトウェアを動作させて更新作業を行う 必要があったわけだが、この新しいデータベースキャッシュによって、これは 必要なくなった。また、毎回ファイルシステムを検索して必要なマニュアルペー ジを探す必要がなくなったので、 man の動作が速くなった。 検索対象となっているマニュアルページ階層 (hierarchy) に、 mandb によって作成された index データベースが存在しない場合でも、 man は要求されたマニュアルページの検索を続ける。ただしその階層の中では ファイル名の展開 (glob) が必要となる。 whatis や apropos が index を見つけられない場合、それらは従来形式の whatis データベースを代わりに用いて、そこから情報を引きだそうとする。 これらのユーティリティでは、圧縮された nroff ソースファイルも扱うこと ができる。デフォルトでは、拡張子が .Z, .z, .gz のファイルが利用できる。 任意の圧縮拡張子を扱うことができるが、 この情報はコンパイル時に与えなくてはならない。 また、デフォルトでは生成された cat ページはすべて gzip を用いて圧縮される。 /usr/share/man や /usr/X11R6/man のような、 `global' なマニュアルページ階層では、 対応する cat ページ階層として別のディレクトリを使うことができる。 従来は、 cat ページは man ページと同じ階層に保存されていた。 しかし File Hierarchy Standard (FHS) に記述されているような理由から、 cat ページは他の場所に置く方が良い だろう。他の場所に置く方法については、 manpath(5) を読んで欲しい。理由に関しては、FHS を参照のこと。 このパッケージでは、国際化をサポートしている。ロケール ( locale ) の機能を用いることによって、母国語のマニュアルページにアクセ スすることができる (もちろんシステムに存在していれば、であるが)。 この機能を有効にするには、 $LC_MESSAGES や $LANG 、またはシステム固有の環境変数を、使用している 言語のロケールに設定する必要がある。通常言語ロケールは POSIX 1003.1 に基づいたフォーマットで指定する: <language>[ _ <territory>[ . <character-set>[ , <version>]]] 要求したページに対して、設定している locale のものが存在すれば、そのページが標準のページ (通常はアメリカ英語) の 代わりに表示される。 このパッケージでは、国際化されたメッセージカタログも用いることができ、 上記と同様の方法で有効にできる (もちろんカタログが存在すれば、だが)。 このパッケージに、あなたの母国語に対応したマニュアルページ やメッセージカタログがなく、これを追加したいと思う人は、著者に連絡して 欲しい。著者は、このような活動を統合したいと思っている。 このマニュアルページャーで用いることのできる、その他の機能や拡張については、 パッケージに付属しているドキュメントを読んで欲しい。

デフォルト
man は index データベースキャッシュを検索して、要求されたマニュアルページを見つけよ うとする。これに失敗すると、キャッシュの整合性のチェックが行われ、デー タベースがファイルシステムと正しく対応していることを確認する。 通常は、最初にキャッシュを生成したあとは mandb を実行する必要はない (ただしキャッシュが壊れた場合は別である)。 マニュアルページの位置がわかったら、対応する整形済みの `cat' ファイルがすでに存在するかどうか、かつ nroff ファイルよりも新しいかどうか がチェックされる。両方とも真である場合は、この整形済みファイルが (通常 は) 伸長されてからページャーで表示される。ページャーはいろいろな方法で指定 できる。何も指定しなければデフォルトのものが用いられる (詳細はオプション -P の部分を参照のこと)。 cat ファイルがない場合、あるいは nroff ファイルよりも古い場合は、
 nroff ファイルがいくつかのフィルタプログラムで整形されてから、 すぐさま表示される。 cat ファイルが作成できる場合 (つまり、対応する cat ディレクトリが存在していて、 書き込み権限がある場合) には、 man はバックグラウンドで cat ファイルを圧縮して保存する。 フィルタ群はさまざまな方法で指定される。 まず、コマンドラインオプション -p または環境変数 $MANROFFSEQ による指定ができる。 -p オプションも環境変数も指定されていない場合は、nroff ファイルの先頭行がプリ プロセッサ文字列 (preprocessor string) として解釈される。プリプロセッ サ文字列として有効なものであるためには、先頭行は以下のようなものでなけ ればならない。 '\" <string> ここで string は、以下の -p オプションの項目で記述されている文字の任意の組み合わせである。 上記のいずれの手法によってもフィルタの情報が与えられなかった場合は、 デフォルトのフィルタ群が用いられる。 整形プロセスのパイプラインは、フィルタ群と基本整形プログラム (nroff または -t オプションが指定された場合は [tg]roff) によって構成され、これらが実行される。 あるいは、実行可能プログラム mandb_nfmt (または -t オプションが指定された場合は mandb_tfmt ) が man 階層ツリーのルートにある場合は、これが代わりに実行される。 このプログラムは、引き数としてマニュアルのソースファイルとプリプロセッサ文字列、 そして -T オプションが指定されていればそのデバイス指定を受け取る。

オプション
引き数を取らないオプションは、コマンドライン、 $MANOPT 環境変数のどちらででも指定できる。あるいはその両方で指定してもかまわない。 引き数をとるオプションが重なった場合は、 後から指定されたものが優先される。

-l, --local-file
    `local' モードを有効にする。システムのマニュアルページから 検索する代わりに、ローカルなマニュアルファイルを整形して表示する。 マニュアルページの引き数は、正しいフォーマットの nroff ソースファイルであるとみなされる。 cat ファイルは生成されない。 `-' が引き数に指定された場合は、 標準入力から入力が与えられるとみなされる。 このオプションが指定されていなくて、 man が要求されたページの検索に失敗した場合は、 エラーメッセージを表示する前にこのオプションが指定されていた場合の 動作を試みる。 このとき、マニュアルページ名は厳密に一致するファイル名とみなされる。

-L locale, --locale=locale
    man は通常、現在のロケールを C 関数 setlocale(3) を呼ぶことによって決定しようとする。この関数の動作は、例えば $LC_MESSAGES や $LANG などのような、さまざまな環境変数によって影響される。 この値を一時的に上書きするには、このオプションを使って man に直接 locale 文字列を渡せば良い。 このオプションが効力を持つのは、実際のページの検索が始まってからである ことに注意すること。ヘルプメッセージなどの出力は、起動前に定まっていた ロケールで出力される。

-D, --default
    このオプションは、通常はオプションの先頭に指定して、 man の振舞をデフォルトにリセットする。このオプションの目的は、 $MANOPT で指定されているかもしれないオプションをリセットすることである。 この -D 以降に指定されたオプションは、通常通りの効果を持つ。

-M path, --manpath=path
    通常の代わりに用いる manpath を指定する。デフォルトでは、 man は検索パスの決定に manpath 由来のコードを用いている。このオプションは、 $MANPATH 環境変数を上書きする。また,このオプションを指定すると -m オプションは無視される。

-P pager, --pager=pager
    出力に用いるページャーを指定する。デフォルトでは、 man は exec /usr/bin/pager -s を用いる。 このオプションは $PAGER 環境変数を上書きする。また、このオプションは -f や -k と同時に用いることはできない。

-r prompt, --prompt=prompt
    ページャとして最近のバージョンの less が用いられている場合には、 man は less のプロンプトやオプションを設定しようとする。 デフォルトのプロンプトは以下のようなものである。 マニュアルページ name(sec) x 行 ここで name はマニュアルページの名前、 sec はマニュアルページが見つかったセクション、 x は現在の行番号である。 これは環境変数 $LESS を通して設定される。 オプション -r で文字列を指定すると、このデフォルトを上書きできる。 文字列に $MAN_PN というテキストを入れると、現在のマニュアル名と、セクションを `(' と `)' で括ったものとに展開される。 デフォルトの出力となるような文字列は、以下のように表現できる。 \ マニュアルページ\ \$MAN_PN\ %lt?L/%L.\ ?lt行:
    byte\ %bB?s/%s..?e\ (終):?pB %pB\\%.. ここで二行に分割されているのは、単に可読性のためである。これらの意味に 関しては less(1) のマニュアルページを参照のこと。このプロンプト文字列は、まずシェルによって 解釈される。 プロンプト中に存在するダブルクォート、バッククォート、バックスラッシュ は、すべてバックスラッシュを前置してエスケープしなければならない。プロンプ ト文字列はエスケープされた $ で終わり、これ以降は less に与える追加オ プションになる。デフォルトでは、 man は -ix8 をオプションとして指定する。

-7, --ascii
    純粋な ascii(7) コードで記述されたマニュアルページを 7 ビット端末 (や端末エミュレータ) で読む場合、 GNU nroff の latin1(7) デバイス表示を用いると、文字によっては正しく表示されない可能性がある。 このオプションを用いると、純粋な ascii のマニュアルページを、 latin1 デバイスでも ascii で表示することができる。 このとき latin1 テキストは変換しない。以下の表に、変換の様子を示す。
    Description | Octal | latin1 | ascii
    continuation hyphen | 255 |  | -
    bullet (middle dot) | 267 | • | o
    acute accent | 264 | ´ | '
    multiplication sign | 327 | × | x
    latin1 カラムの表示が正しい場合は、あなたが現在使っている端末は latin1 文字向けに設定されているので、このオプションは必要ない。 latin1 と ascii カラムが同一である場合は、あなたは現在このページをこのオプションで 見ているか、あるいは man がこのページの整形に latin1 デバイスの指定を用いていないことになる。 latin1 カラムが空であるか、変な表示になっている場合は、マニュアルページを見る 場合にはこのオプションを指定する必要があるだろう。 このオプションは -t, -T, -Z オプションを用いている場合は無視される。また GNU 以外の nroff を用いている場合も、おそらく指定する意味はないだろう。

-S list, --sections=list
    引き数 list には、検索対象とするセクションをコロン区切りで指定する。検索は 指定した順序でなされる。このオプションは $MANSECT 環境変数を上書きする。

-a, --all
    デフォルトでは man は検索で見つかったページのうち、もっとも適切と判断したものを一つだけ 表示して終了する。このオプションを用いると、 man は検索条件にマッチする名前を持つすべてのマニュアルページを表示する。

-c, --catman
    このオプションは通常の用途で用いるものではない。 catman プログラムによってのみ用いられる。

-d, --debug
    実際にはマニュアルページを表示せず、 かわりに大量のデバッグ情報を出力する。

-e sub-extension, --extension=sub-extension
    (例えば Tcl などがそうだが) システムによっては、大きなマニュアルページのパッケージを、 メインのマニュアルページ階層にインストールするようなものがある。 同じ名前のページ (例えば exit(3) など) が二つ存在してしまうことを避けるために、通常 Tcl のページはすべて l というセクションに割り当てられていた。 これは望ましくないので、ページを正しいセクションに入れ、それらに特定の 「拡張」を追加することができるようになった。例えばこの場合なら exit(3tcl) のようになる。 通常の動作では、 man は exit(3) を exit(3tcl) より優先して表示する。 この状況をうまく処理し、目的とするページがどのセクションにあるのかをいちいち 記憶しておかなくてもすむように、 man に sub-extension 文字列を与えることができるようになった。この文字列は、ページが 所属するパッケージを指定するものである。上記の例なら、オプションとして -e tcl を man に与えれば、検索対象とするページは拡張子が *tcl のものに限られるようになる。

-f, --whatis
    whatis と等価。指定したマニュアルページが存在すれば、そのページの要約文を表示する。 詳細は whatis(1) を参照のこと。

-h, --help
    ヘルプメッセージを表示して終了する。

-k, --apropos
    apropos と等価。 keyword でマニュアルページの要約文を検索し、 マッチしたものをすべて表示する。 詳細は apropos(1) を参照のこと。

-m system [,...], --systems=system [,...]
    現在のシステムから、他のオペレーティングシステムのマニュアルページに アクセスできる場合には、このオプションをつけるとそれらが 検索される。 NewOS のマニュアルページから検索する場合には、 -m NewOS のようにオプションを指定する。 system には複数のオペレーティングシステム名をコンマで区切った形式で指定できる。 ネイティブのオペレーティングシステムのマニュアルページを 検索の対象に含めるためには、システム名 man を引き数文字列に加える。 このオプションは $SYSTEM 環境変数を上書きする。

-p string, --preprocessor=string
    nroff または troff/groff の前に実行するプリプロセッサのシーケンスを指定する。 インストール環境によっては、すべてのプリプロセッサが使えるわけではない。 プリプロセッサと、それを指定する文字のいくつかを以下に挙げる。 eqn (e), grap (g), pic (p), tbl (t), vgrind (v), refer (r) このオプションは $MANROFFSEQ 環境変数を上書きする。 zsoelim は、常に他のプリプロセッサすべてに先立って実行される。

-u, --update
    index データベースキャッシュは、通常「その場」で更新される。つまり、キャッシュ の整合性を保つために mandb を定期的に実行する必要はない。もし選択したマニュアルページが キャッシュに存在しなかった場合や、 -a オプションが指定された場合には、 man は「ディレクトリレベル」での整合性チェックを行い、キャッシュがファイル システムを正しく反映したものになっていることを確認する。 マニュアルページの検索に先立ち、「i-ノードレベル」での整合性チェック を行いたい場合は、 -u オプションを指定する。

-t, --troff
    マニュアルページの整形と、標準出力への表示に /usr/bin/groff -mandoc を用いる。 -T や -Z オプションの指定時に、このオプションを指定する必要はない。

-T device, --troff-device [=device]
    このオプションは groff (あるいは可能なら troff) の出力を、デフォルトのデバイスより適切なものに変更するために用いられる。 -t が暗黙のうちに指定される。例としては (Groff-1.17 でのもの)、 dvi, latin1, ps, utf8, X75, X100 などが挙げられる。

-Z, --ditroff
    groff は troff を実行し、その後適切なポストプロセッサを用いて選択したデバイスに応じた 出力を生成する。もし /usr/bin/groff -mandoc が groff であるならば、このオプションは groff に渡されて、ポストプロセッサの利用を抑制する。 -t が暗黙のうちに指定される。

-w, --where, --location
    実際にはマニュアルページを表示せず、整形・表示されることになるファイル の位置を表示する。複数のファイルが表示されることもある。ファイルが cat ファイルの場合は、ソースである nroff ファイルの位置も表示される。

-V, --version
    バージョンと著者に関する情報を表示する。

返り値

0   プログラムの実行に成功した。

1   使用法、文法、設定ファイルのいずれかにエラーがある。

2   実行時エラー。

3   子プロセスの返り値が非ゼロだった。

16  少なくとも、ページ、ファイル、キーワードのどれか一つが存在しないか、マッ チしなかった。

環境変数

MANPATH
    $MANPATH が設定されている場合には、その値がマニュアルページの検索パスとして用 いられる。

MANROFFSEQ
    $MANROFFSEQ が設定されている場合には、その値は各々のマニュアルページを処理 するプリプロセッサのセットを定義する。デフォルトのプリプロセッサの セットはシステムによって異なる。

MANSECT
    $MANSECT が設定されている場合には、その値はセクションのリスト (コロン区切り) と して扱われ、マニュアルのどのセクションを検索するかを決定する際に用いら れる。セクションは指定された順序で検索される。

PAGER
    $PAGER が設定されている場合には、その値がマニュアルページを表示するプログラム の名前として用いられる。デフォルトでは exec /usr/bin/pager -s が用いられる。

SYSTEM
    $SYSTEM 環境変数が設定されている場合には、 -m string オプションと同じ効果を持つ。 string が $SYSTEM の内容である。

MANOPT
    $MANOPT が設定されている場合には、その内容が man のコマンドラインに先立って解釈される。形式はコマンドラインのものと同じ である。 man に影響する他のすべての環境変数には、同じ効果を持つコマンドラインオプション が存在し、したがって $MANOPT に記述することができるので、これらの環境変数はいずれ使用されなくなる だろう。 オプションの引き数の一部として解釈させたいすべてのスペースは、エスケープ する必要があることに注意すること。

LANG, LC_MESSAGES
    システムと実装に依存するが、 メッセージロケールの指定には $LANG と $LC_MESSAGES のどちらか一方、あるいは両方が用いられる。 man が出力するメッセージには、(可能なら) そのロケールが使用される。 正確な内容は setlocale(3) を参照のこと。

ファイル

/etc/manpath.config
    man-db の設定ファイル。

/usr/share/man
    global なマニュアルページの階層。

/usr/share/man/index.(bt|db|dir|pag)
    従来形式の、 global な index データベースキャッシュ。

/var/catman/index.(bt|db|dir|pag)
    新しい (FSSTND 準拠の)、 global な

/var/cache/man/index.(bt|db|dir|pag)
    新しい (FHS 準拠の)、 global な index データベースキャッシュ。

関連項目
mandb(8), manpath(1), manpath(5), apropos(1), whatis(1), catman(8), less(1), nroff(1), troff(1), groff(1), zsoelim(1), setlocale(3), man(7), ascii(7), latin1(7), FSSTND, FHS

履歴
1990, 1991 - オリジナルの著者は John W. Eaton (jwe@che.utexas.edu) で あった。 Dec 23 1992: Rik Faith (faith@cs.unc.edu) が Willem Kasdorp (wkasdo@nikhefk.nikef.nl) のバグフィックスを当てた。 30th April 1994 - 23rd February 2000: Wilf. (G.Wilford@ee.surrey.ac.uk) が何人かの人々の助力のもと、 このパッケージを開発・保守している。 30th October 1996 - 30th March 2001: Fabrizio Polacco <fpolacco@debian.org> がすべてのコミュニティの協力のもと、このパッケージを保守・拡張している。 31st March 2001 - 今: Colin Watson <cjwatson@debian.org>