diff 命令是用来比较两个文件的差异的,是以逐行的方式进行比较,比较文本文件的异同处其语法如下:

diff [选项] filename1 filename2

常用参数:
diff有三种不同的比较模式,不同的比较模式其输出显示也不同;
-d或 --minimal :使用不同的演算法,以小的单位来做比较,默认Normal模式;
-c或 --context :显示全部内容,并标出不同之处,Context模式;
-u或–unified :以合并的方式来显示文件内容的不同,Unified模式;

演示示例:
1、

[root@Centos8 ~]# diff file1 file2
[root@Centos8 ~]#

没有任何输出表示两个文件完全一样;

2、

[root@Centos8 ~]# diff file1 file2          #默认Normal模式
2,4c2,4
< I need to run the laundry.
< I need to wash the dog.
< I need to get the car detailed.
---
> I need to do the laundry.
> I need to wash the car.
> I need to get the dog detailed.

不加任何参数,默认就是Normal模式,如上,第一行 2,4c2,4 前面的数字2,4表示第一个文件中的第2到第4行,中间有一个字母c表示需要在第一个文件上做的操作(a=add,c=change,d=delete),后面的数字2,4表示第二个文件中的第2到第4行;
2,4c2,4 的含义是:第一个文件中的第[2,4]行(注意这是一个闭合区间,包括第2行到第4行)需要做出修改才能与第二个文件中的[2,4]行相匹配。
接下来的内容则告诉我们需要修改的地方,前面带 < 的部分表示左边文件的第[2,4]行的内容,而带> 的部分表示右边文件的第[2,4]行的内容,中间的 — 则是两个文件内容的分隔符号;

3、

[root@Centos8 ~]# diff file1 file2 -c     #加了-c,Context模式
*** file1       2021-06-04 11:56:38.582568696 +0800
--- file2       2021-06-04 12:21:36.084086788 +0800
***************
*** 1,4 ****I need to buy apples.I need to run the laundry.
! I need to wash the dog.
! I need to get the car detailed.
--- 1,4 ----I need to buy apples.I need to run the laundry.
! I need to wash the cat.
! I need to get the big car.

前面两行表示文件名,***是file的标识符,---是file2的标识符,*** 1,4 ****表示第一个文件1到4行,感叹号!表示修改,即需要修改第一个文件的这行才能与第二个文件行系统;加号+表示第一个文件需要天剑的行,-号表示第一个文件需要减去的行,不管什么操作(a=add,c=change,d=delete)都是对第一个文件来说的。

4、

[root@Centos8 ~]# diff file1 file2 -u       #Unified模式
--- file1       2021-06-04 11:56:38.582568696 +0800
+++ file2       2021-06-04 12:21:36.084086788 +0800
@@ -1,4 +1,4 @@I need to buy apples.I need to run the laundry.
-I need to wash the dog.
-I need to get the car detailed.
+I need to wash the cat.
+I need to get the big car.

Unified模式,使用命令行 –u 来执行该模式的比较。其比较结果与Context模式很像,但是简化了一些输出。

diff 比较文件异同命令相关推荐

  1. git diff比较不同commit版本的代码文件异同

    git diff比较不同commit版本的代码文件异同 如图,假设像知道app目录下的build.gradle文件 在两次commit(fee9f9cf4b和cdd577e352)之间的异同和变化,可 ...

  2. git diff 比较文件_使用Python创建你自己的diff工具

    为什么我需要自己的diff工具? 我经常使用git跟踪我的编码项目.文章.业务工作等等.git的一个美妙之处在于,你可以通过简单地使用其内置的diff功能来轻松地比较你的工作的不同状态.要使用这个功能 ...

  3. 基于diff的文件同步算法(上)

    1.写在前面 文件同步的核心问题是新旧版本的对比问题.这里所说的版本是指用于区分文件变更的一种状态标记,它可以是我们通常所说的版本号,也可以是时间戳,如修改时间.本文介绍一种基于diff的文件同步算法 ...

  4. scp 传目录_scp传输文件的命令

    scp传输文件的命令 一:scp常规的使用方式: scp可以进行简单的远程复制文件的功能.它是一个在各个主机之间进行复制或文件传输的一个命令工具.它使用一种同ssh一样的安全机制来进行文件的传输. 注 ...

  5. 文件结构,及相关文件的命令

    文章目录 1.文件路径 2. 文件的类型 命令 1. ls命令 2.pwd 显示当前所处的目录 3.cd 更改目录,切换目录 4.mkdir创建目录 5.touch创建目录 6.cat查看文件内容(小 ...

  6. linux 文件查找命令集:find,locate,wheres,which,type

    文章目录 前言 find命令 命令格式: 常用选项: 举例使用 locate命令 命令格式 使用实例 whereis命令 使用过程: which命令 type命令 前言 在linux系统中一切皆文件, ...

  7. Linux之文件权限命令

    Linux之文件权限命令 1. chmod命令的介绍 命令 说明 chmod 修改文件权限 chmod修改文件权限有两种方式: 字母法 数字法 2. chmod 字母法的使用 角色说明: 角色 说明 ...

  8. 介绍一下Linux 误删文件恢复命令及方法

    无论在哪个系统中,删除文件都是必须谨慎的操作.因为如果不小心删除了重要文件,就会导致个人或公司出现重大的损失.类似于windows系统误删了文件,可以使用一些软件进行恢复操作.Linux也是有几款软件 ...

  9. mysql处理含中文的SQL文件_mysql命令行还原phpMyAdmin导出的含有中文的SQL文件

    最近得到了一个数十M的MySQL脚本文件,准备还原为数据库. 以前就使用MySQL-Front短暂使用过MySQL,先用它试试,结果挂掉. 这样吧,先用MySQL-Front创建了空数据库,然后使用m ...

  10. find name 模糊匹配_Linux的文件搜索命令(locate ,find,grep,find命令和)

    刚开始学Linux,这是关于Linux文件搜索命令,就目前,尽我所能把他写全一点,后期随时补充 文件搜索命令 一.locate命令 二.find命令 三.grep命令 四.find命令和grep命令的 ...

最新文章

  1. NR 5G 密钥与安全详解
  2. 在WORD文档里如何添加编号
  3. 不可思议的素数(下)
  4. Win7如何关闭 打开文件-安全警告
  5. 15个问题告诉你如何使用Java泛型
  6. 【LeetCode】【HOT】3. 无重复字符的最长子串(哈希表)
  7. Zabbix报警语音
  8. 软件开发人员的简历项目经验
  9. 小程序体验版无法显示内容
  10. 电脑快捷方式图标变白解决方案
  11. TFT液晶屏、LCD显示屏40pin接口标准
  12. 原创,呵呵(一张图看明白),USB转TTL、USB转串口、USB转232的区别
  13. Chrome添加扩展程序
  14. SAP固定资产模块的表
  15. 2019年CSDN排名前10名大神
  16. PLC协议宏通信功能介绍
  17. 计算机系统的主要部件和功能,《计算机系统的组成》教案
  18. PMI-PMP模考二错题解析(2022-01-21 21:46:29)
  19. Calendar之商品促销活动
  20. 双向数据绑定原理(三种实现方式)

热门文章

  1. 213.打家劫舍II(力扣leetcode) 博主可答疑该问题
  2. 计算机系统及原理pdf,计算机系统及工作原理教学设计.pdf
  3. Undefined variable 'raw_input'pylint(undefined-variable)
  4. 从零开始学算法 - 快速排序
  5. flask-script插件
  6. Ubuntu 16.04 更换阿里云源
  7. 【转】navicat远程连接mysql,2003 can't connect to mysql server on 10038
  8. CRM运维工程师主要职责
  9. JVM、JRE、JDK、Java SE、Java EE、Java ME
  10. 使用layoutParams设置控件高宽需要注意的问题