【发布时间】:2015-04-03 20:23:57
【问题描述】:
我正在组合一个复杂的管道,我想在程序输出中包含 stderr 以用于记录保存,但我还希望错误保留在 stderr 上,以便我发现问题。
我发现this question 询问如何将stdout+stderr 定向到一个文件并且仍然在终端上获得stderr;它很接近,但我还不想将标准输出重定向到文件:程序的输出将被其他脚本使用,所以我希望它保留在标准输出上(对于标准错误也是如此)。所以,总结一下:
- 脚本在 fd 1 中产生输出,在 fd 2 中产生错误。
- 我希望调用程序重新排列,以便输出+错误出现在 fd 1 中,错误出现在 fd 2 中。
- 此外,错误应该与输出交错(在它们自己的缓冲允许的范围内),而不是保存并在最后添加。
尽职调查注意事项:使用2>&1 捕获标准错误很容易。通过tee 管道保存和查看标准输出很容易。我也知道如何将 stdout 转移到文件并通过管道引导 stderr:command 2>&1 1>fileA | tee fileB. 但是我如何复制 stderr 并将 stdout 放回 fd 1 中?
【问题讨论】:
标签: bash io-redirection