mengapa nilai inode berubah ketika kita mengedit di editor "vi"?


22

Ketika saya mengedit file di editor "vi" nilai inode file berubah. Tetapi ketika diedit dengan perintah cat nilai inode tidak berubah.

Jawaban:


18

Kemungkinan besar, Anda telah mengatur cadangan pilihan pada, dan backupcopy untuk "tidak" atau "breakhardlink".


cara menghapus opsi itu
monu

2
@monu, edit ~/.vimrc. Itu bukan pengaturan default.
cjm

@ cjm Dengan VIM 7.4, saya tidak memiliki string backupdi saya .vimrc, tetapi inode masih berubah, karena defaultnya adalah untuk mencadangkan file saat ini, dihapus setelahnya dan ke / * bila memungkinkan * / ganti nama file / * ke cadangan * / dan tulis yang baru / * dengan nama yang sama, secara efektif mengubah inode * / . Dipecahkan dengan menambahkan set backupcopy=yeske .vimrc.
Kirill Bulygin

27

Saat Anda ingin memodifikasi file, Anda memiliki dua opsi, masing-masing dengan kelebihan dan kekurangannya.

  • Anda dapat menimpa file di tempatnya. Ini tidak menggunakan ruang ekstra apa pun, dan menyimpan tautan keras, izin, dan atribut lainnya di luar konten file yang ada. Kelemahan utama dari melakukan ini adalah bahwa jika sesuatu terjadi ketika file sedang ditulis (aplikasi crash, atau daya padam), Anda berakhir dengan file yang ditulis sebagian.
  • Anda dapat menulis versi file yang baru ke file baru dengan nama yang berbeda, lalu memindahkannya ke tempatnya. Ini menggunakan lebih banyak ruang dan memutus tautan keras, dan jika Anda memiliki izin menulis pada file tetapi tidak pada direktori yang dikandungnya, Anda tidak dapat melakukannya sama sekali. Di sisi lain, versi lama file secara atom diganti oleh versi baru, jadi pada setiap titik waktu nama file menunjuk ke versi file yang valid dan lengkap.

Editor tingkat lanjut seperti Vim atau Emacs dapat memilih di antara kedua metode ini. Ketika mereka menggunakan metode pertama, mereka biasanya membuat file cadangan terlebih dahulu, yang dapat dipulihkan jika konten file baru tidak dapat ditulis dengan benar.

Klasik vi menimpa file pada tempatnya. Jadi inode tidak berubah.

Di Vim, seperti yang disebutkan cjm , pilihan dikendalikan oleh opsi backup, backupcopydan writebackup. Secara default, Vim mengubah nama file lama, lalu menulis file baru dengan nama asli, jika dianggap dapat membuat ulang atribut file asli. Jika Anda ingin menggunakan kembali inode yang ada (dan karenanya berisiko kehilangan data, atau buang waktu membuat salinan cadangan), tambahkan set backupcopy yeske .vimrc.


+1 Untuk menyebutkan writebackupkarena saya sudah mematikan backupdan backupcopytetapi inode masih berubah.
Alireza Mohamadi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.