[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:002464] irb tips - history
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:002464] irb tips - history
- From: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxxx>
- Date: Tue, 27 Sep 2005 22:05:33 +0900
堀之内です.
別に電脳ruby関連に限らないことですが,irb に関する最近お気に入り
の小技を紹介します.(知ってるひとも多いかもしれませんが,私は最
近知ったので.)
irb を使ってると,打ち込んだコマンドのヒストリーを表示したいこと
は多いのではないでしょうか.GNU readline が組み込まれている場合
(多くの場合そうだと思いますが),bash/tcsh みたいに矢印キーで以
前のコマンドを出すことはできますが,まとまったヒストリーを出した
いことも多いでしょう.
そのやり方を知らなかったのですが,Ruby の GNU realine インターフェー
スは,ちゃんとそれができるようになってるのですね(マニュアルに書
いてあります ^^;).ということで,最近 irb のスタートアップファ
イルに,以下のメソッド定義を入れてます.これで history の表示や
ファイルへの出力ができます.history 関数にブロックをつけると,特
定の条件にマッチしたコマンドを取出すなど,いろいろできます.お試
しあれ.
---- ここから irb スタートアップファイルにコピー ---
def history(latest_n=nil) # block accpeted
if latest_n
if !block_given?
(-latest_n..-1).each{|i| puts Readline::HISTORY[i]}
else
(-latest_n..-1).each{|i| yield(Readline::HISTORY[i])}
end
else
if !block_given?
Readline::HISTORY.each{|s| puts s}
else
Readline::HISTORY.each{|s| yield(s)}
end
end
Readline::HISTORY.length
end
def history_save(path='/tmp/irb_ggraph_history_save.rb')
file = File.open(path,'w')
history{|s| file.puts(s)}
file.close
print "irb history saved in ",path,"\n"
nil
end
---- ここまで irb スタートアップファイルにコピー ---
使い方は,irb セッション中に以下のように打ち込みます.
history # ヒストリー表示
history(10) # 過去10件のヒストリー表示
history{|s| puts s if /require/ =~ s} # require という文字列を含むのだけ表示
history(10){|s| puts s if /require/ =~ s} # 同じだが,過去10件より
history_save # ヒストリーをファイル(上記のデフォルトのもの)にセーブ
history_save('my_history.rb') # my_history.rb というファイルにセーブ
以上です.
堀之内 武 horinout@xxxxxxxxxxxxxxxxxx
京都大学生存圏研究所 phone:0774-38-3812
611-0011 宇治市五ヶ庄 fax:0774-31-8463