Text-Processing

為什麼我無法通過將輸入作為文件本身的命令將輸出保存到文件中?

  • September 30, 2016

例如,這是我正在使用的命令:

tr -d '\n' < newfile.ppm 

我想將結果輸出到完全相同的文件,所以我現在正在做:

tr -d '\n' < newfile.ppm > newfile.ppm

為什麼這不起作用,我怎樣才能讓它起作用?

這是一個非常常見的“陷阱”。

當您重定向 stdout 或 stderr 以寫入文件時,shell 將首先截斷文件以準備寫入。所以發生的事情大致如下:

  1. 你的 shell 將 stdin 設置為newfile.ppm
  2. 您的外殼截斷newfile.ppm為長度 0
  3. 你的 shell 將 stdout 設置為newfile.ppm
  4. 你的外殼執行tr -d '\n'. 如您所見,此時, 的內容newfile.ppm已經沒有了,因此沒有什麼可讀取的了。

要解決此問題,只需輸出到另一個文件即可。然後你可以在之後重命名它

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