Files

貓重定向

  • August 29, 2016

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

引用自:https://unix.stackexchange.com/questions/306438