Linux diff命令介紹
diff
命令,即 differences
,主要用于比較兩個(gè)文件或者兩個(gè)文件夾中文件的差異。在日常開發(fā)或者文檔生成中,我們常常會(huì)同時(shí)維護(hù)著多個(gè)版本的文件,diff
命令就能用來(lái)幫助我們分析出不同版本之間的區(qū)別。diff
命令會(huì)逐行比較并在被比較的兩個(gè)文件中尋找差異,如果文件相同,就不會(huì)有任何輸出。
Linux diff命令適用的Linux版本
這個(gè)命令在大部分的 Linux 發(fā)行版, 包括 Ubuntu, Debian, Fedora 和 CentOS 等都可以直接使用. 對(duì)于沒(méi)有預(yù)裝 diff 命令的發(fā)行版,可以通過(guò)包管理器進(jìn)行安裝:
對(duì)于基于 Debian 的系統(tǒng)(如 Ubuntu),可以使用如下命令安裝:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install diffutils
對(duì)于基于 Red Hat 的系統(tǒng) (如 CentOS),CentOS7 版本可以使用以下命令安裝:
[linux@bashcommandnotfound.cn ~]$ sudo yum install diffutils
而 CentOS8 可以使用以下命令安裝:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install diffutils
Linux diff命令的基本語(yǔ)法
diff
命令的基本語(yǔ)法格式如下:
diff [options] file1 file2
Linux diff命令的常用選項(xiàng)或參數(shù)說(shuō)明
選項(xiàng) | 描述 |
---|---|
-i | 忽略大小寫差異 |
-w | 忽略所有空格 |
-B | 忽略空白行 |
-y | 并排比較文件 |
-n | 使用RCS格式進(jìn)行比較 |
-c | 以C語(yǔ)言風(fēng)格進(jìn)行比較 |
Linux diff命令實(shí)例詳解
實(shí)例1:比較兩個(gè)文本文件
[linux@bashcommandnotfound.cn ~]$ diff file1.txt file2.txt
這個(gè)簡(jiǎn)單的示例會(huì)比較兩個(gè)文本文件,向我們顯示兩者之間的差異。
實(shí)例2:使用-c選項(xiàng)進(jìn)行比較
[linux@bashcommandnotfound.cn ~]$ diff -c file1 file2
使用 -c 選項(xiàng),我們可以在比較兩個(gè)文件時(shí)顯示“上下文”,即顯示差異前后的幾行代碼,這樣能更清晰地看到差異的具體位置。
實(shí)例3:使用 -i 選項(xiàng)忽略大小寫進(jìn)行比較
[linux@bashcommandnotfound.cn ~]$ diff -i file1 file2
在某些情況下,可能我們只關(guān)注內(nèi)容差異,而不關(guān)注大小寫差異,這時(shí)就可以使用 -i 選項(xiàng)。
實(shí)例4:使用 -w 選項(xiàng)忽略行內(nèi)空格的差異
行內(nèi)空格的差異有時(shí)候是我們并不關(guān)心的,這時(shí)可以使用 -w
選項(xiàng)來(lái)忽略它。
[linux@bashcommandnotfound.cn ~]$ diff -w file1 file2
實(shí)例5:使用 -B 選項(xiàng)來(lái)忽略空白行
有時(shí)候,在一個(gè)文件中的空白行會(huì)使得比較的結(jié)果顯得混亂,我們可以通過(guò) -B
選項(xiàng)來(lái)忽略這些變化。
[linux@bashcommandnotfound.cn ~]$ diff -B file1 file2
實(shí)例6:使用 -y 選項(xiàng)并排比較文件
有時(shí)我們不僅想知道兩個(gè)文件的差異,還希望能同時(shí)看到兩個(gè)文件的內(nèi)容,這時(shí)候可以使用 -y
選項(xiàng)。
[linux@bashcommandnotfound.cn ~]$ diff -y file1 file2
實(shí)例7:使用-n選項(xiàng)以RCS格式輸出差異
RCS (Revision Control System) 是一種老舊的版本控制系統(tǒng),我們可以使用它的格式來(lái)輸出 diff
的結(jié)果。
[linux@bashcommandnotfound.cn ~]$ diff -n file1 file2
這樣的輸出更便于檢視或者做進(jìn)一步處理。
實(shí)例8:比較目錄
除了文件,diff
也可以用來(lái)比較目錄。下面的命令將比較兩個(gè)目錄下的文件。
[linux@bashcommandnotfound.cn ~]$ diff directory1 directory2
實(shí)例9:使用-r選項(xiàng)遞歸比較目錄
如果想要比較兩個(gè)目錄以及它們的子目錄下的所有文件,我們可以使用 -r
選項(xiàng)。
[linux@bashcommandnotfound.cn ~]$ diff -r directory1 directory2
實(shí)例10:使用-u選項(xiàng)進(jìn)行統(tǒng)一格式比較
如果你喜歡 Git 中 diff
的輸出格式,你可以使用 -u
選項(xiàng)來(lái)得到類似的輸出。
[linux@bashcommandnotfound.cn ~]$ diff -u file1 file2
實(shí)例11:使用-q選項(xiàng)僅顯示有差異的文件名
如果你在比較兩個(gè)大目錄,你可能只關(guān)心哪些文件有所不同,而不關(guān)心具體是怎么不同的。在這種情況下,你可以使用 -q
選項(xiàng)。
[linux@bashcommandnotfound.cn ~]$ diff -q directory1 directory2
實(shí)例12:顯示文件差異的統(tǒng)計(jì)信息
如果你想要查看文件差異的統(tǒng)計(jì)信息,比如哪些行被修改了,改了多少次,你可以使用 diffstat
命令。diffstat
是一個(gè)讀取 diff
命令的輸出,并生成相應(yīng)的修改/插入/刪除統(tǒng)計(jì)信息的命令。
[linux@bashcommandnotfound.cn ~]$ diff -uN dir1 dir2 | diffstat
實(shí)例13:兩種忽略所有空白及制表符的方式
在進(jìn)行文件差異比較的時(shí)候,我們有時(shí)需要忽略所有的空白和制表符的變化,可以使用 -b
或者 -w
選項(xiàng)。
[linux@bashcommandnotfound.cn ~]$ diff -b file1 file2
或者
[linux@bashcommandnotfound.cn ~]$ diff -w file1 file2
實(shí)例14:生產(chǎn)patch包
diff
命令常用于生成 patch 包。這是一種很有效的更新軟件的方式,只需通過(guò) diff
命令比較新舊兩個(gè)版本之間的差異,并將差異制作成 patch 包。
[linux@bashcommandnotfound.cn ~]$ diff -Naur olddir newdir > update.patch
實(shí)例15:按字節(jié)比較文件
diff
命令默認(rèn)是按行比較文件,如果我們要在二進(jìn)制文件或者需要按字節(jié)比較的時(shí)候,我們可以結(jié)合 cmp
命令來(lái)使用。
[linux@bashcommandnotfound.cn ~]$ cmp -l file1 file2 | gawk '{printf "%08X %02X %02X\n", $1, strtonum(0$2), strtonum(0$3)}'
這將按字節(jié)對(duì)比 file1 和 file2,并輸出不同的字節(jié)的位置和值。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-847055.html
Linux diff命令的注意事項(xiàng)
- 從輸出結(jié)果中,我們可以看到,diff 命令并不會(huì)簡(jiǎn)單的告訴我們哪些行有差異,而是會(huì)以一種更結(jié)構(gòu)化的方式告訴我們應(yīng)該如何從一個(gè)文件“改編”到另一個(gè)文件。
- 如果提示
bash: diff: command not found
,則可能是 diff 命令沒(méi)有被安裝,可以按照上述方式進(jìn)行安裝。
Linux diff相關(guān)命令
cmp命令:比較兩個(gè)文件是否有差異
diff3命令:對(duì)比三個(gè)文件的差異文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-847055.html
- cd命令:切換當(dāng)前工作目錄
- ls命令:查看當(dāng)前目錄下的文件列表
- mv命令:移動(dòng)或重命名文件
- diff3命令:比較或合并三個(gè)文件
- comm命令:比較源文件和已排序文件
- cmp命令:比較兩個(gè)文件是否有差異
- patch命令:使用diff文件來(lái)更新源文件
- awk命令:用于文本處理的腳本語(yǔ)言工具
- sort命令:對(duì)文件內(nèi)容進(jìn)行排序
- grep命令:在文件中搜索特定的字符串
到了這里,關(guān)于Linux diff命令教程:徹底搞懂如何找出文件之間的差異(附實(shí)例詳解和注意事項(xiàng))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!