我可以从Ruby中获得系统调用的连续输出吗?

Nat*_*ong 5 ruby bash scripting scp

在Ruby脚本中使用系统调用时,可以获得该命令的输出,如下所示:

output = `ls`
puts output
Run Code Online (Sandbox Code Playgroud)

这就是这个问题的意义所在.

但有没有办法显示系统调用的连续输出?例如,如果运行此安全复制命令,则通过SSH从服务器获取文件:

scp user@someserver:remoteFile /some/local/folder/
Run Code Online (Sandbox Code Playgroud)

...随着下载的进度显示连续输出.但是这个:

output = `scp user@someserver:remoteFile /some/local/folder/`
puts output
Run Code Online (Sandbox Code Playgroud)

...不捕获该输出.

如何从Ruby脚本中显示下载的持续进度?

tok*_*and 9

尝试:

IO.popen("scp -v user@server:remoteFile /local/folder/").each do |fd|
  puts(fd.readline)
end
Run Code Online (Sandbox Code Playgroud)