赞
踩
patch
命令在Linux和其他类Unix操作系统中,用于将一个文件的修改应用到另一个文件。这个命令可以读取一个补丁文件,并使用其中的内容作为一组指令。通过遵循这些指令,修改后的文件中的更改可以在原始文件中复制。
patch
命令在大多数Linux发行版中都是可用的,包括Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora和Raspbian。如果在某些版本中不可用,你可以使用包管理器(如apt
、yum
或dnf
)来安装。例如,在Debian或Ubuntu上,你可以使用以下命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install patch
在CentOS 7上,你可以使用:
[linux@bashcommandnotfound.cn ~]$ sudo yum install patch
而在CentOS 8上,你应该使用:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install patch
patch
命令的基本语法如下:
patch [options] [originalfile [patchfile]]
但是,通常我们会将补丁文件重定向到patch
命令:
patch < /path/to/patchfile
以下是patch
命令的一些常用选项:
选项 | 描述 |
---|---|
-p 或--strip | 删除文件名前面的目录 |
-R 或--reverse | 反转补丁 |
-N 或--forward | 忽略已经应用的补丁 |
-l 或--ignore-whitespace | 忽略空白字符的更改 |
假设我们有一个名为foo.c
的文件,我们收到了一个包含对foo.c
修改的补丁文件patch.diff
。我们可以使用以下命令应用补丁:
[linux@bashcommandnotfound.cn ~]$ patch foo.c < patch.diff
如果我们想撤销刚才应用的补丁,我们可以使用-R
选项:
[linux@bashcommandnotfound.cn ~]$ patch -R foo.c < patch.diff
如果你有多个补丁文件需要应用到同一个源文件,你可以使用-
选项来从标准输入读取补丁。例如:
[linux@bashcommandnotfound.cn ~]$ cat patch1.diff patch2.diff | patch foo.c -
如果你的补丁文件中包含了一些不重要的空白字符的更改,你可以使用-l
选项来忽略这些更改:
[linux@bashcommandnotfound.cn ~]$ patch -l foo.c < patch.diff
你可以使用diff
命令来创建一个补丁文件。例如,如果你有两个版本的foo.c
文件,你可以使用以下命令来创建一个补丁文件:
[linux@bashcommandnotfound.cn ~]$ diff -u foo.c.orig foo.c > patch.diff
然后,你可以使用patch
命令来应用这个补丁:
[linux@bashcommandnotfound.cn ~]$ patch foo.c.orig < patch.diff
这将会将foo.c.orig
文件修改为foo.c
文件的内容。
如果你有一个补丁文件,需要将其应用到多个文件,你可以使用-
选项来从标准输入读取补丁。例如:
[linux@bashcommandnotfound.cn ~]$ cat patch.diff | patch -p1
这将会将补丁应用到当前目录下的所有文件。
如果你只是想查看一个补丁会做什么,而不实际应用它,你可以使用--dry-run
选项:
[linux@bashcommandnotfound.cn ~]$ patch --dry-run foo.c < patch.diff
这将会显示补丁会做什么,但不会实际修改文件。
如果你不确定一个补丁是否已经被应用,你可以使用-N
或--forward
选项来忽略已经应用的补丁:
[linux@bashcommandnotfound.cn ~]$ patch -N foo.c < patch.diff
如果补丁已经被应用,patch
命令将不会做任何事情。
bash: patch: command not found
的错误,那么你可能需要安装patch
命令。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。