gpt4 book ai didi

bash - 如何同步记录 stderr 和 stdout,但仅将 stderr 打印到屏幕?

转载 作者:行者123 更新时间:2023-11-29 09:41:36 26 4
gpt4 key购买 nike

这是我经常尝试完成的任务。我想将 stderr 和 stdout 都记录到日志文件中。但我只想打印到控制台 stderr。

我尝试过使用 tee,但是一旦我使用“2>&1”合并了 stderr 和 stdout。我无法再将标准输出打印到屏幕上,因为我的两个管道都已合并。

这是我尝试过的一个简单例子

./dosomething.sh | tee -a log 2>&1.现在我在日志和屏幕上同时拥有 stderr 和 stdout。

有什么想法吗?

根据对本网站的一些阅读,有人提出了这个问题。 Write STDOUT & STDERR to a logfile, also write STDERR to screen

还有一个非常相似的问题: Save stdout, stderr and stdout+stderr synchronously

但是它们都不能同时将 stdout+stderr 重定向到日志,将 stderr 重定向到屏幕,同时将 stdoud 和 stderr 同步写入日志文件。

最佳答案

我能够在 bash 中让它工作:

(./tmp.sh 2> >(tee >(cat >&2) >&1)) > tmp.log

这在 zsh 中不能正常工作(提示不等待进程退出),在 dash 中根本不能工作。一个更便携的解决方案可能是编写一个简单的 C 程序来完成它。

关于bash - 如何同步记录 stderr 和 stdout,但仅将 stderr 打印到屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5744924/

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