這又是一個檔案比較指令,熟練掌握會節省你很多工作。還記得comm指令嗎?diff比他更加複雜,好用,不僅能比較檔案,還能比較目錄。 當一個檔案有多個版本時候,或者更多複雜的檔案,目錄比較時,你會期望有一個比comm更有用的指令,diff正是為此而生。
全稱:different file
執行個體:
檔案1: v1.txt
hello
world v1_echo
v1_diff
v1_comm
shell is easy!
檔案2: v2.txt
hello world!
v2_echo
easy shell!
1.普通比較:
$diff v1.txt v2.txt
1,2c1,2
< hello world
&lt; v1_echo
---
> hello world!
&gt; v2_echo
4c4
< v1_comm
> easy shell!
列出比較的差別,數字為行數,c是compare
2.一體化輸出:
$diff -u v1.txt v2.txt &gt; version.patch
-v1_echo
+hello world!
+v2_echo
v1_diff
-v1_comm
+easy shell!
"+"表示補充的行,"-"表示删去的行
3. 更新覆寫v1.txt,注意這裡借用了patch
$patch –p1 v1.txt&lt; version.patch
4. 比較v1,v2檔案,僅輸出v2的變化
$diff -e v1.txt v2.txt
4c
easy shell!
.
1,2c
v2_echo
.
5.比較目錄
借用書上一段解釋:
-N 将所有确實的檔案視為空檔案
-a 将所有檔案市委檔案文本
-u 生成一體化輸出
-r 周遊目錄下的所有檔案
比較兩個目錄下所有文本資訊
$diff –Naur directory1 directory2
除非你确定這兩個目錄基本相同,不然不推薦這麼用。
6.工作疲勞後,尤其同時做很多事情的時候,會忘了有沒有做過上傳,或者修改某個目錄下的檔案。可以這樣:
$diff v1.txt /${dir}
直接比較同名檔案,高強度下的工作者相信真有體會。
解讀下—help
太長,截取少部分解讀一下。
Mandatory arguments to long options are mandatory for short options too.
--normal output a normal diff (the default)
-q, --brief report only when files differ
-s, --report-identical-files report when two files are the same
-c, -C NUM, --context[=NUM] output NUM (default 3) lines of copied context
-u, -U NUM, --unified[=NUM] output NUM (default 3) lines of unified context
-e, --ed output an ed script
-n, --rcs output an RCS format diff
-y, --side-by-side output in two columns
FILES 的格式可以是‘FILE1 FILE2’、‘DIR1 DIR2’、‘DIR FILE...’或
‘FILE... DIR’。
解讀:
1.-q –s
-q: 隻有兩個不同是,提示“兩個檔案不同”
-s: 兩個檔案相同時,提示“兩個檔案相同”
$diff -qs v1.txt v2.txt
(有點無聊的指令 )
2. –y
按照列的方式輸出,增加了直覺性
hello world | hello world!
v1_echo | v2_echo
v1_diff v1_diff
v1_comm | easy shell!
shell is easy! shell is easy!
3. file 後面的格式
可以是1.檔案 檔案 2.目錄與目錄 3.檔案與目錄 4. 目錄與檔案
解釋一下,檔案與目錄的形式,比較的是該目錄下 與 比較檔案同名的檔案比較
如:$ diff v1.txt diff/
則實際是v1.txt 與 diff/v1.txt的比較。這是個很常用的功能。
對比comm
就比較檔案而言,comm功能比較簡單,但是也很直覺,友善
而diff 提供了更強大,更複雜的比較方式,還能對比目錄,周遊目錄。
<a href="http://down.51cto.com/data/2361151" target="_blank">附件:http://down.51cto.com/data/2361151</a>
本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/yjplxq/954716,如需轉載請自行聯系原作者