【问题标题】:How do you "tail" the output of a command in ruby你如何在 ruby​​ 中“跟踪”命令的输出
【发布时间】:2013-03-06 03:47:21
【问题描述】:

我所说的 tail 是指在运行时捕获命令输出,而不是在执行结束时获取它。例如,如果您执行一个长时间运行的命令,它将如下所示:

# Run command
puts `ey deploy`
# Nothing happening for a while....
# ...
# Now see all of the output at once.

我想做的是通过 ruby​​ 运行命令并查看它的输出。

【问题讨论】:

  • 将整个命令(带有tail)放在反引号中。

标签: ruby shell


【解决方案1】:

如您所见,反引号将等待整个命令完成,然后将其输出作为单个字符串返回。要获取生成的输出,请尝试Open3::popen2e

这是一个使用 bash 循环的示例,该循环在每行之间休眠一秒钟,以演示此接口的增量流式传输特性:

require 'open3'

CMD = %{for ((i=0; i<4; i++)); do echo $i; sleep 1; done}

Open3.popen2e('bash', '-c', CMD) do |i,oe,t|
  oe.each { |line| puts line }
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-10
    • 2022-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 2021-01-24
    • 2015-11-14
    • 1970-01-01
    相关资源
    最近更新 更多