用 stderr 替换 stdout

用 stderr 替换 stdout

是否可以重定向命令的输出,以将发送到 stdout 的文本替换为来自 stderr 的文本?

$ ./script
this line is redirected to stdout
this line is redirected to stderr

$ ./script (insert redirections here)
this line is redirected to stderr

我知道我可以使用1>/dev/null,但我想知道是否有办法将来自 stderr 的文本重定向到 stdout 来执行此操作。

答案1

你可以这样做:

./script 2>&1 1>/dev/null

这将 fd 2 重定向到 fd 1 指向的内容(即stdout),然后将 fd 1 重定向到/dev/null。第二个重定向不会影响第一个重定向,到 fd 2 的输出将被发送到stdout.

不过顺序确实很重要。有了这个:

./script 1>/dev/null 2>&1

将把所有输出发送到/dev/null.

相关内容