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とかに突っ込む。オプションも普通に使えるようになるはず。