📖

わかってそうでわかってなかったmanの見方

に公開

あまり使う機会のないmanのマニュアル

manでマニュアルが見れることはわかっているけど、日本人エンジニアの9割が共感できるであろう悩みが英語なんだよなー・・・だろう。
AIで気軽に精度高く翻訳できる今、manの英語を読めなくてもAIに翻訳して教えてもらうことは容易だろう。

ということで、manについて改めて入門してみた。

manには何が書いてあるのか

manに書かれているのはコマンドの説明だけだと思っていたのだが、実はmanにはコマンド以外にも実に様々な観点のマニュアルが用意されている。
例えばpasswdという名前のマニュアルは複数個用意されており、passwdコマンドについてのマニュアルと、/etc/passwdファイルについてのマニュアルが用意されている。

その時にコマンドの説明なのか、ファイルの説明なのかを分類してくれるのがセクション番号である。
セクション番号ごとにざっくり何について説明するマニュアルなのかが分類されている。

セクション番号 内容 代表的な例
1 実行プログラムまたはシェルコマンド ls(1), cp(1), systemctl(1)
2 システムコール
カーネルが提供する関数。
open(2), read(2)
3 ライブラリ呼び出し
プログラムライブラリに含まれるC言語関数など。
printf(3), socket(3)
4 特殊ファイル
/dev ディレクトリ以下に存在するデバイスファイルなど。
null(4), random(4)
5 ファイルの書式と規約
設定ファイルのフォーマットなど。
passwd(5), fstab(5), systemd.service(5)
6 ゲーム fortune(6)
7 その他いろいろ
概要、マクロパッケージ、規約など。
bootup(7), man-pages(7), systemd.directives(7)
8 システム管理コマンド
主にrootユーザーが使用する管理用コマンド。
reboot(8), fsck(8), mount(8)
9 カーネルルーチン
カーネル内部の関数など(非標準)。
-

passwdの例で言うと、コマンドについてのマニュアルを見たかったらセクション番号1番を読めばいいし、/etc/passwdファイルのマニュアルを読みたかったら5番のマニュアルを読めばいい。

manには何のマニュアルが用意されているの?

マニュアルはmandbというデータベースで管理されているらしい。
このデータベースをユーザが直接いじることは稀だろうから、あまり意識することはないが、とりあえず何のマニュアルがあるのかを知る必要がある。

そんな時に役立つのがaproposコマンドとwhatisコマンドだ。

aproposコマンドはざっくり一致するものを引っかけてくれる検索機能である。
例えば、以下のように実行するとnetworkに引っかかったマニュアルの一覧が出力される。

apropos network

whatisコマンドはマニュアル名に完全一致するものを検索してくれる。
以下のコマンドを実行すると、マニュアル名と()内にセクション番号を表示してくれる。

# whatis passwd
passwd (1)           - change user password
passwd (1ssl)        - OpenSSL application commands
passwd (5)           - the password file

passwdコマンドではなく、/etc/passwdファイルのマニュアルを読みたかったらman 5 passwdという感じでコマンド実行すればよい。

manの概要はここまで。
肝心の中身の読み方はまた今度。

Discussion