gpt4 book ai didi

bash - 在将 stdout 和 stderr 写入日志文件时是否可以仅将 stdout 打印到屏幕?

转载 作者:行者123 更新时间:2023-12-02 00:04:11 29 4
gpt4 key购买 nike

我知道可以将两者都重定向到特定文件:

./command 1> out.log 2> err.log

./command 1>test.log 2>&1

将两者写入文件。但是我不知道在只打印其中一个的同时将两者写入同一个文件(保留输出顺序)的方法。 tee 不是很有用,因为它会打印两个文件描述符。

最佳答案

使用 tee 将标准输出写入一个文件并将两者都写入另一个文件非常简单:

{ cmd | tee stdout.log; } &> both.log

复合命令的两个描述符都被重定向到both.log,但是cmd的标准输出首先通过tee传递给stdout.log 之前也被写入 both.log

将标准错误写入一个并将两者都写入另一个是比较棘手的。

{ foo 2>&1 1>&3 | tee stderr.log ; } 3>&1 | tee both.log > /dev/null

正确描述有点棘手。首先,命令组的标准错误被忽略;它的标准输出是 tee both.log 的管道。但是 3>&1 也将它的 fd 3 复制到它的标准输出。所以问题是,写入什么内容?

在命令组内,foo 的标准输出是tee stderr.log 的管道。 2>&1tee 的 标准错误复制到该描述符,而 1>&3foo 的 标准输出复制到继承了fd 3.

关于bash - 在将 stdout 和 stderr 写入日志文件时是否可以仅将 stdout 打印到屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61150683/

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