
當我編輯文件時vi
編輯器中,檔案的 inode 值會改變。但使用cat
指令編輯時,inode 值不會改變。
答案1
當您想要修改文件時,您有兩種選擇,每種選擇都有其優點和缺點。
- 您可以就地覆蓋該文件。這不會使用任何額外的空間,並保留硬連結、權限和現有文件內容以外的任何其他屬性。這樣做的主要缺點是,如果在寫入檔案時發生任何事情(應用程式崩潰或斷電),您最終會得到部分寫入的檔案。
- 您可以將文件的新版本寫入具有不同名稱的新文件,然後將其移至到位。這會使用更多空間並破壞硬鏈接,如果您對某個文件有寫入權限,但對它包含的目錄沒有寫入權限,則根本無法執行此操作。另一方面,檔案的舊版本會自動被新版本替換,因此在每個時間點,檔案名稱都指向檔案的有效、完整版本。
Vim 或 Emacs 等高級編輯器可以在這兩種方法之間進行選擇。當他們使用第一種方法時,通常會先製作一個備份文件,如果新文件內容無法正確寫入,可以透過備份文件進行恢復。
經典 vi 會就地覆蓋檔案。所以inode沒有改變。
在維姆中,正如cjm已經指出的,選擇由backup
,backupcopy
和writebackup
選項。預設情況下,Vim 會重新命名舊文件,然後用原始名稱寫入新文件(如果它認為可以重新建立原始文件的屬性)。如果您想重複使用現有的索引節點(因此可能會丟失數據,或浪費更多時間製作備份副本),請將其添加set backupcopy yes
到您的.vimrc
.