夜明け前の最も暗いとき

技術的なやったことをメモするブログ

Linuxでターミナルの出力に色を付ける

Linuxのターミナルでは制御文字を使うことで色を付けることができます。

例として、echoコマンドで以下のように文字を出力します。

echo -e "status: NORMAL"

この出力する文字に対し\e[<数字>mで囲むことによって指定した色の出力にできます。

echo -e "status: \e[36mNORMAL\e[0m"

f:id:jianlan:20191110115423j:plain

また、\e[<数字>;<数字>mのように複数の出力を指定できます。

echo -e "status: \e[0;1;31;47m DANGER \e[0m"

f:id:jianlan:20191110115838j:plain

よく使う数字(パラメータ)は下記のとおりです。

パラメータ 効果
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"

f:id:jianlan:20191110115730j:plain

他にも、一段ずつ色を変えて出力を見やすくできます。

echo -e "The \nquick \nbrown \nfox \njumps \nover \nthe \nlazy \ndog" | sed '2,${s/^/\x1b[0;36m/;n}' | sed '2,${s/$/\x1b[0m/;n}'

f:id:jianlan:20191110115517j:plain