这又是一个文件比较命令,熟练掌握会节省你很多工作。还记得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
 v1_diff
 easy shell! 
1.普通比较:
$diff v1.txt v2.txt
 代码如下:
1,2c1,2 
 < hello world 
 < v1_echo 
 --- 
 > hello world! 
 > v2_echo 
 4c4 
 < v1_comm 
 --- 
 > easy shell!
列出比较的区别,数字为行数,c是compare
2.一体化输出:
$diff -u v1.txt v2.txt > version.patch
 代码如下:
-v1_echo 
 +hello world! 
 +v2_echo 
 v1_diff 
 -v1_comm 
 +easy shell! 
 shell is easy!
"+"表示补充的行,"-"表示删去的行
3. 更新覆盖v1.txt,注意这里借用了patch
$patch –p1 v1.txt< version.patch
4. 比较v1,v2文件,仅输出v2的变化
$diff -e v1.txt v2.txt 
 代码如下:
 4c 
 easy shell! 
 . 
 1,2c 
 hello world! 
 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             
新闻热点
疑难解答