Shell 在bash中,为什么重定向在没有分号的情况下工作得很好?

Shell 在bash中,为什么重定向在没有分号的情况下工作得很好?,shell,redirect,Shell,Redirect,重定向在这些表单中不起作用。 e、 g> 但它在这些形式下起作用 ~/workspace$ echo foo 1>test ~/workspace$ ERRCOMMAND > test 2>&1 对我来说,第一个命令和随后的重定向似乎是非常离散的操作,所以可能有一些我不知道的事情 有人能告诉我吗?分号是“命令的结尾”。您需要告诉命令重定向到哪里(即在命令结束前重定向) [这是我的术语:简短的回答就像“你必须”一样简单]分号是命令分隔符 仅当一行中有多个命令时,才需要使

重定向在这些表单中不起作用。 e、 g>

但它在这些形式下起作用

~/workspace$ echo foo 1>test
~/workspace$ ERRCOMMAND > test 2>&1
对我来说,第一个命令和随后的重定向似乎是非常离散的操作,所以可能有一些我不知道的事情

有人能告诉我吗?

分号是“命令的结尾”。您需要告诉命令重定向到哪里(即在命令结束前重定向)


[这是我的术语:简短的回答就像“你必须”一样简单]

分号是命令分隔符

仅当一行中有多个命令时,才需要使用它


在第一个示例中,重定向应用于不同的命令,在这种情况下也是空命令。因此,前一个命令没有理由受其结束后将发生的事件的影响。

确实如此;把分号想象成新行的同义词。
~/workspace$ echo foo 1>test
~/workspace$ ERRCOMMAND > test 2>&1