[Linux服务器] linux patch命令

901 0
Honkers 2025-6-27 08:48:40 来自手机 | 显示全部楼层 |阅读模式

patch指令让用户利用补丁文件来修改,更新原始文件,达到升级原始文件功能的目的。

一、生成补丁文件:

我们通过diff命令来生成补丁文件,diff -Naur a.txt b.txt

首先我们来看两个文件:a.txt,b.txt

  1. $ vim -O a.txt b.txt
  2. safsdgfdsg |fdsfdgfdgsdg
  3. 12345 |12345
  4. |555555555
  5. hello linux |hello python
  6. very good |
复制代码

注意:crtl+w 点击两次 两个窗口切换

 通过执行diff -Naur命令查看文件差异:

  1. # diff -Naur a.txt b.txt
  2. --- a.txt 2022-04-14 03:35:41.000000000 +0000
  3. +++ b.txt 2022-04-14 03:35:53.000000000 +0000
  4. @@ -1,7 +1,4 @@
  5. -
  6. -safsdgfdsg
  7. +fdsfdgfdgsdg
  8. 12345
  9. -
  10. -hello linux
  11. -very good
  12. -
  13. +555555555
  14. +hello python
复制代码

命令选项说明:

-N             不存在的文件以空文件方式处理
-a             所有文件都以文本方式处理
-u [n]         输出(默认为 3 行)一致的上下文(差异前后相同的行,方便定义差异的位置)
-r             连同所有子目录一起比较(递归处理)

 

可以通过重定向命令,将diff的输出保存到文件,作为补丁文件。diff -Naur a.txt b.txt > c.patch

二、打补丁:

1、方式一:有了补丁文件文件,我们可以通过patch命令来升级原始文件。

  1. # patch < c.patch
  2. patching file a.txt
复制代码

 这样,a.txt文件就打好了补丁。如果想撤销补丁则执行:diff -R <  c.patch

 :使用diff命令生成补丁文件时,参数后的第一个文件名(a.txt)是原始文件,生成的补丁文件(c.patch)也是针对原始文件做的diff,所以执行patch < c.patch 时,就会自动将c.patch打进a.txt中。注意顺序不能搞反了。

2、方式二:

  1. # patch -p0 < c.patch
复制代码

命令选项说明:

  1. -pNUM 从文件名中去除 NUM 前导部分(同级目录 NUM 填 0 就可以)
复制代码

求打赏:

 

 

 

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

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

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行