コマンドラインでRubyを使ってて出力に色を付けたいなーと思った事はありませんか?
実はとても簡単で以下のように書くだけOKです。
print "\e[31m"
puts "こんにちは!"
print "\e[0m"
ただ、これだといちいち print "\e[0m"
で元に戻すのめんどいし、
何色に変更してるのかわかり辛いですね(上記の場合は赤)…。
という事でRubyで出力に色を付けたい時に便利なgemライブラリをご紹介します。
color_echo
color_echo
はコマンドライン出力を装飾するためのライブラリです。
color_echo
は ANSIエスケープシーケンス
を使って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
この出力を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行加えるだけで強調して表示できました。
文字列にエスケープシーケンスを付けて返すようなライブラリは多くあれど、color_echo
ではこのように既存のプログラムにほとんど干渉せずに出力に色を付けることができます。