linux shell 重定向到檔案後,刪除該檔案會發生什麼?

  • 作者:由 匿名使用者 發表于 攝影
  • 2022-07-20

linux shell 重定向到檔案後,刪除該檔案會發生什麼?靜聽風吟2017.02.21 回答

rm刪除的是那個檔案的索引,tail已經把索引記錄在記憶體了

指令碼也把索引記錄在記憶體了,幹掉了索引,檔案依然在寫,記錄一直在被讀取,當你都中斷,再次讀取的時候索引找不到了,的確被刪了

linux的rm只是刪除索引,檔案塊依然存在的,下次利用的時候這個檔案塊會被其他內容覆蓋

linux shell 重定向到檔案後,刪除該檔案會發生什麼?不再見2017.02.17 回答

重定向就是這樣的,命令的結果只能輸出到一個地方,瞭解原理就可以理解了。

在 io redirection 中,stdout 或 stderr 的管道總是會先準備好,然後才將命令執行結果給匯入。

你給的例子中,先重定向到/111。txt,再重定向到/222。txt,因此管道最終是接入了/222。txt。stdout只有一根管道,輸入端是固定的,你只是在不停地移動輸出端,當然是以最後的為準啦。

建議你去看看《shell十三問》,裡面有關於 io redirection 的詳細解釋。

解決方法就是用 tee 命令:

ls -l | tee /111。txt > /222。txt

Top