我需要将stdout重定向到控制台,同时将stdout和stderr重定向到文件中。这需要在shell脚本内完成。我发现以下的代码可以将输出同时重定向到控制台和日志文件,现在需要将其中的stderr去除。
exec > >(tee -i "output.log") 2>&1
你能在这里帮我吗?
我需要将stdout重定向到控制台,同时将stdout和stderr重定向到文件中。这需要在shell脚本内完成。我发现以下的代码可以将输出同时重定向到控制台和日志文件,现在需要将其中的stderr去除。
exec > >(tee -i "output.log") 2>&1
你能在这里帮我吗?
以下内容源自这个答案: 如何让标准输出和标准错误同时输出到终端和日志文件中?
我测试了以下代码:
echo '' > out.log
exec 1> >(tee -a -i out.log) 2> >(tee -a -i out.log > /dev/null)
>&2 echo yay
echo nay
exec 2>output.log > >(tee /dev/tty >&2)
不也能做同样的事情吗? - oguz ismail
your-command 2>&1 | tee -i "output.log"
tee -i output.log
,在写入之前会回显文本。your-command 2>/dev/null | tee -i "output.log"
或者你可以使用带有 /dev/null 重定向的修改后的命令:
exec > >(tee -i "output.log") 2>/dev/null
它可能会像这样 something like this,但你不必把第二个也加上。
exec 1> >( tee stdout.txt ) 2> stderr.txt
输出 1
被 tee 命令分流,所以你可以在屏幕上和 stdout.txt 文件中看到它。
错误信息 2
直接被发送到 stderr.txt 文件。