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

agxfikkp  于 7个月前  发布在  Shell
关注(0)|答案(1)|浏览(91)

当我执行echo 123 > a.txt b.txt时,我希望看到123被写入两个文件,a.txtb.txt。但实际结果是只创建了一个文件。内容123 b.txt被写入名为a.txt的文件。为什么会发生这种情况?

o4tp2gmn

o4tp2gmn1#

要理解这一点,需要做两件事:
1.重定向操作符>仅适用于单个文件名。该文件名之后的任何内容都不是重定向的一部分;它是echo命令的附加参数。
1.一个鲜为人知的事实是,重定向可以写在命令中的任何地方,并具有相同的效果。
把这些事实放在一起,这意味着这些命令都是等效的:

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.txt命令,并将输出重定向到a.txt
(我将> a.txt压缩为>a.txt,以便更容易查看>绑定到什么。

相关问题