命令格式
diff [引數] [檔案1或目錄1] [檔案2或目錄2]
Linux diff命令用于比較檔案的差異,
- diff以逐行的方式,比較文本檔案的異同處,
- 如果指定要比較目錄,diff會比較目錄中相同檔案名的檔案,但不會比較其中子目錄,
- diff程式的輸出被稱為補丁(patch),Linux系統中還有一個patch程式,可以根據diff的輸出將a.c的檔案內容更新為b.c
- 打補丁:patch file patch.log
命令引數
| 引數 | 描述 |
|---|---|
| -行數 | 指定要顯示多少行的文本,此引數必須與-c或者-c引數一并使用, |
| -a | 或者--text,diff預設只會逐行比較文本檔案 |
| -b | 或--ignore-space-change ,不檢查空格字符的不同, |
| -B | 或--ignore-blank-lines ,不檢查空白行, |
| -c | 顯示全部內容,并標出不同之處 |
| -C行數 | 或--context行數 與執行"-c-行數"指令相同, |
| -i | 或--ignore-case ,不檢查大小寫的不同, |
| -p | 若比較的檔案為C語言的程式碼檔案時,顯示差異所在的函式名稱 |
| -N | 或--new-file ,在比較目錄時,若檔案A僅出現在某個目錄中,預設會顯示:Only in目錄:檔案A若使用-N引數,則diff會將檔案A與一個空白的檔案比較, |
| -P | 或--unidirectional-new-file ,與-N類似,但只有當第二個目錄包含了一個第一個目錄所沒有的檔案時,才會將這個檔案與空白的檔案做比較, |
| -r | 比較子目錄中的檔案 |
| -v | 顯示版本資訊 |
| -w | 或--ignore-all-space , 忽略全部的空格字符, |
| -W | 或--width , 在使用-y引數時,指定欄寬, |
| -x | 或--exclude , 不比較選項中所指定的檔案或目錄, |
| -X | 或--exclude-from , 您可以將檔案或目錄型別存成文本檔案,然后在=中指定此文本檔案, |
| -y | 或--side-by-side ,以并列的方式顯示檔案的異同之處, |
| --left-column | 在使用-y引數時,若兩個檔案某一行內容相同,則僅在左側的欄位顯示該行內容, |
| --suppress-common-lines | 在使用-y引數時,僅顯示不同之處, |
具體使用
默認格式的diff:diff file1 file2
2c2
< world
---
> world2
3a4
> hell
5d5
< river
- 它分成三個部分:前面的"4",表示f1的第4行有變化;中間的"c"表示變動的模式是內容改變(change),其他模式還有"增加"(a,代表addition)和"洗掉"(d,代表deletion);后面的"4",表示變動后變成f2的第4行,
- c:change,內容改變
- a:addition,增加
- d:deletion,洗掉
- ---用于分割f1和f2
背景關系格式的diff:diff file1 file2 -c
-> autotest-runtask diff 1.txt 2.txt -c
*** 1.txt 2020-08-09 18:09:24.000000000 +0800
--- 2.txt 2020-08-09 18:09:10.000000000 +0800
***************
*** 1,5 ****
hello
! world
goodbye
moutain
- river
--- 1,5 ----
hello
! world2
goodbye
+ hell
moutain
結果分成四部分:
- 第一部分的兩行,顯示兩個檔案的基本情況:檔案名和時間資訊
- *** 表示變動前的檔案
- --- 表示變動后的檔案
- 第二部分:15個星號,將檔案的基本情況和變動內容分割開
- 第三部分:顯示變動前的檔案
- 1,5,表示行號
- 檔案內容的每一行最前面,還有一個標記位:
- 空:無變化;
- !:該行有改動;
- -:該行被洗掉;
- +:該行新增
- 第四部分:顯示變動后的檔案
合并格式的diff:diff file1 file2 -u
? autotest-runtask diff 1.txt 2.txt -u
--- 1.txt 2020-08-09 18:09:24.000000000 +0800
+++ 2.txt 2020-08-09 18:09:10.000000000 +0800
@@ -1,5 +1,5 @@
hello
-world
+world2
goodbye
+hell
moutain
-river
- 第一部分:檔案基本資訊
- 第二部分:變動的部分用兩個@@作為起首和結束
- -:表示第一個檔案;+表示第二個檔案
- 第三部分:變動的具體內容
并排格式的diff:diff file1 file2 -y
? autotest-runtask diff 1.txt 2.txt -y
hello hello
world | world2
goodbye goodbye
> hell
moutain moutain
river <
-
|:表示前后2個檔案內容有不同
-
<:表示前面檔案比后面檔案多了1行內容
-
>:表示前面檔案比后面檔案少了一行內容
比較目錄:diff 目錄1 目錄2
- 只顯示不同行:
diff -r 目錄1 目錄2 -y --suppress-common-lines
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/6473.html
標籤:Linux
上一篇:程式員輕松繪圖神器
