Linux

由於我的文本編輯器而導致硬連結失去時該怎麼辦

  • July 13, 2020

所以,我有一個文件,在這種情況下,我們稱之為$HOME/Documents/hello.txt. 我會在裡面寫一些文字:

Hello, welcome to my text file

我將在這裡硬連結這個文件:$HOME/Documents/Backup/hello.txt.

好的,很好,這現在是硬連結的。如果我寫入原始文件,硬連結將被更新:

echo "Hello again" >> $HOME/Documents/hello.txt
cat $HOME/Documents/hello.txt
Hello, welcome to my text file
Hello again
cat $HOME/Documents/Backup/hello.txt
Hello, welcome to my text file
Hello again

現在,我的問題是,每當我使用大量創建臨時文件的程序打開任一文件(硬連結對應文件)時,它都會失去其連結關係,並且兩個文件都不會再更新另一個文件。

那麼,在這種情況下我能做些什麼呢?

注意:在這種情況下我不能使用符號連結,因為我正在使用 Github 的硬連結來備份一些文件,而 Git 不遵循符號連結。

正如 mosvy 在此評論中已經說過的那樣,大多數編輯在他們稍後替換(刪除)的原始文件的副本中進行編輯。雖然這增加了安全性,但它會破壞硬連結。

但是,可以將某些編輯器(例如 GNU Emacs)配置為就地執行文件編輯,這意味著它們可以直接更改原始文件,就像您在 shell 中所做的那樣。例如,這個問題和相應的答案正是討論了您關於 Gnu Emacs 的問題。所以你的編輯器的配置將是第一個要看的點。

由於您只需要 Git 的硬連結(?)——不幸的是,您的工作流程不是很詳細——您很可能可以在送出您隨後喜歡推送到 GitHub 的內容之前立即使用 Git 掛鉤重新建立正確的硬連結:pre-commit鉤子似乎是一個很有前途的候選者。有關詳細資訊,請參見手冊頁githooks(5)

引用自:https://unix.stackexchange.com/questions/513568