Windows上のターミナルでNAS上の日本語ファイル名を表示

MZK-NAS02 の設定に、これまで TeraTerm を使っていたのですが、どうやっても日本語ファイル名が表示できないので、調べました。

NAS上のファイル名の文字コード

MZK-NAS02 にインストールされている samba は、smbd version 3.0.20b-Agere_SAPI_Accelerated というものらしい。samba3.0.20 ベースにチップセットメーカーの Agere がカスタマイズしたものなのかな?
samba3.0 の smb.conf でファイル名の文字コードを設定する項目は、unix charset で、デフォルトで UTF-8 になっているらしい。うちの smb.conf では unix charset を設定していないので、デフォルトの UTF-8 で日本語のファイル名が作成されているようです。

UTF-8 TeraTerm Pro with TTSSH2

そこで TeraTerm の設定を見直すと、UTF-8 をサポートしていない!ということで、UTF-8化されたTeraTerm Pro をインストールしました。「設定」-「端末」で、「漢字-受信」と「漢字-送信」を UTF-8 にすれば OK のはず。

ついでに、自分の好みに合わせて他の設定も変更。

  • 端末
    • 端末サイズ-ウィンドウサイズにチェック
  • ウィンドウ
    • フルカラーにチェック
  • フォント
    • フォント:Terminal、サイズ:10 に変更
    • 太字を有効のチェックをはずす

最後に、「設定」-「設定の保存」を忘れずに。

lsのオプション追加

ここまでの設定で、
# ls | more
とやると日本語が表示されるようになったけど、
# ls
だけでは日本語で表示されない。文字化けではなく??と表示されるので、これはlsの設定かな、とおもって調べたら、ビンゴ。
http://www.turbolinux.co.jp/support/document/knowledge/374.html
制御文字の影響で表示が崩れないように、??に置き換えてるらしい。/root/.bash_profile で、lsを関数で再定義している行を、下記のように修正。

function ls { command ls --show-control-char -T 0 --color=tty "$@"; }

これで、lsで日本語のファイル名が表示されるようになりました。
ついでに、ls -l, ls -la, ls -lt もよく使うので、同ファイルの末尾で下記のようにエイリアスを設定しておく。

alias ll='ls -l'
alias la='ls -la'
alias lt='ls -lt'

日本語を入力できるようにする

ところが、ターミナル上でWindowsのかな漢を使って変換した文字や、lsの結果をコピペした文字が入力できません。これは、bashの設定らしい。
http://www.ksknet.net/freebsd/inputrc_terater.html
/root/.inputrc ファイルを作成し、下記の3行を記述することで日本語の入力ができるようになりました。

set convert-meta off
set meta-flag on
set output-meta on