我們通過下面這個(gè)例子來說明diff命令的簡(jiǎn)單用法。
文件準(zhǔn)備
-
old.txt
111
222
333
444
555
666
777
888
999
000 -
new.txt
111
1.5
222
2.5
2.6
333
444
555
888
909
000
1. Normal
$ diff old.txt new.txt

輸出說明
- a (add)
1a2 在old第1行之后加入了new的第2行
2a4,5在old第2行之后加入了new的第4,5行
- c (change)
9c10old中第9行修改為new第10行
<表示old文件中的內(nèi)容
>表示new文件中的內(nèi)容
- d (delete)
6,7d8old第6、第7行原本在new第8行之后
2. 并排輸出
$ diff old.txt new.txt -y -W 50

參數(shù)說明
- -y 并排輸出
- -W NUM 輸出列數(shù)
輸出說明
- “|” 表示前后2個(gè)文件內(nèi)容有不同
- “<”表示后面文件比前面文件少了1行內(nèi)容
- “>”表示后面文件比前面文件多了1行內(nèi)容
3. 上下文輸出
$ diff old.txt new.txt -c

參數(shù)說明
- -c NUM
Output NUM (default 3) lines of copied context.
輸出說明
- “+” 比較的文件的后者比前著多一行
- “-” 比較的文件的后者比前著少一行
- “!” 比較的文件兩者有差別的行
4. 統(tǒng)一格式輸出
$ diff old.txt new.txt -u

輸出說明
- "---" 表示變動(dòng)前的文件
- "+++" 表示變動(dòng)后的文件
- @@ -1,10 +1,11 @@ 變動(dòng)位置
'-'表示old.txt
'+'表示new.txt
'-1,10' old.txt的前10行
'+1,10' new.txt的前11行
5. 比較文件夾不同
$ diff path1 path2
PS : 給目錄打補(bǔ)丁會(huì)發(fā)生覆蓋
6. 比較文件不同,產(chǎn)生補(bǔ)丁
$ diff -ruN old.txt new.txt > log.patch
$ cat log.patch

7. 打補(bǔ)丁
$ patch -p0 < log.patch
patching file old.txt
- -pNUM
去掉默認(rèn)路徑中的NUM個(gè)‘/
8. 恢復(fù)
如果恢復(fù)打補(bǔ)丁之前的文件
$ patch -RE -p0 < log.patch