Mac OS X の ls が UTF-8 NFD を吐くことによる mlterm 文字化け対策

ls_utf8macというコマンドをつくる。ESCは ctrl+escキー (ターミナルには^[と出る) を入力する。

$ cat > ls_utf8mac
#!/bin/sh

ls -CF $@ | /usr/bin/iconv -f UTF-8-MAC -t UTF-8 | perl -pe "s/([^\t\*]*)(\*)/ESC[31m\1ESC[00m\2/g; s/([^\t\/]*)(\/)/ESC[34m\1ESC[00m\2/g;"
^D

あとは .bashrc に以下のようなエイリアスを書いてとりあえず解決。

alias ls='ls_utf8mac'

ls をパイプを通して iconv で UTF-8 NFD (UTF-8-MAC) を UTF-8 にすると文字色変更するエスケープシーケンスがなぜか消えちゃうのでこんな感じで対処した。あーしんどかった。