问题描述
我正在运行一个命令(很有可能)将文本输出到stderr和stdout。我想将stderr和stdout都保存到同一文件,但是我只想将stderr打印到终端。
我该如何使用它?我已经尝试过mycommand 1>&2 | tee file.txt >/dev/null
,但不会在终端上显示任何内容。
解决方法
如果您不需要完美的订购
使用tee
的两个单独副本,都以追加模式写入同一文件,但是只有其中一个随后将内容转发到/dev/null
时,您将获得所需的位置:
mycommand \
2> >(tee -a file.txt >&2) \
> >(tee -a file.txt >/dev/null)
如果您需要完美的订购
请参见Separately redirecting and recombining stderr/stdout without losing ordering