LoginSignup
63
53

More than 5 years have passed since last update.

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

Last updated at Posted at 2013-03-31

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

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

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

スクリーンショット

63
53
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
53