大家好,我是良许。

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

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

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

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

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

$ nano diffsample1

输入内容:

发布

优质的

技术文章

使用 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开发学习路线图

也希望有小伙伴能加入我,把这份电子书做得更完美!

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

推荐阅读:

  • 干货 | 程序员进阶架构师必备资源免费送
  • 神器 | 支持搜索的资源网站

Linux下diff命令用法详解相关推荐

  1. Linux下find命令用法详解

    Linux下find命令用法详解 学神VIP烟火 学神IT教育:XueGod-IT 最负责任的线上直播教育平台 本文作者为VIP学员 烟火 第一部分:根据文件名查找 1.在当前目录查找名称为test的 ...

  2. linux下rename命令用法详解(重命名文件)

    本文介绍了linux系统中rename命令的用法,用来修改文件名.重命名文件,批量重命名文件rename是最好的选择,需要的朋友参考下. 在linux系统中重命名文件,经常用到mv命令,批量重命名文件 ...

  3. linux下xargs命令用法详解

    From:http://biancheng.dnbcw.info/shell/268829.html xargs在 linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xargs ...

  4. linux中which命令详解,Linux下which命令使用详解(转)

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置. f ...

  5. Linux下的awk用法详解

    Linux下的awk用法详解 一.awk介绍 二.awk的语法 三.awk常见用法 四.awk其他用法 五.awk语言特性 一.awk介绍 1.AWK 是一种处理文本文件的语言,是一个强大的文本分析工 ...

  6. linux bin fuser,Linux中fuser命令用法详解

    描述: fuser可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser显示使用指定文件或者文件系统的进程ID. 默认情况下每个文件名后面跟一个字母 ...

  7. linux下sort命令使用详解---linux将文本文件内容加以排序命令

    转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...

  8. linux下测试ftp传输,linux下ftp命令使用详解---linux文件传输ftp命令

    linux下ftp命令使用详解---linux文件传输ftp命令 上一篇 / 下一篇  2010-12-18 09:15:35 / 个人分类:Linux ftp(file transfer proto ...

  9. rm命令linux00,linux下rm命令使用详解 | Soo Smart!

    linux下rm命令使用详解---linux删除文件或目录命令 用户可以用rm命令删除不需要的文件.该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除 ...

最新文章

  1. cloudtalk 无法连接到消息服务器,solr - Solr Cloud down无法与Zookeeper对话客户端会话超时 - 堆栈内存溢出...
  2. IDEA使用GsonFormat完成JSON和JavaBean之间的转换
  3. 线段树 区间更新模板
  4. 如何去掉jQWidgets中TreeGrid和Grid右下角的链接
  5. PostgreSQL 最佳实践 - 水平分库(基于plproxy)
  6. 不止代码:机器分配(动态规划)
  7. BZOJ 2286 消耗战 (虚树+树形DP)
  8. 机器学习之--数据构造,函数图显示
  9. python与excel-Python和Excel终于可以
  10. Numpy根据某一列进行排序
  11. jdk10和jdk8共存和快速切换
  12. android 投屏,华为手机的电脑模式是如何实现的
  13. 自动回复html模板邮件,outlook休假自动回复
  14. C# 实现数字转汉字大写
  15. 用国外的服务器有什么样的优势吗?
  16. jquery.uploadView.js图片上传插件
  17. 单片机芯片解密OTP存储器加密
  18. 互联网人员电脑上必备的免费办公软件
  19. 手机游戏修改客户端服务器,游戏服务器 手机客户端
  20. 全卷积网络FCN与卷积神经网络CNN的区别

热门文章

  1. JAVA内存结构和JAVA内存模型
  2. 水资源税取水计量监管系统 取用水户水量在线监测平台 水资源远程实时监控管理系统
  3. 没有韩红的命,还得了韩红的病
  4. chrome浏览器打开总是自动跳转到百度(新版解决方法)
  5. 2022 Pycharm 不同版本镜像源添加
  6. pyqt5设置按钮颜色
  7. 数据结构--全国交通咨询系统(C语言)
  8. 请求转发Forword
  9. 关于跳过连接你需要知道的一切
  10. 《Python网络爬虫实战》读书笔记1