- コマンドラインで日本語を - on Mac OS X 1(1)/20913 更新:2013/05/19

←tcshとbashのページへ

日本語manのページへ→


注意このページの内容については、何ら動作を保証するものではありません。使用するときは個人の責任でお願いします。

日本語lessとlv

さて、つぎはページャの話です。
パッケージソフトなどを使おうとするときに、よくReadmeファイルなどがついてきて、最初にざっと読んでみたりすることがあります。そのとき、ページ単位で表示を止めるのに使うのがlessなどのページャです。ところが、Mac OS Xにプレインストールされているlessは日本語を通しません。(文字化けしてしまう) また、マニュアルページを表示するmanコマンド*1でもページャが使われていますので、このままでは日本語のマニュアルページが読めないことになります。

(*1)日本語表示できるmanコマンドについては日本語manのページで詳しく書きます。

ということで、次は日本語入力可能なPagerの話です。

日本語less

lessはmoreなどに代わるページャとしてUNIX系OSで広く使われており、Mac OS Xにもプレインストールされています。このlessを日本語対応(というか国際化)してしまおう、というのが今回の話です。

  1. Jam lessのページあたりから、less-358less-358-iso254.patchを拾ってくる。
  2. less-358を展開し、パッチをあてる。
  3. configureしてmakeする。
  4. インストールする。
  5. 環境変数JLESSCHARSETを設定する。
% 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

lvのインストールは簡単です。以下のようにソースを拾ってきてコンパイル、インストールするだけです。

  1. lvのページあたりから、最新版のlv(現在lv451)を拾ってくる。
  2. lvを展開する。
  3. configureしてmakeする。
  4. インストールする。
% 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より豊富ですから、使用目的や好みに合わせて、どちらかを使えばよいと思います。