我见过 echo在很多地方被这样使用:
echo
echo >&2 message text ...
这是什么意思?
我了解 2>&1,但是,我不知道如何解释上面的用法。
2>&1
有人能解释一下吗?
这里使用 >&2将输出发送到标准错误,而不是标准输出。这通常是发送非实际计算结果的日志输出的更好的地方,特别是如果结果被打印到标准输出(可能重定向到一个文件)而不是其他文件输出(例如,将日志发送到标准错误确保它不会被包含在被重定向到输出文件的实际输出中)。
>&2
>&2重定向是 1>& 2的快捷方式。
1>& 2
您理解 2>& 1,因此您将理解它将命令的 Stdout链接到当前的 真是的
2>& 1
快速解释其他人遗漏了什么:
echo "hey" >&2
>重定向标准输出(隐式 1>)
>
1>
&接下来是一个文件描述符,而不是一个文件(仅适用于 >的右侧)
&
文件描述符号
将 stdout从 echo命令重定向到 stderr。(如果要使用 echo "hey" >2,则将 hey输出到一个名为 2的文件中)
stdout
stderr
echo "hey" >2
hey
2
虽然其他的答案给出了很好的解释,但是他们忽略了这里提到的 确切的问题。最好的答案是直接对问题进行评论,但是 Stack Overflow 认为我不值得被允许添加评论。
那么,引用三人组的话:
命令中重定向的预先[ 原文如此]位置 线路是不重要的。所有的 >&2 echo message和 echo >&2 message和 echo message >&2是等价的。
>&2 echo message
echo >&2 message
echo message >&2
这正是我一直在寻找的问题,现在的答案都不能回答这个问题,它们只能解释我已经知道的事情。另一方面,这个问题可能会受益于更好的措辞,但是再一次,我被禁止评论,所以..。
命令 >/yourfile 等于命令1 >/yourfile
所以 > & 2等于1 > & 2将 stdout 重定向到 stderr