我怎么能输出说unix'ls'(桌面,图片,音乐myysong.mp3等)转换为字符串?
答案 0 :(得分:6)
你的意思是捕获'ls'命令的输出?你可以在Ruby中使用``例如:
mystring = `ls <dir>`
print mystring.strip();
所以,我以为我会编辑我以前的答案。如果您不幸在ls命令中遇到错误(例如路径不存在)或任何其他系统命令,则输出将显示给STDERR,导致它显示在屏幕上是否您喜欢它或不,反引号不会捕获(它们只会获得STDOUT)。 要解决此问题,只需在命令末尾添加2&gt;&amp; 1即可。 例如:
#!/usr/bin/ruby -w
mystring = `ls /path/does/not/exist 2>&1`;
# above will not display anything to screen but will hold error message in mystring
print mystring;
# outputs: ls: cannot access /path/does/not/exist: No such file or directory
希望这有帮助。
答案 1 :(得分:5)
反引号执行系统命令并将其作为字符串返回。
result = `ls ~/Downloads`
puts result.reverse
puts result.split('/')
答案 2 :(得分:2)
如果 使用ls,并且正在使用用户输入,则需要偏执:
d = IO.popen("-"){|f| if f then break f.read else system('ls', user_input) end }
这似乎是最安全的方法,因为它直接将user_input作为ARGV [1]传递给ls,而不是将整个字符串发送到shell。
使用``,/; rm -Rf ~
的用户输入将导致悲伤的面孔。使用上面的(可怕的长)方法,它只会导致错误。