Linux diff 与 patch 命令实战指南
diff 和 patch 是 Linux 系统下处理文件差异的核心工具,它们相辅相成:diff 负责比较并生成补丁,patch 负责应用补丁。掌握这对组合,能极大提升配置管理和代码协作的效率。
diff 命令详解
基本用法
diff [选项] 原文件 新文件
输出格式对比
| 格式类型 | 命令选项 | 特点 | 适用场景 |
|---|---|---|---|
| 正常格式 | diff (默认) | 显示需要修改的行 | 简单文件比较 |
| 上下文格式 | diff -c | 显示修改前后的上下文内容 | 代码审查 |
| 统一格式 | diff -u | 紧凑显示,包含上下文 | 生成补丁文件,版本控制 |
实战示例
假设我们有两个版本的配置文件:
config-v1.txt
# 服务器配置 port=8080 host=localhost debug=false max_connections=100
config-v2.txt
# 服务器配置 port=9090 host=0.0.0.0 debug=true max_connections=200 timeout=30
1. 正常格式输出
$ diff config-v1.txt config-v2.txt
2,4c2,5
<port=8080
<host=localhost
<debug=false
<max_connections=100
---
>port=9090
>host=0.0.0.0
>debug=true
>max_connections=200
>timeout=30
这里 2,4c2,5 表示原文件第 2-4 行被替换为新文件的 2-5 行。< 代表删除,> 代表新增。
2. 统一格式输出(最常用)
$ diff -u config-v1.txt config-v2.txt
--- config-v1.txt 2024-01-01 10:00:00
+++ config-v2.txt 2024-01-01 11:00:00
@@ -1,6 +1,7 @@
# 服务器配置
-port=8080
-host=localhost
-debug=false
-max_connections=100
+port=9090
+host=0.0.0.0
+debug=true
+max_connections=200
+timeout=30
统一格式 (-u) 包含了文件名、时间戳以及更清晰的上下文标记,是生成 .patch 文件的首选。
diff 常用选项
| 选项 | 说明 | 示例 |
|---|


