">& log"和">& log&"之间的区别

3

我不明白bash中所有这些命令的区别是什么,

echo "Hello world" > log&
echo "Hello world" >& log
echo "Hello world" >& log&

每个 & 有什么作用?

据我所知,在末尾添加 & 将整个内容发送到后台。但是在 > 后面添加 & 呢?

编写时是否有任何优势?

echo "Hello world" >& log&

替代

echo "Hello world" > log&
1个回答

4
根据The Bash Reference Manual,§3.6.4 "Redirecting Standard Output and Standard Error">&符号将标准输出和标准错误一起重定向。
在您的特定示例中,我不希望echo "Hello world"写任何标准错误内容,因此&不会改变任何内容;但是如果它确实向标准输出和标准错误都写入了内容,则log将同时包含两者。
顺便提一下,根据同一节,等效符号&>优于>&(可能是因为>&易与类似>&1的符号混淆,该符号执行完全不同的操作)。

我现在明白了。谢谢! 基本上,">&" 将输出和错误都发送到日志文件,而">"只会发送输出。 最后的"&"(在日志之后)将在后台执行任务。我是对的吗? - Federico Zabaleta
1
是的,那是一个准确的总结。(顺便说一句,我赞同使用&>而不是>&以避免歧义的建议)。 - Charles Duffy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接