FileUtils でサクっとできると思ったんだけど、
module FileUtils
http://doc.ruby-lang.org/ja/1.9.3/class/FileUtils.html
これを見ると、ls に対応するメソッドはないように見える。
他のファイル操作用のライブラリを見てもなさげ。
find で取得した結果をパースするのもいまいちな気が。
ファイル操作用ライブラリ
http://doc.ruby-lang.org/ja/1.9.3/library/index.html#File
とりあえず、以下みたいに、OSのコマンドを叩いたんだけど、
なんか負けた気分。
list = `cd #{path} ; /bin/ls -1`.split("\n")
追記)
Facebook で教えてもらった。
組込みライブラリのDirクラスを使うのが正解らしい。
http://doc.ruby-lang.org/ja/1.9.3/class/Dir.html
具体的には以下のような感じ。
Dir.chdir(path)
puts Dir.glob("*")
もしくはこんな感じ。
puts Dir.entries(path)
システム管理用のプログラムを Ruby で書いてみようと思った。
root権限が必要なことを一般ユーザ権限でやりたいので、
suidperl っぽいのはないかな、と探してみたら、
Matzが、2003年にメーリングリストでこんなことを言ってたよ。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/72754
A wrapper is a friend of you.
My grandpa once told me that never try suidruby, before he died 30
years ago. At that time, I didn't understand what he meant.
matz.
wrapperを書け、ってことか。
たしかに、suidperlみたいなのは危険っちゃ危険よね。
このへんにも書いてあるけど。
setuid なスクリプト
http://ya.maya.st/d/200908a.html#s20090810_1
うーん、どうすっかな。
Perlで書いて、suidperl 使うか、wrapperを書くか。
wrapper も数行書けば良いだけなんだけど、やっぱりちょっと面倒だなあ。
wrapperの例↓
http://stackoverflow.com/questions/556194/calling-a-script-from-a-setuid-root-c-program-script-does-not-run-as-root