有什么区别beetwen $ echo Hello world> file和$ echo Hello> bash中的文件世界?

时间:2015-10-22 21:49:41

标签: bash shell console command

$ echo Hello world > file
$ echo Hello > file world
$ echo > file Hello world
$ > file echo Hello world

他们都做同样的事情,但我不知道为什么。

1 个答案:

答案 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

真的很容易理解。 >看起来像箭头,不是。

其他人不那么直观,不太可读。 我建议坚持第一种写作风格。