cmp命令算法
用於比較兩個文件是否有差別。ide
當相互比較的兩個文件徹底同樣時,則該指令不會顯示任何信息。若發現有所差別,預設會標示出第一個不一樣之處的字符和列數編號。若不指定任何文件名稱或 是所給予的文件名爲"-",則cmp指令會從標準輸入設備讀取數據。函數
參數:ui
· -c或--print-chars 除了標明差別處的十進制字碼以外,一併顯示該字符所對應字符。spa
· -i<字符數目>或--ignore-initial=<字符數目> 指定一個數目。orm
· -l或--verbose 標示出全部不同的地方。ip
· -s或--quiet或--silent 不顯示錯誤信息。字符串
· -v或--version 顯示版本信息。it
· --help 在線幫助。io
1).要肯定兩個文件是否相同,請輸入:
cmp prog.o.bak prog.o
這比較 prog.o.bak 和 prog.o。若是文件相同,則不顯示消息。
2).若是文件不一樣,則顯示第一個不一樣的位置;例如:
prog.o.bak prog.o differ: char 4, line 1
若是顯示消息 cmp: EOF on prog.o.bak,則 prog.o 的第一部分與 prog.o.bak 相同,但在 prog.o 中還有其餘數據。
diff命令
用於比較文件的差別。
diff以逐行的方式,比較文本文件的異同處。所是指定要比較目錄,則diff會比較目錄中相同文件名的文件,但不會比較其中子目錄。
diff [-abBcdefHilnNpPqrstTuvwy][-<行數>][-C <行數>][-D <巨集名稱>][-I <字符或字符串>][-S <文件>][-W <寬度>][-x <文件或目錄>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目錄1][文件或目錄2]
參數:
· -<行數> 指定要顯示多少行的文本。此參數必須與-c或-u參數一併使用。
· -a或--text diff預設只會逐行比較文本文件。
· -b或--ignore-space-change 不檢查空格字符的不一樣。
· -B或--ignore-blank-lines 不檢查空白行。
· -c 顯示所有內文,並標出不一樣之處。
· -C<行數>或--context<行數> 與執行"-c-<行數>"指令相同。
· -d或--minimal 使用不一樣的演算法,以較小的單位來作比較。
· -D<巨集名稱>或ifdef<巨集名稱> 此參數的輸出格式可用於前置處理器巨集。
· -e或--ed 此參數的輸出格式可用於ed的script文件。
· -f或-forward-ed 輸出的格式相似ed的script文件,但按照原來文件的順序來顯示不一樣處。
· -H或--speed-large-files 比較大文件時,可加快速度。
· -l<字符或字符串>或--ignore-matching-lines<字符或字符串> 若兩個文件在某幾行有所不一樣,而這幾行同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差別。
· -i或--ignore-case 不檢查大小寫的不一樣。
· -l或--paginate 將結果交由pr程序來分頁。
· -n或--rcs 將比較結果以RCS的格式來顯示。
· -N或--new-file 在比較目錄時,若文件A僅出如今某個目錄中,預設會顯示:
· Only in目錄:文件A若使用-N參數,則diff會將文件A與一個空白的文件比較。
· -p 若比較的文件爲C語言的程序碼文件時,顯示差別所在的函數名稱。
· -P或--unidirectional-new-file 與-N相似,但只有當第二個目錄包含了一個第一個目錄所沒有的文件時,纔會將這個文件與空白的文件作比較。
· -q或--brief 僅顯示有無差別,不顯示詳細的信息。
· -r或--recursive 比較子目錄中的文件。
· -s或--report-identical-files 若沒有發現任何差別,仍然顯示信息。
· -S<文件>或--starting-file<文件> 在比較目錄時,從指定的文件開始比較。
· -t或--expand-tabs 在輸出時,將tab字符展開。
· -T或--initial-tab 在每行前面加上tab字符以便對齊。
· -u,-U<列數>或--unified=<列數> 以合併的方式來顯示文件內容的不一樣。
· -v或--version 顯示版本信息。
· -w或--ignore-all-space 忽略所有的空格字符。
· -W<寬度>或--width<寬度> 在使用-y參數時,指定欄寬。
· -x<文件名或目錄>或--exclude<文件名或目錄> 不比較選項中所指定的文件或目錄。
· -X<文件>或--exclude-from<文件> 您能夠將文件或目錄類型存成文本文件,而後在=<文件>中指定此文本文件。
· -y或--side-by-side 以並列的方式顯示文件的異同之處。
· --help 顯示幫助。
· --left-column 在使用-y參數時,若兩個文件某一行內容相同,則僅在左側的欄位顯示該行內容。
· --suppress-common-lines 在使用-y參數時,僅顯示不一樣之處。
[root@localhost test3]# diff log2014.log log2013.log
3c3
< 2014-03
---
> 2013-03
8c8
< 2013-07
---
> 2013-08
11,12d10
< 2013-11
< 2013-12
上面的"3c3"和"8c8"表示log2014.log和log20143log文件在3行和第8行內容有所不一樣;"11,12d10"表示第一個文件比第二個文件多了第11和12行。
[root@localhost test3]# diff log2014.log log2013.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2014-03 | 2013-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-07 | 2013-08
2013-09 2013-09
2013-10 2013-10
2013-11 <
2013-12 <
[root@localhost test3]# diff log2013.log log2014.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2013-03 | 2014-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-08 | 2013-07
2013-09 2013-09
2013-10 2013-10
> 2013-11
> 2013-12
說明:
· "|"表示先後2個文件內容有不一樣
· "<"表示後面文件比前面文件少了1行內容
· ">"表示後面文件比前面文件多了1行內容