Linux patch下令教程:如何在Linux中应用和创建补丁(附实例详解和注意事项 ...

打印 上一主题 下一主题

主题 661|帖子 661|积分 1983

Linux patch下令先容

patch下令在Linux和其他类Unix操纵体系中,用于将一个文件的修改应用到另一个文件。这个下令可以读取一个补丁文件,并利用此中的内容作为一组指令。通过遵照这些指令,修改后的文件中的更改可以在原始文件中复制。
Linux patch下令实用的Linux版本

patch下令在大多数Linux发行版中都是可用的,包括Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora和Raspbian。如果在某些版本中不可用,你可以利用包管理器(如apt、yum或dnf)来安装。比方,在Debian或Ubuntu上,你可以利用以下下令来安装:
  1. [linux@bashcommandnotfound.cn ~]$ sudo apt-get install patch
复制代码
在CentOS 7上,你可以利用:
  1. [linux@bashcommandnotfound.cn ~]$ sudo yum install patch
复制代码
而在CentOS 8上,你应该利用:
  1. [linux@bashcommandnotfound.cn ~]$ sudo dnf install patch
复制代码
Linux patch下令的基本语法

patch下令的基本语法如下:
  1. patch [options] [originalfile [patchfile]]
复制代码
但是,通常我们会将补丁文件重定向到patch下令:
  1. patch < /path/to/patchfile
复制代码
Linux patch下令的常用选项或参数说明

以下是patch下令的一些常用选项:
选项形貌-p或--strip删除文件名前面的目次-R或--reverse反转补丁-N或--forward忽略已经应用的补丁-l或--ignore-whitespace忽略空白字符的更改 Linux patch下令实例详解

实例1:应用补丁

假设我们有一个名为foo.c的文件,我们收到了一个包含对foo.c修改的补丁文件patch.diff。我们可以利用以下下令应用补丁:
  1. [linux@bashcommandnotfound.cn ~]$ patch foo.c < patch.diff
复制代码
实例2:打消补丁

如果我们想打消刚才应用的补丁,我们可以利用-R选项:
  1. [linux@bashcommandnotfound.cn ~]$ patch -R foo.c < patch.diff
复制代码
实例3:应用多个补丁

如果你有多个补丁文件必要应用到同一个源文件,你可以利用-选项来从标准输入读取补丁。比方:
  1. [linux@bashcommandnotfound.cn ~]$ cat patch1.diff patch2.diff | patch foo.c -
复制代码
实例4:忽略空白字符的更改

如果你的补丁文件中包含了一些不紧张的空白字符的更改,你可以利用-l选项来忽略这些更改:
  1. [linux@bashcommandnotfound.cn ~]$ patch -l foo.c < patch.diff
复制代码
实例5:创建补丁文件

你可以利用diff下令来创建一个补丁文件。比方,如果你有两个版本的foo.c文件,你可以利用以下下令来创建一个补丁文件:
  1. [linux@bashcommandnotfound.cn ~]$ diff -u foo.c.orig foo.c > patch.diff
复制代码
然后,你可以利用patch下令来应用这个补丁:
  1. [linux@bashcommandnotfound.cn ~]$ patch foo.c.orig < patch.diff
复制代码
这将会将foo.c.orig文件修改为foo.c文件的内容。
实例6:应用补丁到多个文件

如果你有一个补丁文件,必要将其应用到多个文件,你可以利用-选项来从标准输入读取补丁。比方:
  1. [linux@bashcommandnotfound.cn ~]$ cat patch.diff | patch -p1
复制代码
这将会将补丁应用到当前目次下的全部文件。
实例7:查看补丁会做什么

如果你只是想查看一个补丁会做什么,而不实际应用它,你可以利用--dry-run选项:
  1. [linux@bashcommandnotfound.cn ~]$ patch --dry-run foo.c < patch.diff
复制代码
这将会表现补丁会做什么,但不会实际修改文件。
实例8:忽略已经应用的补丁

如果你不确定一个补丁是否已经被应用,你可以利用-N或--forward选项来忽略已经应用的补丁:
  1. [linux@bashcommandnotfound.cn ~]$ patch -N foo.c < patch.diff
复制代码
如果补丁已经被应用,patch下令将不会做任何事变。
Linux patch下令的注意事项



  • 在应用补丁之前,最好备份你的原始文件,以防补丁不能正确应用或者有其他问题。
  • 如果你看到bash: patch: command not found的错误,那么你大概必要安装patch下令。
Linux patch相关下令



  • diff下令:用于比力两个文件或者文件夹的差别
  • cmp下令:用于比力两个文件是否有差别
  • comm下令:用于比力两个排序文件的区别
  • ed下令:用于编辑文件
  • sed下令:用于对指定文件进行查找、替换、删除、插入等操纵
  • find下令:用于查找文件或目次
  • grep下令:用于查找并打印出指定文件中与所给定模式匹配的行
  • awk下令:用于在文件或字符串中基于指定规则进行处置处罚
  • tar下令:用于压缩和解压缩文件
  • gzip下令:一个轻量级的文件压缩工具

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表