如何在不重定向到文件的情况下将stderr重定向到stdout?
将stderr重定向到stdout(无需文件)
当然有办法实现,在大多数POSIX兼容的Shell(比如Bash、Zsh)中,直接用内置的重定向语法就能完成,全程不需要涉及任何文件。
具体方法
- 标准写法:
your_command 2>&1
这里的2是stderr的文件描述符,1是stdout的文件描述符,>&表示将前者的输出流重定向到后者对应的输出位置。执行后,原本stderr的所有输出都会合并到stdout中,仅通过stdout传递。 - Bash 4.0及以上版本的简洁写法:
your_command &>1
这个写法和上面的效果完全一致,只是更简短。
示例
比如执行一个会产生错误输出的命令,并重定向错误流到stdout:
ls non_existent_file 2>&1
原本会输出到stderr的错误提示,现在会和stdout的内容(如果有的话)一起通过stdout输出。
内容的提问来源于stack exchange,提问作者Bri Bri
相关产品推荐
相关产品推荐

