我们平时工作的时候,经常需要了解两个文件,以及同一个文件的不同版本之间的异同。Windows下,有无可比拟的好用工具,Linux下,也有很多强大的工具。梁旭之前也写过一篇文章:Linux下9款优秀的代码对比工具推荐,这些对比工具其实都是基于diff命令的。下面会详细介绍一些diff命令的用法。diff命令是分析文件信息并打印出文件之间差异的命令。它可以逐行比较两个文件的内容,也可以递归比较文件夹的内容。diff命令的输出可以让我们知道需要做哪些修改才能使两个文件相同,这对我们的工作很有帮助。在开始之前,让我们使用文件编辑器创建两个内容相同的文件。这里我们使用nano。$nanodiffsample1输入内容:发表优质技术文章使用Ctrl+X和Y保存退出。创建第二个文件:$nanodiffsample2输入同样的内容,保存退出。需要注意的是,空格和制表符会影响两个文件是否相同。使用diff命令查看两个文件是否存在差异:$diffdiffsample1diffsample2此时diff命令没有输出任何信息,说明两个文件的内容完全一样。现在我们对diffsample2做一些改动,把文章改成post,保存退出,然后使用diff命令:$diffdiffsample1diffsample2查看输出信息:上面的输出信息中,3c3表示第一个文件的第三行需要替换为第一个两个文件的第三行然后给我们展示了需要修改的内容:技术文章和技术帖diff命令不是针对第一个文件,而是针对第二个文件。其输出信息如下字符:c:表示需要修改a:表示需要增加一些内容d:表示需要删除一些内容字符前的数字表示第一个文件的行数,字符后的内容表示第二个文件的行数。<表示引用的第一个文件中有什么,>表示引用的第一个文件中有什么现在让我们交换两个文件的顺序并重试:将技术帖修改为技术文章。现在我们编辑diffsample1如下:删除第二行和第三行,再次使用diff命令$diffdiffsample2diffsample1现在我们可以看到,由于我们使用diffsample1作为参考,为了使两个文件相同,我们需要删除diffsample2中的第二行和第三行将与diffsample1中的第一行相同。我们再把diffsample1和diffsample2的顺序调换一下:$diffdiffsample1diffsample2可以看到现在diff给出的提示信息已经变成了在diffsample1的第一行之后添加了diffsample2的第二行和第三行的内容。现在让我们测试一下内容的大小写敏感性:将diffsample1的内容编辑为:将diffsample1的内容编辑为:两个文件的唯一区别是第三行的大小写,然后尝试diff命令$diffdiffsample1diffsample2来查看diff命令找出大小写的不同,如果我们不想检查大小写,我们可以使用-i选项。$diff-idiffsample1diffsample2此时内容没有区别,diff不输出任何信息。我们可以使用-u选项以统一的格式输出信息:在输出信息中使用-和+表示需要删除或添加的内容,使文件内容相同。如前所述,diff命令将检查空格或制表符。如果我们想忽略空格和制表符,我们可以使用-w选项。在diffsample2第二行good后面输入一些空格和制表符,将之前的大写改回小写。然后用diff命令$diffdiffsample1diffsample2看看发现差异了,然后用-w忽略空格和制表符,就没有输出信息了。diff命令也有很多选项,可以用来忽略某些情况或者改变输出等。我们可以使用man命令来获取更多相关信息。p>【编者推荐】如何使用时间管理专家的Linux工具对你的Linux系统进行压力测试如何解决Linux中CPU占用率高的问题?Linux运维排查思路,这篇文章足够Linux下diff命令使用详解
