diff 命令
此用于比较两个目录或文件的差异,并输出他们之间的差异,差异可以理解为一系列的操作,对于源文件 A 和目标文件 B,使用 diff 结果描述的操作(对 A 文件增删改操作)后,可以将 A 文件内容修改到和 B 一致。使用下面命令输出 A 和 B 之间的差异:
1 | diff A B # 输出 A 文件和 B 文件的差异。 |
patch 命令
patch 可以将 diff 产生的差异应用到执行的目录。
1 | patch < file.patch |
关于 -p
参数,他会根据后面的数字忽略 diff
的目录层级,-p2
表示截掉层级前缀到第二个 /
:
1 | patch -p0 # diff A/AA/AAA B/BB/BBB => diff A/AA/AAA B/BB/BBB |
例如当前文件夹 /home/test
,对于 diff A/AA/AAA B/BB/BBB
的结果:
- 如果
/home/test/B/BB/BBB
存在,直接尝试应用。否则: - 如果
/home/test/A/AA/AAA
存在,尝试应用到 A。
如果使用了 -p
参数,就先截断,再按照上述过程判断应用。
参考资料
How to Apply a Patch to a File (and Create Patches) in Linux