次のページ 前のページ 目次へ

4. どうすれば、複数のプログラムや関数を一つの man page にまとめることができるか?

多くのプログラム(例えば grep, egrep)や関数(例えば、printf, fprintf,...)は、単独の man page 中に説明が記載されている。しかし、こ れらの man page が一つの名称だけで参照できるだけなら、全く不便だろう。 使用者が、egrep の man page が、実際は grep の man page であると覚えて いてくれることは、期待できないのだ。従い、この man page は、複数の名称 で利用できるようにすることが必要になる。実現する方法には次のものがある。

  1. それぞれの名称に対してファイルのコピーを用意する。
  2. ハードリンクで全ての man page をリンクする。
  3. 実際の man page をシンボリックリンクで指定する。
  4. groff の .so マクロによるソース機能を利用する。

最初の方法は明らかにディスクの無駄である。次は、catman プログラムの改 良バージョンでは、ファイルタイプや内容を探すのに多くの処理を省くことがで きるので、お勧めできない。ハードリンクは、catman プログラムの賢い処理 を妨げるだろう。(catman の目的は全ての man page をフォーマットして、 より早く表示できるようにすることである。)3番目の方法は、少し欠点があ る。柔軟性が重要な場合、シンボリックリンクをサポートしないファイルシス テムがあると言うことを念頭におかなければならない。結局、最上の方法は、 groff のソースメカニズムを利用することである。

つまり、次のようにする。

man page を foo と bar という名前でセクション1で、アクセス可能にしよ うとする時、この man page を foo.1 に記載して、bar.1 に次の行を書き込 む。

         .so man1/foo.1

重要なことは、ディレクトリ名「man1/」をファイル名 foo.1 と共に指定する ことである。これは、groff がブラウザから実行された時、先に述べた man page の標準ディレクトリを カレント・ワーキング・ディレクトリ(cwd)と するからで、groff は、この cwd に対して 「.so」の引数を解釈するからで ある。


次のページ 前のページ 目次へ