Linuxでターミナルの出力に色を付ける
Linuxのターミナルでは制御文字を使うことで色を付けることができます。
例として、echoコマンドで以下のように文字を出力します。
echo -e "status: NORMAL"
この出力する文字に対し\e[<数字>mで囲むことによって指定した色の出力にできます。
echo -e "status: \e[36mNORMAL\e[0m"
また、\e[<数字>;<数字>mのように複数の出力を指定できます。
echo -e "status: \e[0;1;31;47m DANGER \e[0m"
よく使う数字(パラメータ)は下記のとおりです。
パラメータ | 効果 |
---|---|
0 | リセット |
1 | 強調 |
22 | 強調解除 |
30 | 黒色 |
31 | 赤色 |
32 | 緑色 |
33 | 黄色 |
34 | 青色 |
35 | マゼンタ |
36 | シアン |
37 | 白色 |
40 | 黒色(背景) |
41 | 赤色(背景) |
42 | 緑色(背景) |
43 | 黄色(背景) |
44 | 青色(背景) |
45 | マゼンタ(背景) |
46 | シアン(背景) |
47 | 白色(背景) |
他にもパラメータはありますがTeraTermが対応していなかったり、環境によって色が違たりするので注意が必要です。
sedと組み合わせることで特定文字の強調表示といった使い方ができます。
WORD='fox' echo -e "The quick brown fox jumps over the lazy dog" | sed -e "s/$WORD/\x1b[1m$WORD\x1b[0m/g"
他にも、一段ずつ色を変えて出力を見やすくできます。
echo -e "The \nquick \nbrown \nfox \njumps \nover \nthe \nlazy \ndog" | sed '2,${s/^/\x1b[0;36m/;n}' | sed '2,${s/$/\x1b[0m/;n}'