病みつきエンジニアブログ

機械学習、Python、Scala、JavaScript、などなど

Rubyにかぎらず標準入力に色をつける

Rubyだけでなく、他の言語でも(多分)使えるやりかたです。
(他にCで試してみましたがオッケーでした。pythonだとprint文で上手く行かないので、他の関数を使うといけるかも?)

単純に、文字列中に"\e[数字m"と書いてあげるとオッケーです。

数字は

  color_dict = {
    reset: 0
    red: 31,
    green: 32,
    yellow: 33,
    blue: 34,
    magenta: 35,
    cyan: 36,
    white: 37
  }

みたいな対応をしています。resetに当たる\e[0mを使ってあげないと、いつまでも色が着いたままになるので要注意。

サンプル;

  $stdout << "\e[31m 赤い文字\n"
  print "\e[33m 黄色の文字\n"
  puts "\e[0m リセットされた普通の文字\n"

ちなみに、

  class String
    def red
      "\e[31m#{self}\e[0m"
    end
  end

とかやってStringクラスを拡張するとRubyっぽい、かも。

http://qiita.com/items/caae2c6f5322c31f087d