Linux下diff命令用法详解

你们好,我是良许。程序员

咱们在平时工做的时候,常常要知道两个文件之间,以及同个文件不一样版本之间有何异同点。在 Windows 下,有 beyond compare 这个好用的工具,而在 Linux 下,也有不少很强大的工具,良许以前也写过一篇文章介绍:面试

Linux下9种优秀的代码比对工具推荐shell

这些比对工具其实都是基于 diff 命令,下面就详细介绍一些 diff 命令的用法。架构

diff 命令是一个分析文件信息的命令,能够打印出文件之间的差别。它能够逐行地比较两个文件的内容,也能够递归地比较文件夹的内容。diff 命令的输出内容可让咱们知道要使两个文件相同须要作哪些修改,这对于咱们的工做颇有帮助。编辑器

在开始前,咱们先用文件编辑器建立两个内容相同的文件。这里咱们使用的是 nano工具

$ nano diffsample1复制代码

输入内容:学习

发布测试

优质的网站

技术文章spa

使用 Ctrl+XY 保存并退出。

建立第二个文件:

$ 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 命令

$ diff diffsample1 diffsample2复制代码

能够看到 diff 命令找出了大小写的不一样,若是咱们不想检查大小写,可使用 -i 选项。

$ diff -i diffsample1 diffsample2复制代码

这时内容没有区别,diff 没有输出任何信息。

咱们可使用 -u 选项以统一的格式输出信息:

输出信息中使用 -+ 表示哪些内容须要被删除或者添加来使得文件内容相同。

以前提到过 diff 命令会检查空格或tab,若是咱们想要忽略空格和tab,可使用 -w 选项。

在 diffsample2 的第二行 good 后面输入一些空格和tab,并把以前的大写改回小写。

再使用 diff 命令

$ diff diffsample1 diffsample2复制代码

能够看到找出了不一样,再使用 -w 忽略空格和tab,这时便没有任何输出信息了。

diff 命令还有许多选项,能够用来忽略某些状况或者更改输出等,咱们可使用 man 命令来获取更多的相关信息。


最后,最近不少小伙伴找我要Linux学习路线图,因而我根据本身的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。不管你是面试仍是自我提高,相信都会对你有帮助!目录以下:

免费送给你们,只求你们金指给我点个赞!

电子书 | Linux开发学习路线图

也但愿有小伙伴能加入我,把这份电子书作得更完美!

有收获?但愿老铁们来个三连击,给更多的人看到这篇文章

推荐阅读:

相关文章
相关标签/搜索