linux下patch文件使用

linux下patch文件使用初识patch还是和Z同事沟通问题时认识的,回想起已经近半年

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

    初识patch还是和Z同事沟通问题时认识的,回想起已经近半年。简单来说,打patch是对文件内容增增减减。由陌生到认识到熟悉,是一件愉快的事。

1. 对单个文件打patch

old.txt为原文件,new.txt 为已修改后的文件,现在要做的是:制作patch,更新old.txt文件

(1)查看文件内容

[wln@localhost 02]$ cat old.txt 
123456
qwert
dasfg
fdsaf
[wln@localhost 02]$ cat new.txt 
1123456
qqwert
dasfg
dsaf

(2)制作patch

[wln@localhost 02]$
diff -Naur old.txt new.txt > a.patch 

[wln@localhost 02]$ cat a.patch 

— old.txt     2014-06-09 15:35:34.000000000 +0800

+++ new.txt     2014-06-09 15:35:34.000000000 +0800

@@ -1,4 +1,4 @@

-123456

-qwert

+1123456

+qqwert

 dasfg

-fdsaf

+dsaf

(3)diff参数解读

-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况
-a  将所有文件都当做文本文件
-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些
-r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件

(4)执行patch

[wln@localhost 02]$ patch -p0 < a.patch 
patching file old.txt

这里 -p0表示执行patch所在的路径就是制作patch所在的路径。如果为-p1表示执行patch所在的路径为制作patch所在路径的子目录下,如果为 -p2 则为子目录的子目录下。

所以最好是在哪里制作在哪里执行patch(用-p0)
[wln@localhost 02]$ cat old.txt 
1123456
qqwert
dasfg
dsaf
[wln@localhost 02]$ cat new.txt 
1123456
qqwert
dasfg
dsaf

(5)打好patch,发现有问题,想返回,则执行-R 

[wln@localhost 02]$ patch -R -p0 < a.patch 
patching file old.txt
[wln@localhost 02]$ cat old.txt 
123456
qwert
dasfg
fdsaf
[wln@localhost 02]$ cat new.txt 
1123456
qqwert
dasfg
dsaf

2. 多个文件打patch

(1)查看文件内容

[wln@localhost patch]$ ll
总计 8
drwxrwxr-x 3 wln wln 4096 06-09 15:48 new
drwxrwxr-x 3 wln wln 4096 06-09 15:48 old
[wln@localhost patch]$ tree
.
|– new
|   `– a
|       |– a.txt
|       `– b
|           `– foo.txt
`– old
    `– a
        `– b
            `– foo.txt

[wln@localhost patch]$ cat old/a/b/foo.txt 
old_line_1
old_line_2
12324
[wln@localhost patch]$ cat new/a/a.txt 
fdfas
fafes
1233
5678
2345
[wln@localhost patch]$ cat new/a/b/foo.txt 
new_line_1
new_line_2

(2)制作patch

[wln@localhost patch]$ diff -Naur old new > a.patch
[wln@localhost patch]$ cat a.patch 
diff -Naur old/a/a.txt new/a/a.txt
— old/a/a.txt 1970-01-01 08:00:00.000000000 +0800
+++ new/a/a.txt 2014-06-09 15:48:45.000000000 +0800
@@ -0,0 +1,5 @@
+fdfas
+fafes
+1233
+5678
+2345
diff -Naur old/a/b/foo.txt new/a/b/foo.txt
— old/a/b/foo.txt     2014-06-09 15:48:49.000000000 +0800
+++ new/a/b/foo.txt     2014-06-09 15:48:45.000000000 +0800
@@ -1,3 +1,2 @@
-old_line_1
-old_line_2
-12324
+new_line_1
+new_line_2

(3)执行patch

[wln@localhost patch]$ cd old/
[wln@localhost old]$ patch -p1 < ../a.patch 
patching file a/a.txt
patching file a/b/foo.txt
[wln@localhost old]$ cd ../
[wln@localhost patch]$ tree
.
|– a.patch
|– new
|   `– a
|       |– a.txt
|       `– b
|           `– foo.txt
`– old
    `– a
        |– a.txt
        `– b
            `– foo.txt

6 directories, 5 files
[wln@localhost patch]$ cat old/a/a.txt 
fdfas
fafes
1233
5678
2345
[wln@localhost patch]$ cat old/a/b/foo.txt
new_line_1
new_line_2
[wln@localhost patch]$ cat new/a/a.txt 
fdfas
fafes
1233
5678
2345
[wln@localhost patch]$ cat new/a/b/foo.txt 
new_line_1
new_line_2
[wln@localhost patch]$ 

为什么要进入到old/下执行patch?

因为有新文件a/a.txt生成,如果直接在制作patch路径执行patch,会产生问题。

假如没有新文件生成,可以直接在制作patch的当前路径下执行patch

(4)打好patch,发现有问题,想返回,则执行-R 

[wln@localhost patch]$ cd old/
[wln@localhost old]$ patch -R -p1 < ../a.patch 
patching file a/a.txt
patching file a/b/foo.txt

参考:

(1)摘录:linux下打patch方法

http://blog.csdn.net/sunyubo458/article/details/6680840

Flag Counter

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/198613.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mysql utf8占几个字节_utf-8的中文是一个字符占几个字节

    mysql utf8占几个字节_utf-8的中文是一个字符占几个字节英文字母和中文汉字在不同字符集编码下的字节数英文字母:·字节数:1;编码:GB2312字节数:1;编码:GBK字节数:1;编码:GB18030字节数:1;编码:ISO-8859-1字节数:1;编码:UTF-8字节数:4;编码:UTF-16字节数:2;编码:UTF-16BE字节数:2;编码:UTF-16LE中文汉字:字节数:2;编码:GB2312字节数:2;编…

  • [Java Web]Struts2加起来(一个)

    [Java Web]Struts2加起来(一个)

  • mbus总线电路_CPU电路

    mbus总线电路_CPU电路发送也就是24V,36V切换,24V低电平,36V是高电平;主机接收电路可以高端放大也可以低端放大,设备端只会消耗固定的电流,mbus网络趋于稳定,负载时稳定的,当设备端发送数据时,mbus网络中电流会有所变化,通过采样电阻,电压跟随器,差分放大,采样保持电路,获取ttl电平,短路过载保护也是通过低端采样电阻控制供电开关的。…

    2022年10月15日
  • 个性化推荐算法总结[通俗易懂]

    个性化推荐算法总结[通俗易懂]读书笔记|《推荐系统实践》-个性化推荐系统总结对于推荐系统,本文总结内容,如下图所示:一、什么是推荐系统1.为什么需要推荐系统为了解决互联网时代下的信息超载问题。2.搜索引擎与推荐系统分类目录,是将著名网站分门别类,从而方便用户根据类别查找公司。 搜索引擎,用户通过输入关键字,查找自己需要的信息。 推荐系统,和搜索引擎一样,是一种帮助用户快速发展有用信…

  • goland 激活3月最新在线激活

    goland 激活3月最新在线激活,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • maven插件

    maven插件

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号