
私がファイルを編集するときvi
エディタでファイルの inode 値が変更されます。ただし、cat
コマンドを使用して編集すると、inode値は変更されません。
答え1
ファイルを変更したい場合は、2つのオプションがあり、各オプションには長所と短所があります。
- その場所にファイルを上書きできます。これは余分なスペースを使用せず、既存のファイルコンテンツ以外のハードリンク、権限、およびその他の属性を保持します。この方法の主な欠点は、ファイルが記録されている間に何かが起こると(アプリケーションがクラッシュしたり、停電が発生した場合)、ファイルが部分的に記録されることです。
- ファイルの新しいバージョンを別の名前の新しいファイルに書き込み、その場所に移動できます。これは、より多くのスペースを使用し、ハードリンクを壊し、ファイルへの書き込み権限があるがファイルに含まれているディレクトリがない場合、これを行うことはできません。一方、以前のバージョンのファイルは自動的に新しいバージョンに置き換えられ、すべての時点でファイル名はファイルの有効で完全なバージョンを指します。
VimやEmacsなどの高度なエディタは、これら2つの方法のいずれかを選択できます。最初の方法を使用する場合は、通常はバックアップファイルを最初に作成し、新しいファイルの内容を正しく書き込めない場合は復元できます。
Classic viは現在位置にあるファイルを上書きします。したがって、inodeは変更されませんでした。
ビームではCJMがすでに指摘したように、、さんが選択しましたbackup
、backupcopy
そしてwritebackup
オプション。デフォルトでは、Vimは元のファイルのプロパティを再作成できると考えると、古いファイルの名前を変更し、元の名前を使用して新しいファイルを作成します。既存のinodeを再利用したい場合(したがって、潜在的にデータが失われるか、バックアップコピーを作成するのに時間がかかりますset backupcopy yes
).vimrc
。