echo>& 2“some text”在shell脚本中意味着什么

时间:2014-05-06 08:45:04

标签: shell unix sh

我在很多地方看到echo被这样使用了:

echo >&2 message text ...

这是什么意思?

我理解2>&1,但是,我不确定如何解释上面的用法。

有人可以解释一下吗?

5 个答案:

答案 0 :(得分:92)

快速解释其他人遗漏的内容:

echo "hey" >&2

>重定向标准输出(隐式1>

&接下来是文件描述符,而不是文件(仅适用于>的右侧)

2 stderr文件描述符编号

stdoutecho命令重定向到stderr。 (如果您使用echo "hey" >2,则会将hey输出到名为2的文件

答案 1 :(得分:23)

此处>&2的使用是将输出发送到标准错误而不是标准输出。这通常是发送不是计算实际结果的日志输出的更好地方,特别是如果结果打印到标准输出(可能重定向到文件)而不是某些其他文件输出(即发送记录到标准错误可确保它不会包含在重定向到输出文件的实际输出中。

答案 2 :(得分:8)

>&2重定向是1>& 2的快捷方式。

您理解2>& 1,因此您会理解这会将命令 stdout 链接到当前的 stderr

答案 3 :(得分:1)

尽管其他答案给出了很好的解释,但它们仍缺少此处提出的确切问题。最好的答案是直接对问题发表评论,但可惜,Stack Overflow认为我不值得被添加评论。

所以quoting tripleee

  

命令中重定向的预期[ sic ]位置   行并不重要。所有>&2 echo message和   echo >&2 messageecho message >&2是等效的。

这是我要寻找的确切问题,当前的答案都没有答案。他们只是解释我已经知道的事情。另一方面,更好的措词可能会有益于该问题,但是同样,我也禁止发表评论,所以...

答案 4 :(得分:0)

command > /yourfile 等于 command 1 > /yourfile

so >&2 与 1 相同 > &2 将标准输出重定向到标准错误