快速业务通道

Linux中patc***件的使用

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-20
ware

  |-- source

  |-- sysapps

  |-- tmp

  `-- tools

  下面在program文件夹下面建立patc***件夹作为实验用,然后进入patc***件夹.

  一、为单个文件进行补丁操作

  1、建立测试文件test0、test1

  [armlinux@lqm patch]$ cat >>test0<<EOF

  > 111111

  > 111111

  > 111111

  > EOF

  [armlinux@lqm patch]$ more test0

  111111

  111111

  111111

  [armlinux@lqm patch]$ cat >>test1<<EOF

  > 222222

  > 111111

  > 222222

  > 111111

  > EOF

  [armlinux@lqm patch]$ more test1

  222222

  111111

  111111

  2、使用diff创建补丁test1.patch

  [armlinux@lqm patch]$ diff -uN test0 test1 > test1.patch

  【注:单个文件,不需要-r选项.选项顺序没有关系,即可以是-uN,也可以是-Nu.】

  [armlinux@lqm patch]$ ls

  test0 test1 test1.patch

  [armlinux@lqm patch]$ more test1.patch

  ************************************************************

  patc***件的结构

  补丁头

  补丁头是分别由---/ 开头的两行,用来表示要打补丁的文件.---开头表示旧文件, 开头表示新文件.

  一个补丁文件中的多个补丁

  一个补丁文件中可能包含以---/ 开头的很多节,每一节用来打一个补丁.在一个补丁文件中可以包含好多个补丁.

  块

  块是补丁中要修改的地方.它通常由一部分不用修改的东西开始和结束.他们只是用来表示要修改的位置.他们通常以@@开始,结束于另一个块的开始或者一个新的补丁头.

  块的缩进

  块会缩进一列,而这一列是用来表示这一行是要增加还是要删除的.

  块的第一列

   号表示这一行是要加上的.

  -号表示这一行是要删除的.

  没有加号也没有减号表示这里只是引用的而不需要修改.

  ************************************************************

  ***diff命令会在补丁文件中记录这两个文件的首次创建时间,如下***

  --- test0 2006-08-18 09:12:01.000000000 0800

   test1 2006-08-18 09:13:09.000000000 0800

  @@ -1,3 1,4 @@

   222222

  111111

  -111111

   222222

  111111

  [armlinux@lqm patch]$ patch -p0 < test1.patch

  patching file test0

  [armlinux@lqm patch]$ ls

  font face="Times New Roman">test0 test1 test1.patch

  [armlinux@lqm patch]$ cat test0

  222222

  111111

  222222

  111111

  3、可以去除补丁,恢复旧版本

  [armlinux@lqm patch]$ patch -RE -p0 < test1.patch

  patching file test0

  [armlinux@lqm patch]$ ls

  test0 test1 test1.patch

  [armlinux@lqm patch]$ cat test0

  111111

  111111

  111111

  二、为多个文件进行补丁操作

  1、创建测试文件夹

  [armlinux@lqm patch]$ mkdir prj0

  [armlinux@lqm patch]$ cp test0 prj0

  [armlinux@lqm patch]$ ls

  prj0 test0 test1 test1.patch

  [armlinux@lqm patch]$ cd prj0/

  [armlinux@lqm prj0]$ ls

  test0

  [armlinux@lqm prj0]$ cat >>prj0name<<EOF

  > --------

  > prj0/prj0name

  > --------

  > EOF

  [armlinux@lqm prj0]$ ls

  prj0name test0

  [armlinux@lqm prj0]$ cat prj0name

  --------

  prj0/prj0name

  --------

  [armlin

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号