Linux下diff命令用法详解
大家好,我是良许。
我们在平时工作的时候,经常要知道两个文件之间,以及同个文件不同版本之间有何异同点。在 Windows 下,有 beyond compare 这个好用的工具,而在 Linux 下,也有很多很强大的工具,良许之前也写过一篇文章介绍:
Linux下9种优秀的代码比对工具推荐
这些比对工具其实都是基于 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学习路线图,于是我根据自己的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。无论你是面试还是自我提升,相信都会对你有帮助!目录如下:
免费送给大家,只求大家金指给我点个赞!
电子书 | Linux开发学习路线图
也希望有小伙伴能加入我,把这份电子书做得更完美!
有收获?希望老铁们来个三连击,给更多的人看到这篇文章
推荐阅读:
- 干货 | 程序员进阶架构师必备资源免费送
- 神器 | 支持搜索的资源网站
Linux下diff命令用法详解相关推荐
- Linux下find命令用法详解
Linux下find命令用法详解 学神VIP烟火 学神IT教育:XueGod-IT 最负责任的线上直播教育平台 本文作者为VIP学员 烟火 第一部分:根据文件名查找 1.在当前目录查找名称为test的 ...
- linux下rename命令用法详解(重命名文件)
本文介绍了linux系统中rename命令的用法,用来修改文件名.重命名文件,批量重命名文件rename是最好的选择,需要的朋友参考下. 在linux系统中重命名文件,经常用到mv命令,批量重命名文件 ...
- linux下xargs命令用法详解
From:http://biancheng.dnbcw.info/shell/268829.html xargs在 linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xargs ...
- linux中which命令详解,Linux下which命令使用详解(转)
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置. f ...
- Linux下的awk用法详解
Linux下的awk用法详解 一.awk介绍 二.awk的语法 三.awk常见用法 四.awk其他用法 五.awk语言特性 一.awk介绍 1.AWK 是一种处理文本文件的语言,是一个强大的文本分析工 ...
- linux bin fuser,Linux中fuser命令用法详解
描述: fuser可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser显示使用指定文件或者文件系统的进程ID. 默认情况下每个文件名后面跟一个字母 ...
- linux下sort命令使用详解---linux将文本文件内容加以排序命令
转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...
- linux下测试ftp传输,linux下ftp命令使用详解---linux文件传输ftp命令
linux下ftp命令使用详解---linux文件传输ftp命令 上一篇 / 下一篇 2010-12-18 09:15:35 / 个人分类:Linux ftp(file transfer proto ...
- rm命令linux00,linux下rm命令使用详解 | Soo Smart!
linux下rm命令使用详解---linux删除文件或目录命令 用户可以用rm命令删除不需要的文件.该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除 ...
最新文章
- cloudtalk 无法连接到消息服务器,solr - Solr Cloud down无法与Zookeeper对话客户端会话超时 - 堆栈内存溢出...
- IDEA使用GsonFormat完成JSON和JavaBean之间的转换
- 线段树 区间更新模板
- 如何去掉jQWidgets中TreeGrid和Grid右下角的链接
- PostgreSQL 最佳实践 - 水平分库(基于plproxy)
- 不止代码:机器分配(动态规划)
- BZOJ 2286 消耗战 (虚树+树形DP)
- 机器学习之--数据构造,函数图显示
- python与excel-Python和Excel终于可以
- Numpy根据某一列进行排序
- jdk10和jdk8共存和快速切换
- android 投屏,华为手机的电脑模式是如何实现的
- 自动回复html模板邮件,outlook休假自动回复
- C# 实现数字转汉字大写
- 用国外的服务器有什么样的优势吗?
- jquery.uploadView.js图片上传插件
- 单片机芯片解密OTP存储器加密
- 互联网人员电脑上必备的免费办公软件
- 手机游戏修改客户端服务器,游戏服务器 手机客户端
- 全卷积网络FCN与卷积神经网络CNN的区别