このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:コマンドの使い方を調べる方法:manコマンド

コマンドの使い方を調べる方法:manコマンド

 Linuxシステムでコマンドの使い方を調べる際、非常に有用なツールとしてmanコマンドがあります。manは、指定したコマンドや設定ファイル、ライブラリ関数などのオンラインマニュアルを表示するためのコマンドです。ここでオンラインマニュアルとは、電子化されたマニュアルという意味であり、インターネット上のマニュアルをウェブブラウザで閲覧するものではありません。

 manはLinuxを使う上で最も基本的なマニュアルであり、その歴史も古く、ほとんどのコマンドに対応するmanページ(マニュアル)が用意されています。--helpオプションによる簡易的なヘルプよりも詳しい解説が記載されており、コマンドの深い理解や応用的な使い方を知る際に非常に役立ちます。また、manはコマンドのマニュアルだけでなく、Linuxの設定ファイルやライブラリ関数などのマニュアルも含まれています。

manコマンドの基本的な使い方

【書式】
man <調べたいコマンド名>

例:catコマンドのマニュアルを表示

これまでに何度か使用してきたcatコマンドのmanページを見てみましょう。

user01@ubuntu:~$ man cat

以下のようなマニュアルが表示されます。

CAT(1)                         User Commands                         CAT(1)

NAME
       cat - concatenate files and print on the standard output

SYNOPSIS
       cat [OPTION]... [FILE]...

DESCRIPTION
       Concatenate FILE(s) to standard output.

       With no FILE, or when FILE is -, read standard input.

       -A, --show-all
              equivalent to -vET

       -b, --number-nonblank
              number nonempty output lines, overrides -n
...(以下省略)...

 manを起動すると、lessコマンドを使ってマニュアルが表示されます。操作方法は通常のlessコマンドと同じで、スペースキーで下にスクロールし、qキーで終了します。

 catコマンドの--helpオプションで表示される内容と比較して、manページではより詳細な説明が記載されていることがわかります。

manページの構成

manページの内容はコマンドによって異なりますが、おおよそ以下の項目で構成されています。

項目内容
名前コマンド名と簡単な説明
書式オプションや引数の指定方法(コマンドの使用方法)
説明コマンドの詳細な説明
オプション利用可能なオプション一覧とその使用方法
実際的な使い方の例
環境変数コマンドが利用する環境変数について
ファイル関連する設定ファイルやデータファイルについて
関連項目関連する他のコマンドやマニュアルへの参照
バグ既知の不具合や問題点について
manページの構成

manコマンド自身のマニュアルを表示

 manコマンドも一つのコマンドであり、マニュアルが用意されています。次のコマンドでmanのマニュアルを見てみましょう。

user01@ubuntu:~$ man man

以下のようなマニュアルが表示されます。

MAN(1)                マニュアルページユーティリティー               MAN(1)

名前
       man - システムリファレンスマニュアルのインターフェース

書式
       man [マンオプション] [[セクション] ページ名 ...] ...
       man -k [apropos オプション] 正規表現 ...
       man -K [マンオプション] [セクション] 用語 ...
       man -f [whatis オプション] ページ名 ...
       man -l [マンオプション] ファイル ...
       man -w|-W [マンオプション] ページ名 ...

説明
       man はシステムのマニュアルページャーです。man に与えられた各ページ引数は、通常プログラム、ユーティリティ、または関数の名前です。これらの引数に関連付けられたマニュアルページが検索され、表示されます。セクションが指定されている場合、man はそのセクション内のみを検索します。デフォルトの動作は、事前定義された順序(DEFAULTS を参照)に従って利用可能なすべてのセクションを検索し、最初に見つかったページのみを表示します。たとえ複数のセクションに同じ名前のページが存在していても同様です。
...(以下省略)...

このように、manコマンドについても詳細な説明が記載されています。

注意manコマンドの出力内容は、Linuxディストリビューションやバージョンによってコマンドの仕様やオプションが異なる場合があります。

キーワードからマニュアルを探す

 コマンド名がわからない場合でも、manコマンドを使ってキーワードから関連するマニュアルを検索することができます。その際に便利なのが、-kオプションです。

【書式】
man -k <キーワード>

例:directoryというキーワードで検索

user01@ubuntu:~$ man -k directory

実行結果

alphasort (3)        - ディレクトリ内のエントリをソートする
basename (1)         - パス名からディレクトリとサフィックスを削除する
bindtextdomain (3)   - メッセージカタログを含むディレクトリを設定する
chacl (1)            - ファイルまたはディレクトリのアクセス制御リストを変更する
chdir (2)            - 作業ディレクトリを変更する
chroot (2)           - ルートディレクトリを変更する
...(以下省略)...

 この中から、目的のマニュアルをmanコマンドで表示すればよいわけです。なお、マニュアル名称の後ろにカッコ付きの数字が付いているのは、後述するセクション番号を表しています。

セクション

 manページは、その内容に応じてセクションと呼ばれるカテゴリに分類されています。先ほどcatコマンドのmanページの冒頭にCAT(1)と表記されていました。このカッコ内の数字がセクション番号です。セクションは以下のように1から9に分かれています。

セクション番号内容
1ユーザーコマンド
2システムコール
3ライブラリ関数
4特殊ファイル(デバイスファイルなど)
5ファイルフォーマットと規約
6ゲームとスクリーンセーバー
7その他(マクロパッケージなど)
8システム管理コマンド(rootユーザー向け)
9カーネルルーチン(Linuxカーネル関連)
セクション

 上記のうち、セクション9の「カーネルルーチン」は比較的最近追加されたもので、ディストリビューションによってはセクション8までしかない場合もあります。

同名のマニュアルが存在する場合

 マニュアルはセクションごとに分かれていますが、異なるセクションに同じ名前のマニュアルが存在することがあります。例えば、crontabのマニュアルはcrontab(1)crontab(5)の2つのセクションに存在しています。この場合、名前だけでなくセクション番号まで指定しないと、望みのマニュアルを正しく表示できません。

crontabは、定期的にコマンドやスクリプトを自動実行するためのスケジュール管理ツールです。

セクション番号を指定してマニュアルを表示

【書式】
man <セクション番号> <名前>

例:crontabのマニュアルをセクション番号で指定

セクション1(ユーザーコマンド)のcrontabマニュアルを表示

user01@ubuntu:~$ man 1 crontab

実行結果

CRONTAB(1)            General Commands Manual            CRONTAB(1)

NAME
       crontab - maintain crontab files for individual users (Vixie
       Cron)

SYNOPSIS
       crontab [ -h]
       crontab [ -u user ] [-n] file
       crontab [ -u user ] [ -i ] { -e | -l | -r }
...(以下省略)...

セクション5(ファイルフォーマット)のcrontabマニュアルを表示

user01@ubuntu:~$ man 5 crontab
実行結果
CRONTAB(5)              File Formats Manual              CRONTAB(5)

NAME
       crontab - tables for driving cron

DESCRIPTION
       A  crontab  file contains instructions to the cron(8) daemon
       of the general form: ``run this command at this time on this
       date''.  Each user has their own crontab,  and  commands  in
       any  given crontab will be executed as the user who owns the
       crontab.   Uucp  and  News  will  usually  have  their   own
       crontabs,  eliminating the need for explicitly running su(1)
       as part of a cron command.
...(以下省略)...

セクション番号を省略した場合

user01@ubuntu:~$ man crontab

実行結果

CRONTAB(1)            General Commands Manual            CRONTAB(1)

NAME
       crontab - maintain crontab files for individual users (Vixie
       Cron)

SYNOPSIS
       crontab [ -h]
       crontab [ -u user ] [-n] file
       crontab [ -u user ] [ -i ] { -e | -l | -r }
...(以下省略)...

最も若いセクション番号(この場合はセクション1)のマニュアルが表示されます。

マニュアルがどのセクションにあるかを確認

 特定のマニュアルページがどのセクションに含まれているかは、manコマンドに-waオプションを指定することで確認できます。

user01@ubuntu:~$ man -wa crontab
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/crontab.5.gz

表示されたマニュアルページのファイルパスの末尾にある数字がセクション番号を示しています。

まとめ

  • manコマンドは、指定したコマンドや設定ファイルなどの詳細なオンラインマニュアルを表示するためのコマンドです。
  • manページの構成:名前、書式、説明、オプション、例、環境変数、ファイル、関連項目、バグなどのセクションで構成されています。
  • キーワード検索man -k <キーワード>で、キーワードに関連するマニュアルを検索できます。
  • セクション番号manページは内容に応じてセクションに分かれており、同名のマニュアルが異なるセクションに存在する場合があります。セクション番号を指定して正しいマニュアルを表示しましょう。
  • 最新の情報を確認:Linuxディストリビューションやバージョンによってコマンドの仕様が異なる場合があるため、システムにインストールされているmanページを参照することが重要です。

 Linuxシステムを効果的に利用するためには、manコマンドを活用してコマンドの使い方や詳細を調べる習慣を身につけましょう。