標準出力に何かを出力するスクリプトを書いている時、私はよく文字に色を付けるようにしています。色を付けることで、注目すべき箇所(エラーや、例えばその行番号など)に目が行きやすくなったり見落としが減ったりして、作業効率が上がります。
色付けは簡単で、 ESC
[
色コード
m
の順番で色付け開始、ESC
[
0
m
で色付け終了、になります。
ESC
は、エスケープ文字と言って、16進数で 0x1b 、8進数で 033、10進数で 27 の文字コードです。
シェルスクリプトだと、例えばこうします。
・・・とここまではいいのですが、だいたい色出力をさせようとすると、どの色を使うのいいのか、実際に出力させて試行錯誤することになります。このとき、何番が何色なのかをいちいち調べていると面倒でイラッとします。そこで、私はいつも次のスクリプトをつかって、実際の色を確認しています。
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
実行結果は、↓こんな感じになります。