สมมติว่าฉันมีสองไฟล์file1
และfile2
:
$ echo aaa >file1
$ ln file1 file2
จากนั้นฉันตรวจสอบว่า inodes เหมือนกัน:
$ ls -i
18749779 file1 18749779 file2
ซึ่งแสดงให้เห็นว่าทั้งสองไฟล์เหมือนกันจริง ๆ ตอนนี้ฉันแก้ไขfile1
ใน Emacs และเพิ่มบรรทัดด้วยเช่นข้อความbbb
และบันทึกและออกจาก Emacs
ตอนนี้ฉันได้รับ:
$ ls -i
18749781 file1 18749779 file2
$ cat file1
aaa
bbb
$ cat file2
aaa
ดังนั้นการเชื่อมโยงฮาร์ดเสีย โปรดทราบว่าสิ่งนี้จะไม่เกิดขึ้นเมื่อฉันแก้ไขไฟล์vim
หรือถ้าฉันเพียงแค่ทำecho bbb >>file1
..
ฉันจะป้องกัน Emacs จากการทำลายฮาร์ดลิงก์ได้อย่างไร
ปรับปรุง:
ทราบว่าฉันมี
(require 'backup-dir)
(setq bkup-backup-directory-info
'((t "~/.emacs-backups/" ok-create full-path )))
ใน~/.emacs
ไฟล์ init ของฉัน หากฉันแก้ไขfile1
โดยใช้emacs -Q file1
ฉันจะได้รับไฟล์ที่เรียกว่าfile1~
ในไดเรกทอรีปัจจุบันที่ลิงก์ไปยังfile2
(มี inode เดียวกัน) แต่file1~
ยังไม่ได้รับการแก้ไข (ดังนั้นจึงเหมือนกับไฟล์เก่าfile1
) .. นี่ไม่ใช่สิ่งที่ฉันต้องการ ฉันต้องการทั้งไฟล์file1
และfile2
เป็นไฟล์เดียวกันและรวมเนื้อหาไฟล์ที่อัปเดตแล้ว ..
(setq backup-by-copying t)
ใน~/.emacs
ไฟล์ init ของฉันมันทำงานได้ตามที่ต้องการ ..