实时显示外部命令的每一行输出

时间:2014-12-25 08:33:30

标签: ruby

我发现你可以从ruby运行一个外部命令,如:

command = "find /home/user/workspace -name *.java"
%x(#{command})

并且它对于不会花费太多时间执行的命令很有用,但对于像上面那样的命令,这需要花费更多时间并逐步输出结果,我无法看到结果直到命令完成。

我想要的是具有与直接从shell运行命令时相同的外观和感觉,在这种特殊情况下,只要找到文件,就可以在控制台上显示它。
这可能吗?

1 个答案:

答案 0 :(得分:1)

使用IO.popenOpen3

IO.popen("echo 1; sleep 1; echo 2; sleep 1; echo 3") do |io|
  io.each_line do |line|
    puts line
  end
end