-1
当我运行命令:输入重定向一样输出重定向
猫< FOO>富
随着富是atribary文件,我想富将保持因为我们使foo的输入和输出猫命令。但事实证明,这个命令擦除foo。否则,如果我通过
猫< FOO>酒吧重定向输入酒吧
然后我酒吧是FOO的副本。我无法弄清楚为什么?我在这里错过了什么?
当我运行命令:输入重定向一样输出重定向
猫< FOO>富
随着富是atribary文件,我想富将保持因为我们使foo的输入和输出猫命令。但事实证明,这个命令擦除foo。否则,如果我通过
猫< FOO>酒吧重定向输入酒吧
然后我酒吧是FOO的副本。我无法弄清楚为什么?我在这里错过了什么?
将输出重定向到一个文件由运行您的命令的shell完成,它会导致文件的内容被完全擦除,这正是您使用第一条命令看到的内容。第二个命令创建一个新文件bar
(或覆盖它)。
壳牌不知道或不在乎cat
做什么。它只知道它应该运行cat
并使其从一个文件中读取输入并重定向到另一个文件。
如果你想替换文件foo
内容与命令的输出,最便携的方式是使用临时文件。下面是它的骨架:
tmpfile=..... # temporary name - see mktemp for portable secure ways to create it!
cat <foo> $tmpfile
mv $tmpfile foo