ここ数年でUbuntuの知名度もあがり、Web上にはさまざまなUbuntuの情報やノウハウが蓄積されてきました。検索エンジンを使えば、Web上の膨大な情報から手軽に情報を集めることができるため、わからないことがあるとついググってしまいがちです。しかし、Web上にある記事が、自分のシステムについて正しく解説をしているという保証はどこにもありません。それよりも自分のシステムに用意されたマニュアルの方が信用できるというものです。伝統的なUnixシステムにはmanpageと呼ばれるオンラインマニュアルが用意されています。システムにインストールされているコマンドの使い方や設定ファイルの記述方法は、このマニュアルページを参照することでだいたい解決ができるようになっています。
そこで今週のレシピは、伝統的なUNIXマニュアルのさまざまな読み方を紹介します。ググる前に一度manに目を通してみると、幸せになれるかもしれません。
端末でマニュアルを読む
もっとも基本的なmanの読み方は、端末でmanコマンドを使うことです。manコマンドの引数に読みたいマニュアルのページ名(コマンド名や関数名など)を渡すことで、そのマニュアルが端末内のページャで表示されます(ページャにはlessコマンドが使用されます)。lessの使い方がわからない場合は、'h'キーを押してヘルプを確認しておきましょう。基本的な操作は、j/kで一行ずつ上下スクロール、d/uで半画面ずつ前後に移動、f/bで一画面ずつ前後に移動、/(スラッシュ)で検索、nで次を検索、Shift+nで前を検索、qで終了です。
マニュアルには章立てがあり、一般的には表にある8つの章にわけられています。manコマンドに章番号を渡せば、マニュアルを検索する章を限定することが可能になります。もしも同名のマニュアルが複数の章にあった場合でも、検索する章を限定することで意図しないマニュアルが表示されてしまうことを回避できるのです。
表1 マニュアルの章立て
1 | 実行プログラムやコマンド |
2 | システムコール |
3 | ライブラリ関数 |
4 | スペシャルファイル |
5 | ファイルのフォーマット(例えば /etc/passwd など) |
6 | ゲーム |
7 | マクロのパッケージ(例えば man(7), groff(7) など) |
8 | システム管理用のコマンド |
Emacsとwoman
端末でmanを読むことはできますが、これではあまりに不便です。そこで、みんな大好きEmacsの出番ですね。Emacsにはwoman[1]というmanを読むためのインターフェイスが用意されています。M-x womanを実行すると、ミニバッファに"Manual Entry:"というプロンプトが表示されますので、表示させたいマニュアル名を入力しましょう。もちろんTabやC-iでマニュアル名を補完することができます。
バッファに表示されたマニュアルは、当然C-nやC-vといったキーで読み進めることができますが、セクション単位で移動することもできます。一般的にマニュアルはSYNOPSIS、COPYRIGHT、DESCRIPTION、OPTIONSといったセクションにわけて記述がされており、バッファ上でn/pキーを押すことで、それぞれ前後のセクションの先頭へ直接ジャンプすることができます。gキーを押すとミニバッファにセクション名の入力が促され、任意のセクションへのジャンプができます。もちろんここでもセクション名をTabで補完できます。sキーはマニュアルの最後にある"See Also"セクションへジャンプします。See Alsoセクションにあげられているマニュアルにカーソルを合わせた状態でrキーを押せば、該当するマニュアルを別バッファに開くこともできます。関連する別のマニュアルをその場で参照したい時に役立つでしょう。
ブラウザでマニュアルを読む
man2htmlパッケージを利用することで、マニュアルをブラウザから見ることができます。man2htmlパッケージのインストールと同時にApache2 Webサーバがインストールされ、ローカルでWebサーバが起動します。インストールが完了したらFirefoxなどのWebブラウザを起動し、http://localhost/cgi-bin/man/man2htmlへアクセスしてみてください。
man2htmlでは、テキストボックスにマニュアル名を入力してマニュアルを検索できる他、セクションごとの全マニュアル一覧から、見たいマニュアルを探せます。常時起動しているであろうWebブラウザでマニュアルを閲覧できるのは、非常に便利と言えるでしょう。
マニュアルの全文検索
swish++というドキュメント検索システムを利用することで、man2htmlのページからマニュアルの全文検索を行うことが可能です。デフォルトの検索ボックスではマニュアル名でしか検索を行うことができませんが、swish++を使えば「特定のキーワードを含むマニュアル」をすべてピックアップできるようになります。そのためにはまずswish++パッケージをインストールしてください。
swish++をインストールしただけでは、正しくマニュアルを検索することはできません。この手のソフトウェアのお約束として、まず事前に検索用のインデックスを作成しておく必要があります。インデックスの更新を行う処理がman2htmlパッケージ側に用意されていますので、これを使用することにしましょう。
また、マニュアルの検索用インデックスを作成するスクリプトは /etc/cron.weekly/man2html で、CRONによって週次処理されるようになっています。インストールした直後はこのスクリプトを手動でキックすることでも、インデックスを構築することが可能です。
マニュアルをPDF化する
あまり知られていないかもしれませんが、manコマンドには'-t'というオプションがあります。これはマニュアルをtroffやgroffのデフォルト出力フォーマット(デフォルトではps)に整形して出力するオプションです。psで出力できるということは、ps2hogeコマンドにつなぐことで、任意のドキュメントとして出力させることができます。たとえばps2pdfコマンドを使用すれば、マニュアルをPDFにすることができます。
画面上で端末とマニュアルのウィンドウを切り替えながら作業するのは効率が悪いので、マニュアルを印刷して手元に置いてしまうという人も多いでしょう。PDFにしておけば、きれいに印刷することも簡単ですね。しかし印刷した文字は電源がいらないというメリットはあるものの、検索することができないという問題もあります。
そこで、PDFのマニュアルをあえて手元のタブレット端末で読んでみるというのもアリかもしれません。PDFはiPadや電子書籍リーダに転送して読むことも可能ですし、特にiPadならば拡大縮小、ページ送りも快適です。
Kindleでマニュアルを読む
さて、Amazonが展開している電子書籍リーダにKindleがあります。KindleもPDFファイルを直接読むことが可能ですが、iPadのようにスムーズな拡大縮小はできず、またPDFは拡大した際に文字をリフローしてくれるわけではないため、左右スクロールが発生して非常に読みづらいのが正直な感想です。そこで、Kindleで使える電子書籍フォーマットの使用を検討してみましょう。
manコマンドには'-t'とよく似たオプションに'-T'があります。-Tオプションではデフォルトでpsが指定されているgroffの出力を、任意のデバイスに変更することができます。これを用いることで、マニュアルをHTMLに変換することが可能です[2]。
AmazonはKindle向けに、opfやepub、htmlからmobi(mobipocket)形式に変換するプログラムであるkindlegenを公開しています。つまりmanコマンドでいったんHTMLファイルに書き出し、これをkindlegenに食わせることで、Kindleで読むのに適したマニュアルを作ることができるというわけです。
kindlegenはバイナリで配布されていますので、ダウンロードしたtarを展開してkindlegenをパス指定して起動しましょう。変換元のHTMLファイルを引数として渡せば、自動的に同名の.mobiファイルを書き出してくれます。