如何运行命令,在屏幕上显示 stderr,同时将 stderr 保存在文件中

问题描述

我想运行一个命令,在屏幕上显示 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