为什么“echo 123 > a.txt b.txt”只创建一个文件?

Why does "echo 123 > a.txt b.txt" only create one file?

提问人:hao 提问时间:10/31/2023 最后编辑:John Kugelmanhao 更新时间:10/31/2023 访问量:57

问:

当我执行时,我希望看到写入两个文件,并且.但实际结果是只创建一个文件。内容写入名为 的文件中。为什么会这样?echo 123 > a.txt b.txt123a.txtb.txt123 b.txta.txt

shell echo io-重定向

评论

0赞 jhnc 10/31/2023
请参阅步骤 5

答:

4赞 John Kugelman 10/31/2023 #1

要理解这一点,需要做两件事:

  1. 重定向运算符仅适用于单个文件名。该文件名之后的任何内容都不是重定向的一部分;这是命令的附加参数。>echo
  2. 一个鲜为人知的事实是,重定向可以写在命令中的任何位置,并具有相同的效果。

把这些事实放在一起,这意味着这些命令都是等效的:

echo 123 b.txt >a.txt   # traditional order
echo 123 >a.txt b.txt   # your command
echo >a.txt 123 b.txt
>a.txt echo 123 b.txt

它们都运行该命令,输出重定向到 。echo 123 b.txta.txt

(我已将其压缩为,以便更容易看到绑定到的内容。> a.txt>a.txt>