我不明白bash中所有这些命令之间有什么区别,
echo "Hello world" > log&
echo "Hello world" >& log
echo "Hello world" >& log&
每个&做什么?
据我了解,放在&末尾会将整个内容发送到后台。但是>之后的&呢?
写作有什么优势
echo "Hello world" >& log&
代替
echo "Hello world" > log&
答案 0 :(得分:4)
根据The Bash Reference Manual, §3.6.4 "Redirecting Standard Output and Standard Error",>&
表示法将标准输出和标准错误一起重定向。
在您的特定示例中,我不希望echo "Hello world"
写入任何标准错误信息,因此&
并没有真正改变任何东西;但是如果没有将内容写到标准输出和标准错误中,则log
会同时以这两种方式结束。
顺便说一句,在同一节中,等效符号&>
比>&
更为可取(大概是因为>&
容易与>&1
这样的符号混淆,完全不同)。