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)
blank

相关推荐

  • GHO文件转iso文件能启动安装

    GHO文件转iso文件能启动安装言:目前网上流传的gho转iso教程都是用ultraiso替换gho文件的方法,但是这种方法经过实际使用存在两个缺陷,1.只适用XP,超过800M的时候替换会提示升级DVD格式,但是升级之后会导致不能启动,不升级无法替换,2.不能有效的控制启动盘的来源,只能找别人做好的进行替换鉴于以上两点,有必要重新找个方法准备工具1.IT天空的PE制作工具下载地址2.win7的gho文件下载地址:3.winISO下载地址:http://lt2.mqego.com/soft1/winiso

  • 【13】进大厂必须掌握的面试题-配置管理面试

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 Q1。配置管理流程的目标是什么? 配置管理(CM)的目的是通过使开发或部署过程可控和可重复,从而创建更高质量的产品或…

  • proc 储过程

    proc 储过程

  • Unity Shader 一 激光特效Shader[通俗易懂]

    学习Shader已经有几个月的时间了,Shader作为一门GPU编程语言来说确实比较的难学。主要原因经过我的思考还是本人自己的计算机图形学和美术基础不扎实。好无奈,作为一个之前单纯手写代码的程序员真的是感觉好蛋疼。      学习期间,我也向多名Shader大神请教学习经验,得到的回应大多是让我好好去学习计算机图形学。哈哈,于是乎,本人又跑去看了一个多月的计算机图形学。接着再次回来学习Shad

  • phpstorm最新激活码linux版_最新在线免费激活2022.03.11

    (phpstorm最新激活码linux版)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1M2OME2TZY-eyJsaWNlb…

  • 手动ghost备份系统步骤_手动ghost备份图解

    手动ghost备份系统步骤_手动ghost备份图解备份前我们需要ghost,在此我提供下,在压缩文件下找到ghost百度网盘:http://pan.baidu.com/s/1mh77iWS 密码:ivxq进入ghost界面以后,按回车键,进入下一个操作界面。如下图所示:使用键盘上的方向键依次选择“Local”(本机)“Partition”(分区)“ToImage”(到镜像)然后

发表回复

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

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