linuxコマンドをrubyから実行!

以前、linuxコマンドをperlから実行!というエントリを書きましたが、同様のことがrubyでも出来ました。
基本的にはperlと一緒で、実行したいコマンドをバッククォートで囲んでやればOK。これで「ls -l」を実行した結果を画面に表示できる。

puts `ls -l`

ユーザーが入力したコマンドを読み込んで実行するには以下のようにする。

print "command: "
puts `#{gets}`

たいしたサンプルを思いつかなかったけど、ちょっとした置換プログラミングを。linux上で「date」と入力すると、「2008年 5月 24日 土曜日 18:49:24 JST」と表示される。どうせなら「2008年 5月 24日 土曜日 18時49分24秒 JST」と表示してみたい。

puts `date`.gsub(/(\d+):(\d+):(\d+)/, "\1\2\3")


また、事前に定義されているENV変数を使うと、OSの環境変数の情報を取得することが出来ます。Hashのようにキーと値の組み合わせで情報を保持しています。

ENV.each{|k,v| puts "#{k} : #{v}}

例えばSHELL、PATH、USER情報なんかが表示されます。