diff(difference)命令常用来比较两个文件中的内容。diff 命令在最简单的情况下,比较两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。
diff 命令是以逐行的方式比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。
diff 命令的基本格式有两种,分别如下:
1) 比较文件
[root@bogon ~]# diff [选项] 文件名1 文件名2
2) 比较目录。
[root@bogon ~]# diff [选项] 目录1 目录2
diff 命令常用的选项及功能如表 1 所示。
表 1 diff命令常用的选项及功能
指定要显示多少行的文本。此参数必须与 -c 或 -u 参数一并使用
diff 只会逐行比较文本文件
不检查空格字符的不同
不检查空白行
显示全部内文,并标出不同之处
-c 行数
与执行“-c-行数”指令相同
使用不同的演算法,以较小的单位来做比较
此参数的输出格式可用于前置处理器巨集
此参数的输出格式可用于 ed 的 script 文件
输出的格式类似 ed 的 script 文件,但按照原来文件的顺序来显示不同处
比较大文件时,可加快速度
若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异
不检查大小写的不同
将结果交由 pr 程序来分页
将比较结果以 RCS 的格式来显示
在比较目录时,若文件 A 仅出现在某个目录中,预设会显示:Only in目录:文件 A 若使用 -N 参 数,则 diff 会将文件 A 与一个空白的文件比较
若比较的文件为 C 语言的程序码文件时,显示差异所在的函数名称
与 -N 类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空 白的文件做比较
仅显示有无差异,不显示详细的信息
比较子目录中的文件
若没有发现任何差异,仍然显示信息
从指定的文件开始比较目录
在输出时,将 tab 字符展开
在每行前面加上 tab 字符以便对齐
以合并的方式来显示文件内容的不同
显示版本信息
忽略全部的空格字符
在使用 -y 参数时,指定栏宽
不比较选项中所指定的文件或目录
可以将文件或目录类型存成文本文件,然后在?中指定此文本文件
以并列的方式显示文件的异同之处
--help
--left-column
在使用 -y 参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容
注意,diff 命令能够分析并输出两个文件的不同的行。diff 的输出结果表明需要对一个文件做怎样的操作之后才能与第二个文件相匹配(与第一个文件相比,第二个文件发生了哪些变化),其中包含三种操作分别为:a=add,c=change,d=delete。diff 命令并不会改变文件的内容,但是 diff 可以输出一个 ed 脚本来应用这些改变。
【例 1】比较两个文件的不同。
创建两个样本文件,分别命名为 text 和 text1,并分别输入以下内容:
//test
//test1
在终端页面中输入命令如下:
[root@bogon ~]# diff test test1
9,10d8
输出信息的含义分别为:
“3c3”:表示第一个文件的第 3 行需要修改才能和第二个文件的第3行相匹配;
“---”:表示分隔线;
“>aa”:> 表示第二个文件,第一个文件中需要添加的内容为 aa,该内容存放在第二个文件中;
“>bb”:> 表示第二个文件,第一个文件中需要添加的内容为 bb,该内容存放在第二个文件中;
“9,10d8”:表示删除第一个文件中的第 9 和第 10 行才能和第二个文件中的第 8 行相匹配;
“<77”:表示第一个文件中待删除的内容为 77。
Linux是什么?
Linux系统的构成
Linux图形界面(GUI)
Linux创建和删除目录
Linux ls命令:显示文件
Linux tar命令:文件压缩
Linux su命令:切换用户
Linux ifconfig命令:管理IP地址
Linux帮助命令
Linux关机和重启命令
C语言到底能干什么?我列举了8种经典案例
Java语言的5种实际用途
主流C语言开发环境汇总(15款IDE推荐)
C语言的6个冷知识
Python软件包的3种安装方法
C语言判断素数的3种方法
算法描述的5种方法
6种常用Linux文件系统
Java注释的3种方式(小白必看)
C语言的4套标准:C89、C99、C11和C17