這個 cmp 命令 用於比較 Linux 上的兩個文件。對腳本最有用,因為它只報告文件是否不同。沒有報告差異。它還可用於比較非文本文件,例如庫、圖像和音樂。
cmp命令的基本用法
默認, cmp
如果文件相同,則該命令不顯示任何內容。如果它們不同, cmp
此命令顯示出現第一個差異的字節和行號。顯示文件之間差異的另一個命令是 差異命令.
cmp [options] file_1 file_2
如果文件相同, cmp
返回 0 作為退出狀態。如果文件不同, cmp
返回 1 作為退出狀態。
使用 cmp 命令
現在讓我們看看 cmp 命令的實際作用。
1.比較兩張照片
cmp img.png same_img.png
您可以使用 cmp 命令比較圖像,如下所示: cmp
逐字節比較文件。圖像也是字節流,所以如果兩個流相同,則表示圖像相同。 cmp 在這種情況下不報告任何內容。
2.比較備份和當前文件
cmp prog.o.bak prog.o
這比較了 prog.o.bak 和 prog.o。 如果兩個文件不同,則 cmp 會打印如下消息:
prog.o.bak prog.o differ: char 4, line 1
可能產生的另一個輸出是:
cmp: EOF on prog.o.bak
如果你看到這個,prog.o 的一部分與 prog.o.bak 相同,但 prog.o 中有額外的數據。
3.比較腳本中的文件
默認 cmp
報告作為參數給出的兩個文件是否不同。這是, -s
選項。讓我們看看這如何在簡短的 BASH 腳本中發揮作用。該腳本取決於 cmp 的退出代碼,而不是它是否產生任何輸出。
#!/bin/bash if cmp -s prog.c.bak prog.c then echo "These files are the same." fi
cmp
如果文件相同,則返回退出值 0,如果不同,則返回 1,如果發生錯誤,則返回 2。所以腳本說“These files are the same
.” 如果文件相同。
4.用cmp命令比較純文本文件
cmp
基本上適用於包含文本的文件。但是,使用命名管道(Linux 提供的一項功能), 直接比較文本 無需創建文件。這個 BASH 技巧對於長網站鏈接很有用。因此,如果您不想關注鏈接,或者您只是懶惰,請使用命名管道 cmp
.
cmp <(echo "hello") <(echo "hello")
兩者是同一篇文章,所以 cmp
什麼都不打印。現在讓我們比較兩個不同的文本。
cmp <(echo "hello") <(echo "hello hi")
.png)
正如預期的那樣 cmp
報導稱存在差異。
筆記: 我之前提到過,如果您使用命名管道,則無需創建文件來比較文本。
命名管道實際上是一個內部文件,一個 BASH 創建的“託管文件”。
BASH 為您完成所有繁重的工作。用戶不必擔心創建外部文件只是為了比較文本。
結論是
cmp
用於比較文件的簡潔方便的工具。它在 *NIX 世界中無處不在,當與命名管道等其他功能結合使用時,可用於節省比較純文本的時間。希望你學到了一些新東西 cmp
從這篇文章訂購。在評論中告訴我使用哪一個 cmp
你還不知道的命令。