manページ(マンページ)とは、UNIXおよびUnix系オペレーティングシステムの man システムのコンテンツであり、電子化されたドキュメントのこと。各ページは独立した文書として構成されている。ライブラリやシステムコールなどのコンピュータプログラム、標準や慣例、抽象的概念などに関するページがある。man
コマンドを実行することでmanページを閲覧することができる。
マニュアル内のあるページを閲覧するには、以下のようなコマンドを使用する。
% man [<章番号>] <ページ名> % man [-s <章番号>] <ページ名>
シェルのプロンプトで、たとえば "man ftp" と入力する(章番号は通常省略可能)。見やすくするため、ページャとして一般にlessをman内部で用いている。
ページを文章内で指す場合 "ページ名(章番号)" という書き方をする(たとえば、ftp(1)
)。章番号は、同じ名前のページが複数の章に存在する場合、特定のページを指定するために使う。これはたとえば、システムコールの名前とコマンドの名前などが衝突する場合に必要となる。たとえば、man(1)
と man(7)
、exit(2)
と exit(3)
などがある。
多くの man のバージョンでは最近閲覧した数ページのフォーマットされた内容をキャッシュとして保存している。マニュアルファイルのパス設定は環境変数MANPATHにて定義・指定する。このパスの通っていない場所にあるマニュアルは表示されない。また、言語設定が “ja” または “japanese” になっていない場合に、日本語と英語両方のマニュアルが存在する場合は、日本語で表示されない可能性があるので注意が必要。
manコマンドのその他のオプションを知るには、
% man man % man 5 man
というコマンドラインを入力・実行する。
UNIX Programmer's Manual は1971年11月3日に最初に出版された[1]。オンラインのmanページは1971年、ダグ・マキルロイの命令でデニス・リッチーとケン・トンプソンが書いた。後にUNIX System IIIのマニュアルの主執筆者となったTed Dolottaが汎用的なtroff(en:troff)マクロを書き、それをマニュアル向けに修正したものを使っている。当時、マニュアルページシステムによる文書のオンライン化は大きな特長と考えられていた。今日では、UNIX上のコマンドライン・アプリケーションには必ずそのmanページが付属しており、逆にmanページがないアプリケーションは品質が悪いと思われるようになった。実際、Debianプロジェクトなどでは、未だ書かれていないプログラムのmanページまで作っていた。
しかし、各アプリケーションについてひとつのページという形態は複雑で大きなアプリケーションやユーザとやりとりを行うアプリケーションには合わず、グラフィックスなども使えないフォーマット機能も時代遅れになりつつある。アプリケーションが複雑化し、ユーザーが文書がないことに文句を言わないことから、manページシステムは廃れつつあり、後継のシステムが開発されつつある。
基本的には全てのUnix系システムはmanページをサポートし続けているが、多くの場合それ以外のオンライン文書やヘルプを提供している。初期の後継システムのプロジェクトとしては、GNUプロジェクトの "info" システムがあり、これは素朴なハイパーテキストシステムであった。多くのUNIXのGUIアプリケーション(特にGNOMEやKDEの開発環境を使って作られたもの)は、ユーザー向け文書としてHTMLを採用し、yelp
などのHTMLビューアーをアプリケーションに内蔵することが多い。
manページのデフォルトのフォーマットはtroff (en:troff)で あり、troffマクロのman(見た目重視)またはシステムによってはmdoc(意味論重視)を使っている。これによりmanページはPostScriptやPDFに変換でき、様々なフォーマットで表示・印刷可能となっている。
最近のLinuxディストリビューションのmanパッケージには man2html というコマンドがあり、manページをHTMLブラウザで閲覧することも可能である。
2010年、OpenBSDはtroffの代わりにmandocをmanページのフォーマットに採用した。mandocはmanページ専用のコンパイラ/フォーマッタで、PostScript、HTML、XHTML、端末向けの出力を自前で行える。
マニュアルは一般に8つの章に分かれており、以下のように構成されている(BSD系とLinuxでの章立て)。
章 | 内容 |
---|---|
1 | 汎用コマンド |
2 | システムコール |
3 | ライブラリ関数、特に標準Cライブラリ関数 |
4 | 特殊なファイル(主に/devにあるデバイス)とドライバ |
5 | ファイル形式とその使用法 |
6 | ゲームとスクリーンセーバー |
7 | その他 |
8 | システム管理コマンドとデーモン |
UNIX System Vでは章立てが少し異なっている。
章 | 内容 |
---|---|
1 | 汎用コマンド |
1M | システム管理コマンドとデーモン |
2 | システムコール |
3 | 標準Cライブラリ関数 |
4 | ファイル形式とその使用法 |
5 | その他 |
6 | ゲームとスクリーンセーバー |
7 | 特殊なファイル(主に/devにあるデバイス)とドライバ |
いくつかのシステムではマニュアルに以下のような章もある。
章 | 内容 |
---|---|
0 | 標準Cライブラリのヘッダファイル |
9 | カーネル ルーチン |
n | Tcl/Tk キーワード |
x | X Window System |
章は後ろに文字を付与することでさらに分割されている。例えば、3CはCライブラリ、3Mは数学ライブラリなどといった具合である。これに関連して、8章のシステム管理コマンドを 1章の一部として1Mで表すこともある。以下のような文字は章を横断して同じ意味で使われる。
付与文字 | 説明 |
---|---|
p | POSIX仕様 |
x | X Window System文書 |
manページのレイアウトは、単純なテキストとして表示するのに最適化され、何らかの強調やフォント制御も可能ならば行われる。1つのmanページ内の節構成は以下の通りで、常に以下の順序で配置される。
他にも節はあるが、あらゆるマニュアルで共通化されているわけではない。例えば、OPTIONS、EXIT STATUS、ENVIRONMENT、KNOWN BUGS、FILES、AUTHOR、REPORTING BUGS、HISTORY、COPYRIGHTなどがある。
macOSやLinuxでは、manとmdocという2つのgroffマクロのパッケージがmanページ執筆に使える。manの方が古く、UNIXの従来からのフォーマットのmanページを書くことができる。一方mdocは新しく、文書の意味論的構造をよくサポートしている。macOSおよびLinuxでこれらの使い方を知るには、man groff_man
およびman groff_mdoc
というコマンドを実行すればよい。
あるいは、システム内にある個々のmanページのソースコードを見て真似をすればmanページを書ける。macOSとLinuxの場合、通常/usr/share/man
にmanページのソースファイルがある。ソースファイルの場所は、例えばコマンド名がcommand
ならばman -w command
を実行することで得られる。
manページはDocBookやLinuxDocフォーマットで書くこともでき、それをgroffにより変換すればよい。
オンラインで(man
コマンドを使って)manページを見る以外に、manページをPDFに変換して印刷することもできる。macOSとLinuxでは次のように入力する(command
を適当なコマンド名に置き換えること)。
groff -mandoc command.1 >command.ps
gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=command.pdf command.ps
1行目でmanページをPostScriptフォーマットでエクスポートし、2行目でPDFに変換している。これはmanフォーマットでもmdocフォーマットでも機能する。場合によっては、等幅フォントを使って印刷した方が読みやすい場合もある。その場合は上記のgroff
コマンドの-mandoc
オプションの次に-f C
オプションを追加すればよい。
mandocフォーマッタは各種ファイルフォーマットで出力でき、PDFフォーマットも直接サポートしている。
mandoc -Tpdf command.1 >command.1.pdf
mandoc -Tps command.1 >command.1.ps
mandoc -Txhtml command.1 >command.1.xhtml
man(1)
: format and display the on-line manual pages – Linux User Commands Manual (en)この記事は2008年11月1日以前にFree On-line Dictionary of Computingから取得した項目の資料を元に、GFDL バージョン1.3以降の「RELICENSING」(再ライセンス) 条件に基づいて組み込まれている。