bashでターミナルに色つき文字を出力するときの方法をあまりよくわかっていなかったので、復習。
例えば、以下のようにすると"青です"の文字がブルーで出力される。
以下のようにすると"青です"の背景色がブルーで出力される。
この文字列を解読すると以下になる。
まず\033は8進数でASCIIコードのエスケープ文字の番号に該当する。
すなわちESCそのものを表している。
またエスケープ文字に続く文字列はターミナルに対する制御命令を表している。
ESC[3nmというのは文字色を変更するための制御命令で、ESC[4nmというのは背景色を変更するための制御命令ということになる。
nは0〜7の数字で、それぞれ以下の色に該当する。
0:黒
1:赤
2:緑
3:茶
4:青
5:紫
6:シアン
7: 灰
最後にESC[39mとかESC[49mとかしてるけど、これは9が標準の色を表すため、元に戻すためにやっているわけだ。
例えば、以下のようにすると"青です"の文字がブルーで出力される。
$ 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が標準の色を表すため、元に戻すためにやっているわけだ。
c言語だと
返信削除printf("\x1b34mblue\x1b39m");
な感じですね♪
んー成程。Cからだとそうなりますね。
返信削除