

Linux下diff命令用法详解
source link: http://www.cnblogs.com/yychuyu/p/13269347.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

大家好,我是良许。
我们在平时工作的时候,经常要知道两个文件之间,以及同个文件不同版本之间有何异同点。在 Windows 下,有 beyond compare 这个好用的工具,而在 Linux 下,也有很多很强大的工具,良许之前也写过一篇文章介绍:
这些比对工具其实都是基于 diff
命令,下面就详细介绍一些 diff 命令的用法。
diff命令是一个分析文件信息的命令,可以打印出文件之间的差异。它可以逐行地比较两个文件的内容,也可以递归地比较文件夹的内容。 diff 命令的输出内容可以让我们知道要使两个文件相同需要做哪些修改,这对于我们的工作很有帮助。
在开始前,我们先用文件编辑器创建两个内容相同的文件。这里我们使用的是 nano 。
$ nano diffsample1
输入内容:
发布
优质的
技术文章
使用 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 命令
$ 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

有收获?希望老铁们来个三连击,给更多的人看到这篇文章
Recommend
-
7
Linux 中的crontab命令的简单介绍及其用法Crontab 案例 写于 2020 年 3 月 16 日: Crontab 其实就是 Linux 操作系统中用来设置定时任务的工具,也就是可以使得特定的任务在特定的时间得以(周期性的)执行.比如说,定时备...
-
6
Linux 常见命令常用用法 作者: 张志强 , 发表...
-
6
Linux中cron命令的16个基础用法及示例 ...
-
6
文件比较在 Linux 中起着重要的作用,特别是对于程序员和 Linux 系统管理员。例如,如果您想找到两个源代码文件之间的差异来开发补丁,那么您需要一个文件比较...
-
5
迷途小书童的Note diff 命令以逐行的方式,比较文本文件的异同。如果指定的是文件夹,则 d...
-
4
linux kill命令参数及用法详解 2022-09-11 Linux ...
-
5
Linux挂载命令 mount 用法及参数详解mount用法及参数详解mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区...
-
6
首页技术宅LinuxLinux挂载硬盘 mount命令 用法及参数详解Linux挂...
-
8
diff Linux Diff命令比较文件不同 diff是一个命令行程序,可让您逐行比较两个文件。它还可以比较目录的内容 ...
-
2
Linux中cut和paste命令的用法详解 作者:Hank Zheng 2023-12-21 13:59:41 本文将详细介绍Linux命令行中的cut和paste命令,包括命令的基本用法、常见选项和实例演示。cut命令用于从文本中剪切字段,而paste命令则用...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK