Rubyで外部コマンド

Rubyは外部コマンド実行をサポートしているらしい。
それも結構簡単に呼び出せるらしいので、やってみた。

def command_called
  puts :START
  system('uname')
  puts :END 
end

command_called

#START
#Darwin
#END

簡単。
system以外にも呼び出し方はあるらしい。

def command_called
  puts :START
  exec 'uname'
  puts :END 
end

command_called

#START
#Darwin

exec はそれ以降の処理は無視される。

ただ、これだけだとコマンドラインで実行すればいいんじゃ...
ってなるんで使えそうな感じにしてみる。

def command_called(argv)
  path = %x"find ~/ -name '*#{argv}*'"
  puts path
end

command_called(ARGV[0])

ruby実行時に渡した引数をファイル名に含んでいるものをホームディレクトリ以下から検索する。
ちなみに最初に紹介したsystem と execは戻り値がtrue or false なので後々のことを考えると
変数に戻り値を格納できたほうが良いので戻り値の取得が可能な %x でコマンドを呼んでます。

一応コマンドラインを利用したプログラムを組んでみたけど
有効に活用できているかといえば微妙なところ...まぁ最初の掴みだと思って割り切っておくことにする。