有没有办法,如何将标准输出和错误输出累积到一个文件中,同时将错误输出提取到一个单独的文件中?

有没有办法,如何将标准输出和错误输出累积到一个文件中,同时将错误输出提取到一个单独的文件中?

我想要执行一些 bash 脚本,并且想要将所有输出捕获到一个文件中。这很容易,将文件描述符 2 重定向到与标准输出相同的位置,写入文件描述符 1。

但是我怎样才能同时仅将错误输出提取到某个特殊文件中呢?

背景是 - 我想在发生一些错误的情况下从脚本运行中生成一个特殊的错误文件,但我也想在所有输出消息的上下文中查看可能的错误消息,描述错误到底发生在哪里以及可能还有其他调试消息或错误上下文。

我也无法提前知道在执行过程中会产生哪些错误消息,因此我无法对某些特定字符串生成的完整输出执行一些后处理过滤,因为发生了一些错误 - 我不知道,我应该针对哪个字符串看...

编辑原始问题,标记为重复: bash 的解决方案

{ your-cmd 2>&1 >&3 3>&- | tee stderr.log 3>&-; } > stderr+stdout.log 3>&1

此处建议:

将 bash stdout+stderr 重定向到一个文件,将 stderr 重定向到另一个文件

对我不起作用。它生成两个相同的文件,错误文件中的内容与标准输出文件中的内容相同。

相关内容