gnulsもcolorlsもなく「ls --color」「ls -G」「set color」が使えない環境でlsを(無理やり)カラー化する

職場のサーバがSunOSなんだけどカラー化できるlsが入ってないので困った。

というわけで、"-F" オプションでファイル名のあとに付加される記号から、ディレクトリ/実行ファイル/シンボリックリンク/それ以外が判別できるのでそれをperl -peで置換して無理やり色を付けることにした。

ls -F | perl -pe "s/(\S+)\/( |\Z)/^[[01;34m\1^[[0m\/\2/g ; s/(\S+)\*( |\Z)/^[[01;32m\1^[[0m\*\2/g ; s/(\S+)( \-> |@)/^[[01;36m\1\2^[[0m/g"

"^["の部分はCtrl+V→Esc(またはCtrl+[)で入力。

色変えることを考えたりするとこんな感じになる?

set di=01;34
set ex=01;32
set ln=01;36
ls -F \!* | perl -pe "s/(\S+)\/( |\Z)/^[[${di}m\1^[[0m\/\2/g ; s/(\S+)\*( |\Z)/^[[${ex}m\1^[[0m\*\2/g ; s/(\S+)( \-> |@)/^[[${ln}m\1\2^[[0m/g"

これを.aliasとかに突っ込む。オプションも普通に使えるようになるはず。

perlないとこはsedで……できるのかな?相当めんどくさいと思うけど。