試される大地から

furaiboが送る技術ブログ。プログラミングのTipsなど書いていきます。

Unix/Linuxコマンド後ろの括弧内の数字の意味


最近はUnix/Linuxについて、もう一度ちゃんと勉強しなおしています。前はよくわからなかったことも、今やってみるとすんなり理解できるようになっていて成長を感じます。


その中で、書籍中によく出てくるコマンドなどの表記として、

ls(1)、cat(1)、fork(2)

といったような表記を見かけますが、その意味について知ったので以下に記しておきます。



この数字はマニュアルを参照する"man"コマンドのセクション番号を意味しているのだそうです。
セクション番号は以下のようになっています。

番号 セクション内容
1 ユーザコマンド
2 システムコール
3 ライブラリ関数
4 デバイスファイル・デバイスドライバ
5 ファイルフォーマット
6 ゲーム・スクリーンセーバー
7 その他
8 システム管理コマンド・デーモン





具体的な例を挙げてみます。

echo, cat, ls, sed, grep, chmodなどといったコマンドは有名ですが、これらをmanコマンドのセクション番号を付加して表記すると、

echo(1), cat(1), ls(1), sed(1), grep(1), chmod(1)

と書くことができるということになります。



また、fork, exit, read, write, close, signalなどはシステムコールなので、

fork(2), exit(2), read(2), write(2), close(2), signal(2)

と書くことができるというわけです。



また、C言語の関数を例にとって見れば、

printf(3), scanf(3), fprintf(3), memcpy(3), strstr(3)

となります。




わかりにくいように思えていた数字は実は、非常に親切にmanコマンドのセクション番号と、それらがコマンドなのかシステムコールか、といった区分まで教えてくれていたわけです。こうした背景を知ると、Unix/Linuxを学ぶのがいっそう楽しく感じられるようになりました。



manコマンドは

$ man (コマンド名 or システムコール名 or 関数名 or etc.)

のように使います。セクションを明示的に指定する場合には

$ man -u (セクション番号) (コマンド名 etc.)


となります。



参考書籍


「はじめてUNIXで仕事をする人が読む本」を読んでいた際に以上のことが書いてあったので、知っておくべき知識として書き残しました。


教科書的に広く浅く知識がまとまっており、初学者がひと通りの知識を得て、何を学ぶべきか知るのに良い本だと思います。


UNIXの根底にある考え方も学ぶならば、以下の本もおすすめです。

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学