
使用 比較 2 個檔案時diff
,original
檔案作為第一個參數提供,new
(修改後的)作為第二個參數提供。
diff original new
據推測,這種排序背後的邏輯是展示如何使用從左到右的時間流動約定將原始的轉換為新的。
我對這個邏輯有問題。當我比較兩個文件時,我直觀地使用逆表示法:
diff new original
這樣我就可以在檢查更改後將新文件放入舊文件中,從而將其“修補”到新版本。
cat new > original
但是使用「my」倒置表示法會令人困惑,因為 diff 顯示+
刪除和-
新增。
我該如何解決這個問題?
答案1
快速瀏覽手冊頁表明,如果您想明確的話,可以使用--from-file=original
和選項。--to-file=new
您將需要多輸入一些內容,但會給您所需的靈活性,並且額外的好處是使事情變得明確。
diff --to-file=new --from-file=original
如果需要,您還可以編寫一個簡單的包裝腳本,該腳本僅按照您想要的順序獲取檔案名稱並為您運行它。
編輯:這是針對 GNU diff...但不確定這是否是標準(POSIX)選項。
答案2
有一個簡單的解決方案!
編寫以下腳本:
if [ "$#" -ne 2 ]; then
echo "USAGE: diff2 newfile oldfile"
exit 1;
fi
diff $2 $1
將其保存在 PATH 上的資料夾之一(可能是/bin
或/usr/bin
)上,命名為 diff2。
就是這樣,您現在可以呼叫:
diff2 newfile oldfile
,然後會調用diff oldfile newfile