-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