diff 命令是 Linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。diff程序的输出被称为补丁 (patch),因为Linux系统中还有一个patch程序,可以根据diff的输出将a.c的文件内容更新为b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。

命令格式:

diff [参数][变动前的文件1或目录1][变动后的文件2或目录2]

命令功能:

diff命令能比较单个文件或者目录内容。如果指定比较的是文件,则只有当输入为文本文件时才有效。以逐行的方式,比较文本文件的异同处。如果指定比较的是目录的的时候,diff 命令会比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。

命令参数:

-y或--side-by-side  以并列的方式显示文件的异同之处。

-W或--width  在使用-y参数时,指定栏宽。

-c  显示全部内文,并标出不同之处。

-u,-U或--unified=  以合并的方式来显示文件内容的不同。

-r或--recursive  比较子目录中的文件。

-N或--new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。

-b或--ignore-space-change  不检查空格字符的不同

-B或--ignore-blank-lines  不检查空白行。

-H或--speed-large-files  比较大文件时,可加快速度。

-l或--ignore-matching-lines  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。

-i或--ignore-case  不检查大小写的不同。

-q或--brief  仅显示有无差异,不显示详细的信息。

-r或--recursive  比较子目录中的文件。

-s或--report-identical-files  若没有发现任何差异,仍然显示信息。

-S或--starting-file  在比较目录时,从指定的文件开始比较

-t或--expand-tabs  在输出时,将tab字符展开。

-T或--initial-tab  在每行前面加上tab字符以便对齐。

-w或--ignore-all-space  忽略全部的空格字符。

-v或--version  显示版本信息。

实例

[root@linuxidc src]# cat a.txt

111

aaa

AAA

111aaa

aaa

AAA

111

[root@linuxidc src]# cat b.txt

111

aaa

AAA

111AAA

aaa

AAA

111

[root@linuxidc src]#

正常格式的diff如下

1 [root@linuxidc src]# diff a.txt b.txt
4c4
< 111aaa
---
> 111AAA
[root@linuxidc src]#

diff结果第一行“4c4”是一个提示,用来说明变动位置,前面的"4",表示f1的第4行有变化;中间的"c"表示变动的模式是内容改变(change),其他模式还有"增加"(a,代表addition)和"删除"(d,代表deletion);后面的"4",表示变动后变成f2的第4行。

第二行“< 111aaa”,前面的小于号,表示要从f1当中去除该行(也就是第4行),后面的"111aaa"表示该行的内容。

第三行“---”用来分割f1和f2。

第四行“> 111AAA”,类似于第二行。前面的大于号表示f2增加了该行,后面的"111AAA"表示该行的内容。

上下文格式的diff如下

[root@linuxidc src]# diff -c a.txt b.txt

*** a.txt 2015-11-08 18:21:50.455124628 +0800

--- b.txt 2015-11-08 18:21:53.391173006 +0800

***************

*** 1,7 ****

111

aaa

AAA

! 111aaa

aaa

AAA

111

--- 1,7 ----

111

aaa

AAA

! 111AAA

aaa

AAA

111

[root@linuxidc src]#

第一部分显示两个文件的基本情况:文件名和时间信息,"***"表示变动前的文件,"---"表示变动后的文件。

第二部分#15个星号,将文件的基本情况与变动内容分割开。

第三部分显示变动前的文件,即f1。这时不仅显示发生变化的第4行,还显示第4行的前面三行和后面三行,因此一共显示7行。所以,前面的"*** 1,7 ****"就表示,从第1行开始连续7行。另外,文件内容的每一行最前面,还有一个标记位。如果为空,表示该行无变化;如果是感叹号(!),表示该行有改动;如果是减号(-),表示该行被删除;如果是加号(+),表示该行为新增。

四部分显示变动后的文件,即f2。

合并格式的diff

[root@linuxidc src]# diff -u a.txt b.txt

--- a.txt 2015-11-08 18:21:50.455124628 +0800

+++ b.txt 2015-11-08 18:21:53.391173006 +0800

@@ -1,7 +1,7 @@

111

aaa

AAA

-111aaa

+111AAA

aaa

AAA

111

[root@linuxidc src]#

第一部分,也是文件的基本信息。"---"表示变动前的文件,"+++"表示变动后的文件。

第二部分,变动的位置用两个@作为起首和结束。前面的"-1,7"分成三个部分:减号表示第一个文件(即f1),"1"表示第1行,"7"表示连续7行。合在一起,就表示下面是第一个文件从第1行开始的连续7行。同样的,"+1,7"表示变动后,成为第二个文件从第1行开始的连续7行。

第三部分是变动的具体内容。除了有变动的那些行以外,也是上下文各显示3行。它将两个文件的上下文,合并显示在一起,所以叫做"合并格式"。每一行最前面的标志位,空表示无变动,减号表示第一个文件删除的行,加号表示第二个文件新增的行。

并排格式输出

[root@linuxidc src]# diff -y -W 50 a.txt b.txt

111        111

aaa        aaa

AAA        AAA

111aaa            |  111AAA

aaa        aaa

AAA        AAA

111        111

[root@linuxidc src]#

“|”表示前后2个文件内容有不同

“>”表示后面文件比前面文件多了1行内容

linux双小于命令,Linux文本比较命令:diff相关推荐

  1. linux双系统启动引导,linux windows 双系统并存与启动引导

    发现网站这类文章不好找 找到的分析也不太详细     小弟不才今天就写这么一个文章 PS: 文章是否保留出处属于个人意愿 本人不喜欢强制要求 一般安装WINDOWS 和 LINUX 并存的有两种方式 ...

  2. windows7 和linux双系统,win7与linux双系统_win7 linux双系统

    2016-05-05 18:50:12 把两个系统放在不同磁盘.只要电脑上有其中一个系统,然后就可以安装另一个系统.制作个U盘启动盘安装 步骤: 1.将制作好的大番薯U盘插入电脑USB接口中,启动电脑 ...

  3. linux双网卡合并,Linux系统如何让双网卡合“一”而用

    服务器的网络连通状况直接影响着服务器的可用性,利用双网卡(NIC)绑定技术,可以实现服务器网卡的失效保护和负载均衡,有助于提高网络性能,从而保证服务器的高可用性(见图1). 服务器的网络连通状况直接影 ...

  4. Linux双硬盘引导,Linux系统下双硬盘多系统引导深入探究

    Linux和Windows多系统共存时,引导过程相对来说比较复杂.而且容易引起一些错误概念.比如经常看到有的网友这样问:"我要引导XXX Linux,应该用Lilo,Grub,还是NT OS ...

  5. linux 双网卡 debian,Linux服务器双网卡双IP和单网卡双IP配置方法(Debian/Ubuntu)

    一.双网卡双IP. eth0为电信,eth1为联通. # cd /etc/network/ #vi interfaces # This file describes the network inter ...

  6. linux双ip备份,LINUX系统的双网卡双IP(双链路)实现方式

    第一种方法 Vi /etc/rt.sh #!/bin/bash IF1=eth0 IP1=电信IP P1_NET=电信网段/掩码 IP1_GW=电信网关 IF2=eth1 IP2=网通IP P2_NE ...

  7. gtx1060+linux+双显卡,Manjaro Linux 安装1060显卡驱动

    manjaro 自带的驱动工具效果不理想,视频播放"tearing"严重. 像这样: 我们来装一下NVIDIA官方驱动. 下面是官网的提示. Installation instru ...

  8. win10+linux双系统给linux系统分区内存扩容

    如果win10和linux被安装在同一块固态硬盘或者同一块机械硬盘上 可以在win10系统上先用diskgenius压缩一块空闲的内存出来,再用diskgenius给把这块空闲的内存分配给linux分 ...

  9. linux删除win分区工具,Win 10 和 Linux 双系统,从硬盘删除Linux分区,Win 10引导修复...

    由于安装双系统后,Linux 用的比较少.因此,从Win 10 磁盘管理中删除了linux 占用的磁盘空间,重启后无法进入win 10 ,出现如下情况: 有人提出,此时需要重装系统,并不用如此麻烦,通 ...

最新文章

  1. python打包成exe闪退_脚本程序打包后,黑框一闪而过,程序不能运行
  2. ASP.NET与JavaScript联合操作之一 选择DataGrid中的CheckBox控件后该行背景变色
  3. Cool!15个创意的 CSS3 文本效果【下篇】
  4. 杭电2013-蟠桃记(C++)
  5. crtsiii型无砟轨道板_无砟轨道裂缝破损怎么修补
  6. 第8章 面向对象高级编程与网络编程
  7. 关于form提交后展示遮罩及显示进度条gif问题
  8. w10 计算机配置管理模板,Win10系统这些设置能提高电脑的使用效率
  9. fedora 14 root登陆修改方法
  10. WPS怎么设置显示文章目录
  11. Ubuntu下搜狗拼音突然无法输入中文的解决办法
  12. 监控云—反盗版软件之利器!
  13. nagios NSCA 被动检测
  14. 108.【RabbitsMQ】
  15. jkd环境安装脚本(jdk-8u201-linux-x64.tar.gz)
  16. Java 获取疫情数据
  17. SG3525matlab,基于SG3525芯片的大功率恒压/恒流LED电源研制 - 全文
  18. java中+=是什么意思
  19. Ubuntu上用快捷键部分区域截图
  20. ubuntu下将视频转换成gif

热门文章

  1. [PaaS] 深入 Cloud Foundry(一)构架 (转载)
  2. Response内置对象
  3. 使用Flutter之后,我们的CPU占用率降了50%
  4. 编程之美——2.7 求最大公约数
  5. 事务,Oracle,MySQL及Spring事务隔离级别
  6. 机器学习领域中的六大误区
  7. sublime Package Control 设备
  8. 多层PCB的叠层板材
  9. 论文阅读:Joint Discriminative and Generative Learning for Person Re-identification
  10. (转载)四种常见的 POST 提交数据方式