patch 利用差異檔將源檔案修改為新檔。
diff
diff -u oldfile newfileoption "-u" 代表 採用universal
diff會將結果輸出到console,所以要存檔的話,用管線符號重導到新檔。
diff -u oldfile newfile > patchfilediff可以用來對整個目錄或是單一檔案動作。
對目錄動作時要這注意,有時候新目錄會增加新檔,所以diff時要加上"-N" option.
"-N" option 意旨:若舊檔不存在,就當原來該檔案是Null file.
若是沒有"-N" option。diff 只會標示"有一個新檔",但是不會將新檔內容輸出。
比較目錄還要加上"-r" option,代表"recursive".
所以一般diff 目錄用:
diff -Nur olddir newdir %gt; patchfile
patch
patch [option] orgfile patchfile會將 orgfile的內容改為patch後的內容,但是"檔名"不變喔。
所以只改一個file時,用這樣的patch比較方便(option 不用)。
patch 目錄的話有一點麻煩,要將diff檔放在目錄的上一層(否則也會被patch)。
然後到目錄下...
$ patch -p1 < ../patch_file.diff-p1 option 忽略diff file中的一階path。
沒有留言:
張貼留言