#### 简介

逐行比较文件

#### 语法

```
diff [options] <files>
```

#### 选项

```
-r, --recursive		# 递归比较两个目录里的所有文件
-N, --new-file		# 将不存在的文件当成空文件
--suppress-common-lines	# 与-y联用，表示只输出内容不同的列。
-u, -U NUM, --unified[=NUM]	# 以合并的方式来显示文件内容的不同
-W, --width=<NUM>	# 允许输出列数最高为<NUM>，默认130。
-y, --side-by-side	# 输出成两列
```

#### 用法

```
diff -ruN lab1/kern lab2/kern > lab2.patch	# 递归比较lab2/kern文件夹与lab1/kern文件夹中所有文件不同之处，结果输出到lab2.patch文件中。注：生成的.patch文件是与patch命令配合使用的
```

#### 输出格式

由于历史原因，一共有三种输出格式：

- 普通格式

  c：改变

  a：增加

  d：删除

  <：前一个文件中某行的内容

  <：后一个文件中某行的内容

- 上下文格式：使用了-c选项

  ***：第一个文件

  ---：第二个文件

  -：第一个文件中的此行在第二个文件中已被删除

  +：此行在第一个文件中没有，但在第二个文件中有

  !：两个文件都有此行，且内容有差别

- 合并格式：使用了-u选项

  ---：第一个文件

  +++：第二个文件

  -：同上下文格式

  +：同上下文格式

  @@：标记两个文件的行号、要显示的行数
