如何将stderr重定向到stdout同时仍在终端打印stderr?
同时重定向stderr到stdout并在终端预览的解决方案
直接用以下命令即可满足需求:
cmd 2> >(tee /dev/tty) | other_cmd
原理拆解:
2> >(tee /dev/tty):将cmd的标准错误(文件描述符2)通过进程替换传递给tee命令,tee会把收到的内容同时输出到当前终端(/dev/tty)和自身的标准输出- 管道
| other_cmd会将cmd原本的标准输出,加上tee输出的标准输出(即原stderr内容)一起传递给other_cmd,完全实现了cmd 2>&1 | other_cmd的重定向效果,同时终端能实时看到stderr日志
之前误以为tee不适用是因为没意识到可以直接指向终端设备/dev/tty,而非必须写入文件。这种写法是针对「既要管道传递输出又要终端预览」场景的简洁实现,不需要额外的文件存储。
内容的提问来源于stack exchange,提问作者vitiral
相关产品推荐
相关产品推荐

