irbからシェルのコマンドを実行
たぶん既出だと思うけど自分のためにもメモ。
.irbrcにmethod_missingを定義してコマンドを実行させるとIRBからちょっとした確認が出来て便利。
module Kernel def method_missing(meth_sym, *arg, &block) str = `#{meth_sym.to_s} #{arg.join " "}` if str == "" raise NoMethodError else puts str end end private :method_missing end
実行例はこんな感じ。
pwd /home/walf443 #=> nil hoge (irb):3: command not found: hoge NoMethodError: NoMethodError from /home/walf443/.irbrc:52:in `method_missing' from (irb):3 "abc".hoge (irb):5: command not found: hoge NoMethodError: NoMethodError from /home/walf443/.irbrc:52:in `method_missing' from (irb):5
"abc".hogeにもKernel#method_missingが効いてるのとcommand not foundが出てるのがちょい気に入らない・・・。
ただtypoでうっかり知らないコマンド引き当てちゃったりするかもしれないので諸刃の剣かも。使う際にはご注意ください。それから補完などが効かないのでシェルの方がやっぱり良いかもしれません。