如何将 OUT 和 ERR 都重定向到一个文件,而只将 ERR 重定向到另一个文件
How to redirect both OUT and ERR to one file and only ERR to another
您好专家
我想输出命令并将错误附加到一个文件中,像这样command > logOutErr.txt 2>&1
但我也希望 err 也附加到另一个 command 2> logErrOnly.txt
# This is a non working redirection
exec 1>> logOutErr.txt 2>> logOutErr.txt 2>> logErrOnly.txt
# This should be in Out log only
echo ten/two: $((10/2))
# This should be in both Out and Out+Err log files
echo ten/zero: $((10/0))
我明白最后一个重定向 2>>
会覆盖前面的...那又怎样?球座?但是如何呢?
我必须在脚本的开头做一次,不修改脚本的其余部分(因为它是动态生成的,任何修改都太复杂了)
请不要只回答理论链接,我已经花了两天时间阅读所有内容都没有什么好结果,我想要一个工作示例
谢谢
了解到您在执行此操作时失去了顺序保证:
#!/usr/bin/env bash
exec >>logOutErr.txt 2> >(tee -a logErrOnly.txt)
# This should be in OutErr
echo "ten/two: $((10/2))"
# This should be in Err and OutErr
echo "ten/zero: $((10/0))"
这是有效的,因为重定向是从左到右处理的:当 tee
启动时,它的标准输出已经指向 logOutErr.txt
,所以它在第一次写入 [=] 后追加到那个位置13=].
您好专家
我想输出命令并将错误附加到一个文件中,像这样command > logOutErr.txt 2>&1
但我也希望 err 也附加到另一个 command 2> logErrOnly.txt
# This is a non working redirection
exec 1>> logOutErr.txt 2>> logOutErr.txt 2>> logErrOnly.txt
# This should be in Out log only
echo ten/two: $((10/2))
# This should be in both Out and Out+Err log files
echo ten/zero: $((10/0))
我明白最后一个重定向 2>>
会覆盖前面的...那又怎样?球座?但是如何呢?
我必须在脚本的开头做一次,不修改脚本的其余部分(因为它是动态生成的,任何修改都太复杂了)
请不要只回答理论链接,我已经花了两天时间阅读所有内容都没有什么好结果,我想要一个工作示例
谢谢
了解到您在执行此操作时失去了顺序保证:
#!/usr/bin/env bash
exec >>logOutErr.txt 2> >(tee -a logErrOnly.txt)
# This should be in OutErr
echo "ten/two: $((10/2))"
# This should be in Err and OutErr
echo "ten/zero: $((10/0))"
这是有效的,因为重定向是从左到右处理的:当 tee
启动时,它的标准输出已经指向 logOutErr.txt
,所以它在第一次写入 [=] 后追加到那个位置13=].