Help us understand the problem. What is going on with this article?

manの読み方(初心者向け)

More than 3 years have passed since last update.

基本的にLinuxを前提にしています。

セクション

manページは1~8のセクションに分かれている。

  1. コマンド
  2. システムコール
  3. ライブラリ関数(C言語)
  4. スペシャルファイル(/dev/)
  5. 設定ファイル
  6. ゲーム
  7. 雑多な事(慣習、プロトコル、文字コードなど)
  8. システム管理

例えばman printfとするとセクション1のprintfコマンドのmanが表示される。
C言語のprintf関数のmanを見たいときはman 3 printfのようにセクション番号を指定する。
man -a printfのように-aをつけると、全てのセクションで見つかったものを順番に表示する。

C言語の関数名やシステムコール名をfork(2)printf(3)のように数字つきで書くことがあるが、これは引数ではなく、manのセクション番号を表している。つまりforkはシステムコールで、printfはライブラリ関数である。

SYNOPSISの表記法

以下のman manを例にとって説明する。
http://man7.org/linux/man-pages/man1/man.1.html

SYNOPSIS
    man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L
    locale] [-m system[,...]] [-M path] [-S list] [-e extension] [-i|-I]
    [--regex|--wildcard] [--names-only] [-a] [-u] [--no-subpages] [-P
    pager] [-r prompt] [-7] [-E encoding] [--no-hyphenation]
    [--no-justification] [-p string] [-t] [-T[device]] [-H[browser]]
    [-X[dpi]] [-Z] [[section] page ...] ...
    man -k [apropos options] regexp ...
    man -K [-w|-W] [-S list] [-i|-I] [--regex] [section] term ...
    man -f [whatis options] page ...
    man -l [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L
    locale] [-P pager] [-r prompt] [-7] [-E encoding] [-p string] [-t]
    [-T[device]] [-H[browser]] [-X[dpi]] [-Z] file ...
    man -w|-W [-C file] [-d] [-D] page ...
    man -c [-C file] [-d] [-D] page ...
    man [-?V]

表記法の意味:

   太字               そのままタイプするテキスト
   斜体(下線)        適切な引数で置き換えるべきテキスト
   [-abc]             [ ] の中は省略可能。-a -b -cの任意の組み合わせ
   -a|-b              どちらか一方
   argument ...       ... は繰り返しを意味する
   [expression] ...   [ ] の中全体の繰り返し

ごく稀にこのルールに従っていないmanもあるが、このルールは覚えておくとよいと思う。
斜体は表示できない端末では下線つきで表示される。

このman manの場合は8種類の構文が表示されているが、これらはそれぞれ別の構文と考えるべき。例えば

       man -w|-W [-C file] [-d] [-D] page ...
       man -c [-C file] [-d] [-D] page ...

と書いてあるので-w-cいうオプションがあることが分かるが、これらは同時には使えない。

$ man -w -c ls
man: -c -w : 相互に利用できないオプションです
Try 'man --help' or 'man --usage' for more information.

man pageの表記法や慣習について詳しくはman 7 man-pagesに書いてある。
http://man7.org/linux/man-pages/man7/man-pages.7.html
(ちなみにこのman7.orgの運営者はマイケル・ケリスク。かのバイブル「Linuxプログラミングインタフェース」の著者)

セクション7にはけっこう面白いものがあるので暇な時に眺めてみることをおすすめ。

自分でmanページや--helpを書く場合は

docoptを参考にすると良いかもしれない。これがデファクトスタンダードと言えるかは議論の余地があるが、--helpを書く時の、一つの標準を示してくれている。Pythonのライブラリなので、Pythonで書いている場合は色々な恩恵を受けられる。
http://docopt.org/

気をつけること

コマンドのmanを見るときは、設定ファイルのmanがセクション5にないかも確認するとよい。たいていは末尾のSEE ALSOに書いてある。例えばman crontabとするとcrontabコマンドが表示されるが、SEE ALSOにcrontab(5)と書いてあるので、man 5 crontabで設定の書き方が読めることが分かる。

Linuxは雑多なパッケージの寄せ集めなので、SEE ALSOに書いてあるman pageがない場合もある。

日本語に翻訳されているmanは古いものが多い。LANG=C manで英語版を確認したい(オプションが増えていることがよくある)。

末尾に「GNU coreutils 8.22」のようにコマンドの所属パッケージが書いてある事が多い。パッケージを意識しておくと次のようなメリットがある。

  • 「これはcoreutilsに含まれているからちゃんとメンテナンスされているだろう」とか「他のディストロでも使えるだろう」と当たりがつけられる。
  • パッケージの公式サイトに行くともっと詳細なドキュメントがある場合がある。特にGNUのパッケージはinfoの方が詳しい

Tips

ASCII文字コード表

man asciiでASCII文字コード表を表示できる。

C言語の演算子の優先順位

man operator

manファイルの置き場所

通常は/usr/share/man/に置いてある。
man -w lsのようにしてmanファイルの場所を調べられる。
環境変数$MANPATHを指定すると、それ以外の検索パスを追加できる。このときMANPATH=:/path-to-manのように先頭にコロンをつけないと、それ以外のパスが検索されなくなり、例えばman lsができなくなってしまうので注意。

ファイルを指定

man ./latin1.7.gzのようにmanファイルへのパスを指定すると、そのファイルを表示できる。

manのカラー化

以下を~/.bashrc(または~/.zshrc)に書いておくと、manの太字と下線の部分が色付けされるようになる。

~/.bashrc
man() {
    env LESS_TERMCAP_mb=$'\E[01;31m' \
    LESS_TERMCAP_md=$'\E[01;38;5;74m' \
    LESS_TERMCAP_me=$'\E[0m' \
    LESS_TERMCAP_se=$'\E[0m' \
    LESS_TERMCAP_so=$'\E[38;5;246m' \
    LESS_TERMCAP_ue=$'\E[0m' \
    LESS_TERMCAP_us=$'\E[04;38;5;146m' \
    man "$@"
}

色は31, 74, 246, 146の部分を置き換えれば変えられる。
色番号の一覧:http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html

mb=ブリンクモード開始, md=ダブルブライトモード開始, mb=装飾モード終了
se=強調終了、so=強調開始、ue=下線終了、us=下線開始
http://www.gnu.org/software/termutils/manual/termcap-1.3/html_mono/termcap.html#SEC44

参考:ArchWiki: man ページ

aosho235
1981年生まれ。駅すぱあとの会社で新規サービスを開発しています。好きなものはOS~ミドルウェアのレイヤー、開発を楽にするためのツールやフレームワークの整備、自分自身が便利だと思うものを作ること。最新技術を追うことより、自分が自信を持って使える技術で効率的に開発することを好みます。
https://aosho235.com/
val
経路検索システム「駅すぱあと」をはじめ、全国のデータと高い信頼性をベースにさまざまなサービスを展開。
https://www.val.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away