找回密码
 注册
关于网站域名变更的通知
查看: 572|回复: 3
打印 上一主题 下一主题

Linux patch命令

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-8-4 13:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x

/ x2 x) D' O" D+ a- ^% h' [Linux patch命令用于修补文件。8 o4 K' M- p0 E1 v" b$ _0 B7 l

. Q8 n4 r! f6 Y2 |5 x( Upatch指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。7 ?0 [( H9 D) q" \
1 C: @* q! \% g

3 l1 h2 l: P' d; E% j
7 z  C; Q) J( \1 e5 h语法
- P' U1 ]& ^0 v- a# \9 `- R8 R7 y  H5 F7 t) Y8 {- n! u
patch [-bceEflnNRstTuvZ][-B <备份字首字符串>][-d <工作目录>][-D <标示符号>][-F <监别列数>][-g <控制数值>][-i <修补文件>][-o <输出文件>][-p <剥离层级>][-r <拒绝文件>][-V <备份方式>][-Y <备份字首字符串>][-z <备份字尾字符串>][--backup-if -mismatch][--binary][--help][--nobackup-if-mismatch][--verbose][原始文件 <修补文件>] 或 path [-p <剥离层级>] < [修补文件]
, H3 \7 @0 r. m
6 l" Q' q6 f, g5 N7 _2 F, x' i  P' Q8 L/ |- P; H5 O
% _* U: y8 T+ v2 g& g0 |
参数:
' N5 N3 e3 ^' w) F  \9 u4 w4 o
  g9 t3 E0 e5 m$ c1 s: T-b或--backup  备份每一个原始文件。. c6 [+ i& }& h, }2 L' i9 p5 j
-B<备份字首字符串>或--prefix=<备份字首字符串>  设置文件备份时,附加在文件名称前面的字首字符串,该字符串可以是路径名称。
# ?' K# P/ @0 ?, }2 p-c或--context  把修补数据解译成关联性的差异。  }3 M4 l+ i1 i/ a8 d
-d<工作目录>或--directory=<工作目录>  设置工作目录。
  m! r) x) Y' k8 `-D<标示符号>或--ifdef=<标示符号>  用指定的符号把改变的地方标示出来。
, I" E# w& c2 z* N/ _& o-e或--ed  把修补数据解译成ed指令可用的叙述文件。5 ]( n/ E+ _% D, a. B1 l
-E或--remove-empty-files  若修补过后输出的文件其内容是一片空白,则移除该文件。
6 W  d& V2 A8 @& e/ g& b  Q5 G$ `" o-f或--force  此参数的效果和指定"-t"参数类似,但会假设修补数据的版本为新 版本。
3 E5 N. R) V9 a* G3 I1 X( Q, T-F<监别列数>或--fuzz<监别列数>  设置监别列数的最大值。6 I5 c( h: t* P% A
-g<控制数值>或--get=<控制数值>  设置以RSC或SCCS控制修补作业。
/ R$ i" o$ H/ c" |-i<修补文件>或--input=<修补文件>  读取指定的修补文件。
8 f  h+ t7 m' O! T7 E8 Q' t-l或--ignore-whitespace  忽略修补数据与输入数据的跳格,空格字符。$ I( Z% @5 c3 }9 [9 |
-n或--normal  把修补数据解译成一般性的差异。
  H( C# S3 |5 B5 B-N或--forward  忽略修补的数据较原始文件的版本更旧,或该版本的修补数据已使 用过。
0 g9 Q6 w" t: o$ @7 B-o<输出文件>或--output=<输出文件>  设置输出文件的名称,修补过的文件会以该名称存放。& [- N  d# g/ z
-p<剥离层级>或--strip=<剥离层级>  设置欲剥离几层路径名称。; q" A- d8 _+ `/ X, Y% R
-f<拒绝文件>或--reject-file=<拒绝文件>  设置保存拒绝修补相关信息的文件名称,预设的文件名称为.rej。
8 B  d, `# o0 X- f! D3 ?-R或--reverse  假设修补数据是由新旧文件交换位置而产生。
& x# @. o3 A1 ]! R-s或--quiet或--silent  不显示指令执行过程,除非发生错误。
' I8 F( y6 E/ |-t或--batch  自动略过错误,不询问任何问题。
& I7 u: l1 ]: i( K2 i-T或--set-time  此参数的效果和指定"-Z"参数类似,但以本地时间为主。% }+ S# h8 q6 p. F2 s
-u或--unified  把修补数据解译成一致化的差异。
2 V) M* W; L: c+ l* N" X-v或--version  显示版本信息。3 v0 Y4 S. Z( X+ [/ f
-V<备份方式>或--version-control=<备份方式>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-z"参数变更,当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字符串。
* s, ~9 @2 ~2 f# w# E4 C" B4 `-Y<备份字首字符串>或--basename-prefix=--<备份字首字符串>  设置文件备份时,附加在文件基本名称开头的字首字符串。
% {2 V% ^1 A5 j% V- M-z<备份字尾字符串>或--suffix=<备份字尾字符串>  此参数的效果和指定"-B"参数类似,差别在于修补作业使用的路径与文件名若为src/linux/fs/super.c,加上"backup/"字符串后,文件super.c会备份于/src/linux/fs/backup目录里。3 x8 k# V, d$ {! J6 L" q1 s6 D
-Z或--set-utc  把修补过的文件更改,存取时间设为UTC。
5 A8 @1 @7 c- k! D" h* d4 m. x0 p--backup-if-mismatch  在修补数据不完全吻合,且没有刻意指定要备份文件时,才备份文件。# a, W- @- _# j& C0 b! L+ j
--binary  以二进制模式读写数据,而不通过标准输出设备。' D# K" l2 ^2 Y5 e! f' m
--help  在线帮助。
2 Q3 P  T$ ?7 U/ Y" ~7 `--nobackup-if-mismatch  在修补数据不完全吻合,且没有刻意指定要备份文件时,不要备份文件。
  R, _+ i8 Q4 K--verbose  详细显示指令的执行过程。- M6 M, l4 o  `0 I6 ^6 n

/ e  c7 s# X$ d5 o/ |4 V% q
' U& g3 b. H! \3 B! p9 X7 S0 q$ w( Q
实例- ^+ L! C% r; Z4 M. _& v% |( Y

  u6 {) E9 i+ R4 ]3 V+ p( _$ `# l7 `1 V9 f( {
使用patch指令将文件"testfile1"升级,其升级补丁文件为"testfile.patch",输入如下命令:
9 ]+ J$ H) d8 L+ r' M; y9 p
6 Z/ M) f# q( B; {# x9 Z; B" @$ patch -p0 testfile1 testfile.patch    #使用补丁程序升级文件
& ~7 e* v& a( u6 F8 h9 z+ x2 d
0 `/ ^3 r& E, O' k1 T9 f1 C- z3 H+ A2 Z( p7 [3 X4 r, r; Y
使用该命令前,可以先使用指令"cat"查看"testfile1"的内容。在需要修改升级的文件与原文件之间使用指令"diff"比较可以生成补丁文件。具体操作如下所示:
  i2 z" Y: U# B$ W
6 m1 t% R. G! d- X& m$ cat testfile1                 #查看testfile1的内容  " m. p7 N& F3 r* U1 m
Hello,This is the firstfile!  
5 s; \0 Q2 y' P. k6 a( v1 W, t$ cat testfile2                 #查看testfile2的内容    K* R/ b+ J& H0 h& d6 U0 m6 j
Hello,Thisisthesecondfile!  0 U! X% r' |' h4 K2 b# \6 P
$ diff testfile1 testfile2          #比较两个文件  6 @$ n! i6 U- K* i* @' J; X  P% W  S
1c1  ( T/ w6 f& T4 U9 N1 j% B
<Hello,Thisisthefirstfile!  
' N" X( v, q$ l1 B* T---  - k- U  d% i5 V5 F
>Hello,Thisisthesecondfile!  9 e. }# p$ D! T5 u# f+ J$ E' K
#将比较结果保存到tetsfile.patch文件  # q7 }. W+ `, X! @- J9 Z7 g, F
$ diff testfile1 testfile2>testfile.patch     
- F# M0 Y; I# R" W2 y9 v$ cat testfile.patch                #查看补丁包的内容  3 P% `, h. Q% K, F* o, Y7 f/ ^
1c1    f8 N3 d+ y# R& ~1 K: w4 W
<Hello,Thisisthefirstfile!  
" J( W7 h' n# w2 _---  
. V9 s- z( o( _; [- B! N1 S>Hello,Thisisthesecondfile!  
" f6 o7 Y) K$ F" Q! j#使用补丁包升级testfile1文件  2 p6 g' Z& u( |
$ patch -p0 testfile1 testfile.patch      
- K! v5 k9 n' T* `patching file testfile1  
. ]' L% V# D! }0 _6 {; M$cat testfile1                  #再次查看testfile1的内容  0 q' ~3 \! L/ u, `0 V
#testfile1文件被修改为与testfile2一样的内容  " ]: p- {; t5 w  ^) {
Hello,This is the secondfile!   
- y# E/ k" B6 R. p( v# B( d" u% c
& e8 s" d  f6 u! }5 h" N; Y, q! h
, h$ X( J9 x- j, N注意:上述命令代码中,"$ diff testfile1 testfile2>testfile. patch"所使用的操作符">"表示将该操作符左边的文件数据写入到右边所指向的文件中。在这里,即是指将两个文件比较后的结果写入到文件"testfile.patch"中。
% I9 H4 E6 B; N
4 c& q$ y! o! \/ w# T; |

该用户从未签到

2#
发表于 2021-8-4 15:20 | 只看该作者
Linux patch命令用于修补文件
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2021-8-4 15:21 | 只看该作者
    patch指令让用户利用设置修补文件的方式,修改,更新原始文件

    该用户从未签到

    4#
    发表于 2021-8-4 15:22 | 只看该作者
    如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-22 06:56 , Processed in 0.078125 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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