diff命令比较两个不同的文件或不同目录下的两个同名文件.在使用diff时,可以用选项来定制输出格式.patch程序将读取diff的输出和所比较
文件中的一个来重新生成另一个.diff手册的作者写道:"如果你认为diff是通过从一个文件中减去另一个来生成这两个文件的差别文件,那就可以认为
patch是使用这个差别文件和其中的一个源文件来生成另一个源文件".
diff命令的一般语法为:
diff
[option] srcfile
dstfile
diff在运行时试图找到在srcfile和dstfile里都一样的很多连续行,在碰到srcfile和dstfile里不一样的行时运行被打打断,这些有差别的行称为块(hunk).
diff的命令行选项合参数
选项
描述
-a 将所有的文件看作文本,既使文件看起来像是二进制的也不例外,并且进行逐行比较
-b
忽略块中空白数目的改变
-B 忽略插入或删除空行造成的改变
-c
产生"上下文"(context)格式的输出
-C[num] 产生"上下文"(context)格式的输出,显示块前后num行的内容,如果不指定num的值,则显示块前后3行的内容
-H
修改diff处理大文件的方式
-i 忽略大小写,同样对待大写和小写字母
-I
regexp 忽略插入或删除与正则表达式regexp匹配的行
-l 将输出结果通过pr命令处理加上页码
-p
显示出现块的C函数
-q 只报告文件是否不同;不输出差别
-r 比较目录时,进行递归比较
-s
报告两个文件相同(默认的行为是不报告相同的文件)
-t 输出时tab扩展为空白
-u
产生"统一"(unified)格式的输出
-U[num] 产生"统一"(unified)格式的输出,显示块前后num行的内容,如果不指定num的值,则显示块前后3行的内容
-v
打印diff的版本号
-w 逐行比较时忽略空白
-W cols 如果产生并排格式的输出(参见-y)
,让输出的每一列有cols个字符宽
-x pattern 当比较目录时,忽略匹配模式pattern的任何文件和子目录
-y
产生并排格式的输出