Ruby
rubygems
RubyGem

Rubyで出力に色を付ける方法

More than 1 year has passed since last update.

コマンドラインでRubyを使ってて出力に色を付けたいなーと思った事はありませんか?

実はとても簡単で以下のように書くだけOKです。

print "\e[31m"

puts "こんにちは!"
print "\e[0m"

ただ、これだといちいち print "\e[0m" で元に戻すのめんどいし、

何色に変更してるのかわかり辛いですね(上記の場合は赤)…。

という事でRubyで出力に色を付けたい時に便利なgemライブラリをご紹介します。


color_echo

color_echoはコマンドライン出力を装飾するためのライブラリです。

color_echoANSIエスケープシーケンスを使ってputs, print, p メソッドの出力を装飾します。

良ければ以下のリンクもご覧ださい。

日本語ドキュメント: http://colorecho.github.io/ja/

コマンドライン出力に色をつける:http://qiita.com/khotta/items/c76b4d7fbfc404b8bded


256色の指定が可能

color_echoをインストールしたら color_echo -l とコマンドラインで実行してみてください。指定可能なカラーインデックスが表示されます。

rbenv環境ではrehashをしてください。


指定した文字列だけを装飾できる!

puts <<EOS

[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/foo
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/bar
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/bar
EOS

実行結果

ex_1.png

この出力をcolor_echoで装飾してみましょう。

CE.fg(:gray).pickup("127.0.0.1", :h_yellow, nil, :underscore).pickup([/foo$/, /bar$/], :h_white, :index200)

puts <<EOS
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/foo
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/bar
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/bar
EOS

強調したいパターンは文字列や正規表現、あるいはそれらの配列で指定します。

実行結果はこちらです。なんとたった1行加えるだけで強調して表示できました。

ex2.png

文字列にエスケープシーケンスを付けて返すようなライブラリは多くあれど、color_echoではこのように既存のプログラムにほとんど干渉せずに出力に色を付けることができます。