重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
背景
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),永定企業(yè)網(wǎng)站建設(shè),永定品牌網(wǎng)站建設(shè),網(wǎng)站定制,永定網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,永定網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
在Linux系統(tǒng)環(huán)境的工作過(guò)程中,經(jīng)常遇到需要對(duì)比文件差異的情況,此時(shí),使用Linux提供的diff工具可以方便的發(fā)現(xiàn)文件不同版本之間差異,從而快速排除解決問(wèn)題。
Windows端有強(qiáng)大文件對(duì)比工具BeyondCompare。
patch 命令可以將diff命令的輸出應(yīng)用到原始的對(duì)比文件中,將新版本的更新應(yīng)用到原始的文件中。
命令
diff [option] [file1] [file2]
patch [option] [file1] [file_differ]
測(cè)試環(huán)境
WSL: Linux PERSONALPC 4.4.0-19041-Microsoft #488-Microsoft Mon Sep 01 13:43:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux
測(cè)試過(guò)程
如果想對(duì)兩個(gè)有序的文件進(jìn)行比較,可以使用comm命令。
語(yǔ)法:comm [- 123 ] file1 file2
說(shuō)明:該命令是對(duì)兩個(gè)已經(jīng)排好序的文件進(jìn)行比較。其中file1和file2是已排序的文件。comm讀取這兩個(gè)文件,然后生成三列輸出:僅在file1中出現(xiàn)的行;僅在file2中出現(xiàn)的行;在兩個(gè)文件中都存在的行。如果文件名用“- ”,則表示從標(biāo)準(zhǔn)輸入讀取。
comm -1 不顯示只出現(xiàn)在第一個(gè)文件的行。
comm -2 不顯示只出現(xiàn)在第二個(gè)文件的行。
comm -3 不顯示同時(shí)出現(xiàn)在兩個(gè)文件的行。
comm file1 file2 顯示三列,第一列代表只出現(xiàn)在file1的行,第二列代表只出現(xiàn)在file2的行,第三列代表倆個(gè)文件同時(shí)出現(xiàn)的行
comm -12 顯示兩個(gè)文件同時(shí)出現(xiàn)的行 也就是交集
comm -13 顯示只出現(xiàn)在第二個(gè)文件的行
comm -23 顯示只出現(xiàn)在第一個(gè)文件的行
例如:假設(shè)要對(duì)文件myfile1和myfile2進(jìn)行比較
$ cat myfile1
main( )
{
float a,b, i, j ,z ;
a=i=10 ; b=j=5 ;
z= i + j ;
printf(“z=%d\\\\n”,z) ;
}
$ cat myfile2
#include stdio.h
main( )
{
float i, j ,z ;
i=10 ; j=5 ;
z= i + j ;
printf(“z=%f\\\\n”,z) ;
}
$ comm - 12 myfile1 myfile2
main( )
{
z= i + j ;
}
就只顯示文件myfile1和myfile2中共有的行。
該命令的功能為逐行比較兩個(gè)文本文件,列出其不同之處。它比comm命令完成更復(fù)雜的檢查。它對(duì)給出的文件進(jìn)行系統(tǒng)的檢查,并顯示出兩個(gè)文件中所有不同的行,不要求事先對(duì)文件進(jìn)行排序。
語(yǔ)法:diff [選項(xiàng)] file1 file2
說(shuō)明:該命令告訴用戶(hù),為了使兩個(gè)文件file1和file2一致,需要修改它們的哪些行。如果用“- ”表示file1或fiie2,則表示標(biāo)準(zhǔn)輸入。如果file1或file2是目錄,那么diff將使用該目錄中的同名文件進(jìn)行比較。
例如: diff /usr/xu mine
把目錄/usr/xu 中名為mine的文件與當(dāng)前目錄中的mine文件進(jìn)行比較。
通常輸出由下述形式的行組成:
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4 這些行類(lèi)似ed命令把filel轉(zhuǎn)換成file2。字母(a、d和c)之前的行號(hào)(n1,n2)是針對(duì)file1的,其后面的行號(hào)(n3,n4)是針對(duì)file2的。字母a、d和c分別表示附加、刪除和修改操作。
在上述形式的每一行的后面跟隨受到影響的若干行,以“”打頭的行屬于第一個(gè)文件,以“”打頭的行屬于第二個(gè)文件。
diff能區(qū)別塊和字符設(shè)備文件以及FIFO(管道文件),不會(huì)把它們與普通文件進(jìn)行比較。
如果file1和file2都是目錄,則diff會(huì)產(chǎn)生很多信息。
如果一個(gè)目錄中只有一個(gè)文件,則產(chǎn)生一條信息,指出該目錄路徑名和其中的文件名。
diff各選項(xiàng)的含義如下:
- b 忽略行尾的空格,而字符串中的一個(gè)或多個(gè)空格符都視為相等。
如How are you與How are you被視為相同的字符串。
- c 采用上下文輸出格式(提供三行上下文)。
- C n 采用上下文輸出格式(提供n行上下文)。
- e 產(chǎn)生一個(gè)合法的ed腳本作為輸出。
- r 當(dāng)file1和file2是目錄時(shí),遞歸作用到各文件和目錄上。
例如,文件ml.c的內(nèi)容為(左邊行號(hào)是有意加上的,以便前后對(duì)照):
1 main( )
{
printf(“Hello!\n”);
}
5 文件m2.c的內(nèi)容為:
1 main()
2 {
3 int n , m ;
4 n= 10 ;
5 printf ( “ % d \\\\ n ” , m = n * 10);
6 }
輸入命令:
$ diff m1.c m2.c
屏幕上顯示:
3,5 c 3,6
printf(“Hello!\n”);
}
5
3
int n,m;
4 n=10 ;
5 printf ( “ % d \\\\ n ” , m = n * 10);
6 }
表示把文件m1.c的3至5行改成m2.c的3至6行后,兩個(gè)文件相同。