Edited at

ターミナルで使える色一覧(8色ANSIエスケープシーケンス)

More than 5 years have passed since last update.

標準出力に何かを出力するスクリプトを書いている時、私はよく文字に色を付けるようにしています。色を付けることで、注目すべき箇所(エラーや、例えばその行番号など)に目が行きやすくなったり見落としが減ったりして、作業効率が上がります。

色付けは簡単で、 ESC [ 色コード m の順番で色付け開始、ESC [ 0 m で色付け終了、になります。

ESC は、エスケープ文字と言って、16進数で 0x1b 、8進数で 033、10進数で 27 の文字コードです。

シェルスクリプトだと、例えばこうします。

echo "foo \033[32mbar\033[0m baz"

・・・とここまではいいのですが、だいたい色出力をさせようとすると、どの色を使うのいいのか、実際に出力させて試行錯誤することになります。このとき、何番が何色なのかをいちいち調べていると面倒でイラッとします。そこで、私はいつも次のスクリプトをつかって、実際の色を確認しています。


color.rb

#!/usr/bin/env ruby

print " -- "
for b in 40..47
s = b.to_s
print "\033[", s, "m ", s, " \033[0m "
end
print "\n"
for c in [ 30, 31, 32, 33, 34, 35, 36, 37, 90, 91, 92, 93, 94, 95, 96, 97 ]
s = c.to_s
print "\033[", s, "m ", s, " \033[0m "
for b in 40..47
s = c.to_s + ";" + b.to_s
print "\033[", s, "m ", s, " \033[0m "
end
print "\n"
for a in [ 1, 4 ]
s = c.to_s + ";" + a.to_s
print "\033[", s, "m ", s, " \033[0m "
for b in 40..47
s = c.to_s + ";" + b.to_s + ";" + a.to_s
print "\033[", s, "m ", s, " \033[0m "
end
print "\n"
end
end


実行結果は、↓こんな感じになります。