- コマンドラインで日本語を - on Mac OS X 1(1)/32529 更新:2013/05/19
注意:このページの内容については、何ら動作を保証するものではありません。使用するときは個人の責任でお願いします。
さて、つぎはページャの話です。
パッケージソフトなどを使おうとするときに、よくReadmeファイルなどがついてきて、最初にざっと読んでみたりすることがあります。そのとき、ページ単位で表示を止めるのに使うのがlessなどのページャです。ところが、Mac OS Xにプレインストールされているlessは日本語を通しません。(文字化けしてしまう) また、マニュアルページを表示するmanコマンド*1でもページャが使われていますので、このままでは日本語のマニュアルページが読めないことになります。
(*1)日本語表示できるmanコマンドについては日本語manのページで詳しく書きます。
ということで、次は日本語入力可能なPagerの話です。
lessはmoreなどに代わるページャとしてUNIX系OSで広く使われており、Mac OS Xにもプレインストールされています。このlessを日本語対応(というか国際化)してしまおう、というのが今回の話です。
% wget http://www.io.com/~kazushi/less/less-358.tar.gz : % wget http://www.io.com/~kazushi/less/less-358-iso254.patch.gz : % tar xvfz less-358.tar.gz : % cd less-358 % zcat ../less-358-iso254.patch.gz | patch -p1 % ./configure --with-cs-regex : % make : % sudo make install : % rehash % setenv JLESSCHARSET japanese-euc %
例によって/usr/local/binをPATHに入れておく(/usr/binより前に)のを忘れずに。また、環境変数JLESSCHARSETの設定は.tcshrc(bash*2なら.bashrc)などで行うのが便利だと思います。上記の例では入力が日本語(euc, jis, sjis)で出力が日本語eucとなります。JLESSCHARSETが設定されていなくても環境変数LANGが設定されていれば、同じように動作します。例えば次のように設定すれば上記と同じ動作になります。
(*2)bashではもちろん export JLESSCHARSET=japanese-eucとなります。
% setenv LANG ja_JP.eucJP %
さて、出力文字コードがUTF-8の端末を使っている場合、環境変数JLESSCHARSETをutf-8に設定すればよいわけですが、この場合、入力文字コードの自動判別ができません。つまり、例えばShift-JISで書かれた文章(Readme.sjisとする)を表示させようとしたとき、日本語EUCの端末ならless Readme.sjisとすれば正常に表示されますが、UTF-8端末の場合、一旦Readme.sjisをUTF-8に変換してからlessで表示させる必要があります。
UTF-8で書かれた文章も含めて、日本語文章を一旦変換することなく表示させるには、次のlvが必要になります。
lvのインストールは簡単です。以下のようにソースを拾ってきてコンパイル、インストールするだけです。
% wget http://www.ff.iij4u.or.jp/~nrt/freeware/lv451.tar.gz : % tar xvfz lv451.tar.gz : % cd lv451/build % ../src/configure : % make : % sudo make install : % rehash %
これで環境変数LANGを適切に設定しておけば、Shift-JISで書かれた文章をUTF-8の端末上で表示することも簡単です。
% setenv LANG ja_JP.UTF-8 % lv Readme.sjis :
ただ、機能的にはlessの方がlvより豊富ですから、使用目的や好みに合わせて、どちらかを使えばよいと思います。