Files
貓重定向
abc
假設目前目錄中存在一個名為的文件,並且其中包含一些文本。當你執行命令時:cat abc > abc
為什麼文件的內容會
abc
消失?為什麼命令刪除了裡面的文本,文件變成了一個空文件?
因為事情的順序。
當你這樣做時:
cat abc > abc
>
是輸出重定向運算符,當 shell 看到它時,它會使用帶有ie的O_TRUNC
標誌以截斷模式打開文件,因此文件中的任何內容都將消失。請注意,此重定向首先由 shell 在命令執行之前完成。open(2)``open("abc", O_TRUNC)``cat
因此,當命令
cat abc
執行時,文件abc
已經被截斷,因此cat
會發現文件為空。
添加到@heemayl 的答案中,如果您希望程式碼更清楚地了解事情發生的順序,您可以簡單地將任何重定向放在命令的開頭:
> abc cat abc