命令行工具diff和patch使用简介
diff 命令
diff命令在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作(如需比较,需要配合-r参数)。pathc制作过程中常用选项如下:
diff option 源文件(夹) 目的文件(夹)
-r:递归,设置后diff会将两个不同版本源代码目录中的所有对应文件都进行一次比较,包括子目录文件;
-N:确保补丁文件将正确地处理已经创建或删除文件的情况;
-u:一体化diff输出
-E, -b, -w, -B, –strip-trailing-cr
-p:若比较的文件为C语言的程序码文件时,显示差异所在的函数名称;
忽略各种空白,可参见文档,按需选用。
diff -bpurN from_file to_file > file.patch
patch 命令
patch命令被用于为开放源代码软件安装补丁程序。让用户利用设置修补文件的方式,修改,更新原始文件。如果一次仅修改一个文件,可直接在命令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。常用命令行如下:
patch -pN < file.patch
总结
单个文件
diff –uN from-file to-file >to-file.patch
patch –p0 < to-file.patch
patch –RE –p0 < to-file.patch //取消补丁
多个文件
diff –uNr from-docu to-docu >to-docu.patch
patch –p1 < to-docu.patch
patch –R –p1 <to-docu. //取消补丁