Linux 上的 Cmp 命令(使用一個簡單的示例)


這個 cmp 命令 用於比較 Linux 上的兩個文件。它對腳本最有用,因為它僅在文件不同時才報告。沒有報告差異。它還可用於比較非文本文件,例如庫、圖像和音樂。

cmp命令的基本用法

默認 cmp 如果文件相同,該命令將不顯示任何內容。如果它們不同, cmp 此命令顯示出現第一個差異的字節和行號。另一個顯示文件差異的命令 差異命令..

cmp [options] file_1 file_2
比較文件

如果文件相同, cmp 返回 0 作為退出狀態。如果文件不同, cmp 返回 1 作為退出狀態。

使用 cmp 命令

接下來,讓我們看看 cmp 命令的實際作用。

1.比較2張照片

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")
Cmphello 不同比較純文本

正如預期的那樣 cmp 據報導,存在矛盾。

筆記: 我之前提到過,如果您使用命名管道,則無需創建文件來比較文本。
命名管道實際上是內部文件,即 BASH 創建的“主機文件”。
BASH 完成了所有繁瑣的工作。用戶不必擔心創建外部文件來比較文本。

結論是

cmp 是一個簡潔實用的文件比較工具。 * 它在 NIX 世界中無處不在,可以與命名管道等其他功能結合使用,以節省比較純文本的時間。我希望你學到了一些新東西 cmp 請從這篇文章訂購。請在您使用的評論中告訴我 cmp 一個我還不知道的命令。



Source link