gpt4 book ai didi

bash - 将 stdout 和 stderr 重定向到一个文件,将 stderr 复制到另一个文件

转载 作者:行者123 更新时间:2023-11-29 09:12:58 27 4
gpt4 key购买 nike

我想将 stdout 和 stderr 的输出重定向到一个公共(public)文件:

./foo.sh >stdout_and_stderr.txt 2>&1

但也只是将 stderr 重定向到一个单独的文件。我尝试了以下变体:

./foo.sh >stdout_and_stderr.txt 2>stderr.txt 2>&1

但它们都不能在 bash 中正常工作,例如stderr 只被重定向到输出文件之一。合并文件保留第一个代码片段的行顺序很重要,因此不会转储到单独的文件并在以后合并。

在 bash 中有解决这个问题的巧妙方法吗?

最佳答案

您可以使用额外的文件描述符和tee:

{ foo.sh 2>&1 1>&3- | tee stderr.txt; } > stdout_and_stderr.txt 3>&1

请注意,行缓冲可能会导致标准输出输出出现乱序。如果这是一个问题,有一些方法可以解决这个问题,包括使用 unbuffer .

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com