通常比較文字檔案的內容很有幫助。對於系統管理員和軟體開發者來說,這個尤為重要。一名系統管理員可能,例如,需要拿現有的配置檔案與先前的版本做比較,來診斷乙個系統錯誤。同樣的,一名程式設計師經常需要檢視程式的修改。
comm 命令將逐行比較已經排序的兩個檔案。顯示結果包括 3 列:第 1 列為只在第乙個檔案中找到的行,第 2 列為只在第二個檔案中找到的行,第 3 列為兩個檔案的共有行。
注意,comm 命令和 join、uniq 命令一樣,只能用於已經排過序的資料。
(1)命令格式
comm [選項] 檔案 1 檔案 2(2)常用引數引數
描述-1
不輸出檔案 1 特有的行
-2不輸出檔案 2 特有的行
-3不輸出兩個檔案共有的行
類似 comm 命令,diff 命令被用來監測檔案之間的差異。然而,diff 是一款更加複雜的工具,它支援許多輸出格式,並且一次能處理許多文字檔案。軟體開發員經常使用 diff 程式來檢查不同程式原始碼版本之間的更改,diff 能夠遞迴地檢查原始碼目錄,經常稱之為原始碼樹。diff 程式的乙個常見用例是建立 diff 檔案或者補丁,它會被其它程式使用,例如 patch 程式(我們後面會講到),來把檔案從乙個版本轉換為另乙個版本。
diff 在命令列中列印每乙個行的改動,並且 diff 是 svn、cvs、git 等版本控制工具不可或缺的一部分。
diff 命令是 differential 的縮寫。
(1)命令格式
diff [選項] 檔案(2)常用引數引數
描述-c
上下文模式,顯示全部內文,並標出不同之處
-u統一模式,以合併的方式來顯示檔案內容的不同
-a只會逐行比較文字檔案
-n在比較目錄時,若檔案 a 僅出現在某個目錄中,缺省會顯示:only in 目錄。 若使用-n 引數,則 diff 會將檔案 a 與乙個空白的檔案比較
-r遞迴比較目錄下的檔案
這個輸出結果以兩個檔名和它們的時間戳開頭。第乙個檔案用星號做標記,第二個檔案用短橫線做標記。縱觀列表的其它部分,這些標記將象徵它們各自代表的檔案。
*** 1,4 *** 表示第乙個檔案中第一行到第四行的文字行。
--- 1,4 --- 表示第二個檔案中第一行到第四行的文字行。
三種特殊字元:
+ 新增行,這一行將會出現在第二個檔案內,而不是第乙個檔案內
- 刪除行,這一行將會出現在第乙個檔案中,而不是第二個檔案內
! 更改行,將會顯示某個文字行的兩個版本,每個版本會出現在更改組的各自部分
這些特殊字元很容易混淆,實際上記住一點就行:所有操作目的是將第乙個檔案變成第二個檔案。
上下文模式和統一模式之間最顯著的差異就是重複上下文的消除,這就使得統一模式的輸出結果要比上下文模式的輸出結果簡短。
@@ -1,4 +1,4 @@ 表示在在更改組中描述的第乙個檔案中的文字行和第二個檔案中的文字行。
特殊字元:
patch 命令被用來把更改應用到文字檔案中。它接受從 diff 程式的輸出,並且通常被用來把較老的檔案版本轉變為較新的檔案版本。讓我們考慮乙個著名的例子。linux 核心是由乙個大型的,組織鬆散的貢獻者團隊開發而成,這些貢獻者會提交固定的少量更改到原始碼包中。這個 linux 核心由幾百萬行**組成,雖然每個貢獻者每次所做的修改相當少。對於乙個貢獻者來說,每做乙個修改就給每個開發者傳送整個的核心原始碼樹,這是沒有任何意義的。相反,提交乙個 diff 檔案。乙個 diff 檔案包含先前的核心版本與帶有貢獻者修改的新版本之間的差異。然後乙個接受者使用 patch 程式,把這些更改應用到他自己的原始碼樹中。使用 diff/patch 組合提供了兩個重大優點:
乙個 diff 檔案非常小,與整個原始碼樹的大小相比較而言。
乙個 diff 檔案簡潔地顯示了所做的修改,從而允許程式補丁的審閱者能快速地評估它。
當然,diff/patch 能工作於任何文字檔案,不僅僅是原始碼檔案。它同樣適用於配置檔案或任意其它文字。
準備乙個 diff 檔案供 patch 命令使用,gnu 文件建議這樣使用 diff 命令:
diff -naur old_file new_file > diff_file
old file 和 new file 部分不是單個檔案就是包含檔案的目錄。這個 r 選項支援遞迴目錄樹。
(1)命令格式
patch [選項] 補丁檔案(2)常用引數引數
描述-p num
忽略幾層資料夾
-e如果發現了空檔案,那麼就刪除它
-r取消打過的補丁
Linux學習筆記(九)
本人使用的是centos 由於用使用些特殊命令,不得不修改系統的時間這裡總結如下 date 檢視系統時間 date s 03 04 2013 將系統日期設定為2013年03月04日 date s 110 38 將系統時間設定為上午 10 38 修改完後執行 clock w 強制將時間寫入coms!先...
linux學習筆記(九)
1.順序執行多條命令 2.有選擇執行命令 cmd1執行結果返回0則執行後面的,否則不執行 cmd1執行結果返回不為0則執行後面的,否則不執行 和 結合使用 3.管道 管道是一種通訊機制,通常用於程序間的通訊 也可以通過socket進行網路通訊 就是將前面每乙個程序的輸出stdout直接作為下乙個程序...
linux命令學習筆記
系統相關 uname a列印系統資訊 包括計算機型號,作業系統名稱,版本和發行號,以及計算機的網路名 free檢視系統記憶體使用情況 df 檢視磁碟使用情況 cat proc cpuinfo檢視cpu資訊 date檢視系統時間 top d 1 檢視cpu的使用率 cat etc issue檢視作業系...