manコマンドを理解する | Linuxコマンド

manコマンドについて、ノートを残します。

manコマンドを使えば、マニュアルを表示させることができます。
使い方の例

$ man ls

これでlsコマンドのマニュアルが表示されます。

また、セクションの指定をすることによって複数種類のマニュアルを読むこともできます。



Introduction

manコマンドは、一番使う最重要コマンドです。
これさえあれば、コマンドの使い方がわからなくてもマニュアルを調べることができます。

もちろん、googleで検索すればコマンドの使い方を解説する記事など溢れるほど出てきますが、やはり偉大な製作陣の手によるマニュアルが一番情報量が多く正確です。
また、著者が有名人ばかりなのも面白い。 lsコマンドのマニュアルで"Richard M. Stallman"に遭遇した時は興奮してしまいました。


Results

manのマニュアルを読む

まずはmanコマンド自身のマニュアルを読んでみます。

$ man man
~
DESCRIPTION
       man is the system's manual pager.  Each page argument given to man is
       normally the name of a program, utility or function.  The manual page
       associated with each of these arguments is then found and  displayed.
~

プログラムやユーティリティ、関数の名前などをmanに渡せば、関連するマニュアルページを表示してくれるそうです。
マニュアルは"q"を押せば終了されます。

例えばlsのマニュアルを表示するには、

$ man ls

とすれば、lsについてのマニュアルが表示されます。

LS(1)                           User Commands                          LS(1)

NAME
       ls - list directory contents
~

さて、ここで面白いのがこのマニュアル、よく見ると最初の行にLS(1)とあります。
(1)があるのなら、(2)など他のものもあるのでしょうか。 気になります。

マニュアルのセクションを指定できる

調べてみると、どうやらこのLS(1)の(1)は、セクションを示しているようです。 再びmanのマニュアルを読み進めます。

~
       A  section, if provided, will direct man to look only in that section
       of the manual.  
~
EXAMPLES
~
       man man.7
           Display the manual page for macro package man from section 7.
~

セクションを指定してmanを実行すれば、そのセクションのマニュアルが表示される、ということです。
上の例man man.7では、manコマンドのマニュアルの、セクション7を指定しています。

そしてこのセクション、1から9までそれぞれ内容が決まっているようです。
manマニュアルにその内容が記載されています。

~
       1   Executable programs or shell commands
       2   System calls (functions provided by the kernel)
       3   Library calls (functions within program libraries)
       4   Special files (usually found in /dev)
       5   File formats and conventions eg /etc/passwd
       6   Games
       7   Miscellaneous  (including  macro  packages and conventions), e.g.
           man(7), groff(7)
       8   System administration commands (usually only for root)
       9   Kernel routines [Non standard]
~

この中では、1: シェルコマンドについてのマニュアルしか今は読んだことがないのですが、他にもたくさん面白そうなものがあります。
6: Gamesなんてものもあって驚きました。

ところで、それぞれのマニュアルにセクションが1から9まですべて存在しているわけではありません。
1から9までのうち、必要な内容に即したセクションが存在しています。

したがって、マニュアルのどのセクションが存在しているのか、検索できると便利です。

マニュアルを検索できる | man -k

manコマンドには、マニュアルを検索する便利なオプション"-k"があります。
manマニュアルより、

       man -k printf
           Search  the short descriptions and manual page names for the key‐
           word printf  as  regular  expression.   Print  out  any  matches.

オプション"-k"を渡せば、検索してマッチしたものを表示してくれるそうです。

ちなみにこの例ではman -k printfで"printf"のマニュアルを検索しています。
"printf"の検索結果は"printf (1)"一つのみですが、複数のセクションを持ったものを検索すれば、ターミナル上に複数表示されるわけです。


Discussion

manコマンドの使い方を記録しました。

manコマンドにはお世話になっております。
思わぬ記述やオプションが見つかった時など、大層満たされた気持ちになります。

とはいえ、英語の記述を素早く読めるかといいますと、なかなかそうはいきません。
昔だれかが、最も重要なプログラミング言語は英語である、と言っていたのを思い出しました。
実際、wikipediaなどのネット上の情報も、日本語ページより英語ページの方が圧倒的に情報量が多いことがほとんど。
なるべく早く、英語にも慣れていきたいものです。