当前位置: 首页 > Linux

Linux下diff命令用法详解

时间:2023-04-06 11:33:04 Linux

大家好,我是良旭。我们在平时工作的时候,经常需要了解两个文件之间,以及同一个文件的不同版本之间的异同。Windows下,有无可比拟的好用工具,Linux下,也有很多强大的工具。梁旭之前也写过一篇文章:Linux下9款优秀的代码对比工具推荐,这些对比工具其实都是基于diff命令的。下面会详细介绍一些diff命令的用法。diff命令是分析文件信息并打印出文件之间差异的命令。它可以逐行比较两个文件的内容,也可以递归比较文件夹的内容。diff命令的输出可以让我们知道需要做哪些修改才能使两个文件相同,这对我们的工作很有帮助。在开始之前,让我们使用文件编辑器创建两个内容相同的文件。这里我们使用nano。$nanodiffsample1类型内容:发布优质技术文章使用Ctrl+X和Y保存退出。创建第二个文件:$nanodiffsample2输入相同的内容并保存退出。需要注意的是,空格和制表符会影响两个文件是否相同。使用diff命令查看两个文件是否存在差异:$diffdiffsample1diffsample2此时diff命令没有输出任何信息,说明两个文件的内容完全一样。现在我们对diffsample2做一些改动,把文章改成post,保存退出,然后使用diff命令:$diffdiffsample1diffsample2查看输出信息:上面输出信息中,3c3表示第三行firstfileneedstobereplace是第二个文件的第三行,然后给我们展示了需要修改的内容:技术文章和技术帖diff命令不是针对第一个文件,而是针对第二个文件,其输出信息如下几个字符:c:表示需要做一些修改a:表示需要增加一些内容d:表示需要删除一些内容该字符前的数字表示第一行的行数文件,该字符后的内容表示第二个文件Rows中的内容。<表示引用的第一个文件中有什么>表示引用的第一个文件中有什么现在让我们交换两个文件的顺序,然后再试一次:我们把技术帖修改为技术文章。现在我们将diffsample1编辑为以下内容:删除第二行和第三行并使用diff命令再次尝试$diffdiffsample2diffsample1现在我们可以看到,由于我们使用diffsample1作为参考,为了使两个文件相同我们第二个和第三个diffsample2中的行需要删除,然后它会和diffsample1中的第一行一样。我们试试调换一下diffsample1和diffsample2的顺序:$diffdiffsample1diffsample2可以看到现在diff给出的提示信息已经变成了在diffsample1的第一行之后添加了diffsample2的第二行和第三行。现在我们来测试一下内容的大小写敏感度:Editdiffsample1的内容为:Editdiffsample1的内容为:两个文件唯一的区别就是第三行的大小写,然后试试diff命令$diffdiffsample1diffsample2来看diff命令发现大小写的差异,如果我们不想检查大小写,我们可以使用-i选项。$diff-idiffsample1diffsample2此时内容没有区别,diff不输出任何信息。我们可以使用-u选项以统一的格式输出信息:在输出信息中使用-和+表示需要删除或添加的内容,使文件内容相同。如前所述,diff命令将检查空格或制表符。如果我们想忽略空格和制表符,我们可以使用-w选项。在diffsample2第二行good后面输入一些空格和制表符,将之前的大写改回小写。然后用diff命令$diffdiffsample1diffsample2看看发现区别了,然后用-w忽略空格和制表符,就没有输出信息了。diff命令也有很多选项,可以用来忽略某些情况或者改变输出等。我们可以使用man命令来获取更多相关信息。最后,最近有很多朋友找我要一份Linux学习路线图,所以我结合自己的经验,利用业余时间熬夜一个月,整理了一本电子书。无论你是面试还是自我提升,相信都会对你有所帮助!免费送给大家,只求大家给我点个赞!电子书|LinuxDevelopmentLearningRoadmap也希望有小伙伴可以加入我的行列,把这本电子书做得更加完美!获得?希望老铁们来个三连击,让更多人看到这篇文章。推荐阅读:干货|程序员和高级架构师免费发送工件的必备资源|支持搜索的资源网站