每天一個 Linux 命令(36): diff 命令

發表於2017-01-15

diff 命令是 linux上非常重要的工具,用於比較檔案的內容,特別是比較兩個版本不同的檔案以找到改動的地方。diff在命令列中列印每一個行的改動。最新版本的diff還支援二進位制檔案。diff程式的輸出被稱為補丁 (patch),因為Linux系統中還有一個patch程式,可以根據diff的輸出將a.c的檔案內容更新為b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。

1.命令格式:

2.命令功能:

diff命令能比較單個檔案或者目錄內容。如果指定比較的是檔案,則只有當輸入為文字檔案時才有效。以逐行的方式,比較文字檔案的異同處。如果指定比較的是目錄的的時候,diff 命令會比較兩個目錄下名字相同的文字檔案。列出不同的二進位制檔案、公共子目錄和只在一個目錄出現的檔案。

3.命令引數:

4.使用例項:

例項1:比較兩個檔案

命令:

輸出:

說明:

上面的“3c3”和“8c8”表示log2014.log和log20143log檔案在3行和第8行內容有所不同;”11,12d10″表示第一個檔案比第二個檔案多了第11和12行。

diff 的normal 顯示格式有三種提示:

例項2:並排格式輸出

命令:

輸出:

說明:

例項3:上下文輸出格式

命令:

輸出:

說明:

這種方式在開頭兩行作了比較檔案的說明,這裡有三中特殊字元:

例項4:統一格式輸出

命令:

輸出:

說明:

它的第一部分,也是檔案的基本資訊:

“—“表示變動前的檔案,”+++”表示變動後的檔案。

第二部分,變動的位置用兩個@作為起首和結束。

前面的”-1,12″分成三個部分:減號表示第一個檔案(即log2014.log),”1″表示第1行,”12″表示連續12行。合在一起,就表示下面是第一個檔案從第1行開始的連續12行。同樣的,”+1,10″表示變動後,成為第二個檔案從第1行開始的連續10行。

例項5:比較資料夾不同

命令:

輸出:

說明:

例項6:比較兩個檔案不同,並生產補丁

命令:

輸出:

說明:

例項7:打補丁

命令:

輸出:

說明:

本系列文章:

每天一個 Linux 命令(1):ls命令
每天一個 Linux 命令(2):cd命令
每天一個 Linux 命令(3):pwd命令
每天一個 Linux 命令(4):mkdir命令
每天一個 Linux 命令(5):rm 命令
每天一個 Linux 命令(6):rmdir 命令
每天一個 Linux 命令(7):mv命令
每天一個 Linux 命令(8):cp 命令
每天一個 Linux 命令(9):touch 命令
每天一個 Linux 命令(10):cat 命令
每天一個 Linux 命令(11):nl 命令
每天一個 Linux 命令(12):more 命令
每天一個 Linux 命令(13):less 命令
每天一個 Linux 命令(14):head 命令
每天一個 Linux 命令(15):tail 命令
每天一個 Linux 命令(16):which命令
每天一個 Linux 命令(17):whereis 命令
每天一個 Linux 命令(18):locate 命令
每天一個 Linux 命令(19):find 命令概覽
每天一個 Linux 命令(20):find命令之exec
每天一個 Linux 命令(21):find命令之xargs
每天一個 Linux 命令(22):find 命令的引數詳解
每天一個 Linux 命令(23):Linux 目錄結構
每天一個 Linux 命令(24):Linux 檔案型別與副檔名
每天一個 Linux 命令(25):Linux 檔案屬性詳解
每天一個 Linux 命令(26):用 SecureCRT 來上傳和下載檔案
每天一個 Linux 命令(27):linux chmod 命令
每天一個 Linux 命令(28):tar 命令
每天一個 Linux 命令(29): chgrp 命令
每天一個 Linux 命令(30): chown 命令
每天一個 Linux 命令(31): /etc/group 檔案詳解
每天一個 Linux 命令(32):gzip 命令
每天一個 Linux 命令(33):df 命令
每天一個 Linux 命令(34): du 命令
每天一個 Linux 命令(35): ln 命令

相關文章