patch是什么意思(patch)
一、patch是什么意思
patch

n.小片;补丁;眼罩;(贴在伤口的)膏药;【生态】斑块
vt.修补;补缀;解决;掩饰
【单词发音】
英[pætʃ]美[pætʃ]
【短语搭配】
patch pocket贴袋
patch up修补
eye patch眼罩
patch test〈医〉斑片试验...
not a patch on远不如
purple patch辞藻华丽的段落...
hot patch热补
patch work拼凑的东西
【单词例句】
We have repaired the motor.
我们已经修好了电动机。
Xiao Wang is repairing desks and chairs in the classroom.
小王正在教室里修理桌椅。
The puncture has been repaired.
那个洞被补上了。
扩展资料
近义词:mend
vt.修理;修补;改进,vi.改过自新;改进;痊愈,n.修补;改进;修补处
【单词发音】
英[mend]美[mend]
【短语搭配】
mend a bicycle修自行车
mend a broken cup修补一只坏杯子
mend a chair修椅子
mend a clock修钟
mend a plow修犁
mend a road修路
【单词例句】
We need an electrician to mend the iron.
我们要请电工修理熨斗。
It won't take long to mend the car.
修理这辆汽车用不了很长时间。
He sent for someone to mend the broken window.
他叫人来修补破窗子。
You'll have to mend your ways if you want to be successful in your job.
如果你想在你的工作中取得成绩的话,你一定要有所改进。
二、patch命令是什么如何使用
patch命令用于为特定软件包打补丁,该命令使用diff命令对源文件进行操作。
格式:patch [选项] [原始文件 [补丁文件]]
常用参数:
-r是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。
-N选项确保补丁文件将正确地处理已经创建或删除文件的情况。
-u选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。
-p0选项从当前目录查找目的文件(夹)(直接使用补丁文件里面指定的路径)
-p1选项忽略掉第一层目录,从当前目录查找(去掉补丁文件指定路径最左的第1个'/'及前面所有内容)。
-E选项说明如果发现了空文件,那么就删除它
-R选项说明在补丁文件中的“新”文件和“旧”文件现在要调换过来了(实际上就是给新版本打补丁,让它变成老版本)
示例:
1、单个文件
首先将两个文件的内容显示如下:
$ cat test0
00000000
00000000
00000000
$ cat test1
00000000
11111111
00000000
*生成补丁:
$ diff-uN test0 test1>test1.patch
这样将通过比较,生成test1的补丁文件。这里选项u表示使用同一格式输出这样产生的输出便于阅读易于修改,N表示把不存在的文件看做empty的.就算文件test0不存在,也会生成补丁。
*把test0通过打补丁变成test1文件:
$ patch-p0<test1.patch
或$patch<test1.patch
这样,test0的内容将和test1的内容一样,但是文件名称还是test0。关于patch的选项见后面多文件有说明。当前目录下可以有test1.如果比较的时候test0是不存在的,那么这时候会生成一个test0文件。
*把打过补丁的test0还原:
$ patch-RE-p0<test1.patch
或$patch-R<test1.patch
这样,test0的内容将还原为原来没有打过补丁的状态。当前目录下可以有test1.这里的-E选项是要求patch在文件为空的时候删除文件,这个选项是不必要的因为patch是根据时间戳来判断一个文件是否存在。如果比较的时候test0是不存在的,这将会删除test0文件。
**
2、多个文件的:
首先查看文件结构如下:
1)外层目录列表:
$ ls-p
prj0/ prj1/
2)子目录prj0列表:
$ ls-p prj0
prj0name test0
3)子目录prj1列表:
$ ls-p prj1
prj1name test1
4)文件prj0/prj0name:
$ cat prj0/prj0name
--------
prj0/prj0name
--------
5)文件prj1/prj1name:
$ cat prj1/prj1name
---------
prj1/prj1name
---------
6)文件prj0/test0:
$ cat prj0/test0
0000000
0000000
0000000
0000000
0000000
0000000
0000000
7)文件prj1/test1:
$ cat prj1/test1
1111111
1111111
1111111
1111111
1111111
1111111
1111111
*创建补丁:
$ diff-uNr prj0 prj1> prj1.patch
这里项u表示使用同一格式输出这样产生的输出便于阅读易于修改,N表示把不存在的文件看做empty的,r表示递归地比较子目录,比较的结果被标准重定向到文件prj1.patch中了。
运行之后,输出的就是一个补丁,描述了两个文件的不同,这个补丁就是把diff参数的第一个文件打补丁变成第二个文件的补丁文件。
实际过程依次比较两个目录下的同名文件,如果这里不加-N就会指明prj0name和test0只在prj0中存在,prj1name和test1只在prj1中存在,这就无法比较了,所以这里为了能够比较,加上了-N选项。
为了便于理解,这里给出prj1.patch文件的内容:
$ cat prj1.patch
diff-uNr prj0/prj0name prj1/prj0name
--- prj0/prj0name 2009-08-24 10:44:19.000000000+0800
+++ prj1/prj0name 1970-01-01 08:00:00.000000000+0800
@@-1,5+0,0@@
---------
-
-prj0/prj0name
-
---------
diff-uNr prj0/prj1name prj1/prj1name
--- prj0/prj1name 1970-01-01 08:00:00.000000000+0800
+++ prj1/prj1name 2009-08-24 10:45:05.000000000+0800
@@-0,0+1,5@@
+---------
+
+prj1/prj1name
+
+---------
diff-uNr prj0/test0 prj1/test0
--- prj0/test0 2009-08-24 11:21:12.000000000+0800
+++ prj1/test0 1970-01-01 08:00:00.000000000+0800
@@-1,7+0,0@@
-0000000
-0000000
-0000000
-0000000
-0000000
-0000000
-0000000
diff-uNr prj0/test1 prj1/test1
--- prj0/test1 1970-01-01 08:00:00.000000000+0800
+++ prj1/test1 2009-08-24 11:21:33.000000000+0800
@@-0,0+1,7@@
+1111111
+1111111
+1111111
+1111111
+1111111
+1111111
+1111111
*将prj0中的所有文件打补丁成为prj1中的所有文件:
步骤如下:
1)$ cp prj1.patch./prj0
2)$ cd prj0
3)$ patch-p1< prj1.patch
这里,把补丁文件**到了prj0下面,然后将该文件夹下面的文件"变成"prj1下的文件了.
$ ls-p
prj1name prj1.patch test1
关于patch命令的-p选项接数字n,意思是去掉补丁文件里指定路径的前n个'/'前缀.
例如补丁文件中指定路径是/u/howard/src/blurfl/blurfl.c,那么p0选项处理之后的路径还是原来路径不变,而p1选项处理之后的路径是u/howard/src/blurfl/blurfl.c,同理p4处理之后的路径是:blurfl/blurfl.c.
注意:如果在外层目录运行这个命令,那么会在外层目录创建两个prj1name和test1文件。
*将打好补丁的prj0中的所有文件还原成为原来打补丁之前的文件:
$ patch-R-p1< prj1.patch
运行之后文件变成原来的文件了,如下:
$ ls-p
prj0name prj1.patch test0
*将prj1中的所有文件反向打补丁成为prj0中的所有文件:
$ patch-R-p1< prj1.patch
运行之后prj1中的文件变成prj0的文件了,如下:
$ ls-p
prj0name prj1.patch test0
*将prj1中反打补丁后的文件还原成原来的prj1中的文件:
$ patch-p1< prj1.patch
运行之后,prj1中的文件被还原了,如下:
$ ls-p
prj1name prj1.patch test1
*在外层目录把prj0的内容打补丁成prj1的内容:
$ls-p
prj0/ prj1.patch
$patch-p0<prj1.patch
这样prj0中的内容变成了prj1中的内容,但是prj0的目录名仍旧是prj0,如下:
$ls-p prj0
prj1name test1
注意:当前文件夹下面不能prj1目录,否则会出现一些警告提示。
*在外层目录把prj0的内容反打补丁还原成原来prj0的内容:
$ patch-R-p0<prj1.patch
这样原来的文件如下:
$ ls-p prj0
prj0name test0
**
三、patch是什么,怎么用
Patch多指补丁的意思比如内存补丁、文件补丁等,也是电脑命令程序的一种。
1、要将 difflisting文件中的差异列表应用到 prog.c文件,请输入:
patch-i difflisting prog.c
2、要保存 prog.c文件的原始版本,请输入:
patch-b-i difflisting prog.c
它将更改应用到 prog.c并且在 prog.c.orig文件中保存 prog.c的原始内容。
3、要打补丁到 prog.c文件而不改变原始版本,请输入:
patch-i difflisting-o prog.new prog.c
它将 prog.c当成源文件使用,但是更改后的版本写到名为 prog.new的文件中。
扩展资料:
patch的文件名
如果没有指定 File参数,要获得供编辑的文件名,patch命令会执行下面的步骤:
1、在上下文差异列表的头部分,文件名由以***(三个星号)或者---(三个破折号)开头的行确定。以***开头的行表示获取补丁的文件,然而以---开头的行表示应该应用补丁的文件名。选择存在文件的最短名称。
2、如果在前导文本中有 Index:行,patch命令尝试使用来自于那一行中的文件名。
3、上下文差异文件头优先于 Index:行。
4、如果从前导文本中不能确定文件名,patch命令提示输入需要打补丁的文件名。
5、如果不能找到原始文件,但是有适合的 SCCS或 RCS文件可用,patch命令尝试获取或检出文件。
6、如果前导文本包含 Prereq:行,patch命令从先决条件行中获取第一个词(通常是版本号)并且检查输入文件看是否能找到那个词。如果找不到,patch命令在继续运行前会提示确认。
参考资料来源:百度百科-Patch





