почему значение inode изменяется при редактировании в редакторе vi?

Когда я редактирую файл в редакторе vi, значение inode файла изменяется. Но при редактировании с помощью команды cat значение inode не изменяется.

  • Остановите vim, вставляя выделение в виде текста!
  • Автозаполнение Bash с помощью команды vim
  • Может ли меньше использовать vim вместо vi по умолчанию, когда я нажимаю клавишу «v»?
  • Как автоматически снимать конечные пробелы при сохранении в Vi и Vim?
  • Как сделать символическую ссылку на / usr / bin / vim, но с параметрами запуска?
  • vim custom pop up menu
  • Сохранение и сохранение в Vim?
  • Каков рекомендуемый способ копирования изменений с помощью vimdiff?
  • 2 Solutions collect form web for “почему значение inode изменяется при редактировании в редакторе vi?”

    Скорее всего, вы установили опцию резервного копирования , а backupcopy – на «no» или «breakhardlink».

    Если вы хотите изменить файл, у вас есть два варианта, каждый из которых имеет свои преимущества и недостатки.

    • Вы можете перезаписать файл на месте. Это не использует лишнее пространство и сохраняет жесткие ссылки, разрешения и любой другой атрибут за пределами содержимого существующего файла. Главный недостаток этого заключается в том, что если что-то происходит во время записи файла (сбой приложения или выключение питания), вы получаете частично написанный файл.
    • Вы можете записать новую версию файла в новый файл с другим именем, а затем переместить его на место. Это использует больше места и разбивает жесткие ссылки, и если у вас есть права на запись в файле, но не в каталоге, который он содержит, вы не можете сделать это вообще. С другой стороны, старая версия файла атомарно заменяется новой версией, поэтому в каждый момент времени имя файла указывает на действительную полную версию файла.

    Расширенные редакторы, такие как Vim или Emacs, могут выбирать между двумя способами. Когда они используют первый метод, они обычно делают резервный файл первым, который можно восстановить, если новое содержимое файла не может быть написано правильно.

    Классический vi перезаписывает файл на месте. Поэтому индекс inode не изменяется.

    В Vim, как уже указывал cjm , выбор контролируется параметрами backup , backup и writebackup . По умолчанию Vim переименовывает старый файл, а затем записывает новый файл с исходным именем, если он считает, что он может воссоздать атрибуты исходного файла. Если вы хотите повторно использовать существующий inode (и, следовательно, рискуете потерять данные или потратите больше времени на создание резервной копии), добавьте set backupcopy yes в ваш .vimrc .

    Linux и Unix - лучшая ОС в мире.