我echo
在很多地方都看到过这样的用法:
echo >&2 message text ...
这是什么意思?
我了解2>&1
,但是我不确定如何解释上述用法。
谁能解释一下?
我echo
在很多地方都看到过这样的用法:
echo >&2 message text ...
这是什么意思?
我了解2>&1
,但是我不确定如何解释上述用法。
谁能解释一下?
echo hey >/dev/null 2>&1
并且echo hey 2>&1 >/dev/null
是不一样的东西。重定向按从左到右的顺序进行。
Answers:
使用>&2
此处会将输出发送到标准错误,而不是标准输出。通常,这是发送不是计算实际结果的日志记录输出的更好的地方,尤其是如果结果打印到标准输出(可能重定向到文件)而不是其他文件输出(即,将日志记录发送到)标准错误可确保它不会包含在重定向到输出文件的实际输出中)。
尽管其他答案给出了很好的解释,但它们都缺少此处提出的确切问题。最好的答案是直接对问题发表评论,但可惜,Stack Overflow认为我不值得被添加评论。
因此,引用三元组:
所述预段[原文如此在命令行重定向的]位置并不重要。所有
>&2 echo message
和echo >&2 message
和echo message >&2
都是等效的。
这是我要寻找的确切问题,目前没有答案可以回答。他们只是解释我已经知道的事情。另一方面,可以从更好的措词中获益,但是我再次被禁止评论,所以...
1>/dev/null 2>&1
和2>&1 1>/dev/null
不是同一回事。前者既重定向stdout
和stderr
到/dev/null
哪里,因为后者重定向stderr
到任何stdout
指着在时间(TTY),然后重定向stdout
到/dev/null
,从而导致所有stderr
的输出仍然会到终端。
>&2 echo message
和echo >&2 message
和echo message >&2
都是等效的。