Rubyで簡単にエスケープシーケンスによる色付け→timestampスクリプト改良
エスケープシーケンスで色をつけるのは端末アプリケーションだと定番だ。
Rubyで色つき文字を出す場合、わざわざエスケープシーケンスを書く必要はない。Term::ANSIColorというライブラリを使えばいい。
インストールは「gem install term-ansicolor」で。
require 'term/ansicolor' class String include Term::ANSIColor end
というコードを入れておけば、文字列に色名メソッドなどが定義されててわかりやすく記述できるぞ。こんなふうに。
print "red bold".red.bold, "\n"
timestampコマンドを色付きにしてみる
[update] <2010-03-30 火> シグナルで終了したときには、プロセスオブジェクトを表示してみた。
任意のプログラムを実行するとき開始/終了時のタイムスタンプを出力する方法 - http://rubikitch.com/に移転しましたで紹介したtimestampコマンドに色をつけてみる。開始時刻・終了時刻・経過時間・終了ステータスを表示する。
#!/usr/local/bin/ruby191 require 'term/ansicolor' class String include Term::ANSIColor end start_time = Time.now cmdline = ARGV.join ' ' $stderr.puts ("=" * 60).green $stderr.puts "#{Time.now} start: #{cmdline.red}" $stderr.puts `free` $stderr.puts "-" * 60 system *ARGV secs = Time.now - start_time $stderr.puts "+" * 60 $stderr.puts $?.inspect if $?.signaled? $stderr.puts "#{Time.now} end: #{cmdline.red}" $stderr.puts ("%.2f seconds" % secs).yellow $stderr.puts "exitstatus = #{$?.exitstatus}" $stderr.puts ("-" * 60).green
[2009/12/30]追記
カラー化されたtimestampコマンドにcronのログを取らせると、かなりログが見やすくなった。やっぱり色の効果は絶大だ。