Text-Processing
為什麼我無法通過將輸入作為文件本身的命令將輸出保存到文件中?
例如,這是我正在使用的命令:
tr -d '\n' < newfile.ppm
我想將結果輸出到完全相同的文件,所以我現在正在做:
tr -d '\n' < newfile.ppm > newfile.ppm
為什麼這不起作用,我怎樣才能讓它起作用?
這是一個非常常見的“陷阱”。
當您重定向 stdout 或 stderr 以寫入文件時,shell 將首先截斷文件以準備寫入。所以發生的事情大致如下:
- 你的 shell 將 stdin 設置為
newfile.ppm
- 您的外殼截斷
newfile.ppm
為長度 0- 你的 shell 將 stdout 設置為
newfile.ppm
- 你的外殼執行
tr -d '\n'
. 如您所見,此時, 的內容newfile.ppm
已經沒有了,因此沒有什麼可讀取的了。要解決此問題,只需輸出到另一個文件即可。然後你可以在之後重命名它