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

  • 35
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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

色付けは簡単で、 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

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

スクリーンショット