鱧技術

hamo_daisukiの技術メモ

man の使い方(Navigating manual pages)

DistroWatch Weekly, Issue 1059, 26 February 2024 より抜粋
Questions and Answers (by Jesse Smith)(元記事

man の使い方(Navigating manual pages

最近、私はcronジョブの実行に問題を抱えている同僚と話していた。cronジョブとは、スケジュールされた時間に実行されるタスクやコマンドのことである。スケジュールされたジョブは実行されていたが、渡された引数を適切に処理していなかった。彼がトラブルシューティングに取り組んでいる間、私は自分のコンピューターのローカルマニュアルのページにアクセスした。コマンドのパラメータにパーセント記号(%)が設定ファイル(crontabファイルとしても知られている)に含まれており、それがcronによって特殊文字として解釈されてしまっていたのだ。

ちょっとした ことなのだが、私の尊敬する同僚がcrontabのマニュアルページをチェックしたところ("man crontab "を実行)、パーセント記号がどのように異なって解釈されるかについての記述を見つけられなかったからである。一方、私は該当するマニュアルページの該当箇所をすぐに見つけた。たまたま、私たちは2つの異なるマニュアルページを見ていて、どちらも "crontab "という名前だったのだが、彼が役に立たないページを見せられている間に、私は該当するページから探してしまったのだ。なぜだろう?さて、マニュアルページの構成を見てみよう。

ローカルマニュアルページ(しばしば「man pages」と呼ばれる)は、9つの文書カテゴリーに分類されている: 

  1. Executable programs and shell commands
    (プログラムとシェル)
  2. System calls
    システムコール
  3. Library calls
    (ライブラリ)
  4. Special files (例えば /dev ディレクトリにあるようなファイル)
    スペシャルファイル)
  5. File formats and conventions (crontab や /etc/passwd など)
    (ファイルの書式)
  6. Games(ゲーム)
  7. Miscellaneous(その他)
  8. System administration commands (ルート用のコマンド群)
  9. Kernel routines(カーネル

マニュアルのページを別々のカテゴリーに分類することは、いくつかの点で役に立つ。ページのグループをブラウズして目的のものを見つけるのに役立ちます。また、このようにページを整理することで、ソフトウェアをパッケージングする人は、設定ファイルに関する文書(セクション5「ファイルの書式」)と、同じ名前の実行ファイル(セクション1)を分けることができます。しかし、このような構成は問題も引き起こします。つまり、マニュアルページをmanコマンドで検索すると、最初に見つかった名前のエントリーが表示され、必ずしも目的のエントリーが表示されるとは限らないのです。

私の同僚と私の場合、彼が "man crontab "というコマンドを実行すると、manプログラムはカテゴリーを順番に検索し、crontab実行プログラムのマニュアルページをすぐに見つけた。このマニュアルページは "crontab (1) "とも呼ばれていて、実行プログラムのドキュメントがカテゴリー番号1にあるからです。

私は別のアプローチをとりました。コマンド "man -k crontab "を実行すると、タイトルのどこかに "crontab "という単語が含まれているページのリストが表示されました。"k "フラグはキーワード検索であることを表しています。出力はこんな感じでした:

$ man -k crontab
anacrontab (5) - configuration file for anacron
crontab (1) - maintain crontab files for individual users (Vixie Cron)
crontab (5) - tables for driving cron

私はcron table(またはcrontab)のフォーマットに関心があったので、"crontab (5) "というエントリーが正しいように思えました。そして、"man 5 crontab "を実行すると、5番目のドキュメント・カテゴリーにあるcrontabのエントリーが表示されました。もしcrontab実行プログラムのマニュアルページを指定したかったら、"man 1 crontab "を実行します。crontabファイルをフォーマットするためのマニュアル・ページが表示されたので、フォーマットや特殊文字に関する情報を簡単に見つけることができました。

マニュアル・ページは通常、/usr/share/manディレクトリの下に保存され、カテゴリーごとにディレクトリが分けられています。つまり、適切なディレクトリの内容をリストアップすることで、特定のカテゴリーに属するすべてのマニュアルページのインデックスを閲覧できます。例えば、ファイルの書式(カテゴリー5)に関するすべてのドキュメントを見たい場合、次のように実行します: 

ls /usr/share/man/man5

一方、実行可能ファイルに関するすべてのマニュアルページを閲覧したい場合は、以下のコマンドを実行してセクション1のすべてのページを確認します:

ls /usr/share/man/man1

あるページのドキュメントが、別のページの関連ドキュメントを参照していることはよくあります。多くのマニュアルページには、一番下に "See Also "セクションがあり、興味のありそうな他のページをリストアップしています。例えば、crontab実行コマンドのマニュアルページでは、"crontab(5), cron(8) "も参照することを勧めています。最初のページは、スケジュールされたcronジョブを設定するためのファイルフォーマットについて述べています。2番目のページは、鋭い目を持つ読者なら、システム管理に関する8番目のドキュメントのカテゴリーにあることに気づくと思いますが、cronバックグラウンド・サービスの実行と管理方法について述べています。

ローカルのマニュアルページにアクセスして調べる方法についての追加情報は、コマンド "man man "を実行すると、マニュアルページビューアのドキュメントが表示されます。