当我执行echo 123 > a.txt b.txt时,我希望看到123被写入两个文件,a.txt和b.txt。但实际结果是只创建了一个文件。内容123 b.txt被写入名为a.txt的文件。为什么会发生这种情况?
echo 123 > a.txt b.txt
123
a.txt
b.txt
123 b.txt
o4tp2gmn1#
要理解这一点,需要做两件事:1.重定向操作符>仅适用于单个文件名。该文件名之后的任何内容都不是重定向的一部分;它是echo命令的附加参数。1.一个鲜为人知的事实是,重定向可以写在命令中的任何地方,并具有相同的效果。把这些事实放在一起,这意味着这些命令都是等效的:
>
echo
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,以便更容易查看>绑定到什么。
echo 123 b.txt
> a.txt
>a.txt
1条答案
按热度按时间o4tp2gmn1#
要理解这一点,需要做两件事:
1.重定向操作符
>
仅适用于单个文件名。该文件名之后的任何内容都不是重定向的一部分;它是echo
命令的附加参数。1.一个鲜为人知的事实是,重定向可以写在命令中的任何地方,并具有相同的效果。
把这些事实放在一起,这意味着这些命令都是等效的:
字符串
它们都运行
echo 123 b.txt
命令,并将输出重定向到a.txt
。(我将
> a.txt
压缩为>a.txt
,以便更容易查看>
绑定到什么。