开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第29天,点击查看活动详情 引言
好好活,做有意义的事;做有意义的事,就是好好活.
diff
-
含义
以逐行的方式.比较文本内容的不同之处.最新版本的diff也支持了二进制文件.
如果指定比较的是目录.则
diff会比较两个目录下相同文件名的文件.并列出不同的文件. -
关联
diff程序的输出被称为patch(补丁).patch可以根据diff的输出将
file1、file2文件的内容更新成file3、file2.切记file2文件才是比较中的基准文件.是不可以随意改变的.当然diff也是我们平时用的svn、git等版本工具核心功能. -
语法
diff [参数] [文件1 或 目录1] [文件2 或 目录2]举例
# 表示以file2文件为基准.比较file1与file2 文件的不同 diff file1 file2对比结果特殊字符说明
<: 表示第一个文件中(file1)的内容>: 表示第二个文件中(file2)的内容a: 表示添加 --addc: 表示更改 --changed: 表示删除 --delete----表示分割线
-
常用参数
参数 含义 -a、-text默认逐行比较文件内容 -b、-ignore-space-change不对比空格字符 -B、-ignore-blank-lines不对比空白行 -i、-ignore-case忽略大小写 -w、-igonre-all-space忽略空格字符串 -y、-sidde-by-side以并列的形式显示文件的不同之处 -normal、-ignore-space-change不对比空格字符 -c显示全部内容,并标注出不同 -H、--speed-large-files当文件较大的时候,可以提升比较速度 -q、--brief只显示有无差别,不做详细信息的展示 -r、--recursive比较子目录中的文件 -
事例
- 准备测试数据
-
newts.txt
-
subtest.txt
-
- 最基本的对比
diff newts.txt subtest.txt # 1c1 表示newts.txt文件 第一行经过修改,变成了 subtest.txt文件第1行 1c1 < 我是插入数据 --- > 我是测试数据 # 3c3,6 表示newts.txt文件 第3行改成了 subtest.txt文件的第3行到6行 3c3,6 < Test \ No newline at end of file --- > aaa > > > Ffff
从上面的对比结果输出.从
---分割线的地方,我们就可以直观的知道.newts.txt和subtest.txt不同之处.虽然这样也可以找到不同之处在哪里,但是相对来说不够直观.-
并排格式输出
diff -y newts.txt subtest.txt # 输出结果如下 我是插入数据 | 我是测试数据 初始化 初始化 Test \ aaa > > > Ffff输出参数说明
|: 表示两个文件内容不同\: 表示从这行开始就有所不同,代表多行不同>: 表示只在第二个文件里有<: 表示只在第一个文件里有
-
-c输出显示全部内容,并标注出不同
diff newts.txt subtest.txt -c输出结果
输出参数说明
!: 表示不同之处***1,3***: 表示文件行数
- 准备测试数据