2013-10-27 98 views
-1

當我運行命令:輸入重定向一樣輸出重定向

貓< FOO>富

隨着是atribary文件,我想將保持因爲我們使foo的輸入和輸出命令。但事實證明,這個命令擦除foo。否則,如果我通過

貓< FOO>酒吧重定向輸入酒吧

然後我酒吧FOO的副本。我無法弄清楚爲什麼?我在這裏錯過了什麼?

回答

1

將輸出重定向到一個文件由運行您的命令的shell完成,它會導致文件的內容被完全擦除,這正是您使用第一條命令看到的內容。第二個命令創建一個新文件bar(或覆蓋它)。

殼牌不知道或不在乎cat做什麼。它只知道它應該運行cat並使其從一個文件中讀取輸入並重定向到另一個文件。

如果你想替換文件foo內容與命令的輸出,最便攜的方式是使用臨時文件。下面是它的骨架:

tmpfile=..... # temporary name - see mktemp for portable secure ways to create it! 
cat <foo> $tmpfile 
mv $tmpfile foo