マニュアルページ

さまざまなLinux ディストリビューションで見られるsedユーティリティのマニュアル ページ。

マニュアルページ(man page は、UnixおよびUnix系オペレーティングシステムで見られるソフトウェアドキュメントの一種です。扱われるトピックには、プログラム、システムライブラリシステムコール、そして場合によってはローカルシステムの詳細が含まれます。ローカルホスト管理者は、特定のホストに関連付けられたマニュアルページを作成およびインストールできます。エンドユーザーは、コマンドに続けてドキュメントが必要な項目名を入力することで、マニュアルページを呼び出すことができます。これらのマニュアルページは通常、リアルタイム作業を行うエンドユーザー、プログラマー、管理者によって要求されますが、印刷用にフォーマットすることもできます。 man

デフォルトでは、は通常、マクロ パッケージやmandocmanなどの書式設定プログラムを使用し、またやなどのターミナル ページャープログラムも使用して、その出力をユーザーの画面に表示します。 nroffmoreless

マニュアルページは、インターネットアクセスを必要としないコマンドであるにもかかわらず、しばしばオンライン形式のソフトウェアドキュメントと呼ばれます[ 1 ] 。これは、マニュアルページが印刷された形式でのみ閲覧可能であるだけでなく、コマンドラインインターフェースのコマンドやグラフィカルユーザーインターフェースのマニュアルページビューアからも閲覧可能であるためです。環境変数MANPATHは、多くの場合、様々なドキュメントページを検索するためのディレクトリパスのリストを指定します。マニュアルページの歴史は、印刷されたドキュメントが一般的だった時代にまで遡ります。 manman

歴史

xman 、マニュアルページを表示するための初期のX11アプリケーション
OpenBSDセクション8の導入マニュアルページをテキストコンソールに表示する

一部のソフトウェアでは、1987年時点で、ドキュメントは印刷されたページ形式で、ユーザーが施設内で利用できるようになっていました。[ 2 ]一部の施設では、ドキュメントはスチール製のバインダーにまとめられ、テーブルやカウンターにボルトで固定された一体型のスチール製閲覧ラックに収納されていました。ページはモジュール情報の更新、交換、正誤表、補遺ごとに整理されていました。マイクロコンピュータに関する一般的なマニュアルは、定期的に更新されるルーズリーフバインダーで販売されていると宣伝されていました。[ 3 ]

Unix の歴史の最初の2年間は、ドキュメントは存在しなかった。[ 4 ] Unix Programmer's Manual は、 1971年11月3日に初めて出版された。最初の実際の man ページは、 1971年にマネージャのDoug McIlroyの強い要望により、Dennis RitchieKen Thompsonによって書かれた。manページとは別に、Programmer's Manual には一連の短い論文も収録されており、その中にはチュートリアル(Unix の一般的な使用方法、Cプログラミング言語、 Yaccなどのツールなど) やオペレーティングシステムの機能の詳細な説明などがあった。マニュアルの印刷版は当初1冊のバインダーに収まっていたが、PWB/UNIXおよびResearch Unix第7版の時点で2巻に分割され、印刷された man ページが第1巻となった。[ 5 ]

後期版のドキュメントは、初版のマニュアルページの簡潔さを踏襲した。リッチーは第3版の序文に「はじめに」のセクションを追加し、ロリンダ・チェリーは第6版第7版に「パープルカード」というポケットマニュアルを提供した。 [ 4 ]ソフトウェアのバージョンはマニュアルの改訂版にちなんで命名された。例えば、 『 Unixプログラマーズマニュアル』の第7版は、Unix第7版、つまりバージョン7に付属していた。 [ 6 ]

4版では、マニュアル ページはtroff組版パッケージ[ 4 ]とそのマクロ セット(マニュアル-manの第 6 版と第 7 版の間で完全に改訂されましたが[ 5 ]、それ以降は大幅に変更されていません) を使用してフォーマットされました。当時、マニュアル ページ システムを通じてオンライン ドキュメントを利用できることは大きな進歩と見なされていました。今日でも、事実上すべての Unix コマンドライン アプリケーションにはマニュアル ページが付属しており、多くの Unix ユーザーはプログラムにマニュアル ページがないことを品質の低さや不完全さの兆候と認識しています。実際、Debianなどの一部のプロジェクトでは、マニュアル ページがないプログラムのために特別な努力を払っています。4.4BSD の最近の後継システムも、システム ドキュメントの主要な形式の 1 つとしてマニュアル ページを配布しています(古いマクロを新しい に置き換えました)。 -man-mdoc

manコマンドのman-db版には、00:30に実行すると「gimme gimme gimme」を返すという隠しイースターエッグがありました(これはABBAの曲「 Gimme! Gimme! Gimme! (A Man After Midnight) 」への言及です) 。これは2011年に導入されましたが[ 7 ]、最初は制限され[ 8 ] 、最終的に発見されて2017年に削除されました[ 9 ] 。 [ 10 ]

書式設定

FreeBSD man(1)マニュアルページの一部。PDF形式にタイプセットされています

マニュアルページのデフォルトフォーマットはtroffで、マクロパッケージman (外観重視)または mdoc (意味重視)のいずれかを使用します。これにより、マニュアルページをPostScriptPDF 、その他様々な形式で表示または印刷することが可能になります。

一部のUnixシステムにはman2htmlコマンドのパッケージがあり、これを使用するとHTMLブラウザを使ってmanページを閲覧できます。groffとman-dbを搭載したシステムでは、代わりに高品質のネイティブHTML出力(man --html)を使用する必要があります。GNU EmacsプログラムWoMan(「WithOut man」に由来)は、エディタからmanページを閲覧できます。[ 11 ]

2010年、OpenBSDはマニュアルページのフォーマットにtroffを廃止し、代わりにPostScriptHTMLXHTML 、端末出力をネイティブサポートするマニュアルページ専用のコンパイラ/フォーマッタであるmandocを導入しました。mandocは、マニュアルページで使用されるtroffのサブセット、特にmdocマクロを使用するもののみをサポートすることを目的としています。

オンラインサービス

さまざまな Unix 系システムのマニュアル ページへのオンライン アクセスを提供する Web サイトは数多くあります。

2013年2月、BSDコミュニティは新しいオープンソースのmdoc.suサービスを立ち上げました。このサービスは、*BSDマニュアルページ用の独自のnginxベースの決定論的URL短縮サービスを通じて、主要な現代のBSDプロジェクトのman.cgiスクリプトへのアクセスを統合し、短縮しました。[ 12 ] [ 13 ] [ 14 ]

Linuxでは、システム固有のマニュアルを提供するためにman7.orgサービスが設立されました。[ 15 ] ManKierサービスはより幅広い選択肢を提供し、TLDRページも統合しています。[ 16 ]

コマンドの使用法

Unix コマンドのマニュアル ページを読むには、次のように入力します。

man <コマンド名> 

ページは伝統的に「名前(セクション)」という表記法で参照されます。例:ftp(1)。セクションは、トピックが参照されるさまざまな方法を指します。例:システムコール、シェル(コマンドライン)コマンドまたはパッケージ、パッケージの設定ファイル、コーディング構造/ヘッダーなど。

システムコール、ユーザーコマンドマクロパッケージの名前が一致する場合など、同じページ名がマニュアルの複数のセクションに出現することがあります。例としてはman(1)、 とman(7)、またはexit(2)と などがexit(3)あります。デフォルト以外のマニュアルセクションにアクセスするための構文は、man の実装によって異なります。

たとえば、Solaris および illumos では、読み取りの構文はprintf(3C)次のようになります。

man -s 3cプリントf

Linux および BSD 派生システムでは、同じ呼び出しは次のようになります。

3 printf

これは、マニュアルページのセクション3でprintfを検索します。実際のファイル名には、おそらくセクションが含まれています。この例を続けると、 printf.3.gz は、セクション3にあるprintfの圧縮されたマニュアルページファイルになります。

マニュアルセクション

マニュアルは一般的に8つの番号付きセクションに分かれています。今日のほとんどのシステム(例:BSD[ 17 ] macOSLinux[ 18 ] Solaris 11.4 )は、Research Unix [ 19 ] [ 20 ]で使用されている番号体系を継承していますが、System Vでは異なる順序が使用されています。[ 21 ]

一般 システムV 説明
1 1 一般的なコマンド
2 2 システムコール
3 3 ライブラリ関数、特にC標準ライブラリをカバーする
4 7 特殊ファイル(通常はデバイス、/dev にあるもの)とドライバー
5 4 ファイル形式と規則
6 6 ゲームスクリーンセーバー
7 5 その他
8 100万 システム管理コマンドデーモン

POSIX API はセクション 2 と 3 の両方に存在し、セクション 2 にはシステム コールとして実装される API が含まれ、セクション 3 にはライブラリ ルーチンとして実装される API が含まれます。

一部のシステムでは、次のような追加のセクションが含まれる場合があります。

セクション 説明
0 C ライブラリヘッダー ファイル(Unix v6)
9 カーネルルーチン(FreeBSD、SVR4、Linux)[ 20 ] [ 17 ]
l LAPACKライ​​ブラリ関数[ 22 ]
n Tcl / Tkコマンド
× Xウィンドウシステム

一部のセクションは接尾辞によってさらに細分化されます。例えば、一部のシステムでは、セクション3CはCライブラリ呼び出し用、セクション3Mは数学ライブラリ用などです。この結果、セクション8(システム管理コマンド)は、メインコマンドセクションのサブセクション1Mに格下げされることがあります。サブセクションの接尾辞の中には、セクション間で共通の意味を持つものがあります。

サブセクション 説明
pPOSIX仕様
×X Window System のドキュメント

(セクション 3 は例外となる傾向があり、さまざまな言語の接尾辞が多数あります。)

のバージョンによっては、man最後に閲覧した数ページのフォーマット済みバージョンをキャッシュするものがあります。その一つがcat pageで、これは単にページャーにパイプされて表示されます。

レイアウト

すべてのマニュアルページは、シンプルなASCIIテキストディスプレイでの表示​​に最適化され、ハイライトやフォント制御が一切行われない共通のレイアウトに従っています。セクションには以下が含まれます。[ 23 ] : マニュアルの構造

名前
コマンドまたは関数の名前と、その機能の 1 行の説明が続きます。
概要
コマンドの場合は、実行方法とコマンドラインオプションの正式な説明。プログラム関数の場合は、関数が受け取るパラメータのリストと、その宣言を含むヘッダーファイル。
説明
コマンドまたは関数の機能に関するテキストによる説明。プログラムの場合、このセクションには利用可能なコマンドラインオプションの説明が含まれることがよくあります。
一般的な使用例をいくつか示します。
参照
関連するコマンドまたは関数のリスト。

その他のセクションが存在する場合もありますが、これらはmanページ間で十分に標準化されていません。一般的な例としては、オプション、終了ステータス、戻り値、環境、バグ、ファイル、著者、バグ報告、履歴、著作権などがあります。

オーサリング

manマニュアルページは、古いマクロでも新しいマクロでも記述できますdoc[ 24 ]マクロmanセットは、タイトル行、セクションヘッダー、(太字、小文字、斜体)フォント、段落、インデントの追加/削減に関する指示を含む、最小限のリッチテキスト機能を提供します。 [ 25 ]新しいmdoc言語は本質的によりセマンティックであり、プログラム名、概要、関数名、著者名など、ほとんどの標準的なセクションに特化したマクロが含まれています。この情報は、mandocなどのプログラムによるマニュアルのセマンティック検索の実装に使用できます。スタイルを直接制御する指示も含まれていますが、特殊なマクロでほとんどのユースケースをカバーできると予想されます。[ 23 ] mandoc プロジェクトと groff プロジェクトはどちらも、新しいドキュメントの推奨フォーマットを検討しています。[ 26 ]mdoc

troffにとって、マニュアルページは10ポイントのローマン体でレイアウトされたテキストですが、マニュアルページは紙にレイアウトされるのではなく端末(TTY)で表示されるため、この区別は通常意味を持ちません。その結果、「小さいフォント」マクロはほとんど使用されません。[ 27 ]一方、太字と斜体のテキストはECMA-48を介して端末でサポートされており、groffはgrottyサポートしている端末を検出すると、要求に応じてそれらを出力します。しかし、BSDのマニュアルドキュメントは、タイプライターのバックスペースとオーバーストライクのシーケンスを介してのみ、太字と下線(斜体の代わりとして)のテキストをサポートしており、これはtroffによってECMA-48に変換される必要がありますless[ 28 ] [ 29 ]

あまり不自然でない形式の文書をマニュアルページに変換するツールがいくつか使われてきました。例としてはhelp2man、出力と追加のコンテンツを受け取り、--helpマニュアルページを生成します。[ 30 ]マニュアルは前述の出力よりほとんど役に立たないでしょうが、GNU プログラムでは主要なドキュメンテーションシステムが texinfo なので、これは問題になりません。[ 31 ] pandoc、ronn、md2manなど、多くのツールがMarkdownからマニュアルページへの変換をサポートしています。これらすべてのツールはman形式を出力します。Markdown は の意味内容に一致するほど表現力がないためですmdoc。DocBookは man(7) コンバータが組み込まれていますが、mandoc の作者[ 32 ]によると、品質はひどいとのことで、別途 mdoc(7) コンバータを書いています。

マニュアルページは通常英語で書かれていますが、システムによっては他の言語への翻訳が利用できる場合があります。GNUman-dbとmandocはman、サブディレクトリ配下のローカライズされたマニュアルページを検索することが知られています。[ 33 ] [ 18 ] : 概要 [ 17 ]

代替案

GNUプロジェクトの初期のシンプルなハイパーテキストシステムである「 」システムmanを除けば、それほど人気を博した代替手段はほとんどありません。また、 TLDRページ( )と呼ばれるサードパーティのプロジェクトもあり、これはチートシートに似た、一般的なユースケース向けの簡単な例を提供しています。[ 34 ]infotldr

さらに、一部のUnix GUIアプリケーション(特にGNOMEおよびKDE開発環境を使用して構築されたもの)では、エンドユーザー向けにHTML形式のドキュメントが提供されており、アプリケーション内でヘルプを閲覧するためのHTMLビューアが組み込まれていますyelp。EmacsのHTMLシステムもTexinfoに取って代わる予定です。[ 35 ]

参照

参考文献

  1. ^ "man(1)" . FreeBSD 一般コマンドマニュアル. 2023年1月30日時点のオリジナルよりアーカイブ2023年7月15日閲覧。
  2. ^ ASTMコンピュータシステム規格(第2版)アメリカ材料試験協会、1987年、136ページ。ISBN 978-0-8031-1580-4システムの運用に必要な用紙、用紙、リボン、磁気記憶媒体、その他の消耗品を注文してください。また、書類、プリントアウト、磁気テープリール、ディスクパックなど、ファイルキャビネット、収納キャビネット、ラック、バインダー、その他のオフィス機器も注文してください。
  3. ^ Adam Osborne (1969年6月). 「OSBORNE/McGraw-Hill社がマイクロコンピュータ入門を発表」 . Software Age .
  4. ^ a b c McIlroy, MD (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (技術レポート). CSTR. ベル研究所. 139. 2017年11月11日時点のオリジナルよりアーカイブ(PDF) . 2015年2月1日閲覧
  5. ^ a bイアン・ダーウィン、ジェフリー・コリアー「UNIXの進化:1975-1984 パートI - 多様性」2012年7月17日時点のオリジナルよりアーカイブ。 2012年12月22日閲覧1984年11月、 Microsystems 5 (11)に初出掲載。
  6. ^フィードラー、ライアン(1983年10月)「Unixチュートリアル / パート3:マイクロコンピュータ市場におけるUnix」 BYTE 132ページ。 2015年1月30日閲覧
  7. ^ “GIT commit 002a6339b1fe8f83f4808022a17e1aa379756d99” . 2017年12月4日時点のオリジナルよりアーカイブ2017年11月22日閲覧。
  8. ^ “GIT commit 84bde8d8a9a357bd372793d25746ac6b49480525” . 2018年9月5日時点のオリジナルよりアーカイブ2017年11月22日閲覧。
  9. ^ “GIT commit b225d9e76fbb0a6a4539c0992fba88c83f0bd37e” . 2020年11月9日時点のオリジナルよりアーカイブ。 2018年9月25日閲覧
  10. ^ "「なぜ人間は 00:30 に「gimme gimme gimme」と印刷するのか?」. 2017年11月21日時点のオリジナルよりアーカイブ。2017年11月22日閲覧。
  11. ^ライト、フランシス J. 「WoMan: Unix マニュアルページ「WO (without) Man」を参照」GNU . 2020年11月11日時点のオリジナルよりアーカイブ。2020年8月3日閲覧。
  12. ^ Pali, Gabor編 (2013年5月12日). 「FreeBSD 四半期ステータスレポート、2013年1月~3月」 . FreeBSD . 2014年12月22日時点のオリジナルよりアーカイブ。 2014年12月25日閲覧
  13. ^ Murenin, Constantine A. (2013年2月19日). 「mdoc.su、短縮マニュアルページURLの発表」 . [email protected] (メーリングリスト). 2014年8月7日時点のオリジナルよりアーカイブ。 2014年12月25日閲覧
  14. ^ Murenin, Constantine A. (2013年2月23日). 「mdoc.su — FreeBSD、OpenBSD、NetBSD、DragonFly BSDのショートマニュアルページURL」 . 2014年12月17日時点のオリジナルよりアーカイブ。 2014年12月25日閲覧
  15. ^ 「Linux man pages online」 . man7.org . 2020年5月7日時点のオリジナルよりアーカイブ2020年5月5日閲覧。
  16. ^ 「About」 . ManKier . 2020年4月25日時点のオリジナルよりアーカイブ2020年5月5日閲覧。
  17. ^ a b cman(1)  –  FreeBSD一般コマンドマニュアル
  18. ^ a bman(1)  –  ManKier.com のLinux一般コマンドマニュアル
  19. ^ 「Manual Pages for Research Unix Eighth Edition」 . man.cat-v.org . 2020年6月30日時点のオリジナルよりアーカイブ2020年5月6日閲覧。
  20. ^ a b “Unix Programmer's Manual - Introduction” . www.bell-labs.com . 1971年11月3日. 2020年6月1日時点のオリジナルよりアーカイブ2020年5月6日閲覧。
  21. ^ 「System V release 4 manuals」 . bitsavers.trailing-edge.com . 2020年8月3日時点のオリジナルよりアーカイブ2020年5月6日閲覧。
  22. ^ "lapack (l) - Linux Man Pages" . www.systutorials.com . 2023年3月11日時点のオリジナルよりアーカイブ2021年5月29日閲覧。
  23. ^ a bmdoc(7)  –  FreeBSDその他の情報マニュアル
  24. ^groff_tmac(5)  – ManKier.com のLinuxファイル形式マニュアル
  25. ^man(7)  – ManKier.com のLinux雑学マニュアル
  26. ^ "Groff Mission Statement - 2014" . www.gnu.org . 2020年12月3日時点のオリジナルからのアーカイブ2021年1月2日閲覧。man (7)の作業と並行して、mdoc(7)も積極的にサポートされ、その利用が促進されます。
  27. ^ "man" . GNU Troffマニュアル. 2019年12月24日時点のオリジナルよりアーカイブ。 2019年12月31日閲覧
  28. ^ 「noshユーザー空間仮想端末のマニュアルページにおけるイタリック体と色」jdebp.eu . 2021年1月28日時点のオリジナルよりアーカイブ2021年1月21日閲覧
  29. ^mandoc(1)  –  FreeBSD一般コマンドマニュアル. 「フォントスタイルはバックスペースエンコーディングを使用して適用されます...」
  30. ^ “help2man リファレンスマニュアル” . 2023年3月6日時点のオリジナルよりアーカイブ2023年3月5日閲覧。
  31. ^ 「Man Pages (GNU Coding Standards)」 . www.gnu.org . 2023年3月5日時点のオリジナルよりアーカイブ。 2023年3月5日閲覧
  32. ^ Ingo Schwarze. 「新しい mandoc -mdoc -T markdown コンバータ」 . undeadly.org . 2023年3月5日時点のオリジナルよりアーカイブ。 2023年3月5日閲覧著者による具体的な苦情については、Ingo Schwarze (2014年2月28日) の「Re: Groff man pages (tangential to Future Redux)」参照してください。Groff (メーリングリスト)。2023年3月5日時点のオリジナルからのアーカイブ。
  33. ^ 「コマンドライン - Linuxのmanページ(様々な言語)」Ask Ubuntu2023年3月11日時点のオリジナルよりアーカイブ。 2020年5月5日閲覧
  34. ^ 「TLDRページ」 . tldr.sh. 2020年4月27日時点のオリジナルよりアーカイブ2020年5月5日閲覧
  35. ^ Raymond, Eric S. "Re: [Groff] man pages (tangential to Future Redux)" . groff (メーリングリスト). 2023年3月5日時点のオリジナルよりアーカイブ。 2023年3月5日閲覧– lists.gnu.org経由。