cpm(compare)比較兩個文件
語法
cmp [-clsv][-i <字符數目>][--help] File1 File2
描述
cmp 命令比較 File1 和 File2 參數指定的文件,並將結果寫到標准輸出。如果為 File1 或 File2 參數指定 -(減號),則 cmp 命令讀取該文件的標准輸入。只可以從標准輸入讀取一個文件。在缺省條件下,如果文件相同,則 cmp 命令不顯示任何內容。如果它們不同,則 cmp 命令顯示發生不同的第一個字節數和行數。如果指定了 -l 標志,並且如果一個文件是另一文件的初始後繼(即,如果在查找任何差別之前,cmp 命令讀取文件中的文件結束符),則 cmp 命令記下它。通常,使用 cmp 命令比較非文本文件,使用
diff 命令比較文本文件。
標志
-l 對於每個不同,(小寫字母 L)顯示十進制的字節數和八進制的不同字節。
-s 只返回退出值。值 0 指示相同的文件;值 1 指示不同的文件;值 2 指示不可訪問的文件或缺少選項。
退出狀態
該命令返回以下出口值:
0 文件相同。
1 文件不同。即使一個文件是另一個文件的初始後繼(一個文件與另一個文件的第一個部分相同),也給出該值。
>1 發生錯誤。
范例
1. 要確定兩個文件是否相同
這比較linuxeye1.txt和linuxeye2.txt。如果文件相同,則不顯示消息。 如果文件不同,則顯示第一個不同的位置;例如:
# echo 'www.linuxeye.com/command/cmp.html' > linuxeye1.txt
# cp linuxeye1.txt linuxeye1.txt_bk
# echo 'www.linuxeye.com/command/' > linuxeye2.txt
# cmp linuxeye1.txt linuxeye1.txt_bk #沒有輸出
# cmp linuxeye1.txt linuxeye2.txt
linuxeye1.txt linuxeye2.txt differ: byte 26, line 1
2. 要顯示不同字節的每個對
這比較文件,然後顯示字節數(使用十進制格式)和每個不同的不同字節(使用八進制格式)。例如,如果第26個字節在linuxeye1.txt中是八進制 143,在linuxeye2.txt中是12,如下:
# cmp -l linuxeye1.txt linuxeye2.txt
26 143 12
cmp: EOF on linuxeye2.txt
3. 要比較兩個文件,而不寫任何消息
# cmp -s linuxeye1.txt linuxeye1.txt_bk
這樣,如果文件相同,則給出值 0,如果不同,則給出值 1,或者如果發生錯誤,則給出值 2。該命令形式通常用在 shell 步驟中。例如:
# if cmp -s linuxeye1.txt linuxeye1.txt_bk
> then
> echo No change
> fi
No change
# if cmp -s linuxeye1.txt linuxeye2.txt
> then
> echo No change
> fi