问题描述
我想运行一个命令,在屏幕上显示 stderr,同时将 stderr 保存在一个文件中。
解决方法
在 bash(或 zsh)中,您可以通过 process substitution 将 stderr 重定向到 tee
:
somecommand 2> >(tee errors.log)
,
此命令在屏幕上显示 stdout 和 stderr 并将 stderr 保存在 /tmp/errors 上:
$ ( ls file_do_not_exist /bin/true 2>&1 1>&3 | tee /tmp/errors 1>&2; ) 3>&1