2006年10月17日
カラフル端末で視認性を高める - ls編
ターミナルがあればご飯三杯いけるぐらいのCUI大好きっ子なんですが、ターミナルの画面はモノトーンで殺風景なのでどうも色気がありません。
色気はさておき、逆説的ですがモノトーンのターミナルで色を使うと、視認性がグッと上がります。
というわけで、今回から数回にわけて、ターミナルの中で色を効果的に使い、いかに色気を出すか、もとい、視認性を高める方法を紹介します。
第1回は ls (GNU coreutilsのls-5.2.1) を取り上げます。
色気はさておき、逆説的ですがモノトーンのターミナルで色を使うと、視認性がグッと上がります。
というわけで、今回から数回にわけて、ターミナルの中で色を効果的に使い、いかに色気を出すか、もとい、視認性を高める方法を紹介します。
第1回は ls (GNU coreutilsのls-5.2.1) を取り上げます。
$ ls -F
broken-symlink@ directory/ file file.orig write-blog.todo
ddl.sql executable* file.bak symlink@
GNU coreutilsに含まれるlsは、ファイルやディレクトリに色をつけることができます。Linuxでコンソールログインするとそうなるので、多くの人がご存じのことだと思います。
Debian (sarge) だとこんなしかけでカラー化が有効になっています。
なので、色をカスタマイズするにはdircolorsがセットする環境変数を変更します。
詳しい使い方や書式は
あたりのmanやinfoを見ていただくとして、ユーザ毎に色をカスタマイズするには、自分用の定義ファイルを用意してそれをdircolorsに読み込ませればOKです。
いちから定義ファイルを作るのは大変なので、雛形を元に変更していきましょう。
定義ファイルができたら、シェルの起動時にそれを読むようにします。~/.bash_profileなどに以下のようなコードを追加すればよいでしょう。
これで、lsしたときにディレクトリが青色で実行ビットが立っているファイルは緑色で表示されるようになるはずです。
たとえばこれを、
にしたい場合は、~/.dir_colorsを以下のように変更してdircolorsコマンドで環境変数を再設定します。
lsの-Fオプションでディレクトリや実行ファイルにはマークをつけて見た目に区別することができますが、ぱっと見たときの視認性の高さはカラー化には及ばないでしょう。
また、参照先がないシンボリックリンクは探そうと思わなければ見つけられないので、カラー化で目立つようにしておくととてもとても有益だと思います。
lsは拡張子別にもカラー化できます。
デフォルトでは圧縮ファイルや画像の類いの拡張子をもつファイルには色がつきますが、~/.dir_colorsに書けばこのほかの拡張子のファイルにも色を付けることができます。
例えば、
にするには、~/.dir_colorsに以下を追加します。
拡張子といってもドット以降の文字列ならなんでもカラー化のキーにできるので、*.todoのようにちょっとしたToDoやメモを書き込んだファイルを目立たせるのに便利かもしれませんね。
Debian (sarge) だとこんなしかけでカラー化が有効になっています。
- シェルの初期化ファイル (bashrcやbash_profile) でdircolorsの結果をevalする。
- dircolorsは、カラー化に必要な環境変数を出力する。
- それをevalして環境変数をセットする。
- lsは、--colorオプションが指定された場合に、環境変数に応じてカラー化した出力をする。
なので、色をカスタマイズするにはdircolorsがセットする環境変数を変更します。
詳しい使い方や書式は
- ls(1)
- dircolors(1)
- DIR_COLORS(5)
あたりのmanやinfoを見ていただくとして、ユーザ毎に色をカスタマイズするには、自分用の定義ファイルを用意してそれをdircolorsに読み込ませればOKです。
いちから定義ファイルを作るのは大変なので、雛形を元に変更していきましょう。
$ dircolors -p > ~/.dir_colors
定義ファイルができたら、シェルの起動時にそれを読むようにします。~/.bash_profileなどに以下のようなコードを追加すればよいでしょう。
if [ "$TERM" != "dumb" -a -r $HOME/.dir_colors ]; then
eval "`dircolors -b ~/.dir_colors`"
alias ls='ls --color=auto'
fi
種類別のカラー化
これで、lsしたときにディレクトリが青色で実行ビットが立っているファイルは緑色で表示されるようになるはずです。
たとえばこれを、
- ディレクトリは緑
- 実行ファイルは太字の赤
- 参照先が存在しないシンボリックリンクは赤地に太字の水色
にしたい場合は、~/.dir_colorsを以下のように変更してdircolorsコマンドで環境変数を再設定します。
-DIR 01;34
+DIR 00;32
-EXEC 01;32
+EXEC 01;31
-ORPHAN 40;31;01
+ORPHAN 41;36;01
lsの-Fオプションでディレクトリや実行ファイルにはマークをつけて見た目に区別することができますが、ぱっと見たときの視認性の高さはカラー化には及ばないでしょう。
また、参照先がないシンボリックリンクは探そうと思わなければ見つけられないので、カラー化で目立つようにしておくととてもとても有益だと思います。
拡張子別のカラー化
lsは拡張子別にもカラー化できます。
デフォルトでは圧縮ファイルや画像の類いの拡張子をもつファイルには色がつきますが、~/.dir_colorsに書けばこのほかの拡張子のファイルにも色を付けることができます。
例えば、
- *.sqlは太字の黄
- *.origと*.bakは白地に黒
- *.todoは赤地に黄
にするには、~/.dir_colorsに以下を追加します。
.sql 01;33
.orig 47;30
.bak 47;30
.todo 04;33;41
拡張子といってもドット以降の文字列ならなんでもカラー化のキーにできるので、*.todoのようにちょっとしたToDoやメモを書き込んだファイルを目立たせるのに便利かもしれませんね。