macOSにかぎらず、UNIX系OSにおけるシステム管理を考えるとき、使いかたをある程度覚えておかなければならないコマンドの筆頭に挙がるのは「man」ではないだろうか。「man ○○○」の書式で実行すれば、対象とするコマンドのマニュアル(ただし英語)を参照できるのだが、使いかたを知っているかどうかでシステム管理のスキルに大きな差が出る。コマンドは膨大な数が存在し、書式や有効なオプションもまちまちなだけに、すべてを完璧に記憶する必要はない。「man」を効率よく使う術を身につけておけば、それで足りるからだ。

必ず覚えておきたい入力補完機能との合わせ技

まず、引数(調べたいコマンド)の入力方法から。先ほど書式は「man ○○○」と書いたが、バカ正直に頭からタイプしてはいけない。Terminalでデフォルトのシェルに設定されているbashの場合、引数として与えるコマンドの入力補完が効かないからだ。

「man SplitForks」を例に説明してみよう。なにも工夫しなければ、先頭から順にすべての文字をタイプしなければならないが、コマンド名を先に入力するのだ。

bashではコマンド名を入力する途中で「TAB」キーを押すと、それまで入力した文字とコマンド名が一致するものを候補として表示してくれるので(入力補完機能)、まず「S」と入力し「TAB」を押す。すると、目的のSplitForksのほかに「SetFile」などのコマンドが表示されるので、「S」の次の文字(e)も入力してもう一度「TAB」を押す。SplitForksという長々としたコマンドも、タイプミスなく一瞬で入力できたはずだ。

あとはControl+Aでカーソルを行頭へ移動し、「man 」(manのあとにスペース)と入力し、「Enter」を押しコマンドラインとして実行すればOK。スピーディーに実行できれば、それだけmanを利用することへの抵抗感が減るはずで、コマンドはワケがわからないもの、という状態から脱するための第一歩になるはずだ。

  • KTABキーで補完しつつコマンド名を入力(上)、その後Control+Aでカーソルを行頭へ移動し「man 」と入力する(下)

  • 入力補完機能との合わせ技でマニュアルをサッと表示できるようになること、それがコマンドになれるための第一歩だ

検索機能を活用しよう

目的とするコマンドの説明文を表示できたところで、肝心の「読みかた」をマスターしよう。上下のカーソルキーがページスクロール、「q」が閲覧終了のキーということさえ覚えておけば、必要な情報をそこから読み取ることができるはずだ。

しかし、それだけでは目的の情報にたどり着けないかもしれない。「/」キーを押して前方検索モードに入り、知りたいキーワードを入力して「Enter」を押してみよう。一致する文字列が反転表示されたはずだ。この状態で「n」を押すと、文末へ向かって検索が続行され、最終的には検索対象が存在しないことを意味する「(END)」が現れる。なお、逆方向へ検索し直す場合は大文字の「N」を入力すればいい(「?」キーを押すと後方検索モードに入るがそれほど利用価値はない)。

検索する文字列だが、英数字を使うということを除けば特に決まりはない。機能名で探すもよし、「-a」や「-p」などのオプションで探すもよし。macOSのデフォルトでは、ページャ(テキストファイルを閲覧するためのソフトウェア)に「less」を使うよう設定されているので、lessの機能を使い閲覧できると理解すればいい。この機能を使いこなすことがマニュアルを生かすこと、ひいてはワンランク上のシステム管理につながるはずだ。

  • manページを表示中に「/」をタイプすると、前方検索モードに入る(ここでは「HFS」を検索)

  • 「n」と「N」を利用し、検索結果から目的の情報を読み取ろう

「セクション」を知ろう

manで表示できるページは、コマンドの用途により「セクション」に分かれている。セクション1は誰もが実行できる(一般ユーザ向けの)コマンド、セクション2はシステムコール(カーネルの関数)、セクション3はライブラリ関数。セクション4は「/dev」以下のスペシャルファイルで、セクション5は設定ファイル、セクション6はゲーム、セクション7はその他、セクション8はシステム管理用コマンドに利用される。UNIX関連の文書で「route(8)」などという表記を見かけることがあるが、末尾の「8」はセクション8のマニュアルが存在するという意味だ。

複数のセクションに分かれたコマンドはそれほど多くないが、sync(変更済のキャッシュをディスクへ書き出すコマンド)のようにシステムコールと同名のコマンドも存在する。その場合、ただ「man sync」と実行するだけは両セクションが表示されないため、注意が必要になる。

調べたいコマンドに複数のセクションが存在するかどうかは、引数(コマンド名)の前に「-aw」オプションを付けて実行することで確認できる。前述の「sync」を例にすると、「man -aw sync」を実行すればいい。最初に表示された行が、「man ○○○」とだけ実行したときに表示されるページとなる。

複数のセクションがあるコマンドは、「man 4 sync」のように表示したいセクション名を明示するか、「man -a コマンド名」のように「-a」オプションを指定する。これで、存在するはずだが表示できない謎のページはなくなるはずだ。

  • ページが複数のセクションに分かれたコマンドも存在する