1 命令格式
$diff <變動之前的文件> <變動之后的文件>
2 diff文件的三種格式
normal diff
context diff
unified diff
3 示例
變動之前的文件:
b
bc
b
b
b
每行一個b,共5行。
變動之后的文件:
b
bcd
b
b
b
共5行,第二行一個d,其它行都是b。
4 正常格式的diff
這個diff輸出的只有difference本身,不包括difference所在的代碼本身。
diff f1.txt f2.txt
輸出如下:
2c2
< bc
------
> bcd
第一行說明變動的位置:前面的2是前面文件中的位置,后面一個2是后面文件中的位置,表示行號。
c表示change,即內容改變,如果是a的話,表示該行是新增加的,如果是d的話,表示該行被刪除了。
小於號“<”表示刪除該行,大於號">"表示增加該行。小於號和大於號后面的內容是該行的內容。
5 context diff
diff -c f1.txt f2.txt
輸出如下:
*** f1.txt 2016-12-25 23:53:02.619930781 -0500
--- f2.txt 2016-12-25 23:52:54.131930652 -0500
***************************
*** 1,5 ***
b
!bc
b
b
b
---1,5---
b
!bcd
b
b
b
前面兩行是兩個文件的基本信息,即文件名和時間,后面是時區。並且,*表示是舊的文件,-表示的是新的文件。
***1,5***表示1到5行的所有內容。對於---1,5---同樣。
!表示本行的內容有改變。同樣,a表示增加一行,d表示減少一行。
可見,對於context格式的輸出而言,f1和f2文件的上下文是分別顯示的,
因此有很多重復的內容,因此有了unified格式,也就是說,f1和f2公用同
一個上下文。
6 unified diff
$ diff -u f1.txt f2.txt
輸出如下:
--- f1.txt 2016-12-25 23:53:02.619930781 -0500
+++ f2.txt 2016-12-25 23:52:54.131930652 -0500
@@ -1,5 +1,5 @@
b
-bc
+bcd
b
b
b
-表示f1.txt文件,+表示f2.txt文件。
1,5表示第1行到第5行。
1,5表示第1行到第5行。
-表示原文件的行,+表示新文件的行。
所以,只看-的話就是原文件,只看+的話,就是新文件了。