diff的三种模式,normal, context(-c), unified(-u) 一. 基本用法和例子 例1,比较2个文件的不同root@hong-VirtualBox:~# diff text.txt text1.txt2c2< jin—> hong4,5c4< 20<—> 22 4,5c4表示:要把text.txt的第4-5行的内容换成text1.txt的第4行内容,才能使2个文件相同。文件内容用—分隔 例2, 比较不同目录下的text.txt和当前目录下的text.txt的不同root@hong-VirtualBox:~# diff /home/hong/ text.txt 二. 一些常用参数 diff还提供了一些有用的参数来控制比较行为与输出结果,一些常用的参数如下:-b –ignore-space-change 忽略空格,如果两行进行比较,多个连续的空格会被当作一个空格处理,同时会忽略掉行尾的空格差异。-w –ignore-all-space 忽略所有空格,忽略范围比-b更大,包括很多不可见的字符都会忽略。-B 忽略空白行。-y 输出两列,一个文件一列,有点类似GUI的输出外观了,这种方式输出更加直观。-W 大写W,当指定-y的时候设置列的宽度,默认是130-x –exclude=PAT 比较目录的时候排除指定PAT模式的文件名的比较-i, –ignore-case 忽略两个文件中大小写的不同-r 如果比较两个目录,-r参数会比较其下同名的子目录 其他较复杂的参数-q 输出结果中,只指出两个文件不同,而不输出两个文件具体内容的比较。这在比较两个目录的时候很好用。我们只需要知道两个目录下那些文件做了修改,而不需要知道每个文件具体修改了那些内容。特别是当两个目录文件很多的时候。例如:root@hong-VirtualBox:~# diff /home/hong/ text.txt -qFiles /home/hong/text.txt and text.txt differ 下面这个可以忽略了-e 将比较的结果保存成一个ed脚本,之后ed程序可以执行该脚本文件,从而将file1修改成与file2的内容相同,这一般在patch的时候有用。diff -e 1.txt 2.txt > script.txt这样就是生成了一个ed可以执行的脚本文件script.txt,生成脚本文件之后我们还需要做一个操作, 在脚本文件末尾添加ed的write指令,只需要执行 echo “w” >>script.txt 将w指令附加到脚本文件的最后一行即可。 那么如何应用该脚本文件呢,可以这样使用:ed – 1.txt < script.txt 注意中间的 – 符号表示从标准输入中读取,而 < script.txt 则重定向script.txt的内容到标准输入。这样执行之后1.txt的内容将与2.txt完全相同。