man(1)

名前
man - オンラインマニュアルページを整形し表示する

書式
man [-acdfFhkKtwW] [--path] [-m system] [-p string] [-C config_file] [-M pathlist] [-P pager] [-B browser] [-H htmlpager] [-S section_list] [section] name ...

説明
man はオンラインマニュアルページ (man ページ) を整形し表示する。 section を指定すると、 man はそのセクションのみからマニュアルを探す。 通常、 name は man ページの名前で、 典型的なものとしてはコマンド名・関数名・ファイル名などがある。 ただし、 name にスラッシュ (/) が含まれていると、 man はファイルの指定であると解釈する。 したがって man ./foo.5 と指定したり、 man /cd/foo/bar.1.gz と指定することも可能である。

man が man ページファイルを検索するディレクトリについての説明は、 以下を参照すること。

マニュアルセクション
マニュアルの標準的なセクションは以下のとおり：

1   ユーザーコマンド

2   システムコール

3   C ライブラリ関数

4   スペシャルファイル

5   ファイルフォーマット

6   ゲームプログラム

7   概要、慣習やその他

8   管理コマンドと特権コマンド

ディストリビューションによりマニュアルセクションは変更され、追加のセクションが設けられることがある。

オプション

-C  config_file
    使用する設定ファイルを指定する。デフォルトは /usr/share/misc/man.conf である (man.conf(5) を参照すること)。

-M  path
    man ページを探すディレクトリのリストを指定する。 ディレクトリをコロンで区切って指定する。 リストが空の場合は、 -M オプションを指定しないのと同じである。 「MAN ページの検索パス」 を参照すること。

-P  pager
    使用するページャーを指定する。 このオプションは環境変数 MANPAGER より優先される。さらにこの環境変数は 環境変数 PAGER よりも優先される。デフォルトでは man は /usr/bin/less -is を用いる。

-B  HTML ファイルで使用するブラウザを指定する。 このオプションは環境変数 BROWSER より優先される。デフォルトでは man は /usr/bin/less -is を用いる。

-H  HTML ファイルをテキストに変換するコマンドを指定する。 このオプションは環境変数 HTMLPAGER より優先される。デフォルトでは man は /bin/cat を用いる。

-S  section_list
    section_list はマニュアルを探すセクションを指定するコロン区切りのリストである。 このオプションは環境変数 MANSECT より優先される。

-a  デフォルトでは、 man はみつかった最初の man ページを表示したあと終了する。このオプションを使うと、 man は最初にみつかったものだけでなく name にマッチしたすべてのページを表示する。

-c  最新の cat 形式のページがあっても man ページのソースを 整形しなおす。このオプションは cat ページが現在使用している端末と違った幅で 整形されているときや壊れている場合などに有用である。

-d  man ページを表示せず、大量のデバッグ情報を出力する。

-D  デバッグ情報と man ページの両方を表示する。

-f  whatis コマンドと同じ。

-F または --preformat
    整形のみ行い、表示はしない。

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

-k  apropos コマンドと同じ。

-K  「全ての」man ページから指定した文字列を探す。警告: たいていの場合これは 非常に遅いので セクションを指定した方が良い。 (だいたいの目安として、私のマシンでは 500 ページを検索するのに 1 分かかる。)

-m  system
    (現在のシステムから、別のシステムのマニュアルにアクセスできる環境で) 別のシステムの man ページ群を検索するよう、そのシステム名を指定する。

-p  string
    nroff や troff の前に実行するプリプロセッサの順番を指定する。 インストールの状態によってはフルセットの プリプロセッサが用意されてないかもしれない。いくつ かのプリプロセッサとそれを指し示す文字は次のとおり： eqn (e), grap (g), pic (p), tbl (t), vgrind (v), refer (r)。 (訳注: 順番の指定方法は、例えば -p egpt である。) このオプションは環境変数 MANROFFSEQ より優先される。

-t  man ページの整形に /usr/bin/groff -Tps -mandoc を使い、 stdout に出力する。 /usr/bin/groff -Tps -mandoc のデフォルトの出力フォーマットは PostScript である。 別の出力フォーマットを選ぶならば、 groff(1) のマニュアルページにある利用可能なデバイスを参照すること。

選ばれた出力フォーマットと印刷装置の能力に応じて、 出力は印刷する前になんらかのフィルターを通す必要があるかもしれない。

-w または --path
    man ページを表示せず、 整形ないし表示されるファイルの位置を表示する。 引数を与えないと man が man ページを検索するディレクトリのリストを標準出力に表示する。 manpath コマンドが man にリンクされているときは "manpath" は "man --path" と 同じになる。

-W  -w に似ているが、ファイル名を追加情報なしに 1 行に 1 つづつ表示する。 これはシェルから次のように使うと便利である。 man -aW man | xargs ls -l

CAT ページ
man コマンドはすでに整形された man ページを、 次にそのページが必要になったときの整形時間の節約のために保存しようとする。 伝統的に、DIR/manX の整形済みマニュアルは DIR/catX に セーブされるが、 man ディレクトリと cat ディレクトリの別のマッピング (対応付け) を /usr/share/misc/man.conf で指定することもできる。 指定された cat ディレクトリが存在しない場合、 cat ページはセーブされない。 整形された cat ページの 1 行の文字数が 80 文字でない場合、 cat ページはセーブされない。 man.conf に NOCACHE と書かれている場合、 cat ページはセーブされない。

man コマンドをユーザー man に suid することもできる。 その場合、 cat ディレクトリを所有者 man、モードは 0755 (ユーザー man だけが書き込み可) とし、 cat ファイルを所有者 man、モードは 0644 または 0444 (ユーザー man だけが書き込み可、またはユーザーすべてが書き込み不可) としておけば、一般ユーザーは man コマンドを使わずに cat ページを変更したり、 他の関係ないファイルを cat ディレクトリに置いたりすることができなくなる。 man コマンドが suid されていない場合に、 すべてのユーザーが cat ページを cat ディレクトリに置けるようにするには、 cat ディレクトリのモードを 0777 にする必要がある。

cat ページがあったとしても、オプション -c をつけると強制的に man ページを再整形する。

HTML ページ
man コマンドは 'html' の後ろに 'セクション番号' が続く名前のディレクトリ中に HTML 版の man ページがあれば、それをみつけ出す。 ファイル名の末尾に付く拡張子は、".html" でなければならない。 したがって、 ls(1) の man ページの HTML 版があれば、その有効な名前は、 /usr/share/man/html1/ls.1.html といったものになるだろう。

MAN ページの検索パス
man はマニュアルページをみつけるために洗練された方法を用いる。 すなわち、起動オプションや環境変数、設定ファイル /usr/share/misc/man.conf 、さらにプログラムに組み込まれている伝統的／発見的な検索法を合わせて 使用するのである。

まず最初に、 man の引き数 name にスラッシュ (/) がある場合は、 man はファイルの指定であると解釈して、検索を行わない。

しかし name にスラッシュが含まれていない通常の場合、 man は指定されたトピックについて、マニュアルページになりそうなファイルを いろいろなディレクトリで検索する。

-M pathlist オプションを指定すると、 pathlist が man が検索を行う対象となる。 pathlist はコロンで区切ったディレクトリのリストである。

-M オプションを指定していないが、環境変数 MANPATH は設定してある場合は、この環境変数の値が man が検索を行うディレクトリのリストである。

-M や MANPATH でパスのリストを明示的に指定していない場合、 man は設定ファイル /usr/share/misc/man.conf の内容に基づいてパスのリストを作成する。 設定ファイルの MANPATH ステートメントにより、特定のディレクトリを検索パスに追加するのだ。

さらに MANPATH_MAP ステートメントによって、コマンド検索パス (すなわち、ユーザーの PATH 環境変数) に応じた検索パスが追加される。 コマンド検索パスにある各ディレクトリに対して、 MANPATH_MAP ステートメントが man ページファイルの検索パスに追加すべき ディレクトリを一つづつ指定する。 man は PATH 変数を調べて、 MANPATH_MAP で指定されている対応するディレクトリを man ページファイルの検索パスに 追加するのである。 したがって、 MANPATH_MAP を適切に使用している場合には、 man xyz を実行すると、コマンド xyz を実行したときに動作するプログラムの man ページが表示されることになる。

なお、コマンド検索パスのディレクトリ (「コマンドディレクトリ」と呼ぶことにする) に対して MANPATH_MAP ステートメントが存在しない場合、 man はそうしたコマンドディレクトリの一つ一つに対して、 マニュアルページがあるディレクトリを自動的に「近隣の場所」で 検索する。 「近隣の場所」とは、コマンドディレクトリ自身のサブディレクトリや、 コマンドディレクトリの親ディレクトリのサブディレクトリ といった場所である。

「近隣の場所」の自動検索を無効にするには、 NOAUTOPATH ステートメントを /usr/share/misc/man.conf に指定すればよい。

上記の検索パスにある各ディレクトリにおいて、 man は topic.section という名前のファイルを探す。 このセクション番号には (1x の x のような) 接尾辞があってもよいし、圧縮ファイルであることを示す拡張子が さらに続いてもよい。 このようなファイルがみつからない場合、 man は manN または catN という名前の全てのサブディレクトリを検索する。 ここで N は man ページのセクション番号である。 ファイルが catN サブディレクトリにある場合、 man はそれを整形済みの man ページファイル (cat ページ) であるとみなす。 それ以外の場合は、未整形の man ページであるとみなすわけだ。 どちらの場合でも、ファイル名に (.gz のような) 既知の圧縮ファイル拡張子が付いていれば、 man は gzip されたファイルであると考える。

man が特定のトピックの man ページを どこでみつけるか (またはみつけることができるのか) を知りたいときは、 --path (-w) オプションを使うこと。

環境変数

MANPATH
    MANPATH を設定すると、 man ページファイルを探すときのパスとして使われる。 この環境変数は設定ファイルや自動的に指定される検索パスの設定を上書きするが、 起動オプション -M で上書きされる。 「MAN ページの検索パス」 を参照すること。

MANPL
    MANPL を設定すると、表示する 1 ページ当たりの行数として使われる。 この環境変数を設定しない場合、man ページ全体で (長い) 1 ページになる。

MANROFFSEQ
    MANROFFSEQ を設定すると、 nroff や troff の前に実行するプリプロセッサが、この値をもとにして決定される。 (訳注: 設定方法は、例えば 'MANROFFSEQ=egpt' である。) デフォルトでは、man ページは nroff の前に tbl 用のプリプロセッサに通される。

MANSECT
    MANSECT を設定すると、どのマニュアルセクションを探すかが この値をもとにして決定される。

MANWIDTH
    MANWIDTH を設定すると、その値を表示する man ページの幅として使用する。 指定しなかった場合には画面の幅一杯まで使用する。

MANPAGER
    MANPAGER を設定すると、その値を man ページを表示するプログラムとして使用する。 指定しなかった場合には、 環境変数 PAGER が使用される。どちらも設定されていない場合には /usr/bin/less -is が使われる。

BROWSER
    HTML 版の man ページの表示に用いるブラウザ名。 設定されていない場合には /usr/bin/less -is が使われる。

HTMLPAGER
    HTML ファイルをテキストに変換するコマンド。 設定されていない場合には /bin/cat が使われる。

LANG
    LANG を設定すると、 man コマンドはまずその名前のサブディレクトリから man ページを探す。 したがってコマンドラインから 'LANG=dk man 1 foo' と打ち込むと、 man コマンドはまず .../dk/man1/foo.1 を探し、 みつからなければ .../man1/foo.1 を探す。この ... は検索パスのディレクトリである。

NLSPATH, LC_MESSAGES, LANG
    環境変数 NLSPATH と LC_MESSAGES (後者が指定されていなければ LANG) はメッセージカタログの位置を指定する (英語のメッセージはコンパイル時に組み込まれているので、 英語のカタログは必要ない)。 man に呼び出される col(1) のようなプログラムは、LC_CTYPE といった変数も使うことに注意すること。

PATH
    PATH は man ページのデフォルト検索パスの決定に利用される。 「MAN ページの検索パス」 を参照すること。

SYSTEM
    SYSTEM は (現在のシステムから、別のシステムのマニュアルにアクセス できる環境で) デフォルトの別のシステム名を得るのに使われる。 (この環境変数は -m オプションと一緒に使うためにある。 -m オプションの引数に空文字列 "" を指定すると、デフォルトの 別のシステム名を指定したことになる。 )

バグ
-t オプションは troff やそれと同等なプログラムがインストールされている 場合のみ有効である。
もしハイフンのかわりに、点滅する \255 や <AD> が表示された場合には 環境変数に 'LESSCHARSET=latin1' を設定すると良い。 (訳注: 日本語を使用する場合にはこの方法では対応できない。 groff のオプションで -Tnippon 、 -Tutf8 または -Tascii を使用すること。)

ウラ技
以下のような行を
  (global-set-key [(f1)] (lambda () (interactive) (manual-entry (current-word)))) 自分の .emacs ファイルに追加しておけば、F1 を叩くと、 現在のカーソル位置にあるライブラリコールの man ページが表示される。

バックスペースとアンダースコアがない プレーンテキスト版の man ページを得るには、次のコマンドを実行すること。
  # man foo | col -b > foo.mantxt

作者
man パッケージの原作者は John W. Eaton である。 Zeyd M. Ben-Halim が man 1.2 をリリースし、引き続いて Andries Brouwer が versions 1.3 から 1.5p までをリリースした。 現在のメンテナーは Federico Lucifredi <flucifredi@acm.org> である。

関連項目
apropos(1), whatis(1), less(1), groff(1), man.conf(5).