3

非常に基本的な質問があります。Linux のディレクトリの内容にアクセスするために Ruby スクリプトを実行しています。ディレクトリは、ruby スクリプトの実行時にコマンド ラインを介して渡されます。

私の質問は、コマンドライン引数を ruby​​ のコマンドでどのように使用するのですか?

私はそれを次のように設定しました:

usrDirectory = ARGV[0]
lsCmd = `ls -l`

ls -l usrDirectory のようなものを使用する必要があります。のようにコマンドに挿入できますか?

4

4 に答える 4

2

上記は正しく、標準出力に出力したい場合はls、これにより少しきれいになります。

system("ls", "-l", dir)

これにより、上記のように出力を変数に入れる代わりに、Ruby が出力を標準出力に出力します。

于 2012-04-30T20:06:34.183 に答える
1

シェルを使用せずに必要なものを取得できるはずです。たとえば、次のようになります。

usr_dir = "/tmp"
files = Dir["#{usr_dir}/*"]

p files

何をするにしても、ユーザーが入力したテキストを解析および実行されるものの一部としてシェルに渡すときは、十分に注意してください。たとえば、ユーザーが (ディレクトリ名の代わりに) 入力するとどうなるか

;rm -rf /*

?

于 2012-04-30T20:13:40.143 に答える
0

2 つのオプションがあります。できるよ:

lsCmd = `ls -l #{usrDirectory}`

また

command = "ls -l " + usrDirectory
lsCmd = %x[ #{command} ]
于 2012-04-30T20:10:32.493 に答える
0

コマンド文字列では、式の展開とエスケープ シーケンスを使用できます。

lsCmd = `ls -l #{usrDirectory}`
于 2012-04-30T19:56:04.887 に答える