[bash]bashでターミナルに色つき文字を出力

2016年4月25日月曜日

bash

bashでターミナルに色つき文字を出力するときの方法をあまりよくわかっていなかったので、復習。
 例えば、以下のようにすると"青です"の文字がブルーで出力される。

$ echo -e "\033[34m青です\033[39m"
青です

以下のようにすると"青です"の背景色がブルーで出力される。

$ echo -e "\033[44m青です\033[49m"
青です

この文字列を解読すると以下になる。
まず\033は8進数でASCIIコードのエスケープ文字の番号に該当する。
すなわちESCそのものを表している。
またエスケープ文字に続く文字列はターミナルに対する制御命令を表している。

ESC[3nmというのは文字色を変更するための制御命令で、ESC[4nmというのは背景色を変更するための制御命令ということになる。
nは0〜7の数字で、それぞれ以下の色に該当する。

0:黒
1:赤
2:緑
3:茶
4:青
5:紫
6:シアン
7: 灰

最後にESC[39mとかESC[49mとかしてるけど、これは9が標準の色を表すため、元に戻すためにやっているわけだ。