UnixManualを書く[lifehack]

はい、皆様こんにちは。

さて、本日の記事はといいますと。
"man"を書こうということです。
#jmanインストールしたときに文字コードで一悶着。

そもそも、manって何者やって所からなんですが
manって言うのは、マニュアルです。
ターミナルで

$man <コマンド名>

と、打ち込むと”Manual”が見れます。

例えばかの有名な”ls”コマンドも

$man ls

と打てば出てきます。
*1

$man man

とうつと”man”のManualが出てきます。

...当然?

さて、manを書くには何か特別なツールが必要なんでしょうか?
答えは、NOです。
書式に従ってさえすれば、テキストエディタでmanをかけます。
一番てっとり早い方法としては
Manualファイルを見て勉強するといったことでしょうか。
ちなみにmanファイルの在り処は

$less /etc/man.conf

で”MANPATH”という項目を探せば見れます。
さらにここにホームディレクト
/Users/hoge/man
などを追加すれば、MANPATHを通すことが出来ます。

僕の場合は、Macなので
/usr/share/manにmanのファイルがおいてあります。
さらに、manには、種類があって

番号 説明
1 コマンド(プログラム)
2 システムコール
3 ライブラリ関数
4 /dev以下のスペシャルファイル
5 ファイルのフォーマット
6 ゲーム
7 その他、仕様や慣習など様々な事
8 システム管理のコマンド

1-8までManualが存在しています。
ここで参照すべきなのは、man(1)なので

$cd /usr/share/man/man1

ディレクトリ移動して
Manualの場所まで行きます。

そこで即座にマニュアルファイルをみたいでしょうけど
たいていは、単なるテキストファイルでストレージの容量を食わせないために
.gzで圧縮しています。
そのまま”less”を使ってもバイナリファイルで見れないので

$gzcat

$gzcat ls.1.gz

として、lsのManualがどのような書き方をされて居るか見えると思います。
nroffというマクロ言語の書式に従って書かれており
manを実行すると、nroffを呼び出し、整形した形でlessされます。
*2

つまり、ここからが大事なところで
書式を覚えなければいけないということです。
書式を覚えてmanを書いて
MANPATHの通っている場所に保存します。
ここで注意事項なんですが
単にMANPATH以下にファイル追加すればいいだけでなく

├── man
│   ├── man1
│   ├── man2
│   ├── man3
│   ├── man4
│   ├── man5
│   ├── man6
│   ├── man7
│   ├── man8
│   ├── man9

こんなディレクトリ構造にして
コマンドのmanであればman1以下に
”hogehoge.1”というファイル名で保存しなければなりません。
*3

書式等は、”nroff 書式”などで検索して観てくださいませ。

macで日本語manを読みたい時にjmanなんてものがあります
http://www.fan.gr.jp/~sakai/jman.html
ここ参照。

さらに、日本語のmanは
http://sourceforge.jp/projects/linuxjm/
ここにあるので、ダウンロードして/jman以下に展開すればいいと。

こっちだった
http://linuxjm.sourceforge.jp/

nkfでマニュアル文字コード変換

$sudo nkf -w --overwrite sed.1

こんな感じ。


ではでは

*1:※ちなみにUbuntuを日本語でインストールすると、日本語のmanが出てきますが、通常のUnixでは、英語です。英語のお勉強をしましょう。

*2:manのコード読んでないので、本当かは、分からないが、イメージ的には合ってるきがす。

*3:〜.1がいるかは未確認