$ echo Hello world > file
$ echo Hello > file world
$ echo > file Hello world
$ > file echo Hello world
他们都做同样的事情,但我不知道为什么。
答案 0 :(得分:5)
来自man bash
:
Simple Commands A simple command is a sequence of optional variable assignments fol- lowed by blank-separated words and redirections, and terminated by a control operator. The first word specifies the command to be executed, and is passed as argument zero. The remaining words are passed as arguments to the invoked command.
也就是说,它没有指定“单词和重定向”的顺序。 稍后在REDIRECTIONS部分:
REDIRECTION [...] The [...] redirection opera- tors may precede or appear anywhere within a simple command or may fol- low a command. Redirections are processed in the order they appear, from left to right. [...]
所以它们可以出现在任何地方。
正如你自己也观察到的那样,在结果方面它们之间没有区别。 但可读性存在差异。
这是最直观的写作方式:
echo Hello world > file
真的很容易理解。 >
看起来像箭头,不是。
其他人不那么直观,不太可读。 我建议坚持第一种写作风格。