【コラム】

OS X ハッキング!

32 Terminalで日本語文書を読む

    海上 忍  [2002/10/04]

    相変わらずLinux Zaurusを愛でる日々だが、カーネルの設定ファイルを眺めていたところ、NFSクライアント機能が有効なことに気付いた。早速Mac OS X側でNFSサービスを開始(当コラム第1314回をご参照)、Linux Zaurus側で「mount -t nfs IPアドレス:/Users/Shared /mnt/net」としたところ…あっさりとMac OS Xの領域をマウントできた。かなり便利なので、Linux Zaurusユーザは試してみよう。

    さて、今回はTerminalで日本語文書を読むことに挑戦したい。開発環境が必要となるので、10.2に付属するパッケージをあらかじめインストールしておいてほしい。

    以前も当コラム(第28回)で触れたが、今度のTerminalはマルチバイト文字の表示に対応している。動作が不安定などの問題は抱えているが、最大の懸案事項はクリアされた格好だ。

    しかし、収録されているコマンドの多くは相変わらず日本語を通さない。デフォルトのシェル(tcsh)も8bitクリーンではないため、日本語ファイル名を使おうとすると再コンパイルせざるを得ない。Javaソースコードをコンパイルするときに利用する「javac」に至っては、メッセージをMS漢字コード(SJIS)で出力するため、「◆」に「?」を重ねた記号が画面中に表示されてしまう。

    Mac OS Xが採用するファイル/ディレクトリ名のエンコーディング形式が「UTF-8」である、ということも事態を少し複雑にしている。歴史的な経緯からUNIX系OSでは日本語EUCを使用することが多く、マルチバイト文字に対応するコマンドのほとんどが日本語EUCに対応、同時にISO-2022-JP(JIS)やSJISもサポートされることが多いが、UTF-8となると話は別だ。

    その結果、コマンドのソースコードを入手して再コンパイルしても、扱えるのは日本語EUCかJIS、SJISであり、ファイル/ディレクトリ名のエンコーディング形式とは異なってしまう。テキストファイルを例にすると、ファイル名はUTF-8だが中身は日本語EUC/JIS/SJISというチグハグな状態になり、しかもMac OS Xに付属のページャ(more、less)はマルチバイト文字を通さないため中身を閲覧できない。つまり、Terminalで日本語のテキストを読むためには、UTF-8に対応する文字コード変換ツールまたはページャが必要となるのだ。

    文字コードの変換には、バージョン2.0以降の「nkf」を利用するといいだろう。オプション「-w」を指定しUTF-8で出力すれば、Terminalの画面に日本語文書を表示できる。読み込むファイルの文字コードは自動判定されるので、日本語で記述されたテキストファイルは「cat hoge.txt | nkf -w」とすればOK。nkfのソースコードの入手とインストールの手順は次のとおりだ。

    ○nkfのインストール(管理者権限要)
    % curl -O http://www.ie.u-ryukyu.ac.jp/~kono/pub/software/nkf201.shar.gz
    % zcat nkf201.shar.gz | sh
    % cd nkf201; make CFLAGS=-O2
    % make test
    % sudo cp nkf /usr/local/bin
    % sudo cp nkf.1 /usr/local/man/man1
    % rehash

    ページャには「lv」を利用するといいだろう。nkf同様、読み込むファイルの文字コードは自動判定できるので、出力用の文字コードにUTF-8を指定しておけばいい。いちいちオプションを指定するのが面倒な場合は、~/.tcshrcなどのログインスクリプトへ「setenv LV '-z -Ia -Ou8'」などと記述しておけば、「lv hoge.txt」とするだけで日本語テキストを閲覧できる。lvのソースコードの入手とインストールの手順は次のとおり。

    ○lvのインストール(管理者権限要)
    % curl -O http://www.ff.iij4u.or.jp/~nrt/freeware/lv4494.tar.gz
    % tar xzf lv4494.tar.gz
    % cd lv4494/build
    % ../src/configure; make
    % mv Makefile Makefile.bak
    % sed 's/-o bin -g bin/-o root -g wheel/' < Makefile.bak > Makefile
    % sudo make install
    % rehash

    これで、「javac」のメッセージも正常に表示されるようになる。引数を何も与えないときのメッセージは標準エラー出力としてTerminalにアウトプットされるので、「javac |& nkf -w」または「javac |& lv」とすれば、日本語のメッセージを読めるはずだ。

    バックナンバー
    http://pcweb.mycom.co.jp/column/osx.html

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン