Bash

如何防止“更新檔”在末尾創建帶有波浪號的備份文件?

  • September 14, 2022

我正在跑步diffpatch就像這樣:

diff --unified --ignore-space-change old.txt new.txt > changed.patch
patch --version-control=none third.txt changed.patch

--version-control=none應該防止patch創建文件(third.txt.orig它確實如此)。

但是,它會創建一個名為的文件third.txt.~1~

所有的帥哥都成功了,SIMPLE_BACKUP_SUFFIX環境變數為空。

--posix選項創建third.orig文件。

third.rej如果有問題,我不介意是否創建文件。

我正在使用帶有 GNU 更新檔 2.7.6 的 Git Bash。

簡短:使用--no-backup-if-mismatch

通常,如果更新檔與原始輸入文件不完全匹配,更新檔**patch -R**會創建一個備份文件,因為在這種情況下,如果您使用 ’ ’ 撤消更新檔,則可能無法恢復原始數據(請參閱應用反向更新檔)。但是,當符合 POSIX 時,patch 預設不創建備份文件。請參閱更新檔和POSIX 標準

( --backup-b) 選項使更新檔生成備份文件,無論更新檔是否與原始輸入匹配。該**--backup-if-mismatch選項導致更新檔為不匹配的文件創建備份文件;這是不符合 POSIX 時的預設值。該--no-backup-if-mismatch**選項導致更新檔不創建備份文件,即使是不匹配的更新檔;這是符合 POSIX 時的預設值。

(“符合”需要一些解釋,這在 2018 年第 7 期 The Open Group Base Specifications 中並不明顯)。

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