diff命令最常用的是比较文件目录或者文件 然后输出到文本文件显示处理 一目了然
(1)diff -urN 文件夹1 文件夹2 > 文件夹1to文件夹2.patch
-urN 这个选项为组合选项
”-u”:表示在比较结果中输出上下文中一些相同的行,这有利于人工定位
“-r“:表示递归比较各个子目录下的文件
“-N“:将不存在的文件当作空文件
这种组合运用一般情况是工程项目制作补丁文件 完全照搬 效果最好
(2)diff -urNwB 文件1 文件2 > 文件1to文件2.patch
-urNwB 这个选项为组合选项
”-u”:表示在比较结果中输出上下文中一些相同的行,这有利于人工定位
“-r“:表示递归比较各个子目录下的文件
“-N“:将不存在的文件当作空文件
“-w“:忽略对空格的比较
“-B“:忽略对空行的比较
这种组合运用一般情况是单个文件制作补丁 效果最好
(3)diff -urNa linux-3.0.56_old linux-3.0.56_new > out.patch
-urNa 这个选项为组合选项
”-u”:表示在比较结果中输出上下文中一些相同的行,这有利于人工定位
“-r“:表示递归比较各个子目录下的文件
“-N“:将不存在的文件当作空文件
“-a“:所有的文件都视为文本文件来逐行比较,甚至他们似乎不是文本文件.
这种组合运用一般情况是linux内核制作补丁文件 效果还可以
这种情况 完全可以还用diff -urN 文件夹1 文件夹2 > 文件夹1to文件夹2.patch 替代
实例:
例如:假设Linux-2.6.22.6目录中是原始的内核,Linux-2.6.22.6_ok目录中是修改后的内核,可以使用以下命令制作补丁文件linux-2.6.22.6_ok.diff(原始目录在前,修改过的目录在后)
diff –urN -w -B linux-2.6.22.6 linux-2.6.22.6_ok > linux-2.6.22.6.diff
由于linux-2.6.22.6是标准的代码,可以从网上自由下载,要发布的linux-2.6.22.6_ok中所做的修改时,只需要提供补丁文件linux-2.6.22.6_ok.diff(它通常是很小的)
patch 命令被用来打补丁----就是依据补丁文件来修改原始文件。比如对于上面的例子,可以使用以下命令将补丁文件linux-2.6.22.6_ok.diff 应用到原始目录linux-2.6.22.6上去。假设linux-2.6.22.6_ok.diff 和linux-2.6.22.6位于同一个目录下.
cd linux-2.6.22.6
patch -p1 < ../linux-2.6.22.6_ok.diff
patch 命令中最重要的选项是“-pn”: 补丁文件中指明了要修改的文件的路径,“-pn”表示忽略路径中第n个斜线之前的目录。
上面命令为制作补丁名
而patch为打补丁命令
首先简单列出安装补丁包和卸载补丁包的命令格式:
安装补丁包:patch -p(n) < [补丁包路径] patch_name
卸载补丁包:patch -p(n) -R < [补丁包路径] patch_name
基本命令语法:
patch [-R] {-p(n)} [--dry-run] < patch_file_name
p:为path的缩写。
n:指将patch文件中的path第n条’/’及其左边部分取消。
-R:卸载patch包。
--dry-run:尝试patch软件,并不真正修改软件。
patch,是打补丁的命令,有很多用法,见帮助#man patch
patch -px (“p”指的是路径,后面的数字x表示去掉路径的第几部分)
-p Number 设置路径名的剥离数目,它控制如何处理在补丁文件中找到的路径名称(e.g.:--- old/uClinux-dist/linux-2.4.x/arch/armnommu/config.in)。如果将需打补丁的文件(.uClinux-dist/linux-2.4.x/arch/armnommu/config.in )保留在与补丁文件中所指定的不同路径中(old/uClinux-dist/linux-2.4.x/arch/armnommu/config.in),此标志就有用。剥离数目指定了从路径名前去除多少个斜杠,同时去除所有中间的目录名。例如,假定补丁文件中指定要更新的文件: old/uClinux-dist/linux-2.4.x/arch/armnommu/config.in:
常用命令为
patch -p0 < x.diff
patch -p1 < ../x.diff
单个文件
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
参考内容地址
1 https://www.cnblogs.com/zengkefu/p/7266913.html
2 https://blog.csdn.net/menghuanbeike/article/details/78741077
3 https://www.cnblogs.com/sky-heaven/p/4514099.html
4 https://mp.csdn.net/postedit