diff
最后更新于:2022-04-02 03:52:13
[TOC]
## 语法
```
-B 不检查空白行。
-i 不检查大小写的不同。
-N 在比较目录时,若文件A仅出现在某个目录中,预设会显示:
-q 仅显示有无差异,不显示详细的信息。
-r 比较子目录中的文件。
-u,-U<列数> 以合并的方式来显示文件内容的不同。
-y 以并列的方式显示文件的异同之处。
-W<宽度> 在使用-y参数时,指定栏宽。
-c 显示全部内文,并标出不同之处。
```
## 示例
### 比较两个文件
```
> cat testfile_1
HELLO LINUX!
LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
THIS IS A LINUX TESTFILE!
LINUX TEST
> cat testfile_2
HELLO WORLD!
LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
LINUX TEST
THIS IS A ADD LINE
> diff testfile_1 testfile_2
1c1
< HELLO LINUX!
---
> HELLO WORLD!
3d2
< THIS IS A LINUX TESTFILE!
4a4
> THIS IS A ADD LINE
```
### 并排格式输出
```
diff testfile_1 testfile_2 -y -W 100
HELLO LINUX! | HELLO WORLD!
LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM. LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
THIS IS A LINUX TESTFILE! <
LINUX TEST LINUX TEST
> THIS IS A ADD LINE
```
说明
- "|"表示前后2个文件内容有不同
- "<"表示后面文件比前面文件少了1行内容
- ">"表示后面文件比前面文件多了1行内容
### `-ruN ` 合并方式显示
```
> diff -ruN testfile_1 testfile_2
--- testfile_1 2020-09-22 16:33:46.000000000 +0800
+++ testfile_2 2020-09-22 16:24:54.000000000 +0800
@@ -1,4 +1,4 @@
-HELLO LINUX!
+HELLO WORLD!
LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
-THIS IS A LINUX TESTFILE!
-LINUX TEST
\ No newline at end of file
+LINUX TEST
+THIS IS A ADD LINE
```
> 这种输出方式输出的内容可以用于使用patch命令进行打补丁包
### 比较目录
```
> mkdir diff1
> mkdir diff2
> cp testfile_1 diff1
> cp testfile_2 diff2
> diff -ruN diff1 diff2
--- diff1/testfile_1 2020-09-22 16:35:33.000000000 +0800
+++ diff2/testfile_1 1970-01-01 08:00:00.000000000 +0800
@@ -1,4 +0,0 @@
-HELLO LINUX!
-LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
-THIS IS A LINUX TESTFILE!
-LINUX TEST
\ No newline at end of file
diff -ruN diff1/testfile_2 diff2/testfile_2
--- diff1/testfile_2 1970-01-01 08:00:00.000000000 +0800
+++ diff2/testfile_2 2020-09-22 16:35:36.000000000 +0800
@@ -0,0 +1,4 @@
+HELLO WORLD!
+LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
+LINUX TEST
+THIS IS A ADD LINE
```
';