unix系統下diff的三種格式
diff命令是unix系統中常用的乙個命令,其功能是比較兩個文字檔案之間的差異。
目前diff的輸出有三種格式,分別是:正常格式(normal diff)、上下文格式(context diff)、合併格式(unified diff)
1、正常格式
命令格式 :
diff 《更改之前的檔名》 《更改之後的檔名》
舉例:
建立兩個檔案 file1.txt 和 file2.txt,內容分別如下:
what is your name?
my name is lilei.
what is your name?
my name is hanmeimei.
使用diff命令比價兩個檔案的不同:
diff file1.txt file2.txt
結果如下:
注釋:
第一行:2c2 前乙個2表示file1.txt的第2行有變動,c表示變動的模式 更改(change),此外變動模式還有 a 增加(addition),d 刪除(deletion)
第二行: < my name is lilei.
第三行: --- 用來分割file1.txt 和file2.txt
第四行: > my name is hanmeimei. > 表示新增到file2.txt檔案中,後面是新增的內容。
2、上下文格式
命令格式
diff -c 《更改之前的檔名》 《更改之後的檔名》
舉例:
diff -c file1.txt file2.txt
結果如下:
注釋:
第一行: *** file1.txt 2018-04-20 10:08:51.338188679 +0800
第二行:--- file2.txt 2018-04-20 10:09:41.387461602 +0800
以上兩行顯示兩個檔案的基本資訊,檔名和時間,其中「***」表示更改之前的檔案,「---」表示更改之後的檔案
第三行: *************** 此行是乙個分割線
第四行: *** 1,2 ****
第五行: what is your name?
第六行: ! my name is lilei.
以上三行表示file1.txt檔案有兩行內容,從1-2,內容如第
五、六行顯示。
檔案內容的每行前邊會有乙個識別符號,空表示無改動,!表示有改動,- 表示被刪除,+表示被增加
第七行: --- 1,2 ----
第八行: what is your name?
第九行: ! my name is hanmeimei.
以上三行表示的含義同上,針對file2.txt檔案
3、合併格式
命令格式
diff -u 《更改之前的檔名》 《更改之後的檔名》
舉例:
diff -u file1.txt file2.txt
結果如下:
注釋:
第一行: --- file1.txt 2018-04-20 10:08:51.338188679 +0800
第二行: +++ file2.txt 2018-04-20 10:09:41.387461602 +0800
以上兩行顯示兩個檔案的基本資訊,檔名和時間,其中「---」表示更改之前的檔案,「+++」表示更改之後的檔案
第三行: @@ -1,2 +1,2 @@
第四行: what is your name?
第五行:-my name is lilei.
第六行: +my name is hanmeimei.
以上四行其實和上下文格式顯示的內容是差不多的,只不過是將單獨顯示的檔案內容合併到一起顯示,這樣更簡單。對於兩個檔案相同的內容只顯示一遍,而不同的內容分別顯示。
-1,2 表示file1.txt有兩行內容, +1,2表示file2.txt有兩行內容
顯示的內容部分,每行前邊也有乙個識別符號,空表示無變動,-表示刪除,+表示增加
補充:git命令中的diff採用的格式就是unix的合併格式
Linux 下系統呼叫的三種方法
系統呼叫 system call 是作業系統為在使用者態執行的程序與硬體裝置 如cpu 磁碟 印表機等 進行互動提供的一組介面。當使用者程序需要發生系統呼叫時,cpu 通過軟中斷切換到核心態開始執行核心系統呼叫函式。下面介紹linux 下三種發生系統呼叫的方法 舉例來說,我們通過 glibc 提供的...
系統呼叫的三種方式
系統呼叫 system call 是作業系統為在使用者態執行的程序與硬體裝置 如cpu 磁碟 印表機等 進行互動提供的一組介面。當使用者程序需要發生系統呼叫時,cpu 通過軟中斷切換到核心態開始執行核心系統呼叫函式。下面介紹linux 下三種發生系統呼叫的方法 一 通過 glibc 提供的庫函式 舉...
三種Dataase Mapping的系統架構
處理方法 在乙個獨立的package中,為finder方法定義乙個介面,然後在資料對映層實現這個介面。邏輯層通過介面呼叫finder方法,後者通過資料對映層載入資料。原因 之所以使用介面的原因,在於使finder方法標準化,這樣應用邏輯層雖然可能在任何地方都會呼叫finder方法取得帶有資料的bus...