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情報なんかが表示されます。