我想知道如何将 stderr 重定向到多个输出。我用这个脚本尝试过,但我无法让它正常工作。第一个文件应该有 stdout 和 stderr,第二个应该只有错误。

perl script.pl &> errorTestnormal.out &2> errorTest.out

有一个更好的方法吗?任何帮助将非常感激。谢谢你。

最佳答案

perl script.pl 2>&1 >errorTestnormal.out | tee -a errorTestnormal.out > errorTest.out
会做你想做的。

这有点乱,让我们一步一步来。

  • 我们说以前去 STDERR 的现在会去 STDOUT
  • 我们说以前去 STDOUT 的东西现在去 errorTestnormal.out。

  • 所以现在, STDOUT 被打印到一个文件, STDERR 被打印到 STDOUT 。我们想把 STDERR 放到 2 个不同的文件中,我们可以用 tee 来做。 tee 将它提供的文本附加到文件中,并回显到 STDOUT
  • 我们使用 tee 附加到 errorTestnormal.out ,所以它现在包含所有 STDOUT 和 0x2518141 的 134314314314312314312 的输出 134312 14312 的所有输出。
  • 然后,我们将 STDERRscript.pl(其中包含来自 0x251812231341 的 STDOUT,从 0x251812231341 中写入 231431314123123143123143123143123143123143131313141

    在此之后,tee 具有所有 STDERR 输出,然后是所有 script.pl 输出。 errorTest.out 仅包含 errorTestnormal.out 输出。

    关于bash - 将 stdout/stderr 重定向到多个文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8124220/

  • 10-16 21:42