如何在Ruby中重定向STDOUT和STDERR并使它们相等?

时间:2014-11-01 22:25:26

标签: ruby redirect stdout stderr

当我使用%x{command}在Ruby中调用命令时,会捕获标准输出,并在屏幕上显示标准错误。但是我希望两者都被捕获,我也希望在屏幕上同时观看。我怎样才能做到这一点?

%x{command 2>&1 1>&2}

施工似乎无效。

2 个答案:

答案 0 :(得分:1)

你的重定向都错了。

2>&1您要将stderr重定向到stdout

1>&2您要将stdout重定向回stderr

这就是你想要的:

%x{command 2>&1}

请务必致电puts以从脚本中将输出输出到屏幕。 (因为现在一切都是stdout而不是stderr)

puts %x{command 2>&1}

希望这有帮助。

答案 1 :(得分:0)

2.1.3 :005 > %x{(ls -d /boot 2>&1) | tee /dev/stderr}
/boot
 => "/boot\n" 

2.1.3 :006 > %x{(ls /no_such_file 2>&1) | tee /dev/stderr}
ls: cannot access /no_such_file: No such file or directory
 => "ls: cannot access /no_such_file: No such file or directory\n"