如何将 bash stderr 重定向到终端,同时使用 stdout 将 stderr 重定向到日志文件?
How to redirect bash stderr to terminal, but also redirect stderr with stdout to log file?
我有一个 QA 经理运行的脚本。
我想让他不时看一下终端,如果出现任何错误,请记录下来。
问题是脚本有大量我们不需要看到的输出。
我要实现的是:
- stderr 只到终端
- stdout 只到全-log.txt
- stderr 变为完整-log.txt 以及 stdout
另一种方法是
- stderr with stdout go to full-log.txt
- stderr 只会出错-log.txt
如果有人能提供帮助,将不胜感激。
with bash,使用进程替换,重定向按以下顺序执行:
cmd 2> >(tee -a full-log.txt) >full-log.txt
演示:
$ { echo "this is stdout"; echo "this is stderr" >&2; } 2> >(tee -a full-log.txt) >full-log.txt
this is stderr
$ cat full-log.txt
this is stdout
this is stderr
我有一个 QA 经理运行的脚本。 我想让他不时看一下终端,如果出现任何错误,请记录下来。
问题是脚本有大量我们不需要看到的输出。
我要实现的是:
- stderr 只到终端
- stdout 只到全-log.txt
- stderr 变为完整-log.txt 以及 stdout
另一种方法是
- stderr with stdout go to full-log.txt
- stderr 只会出错-log.txt
如果有人能提供帮助,将不胜感激。
with bash,使用进程替换,重定向按以下顺序执行:
cmd 2> >(tee -a full-log.txt) >full-log.txt
演示:
$ { echo "this is stdout"; echo "this is stderr" >&2; } 2> >(tee -a full-log.txt) >full-log.txt
this is stderr
$ cat full-log.txt
this is stdout
this is stderr