大家好 , 我是良许 。
我们在平时工作的时候 , 经常要知道两个文件之间 , 以及同个文件不同版本之间有何异同点 。在 windows 下 , 有 beyond compare 这个好用的工具 , 而在 linux 下 , 也有很多很强大的工具 , 良许之前也写过一篇文章介绍:
Linux下9种优秀的代码比对工具推荐
这些比对工具其实都是基于 diff 命令 , 下面就详细介绍一些 diff 命令的用法 。
diff 命令是一个分析文件信息的命令 , 可以打印出文件之间的差异 。它可以逐行地比较两个文件的内容 , 也可以递归地比较文件夹的内容 。diff 命令的输出内容可以让我们知道要使两个文件相同需要做哪些修改 , 这对于我们的工作很有帮助 。
在开始前 , 我们先用文件编辑器创建两个内容相同的文件 。这里我们使用的是 nano 。
$ nano diffsample1
输入内容:
发布
优质的
技术文章
文章插图
【Linux下diff命令用法详解】使用 Ctrl+X 和 Y 保存并退出 。
创建第二个文件:
$ nano diffsample2
输入同样的内容并保存退出 。需要注意的是 , 空格和 Tab 对两个文件是否完全相同会有影响 。
使用 diff 命令查看两个文件是否有差异:
$ diff diffsample1 diffsample2
这时 diff 命令没有输出任何信息 , 说明这两个文件的内容是完全相同的 。现在我们对 diffsample2 做一些修改 , 将文章改为帖子然后保存并退出
文章插图
再使用 diff 命令:
$ diff diffsample1 diffsample2
查看输出的信息:文章插图
在以上输出信息中 , 3c3 表示第一个文件的第三行需要被替换为第二个文件的第三行 , 然后为我们提示出了需要修改的内容: 技术文章 和 技术帖子
diff 命令所参考的不是第一个文件 , 而是第二个文件 , 它的输出信息有以下几种字符:
c : 表示必须做一些修改
a : 表示必须添加一些内容
d : 表示必须删除一些内容
字符前的数字表示第一个文件中的行数 , 字符后的内容表示第二个文件中的行数 。
< 表示引用的第一个文件中的内容 , 而 > 表示引用的第一个文件中的内容
现在让我们交换两个文件的顺序再试试:
$ diff diffsample2 diffsample1
文章插图
在交换文件顺序之后 diff 参考的文件变成了 diffsample1 , 提示我们将 技术帖子 修改为 技术文章 。
现在我们将 diffsample1 编辑为以下内容:
文章插图
删除了第二行和第三行 , 再试试使用 diff 命令
$ diff diffsample2 diffsample1
文章插图
现在我们可以看到 , 因为我们以 diffsample1 作为参考 , 为了使两个文件相同 , 我们需要删除 diffsample2 中的第二行和第三行 , 然后就会和 diffsample1 中的第一行内容相同 。
我们再试试交换 diffsample1 和 diffsample2 的顺序:
$ diff diffsample1 diffsample2
文章插图
可以看到 , 现在 diff 给我们的提示信息变为了在 diffsample1 中的第一行后面添加 diffsample2 中的第二行和第三行内容 。
现在让我们来测试区分内容的大小写:
编辑 diffsample1 的内容为:
文章插图
编辑 diffsample1 的内容为:
文章插图
两个文件中唯一的区别是第三行的大小写 , 再试试 diff 命令
推荐阅读
- 新生儿用什么奶嘴?
- 新生儿拍照用了闪光灯?
- lisa|Lisa新杂志封面金发搭配夸张眼线,状态很好,国内人气稍有下滑
- 胎心检测多少分正常
- 谁喝过苏丹红茶?酸酸的那种,从苏丹当地买的,我总觉得那颜色好像是添加剂添加的,谁能详细介绍下这东西[红茶]
- 低压高怎么降下来
- 淘宝店铺买家下单后卖家怎么操作发货 淘宝店铺下单后发货流程
- 老年人耳朵听力下降?
- 翡翠|问过了翡翠价格,就一定要买下翡翠,这是真的吗?
- 下巴长痘是哪里出现了问题?