Linux 文本比較工具
■ diff命令
diff用於逐行比較兩個文本文件,列出其不同之處
diff [option] <file1> <file2>
file1和file2除了可以是文件名之外,也可以是:
文件名 目錄名 這樣子的話自動比較目錄名下和文件名同名的文件
"-" 表示標准輸入
目錄名 目錄名 會搜索兩個目錄下同名的文件並作比較,對於各自獨有的文件則說明是獨有的
可選option:
-a 將所有文件當成文本文件處理
-b 忽略空格造成的不同(指位於行末的空格)
-B 忽略空行造成的不同
-I 忽略大小寫帶來的不同
-r 遞歸比較子目錄
-c 輸出較為格式化,友好的結果。可以測試一下看具體的樣式
-N 在目錄比較的時候對於一些某個目錄獨有的文件,不是說明其是獨有的,而是把它和一個空白文件作比較
-y 將兩個文件的內容按行分屏幕居左和居右輸出並比較結果,比較友好,一目了然!
-u 將結果合並着輸出,每行前有個+或者-號或什么都沒有,代表着如果要把file1改變成file2那樣的話,要加減哪些行,哪些行保持不變就行。也還算友好
在沒有指定上面提到的這些友好化輸出參數的時候,其輸出的意思是通過下面這些操作可以讓file1和file2一樣:
n1 a n2,n3 表示在file1的第n1行后加上file2的第n2到n3行
n1,n2 d n3 表示在file1中刪除第n1到n2行
n1,n2 c n3,n4 表示把file1中的n1到n2行換成file2中的n3到n4行
上面這些表示變化的方式比較難懂且不友好,如果可以的話盡量還是加上-y之類的友好化參數比較好
■ cmp命令
cmp比較的大多是非文本文件,比如二進制文件什么的。
cmp <file1> <file2>
file1和file2只能是文件,cmp返回的是兩個文件從開頭開始掃描發現的第一處不同的字節數和行數所在。若比較完了一個文件所有內容沒發現不同,而第二個文件還有剩余時就返回一個EOF on XXX表示XXX真包含於另一個文件。如果返回None那就是說兩者一模一樣啦