[bash]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が標準の色を表すため、元に戻すためにやっているわけだ。

2 件のコメント:

  1. c言語だと
    printf("\x1b34mblue\x1b39m");
    な感じですね♪

    返信削除
  2. んー成程。Cからだとそうなりますね。

    返信削除