为什么在“ vi”编辑器中进行编辑时inode值会发生变化?


22

当我在“ vi”编辑器中编辑文件时,文件的inode值正在更改。但是,使用cat命令进行编辑时,inode的值不会改变。

Answers:


18

您很可能已将备份选项设置为开,并且backupcopy设置为“ no”或“ breakhardlink”。


如何删除该选项
monu 2012年

2
@monu,编辑您的~/.vimrc。这些不是默认设置。
cjm 2012年

@cjm用vim 7.4,我没有串backup在我.vimrc,但I节点仍然在变化,因为默认是备份当前文件后删除/ *尽可能* /重命名文件/ *备份* /和写以相同的名称命名新的/ *,有效地更改了inode * /。通过添加解决set backupcopy=yes.vimrc
基里尔·布林金

27

当您要修改文件时,有两个选择,每个都有其优缺点。

  • 您可以在适当位置覆盖文件。这不会占用任何额外的空间,并且会保留硬链接,权限以及现有文件内容之外的任何其他属性。这样做的主要缺点是,如果在写入文件时发生任何事情(应用程序崩溃或断电),则最终会得到部分写入的文件。
  • 您可以将文件的新版本写入具有不同名称的新文件中,然后将其移动到位。这样会占用更多空间并断开硬链接,并且如果您对文件具有写许可权,但对文件包含的目录没有写许可权,则根本无法这样做。另一方面,文件的旧版本会自动替换为新版本,因此在每个时间点文件名都指向文件的有效,完整版本。

Vim或Emacs等高级编辑器可以在两种方法之间进行选择。当他们使用第一种方法时,通常会先制作一个备份文件,如果新文件的内容无法正确写入,则可以将其恢复。

经典vi会在适当位置覆盖文件。因此,inode不变。

在Vim中,如军事审判已经说明,选择的是由控制backupbackupcopywritebackup选项。默认情况下,Vim认为可以重新创建原始文件的属性,则重命名旧文件,然后使用原始名称写入新文件。如果您想重用现有的inode(因此可能会丢失数据或浪费更多时间进行备份),请添加set backupcopy yes到中.vimrc


+1提及,writebackup因为我已经关闭了backupbackupcopy但inode仍在更改。
Alireza Mohamadi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.