diff 指令:比较文本文件的差异
语法:diff [-abBcdefHilnPqrsTuvwy][-<行数>][-C<行数>][-D<巨集名称>][-I<字符或字符串>][-s<文件>][-W <宽度>][-x<文件或目录>][-X<文件>][--help][--left-column][--suppress-common-line][文件或目录 1][文件或目录 2]
功能介绍:该指令主要用于对文本文件之间进行差异比较,并列出不同之处
参数说明:
参数 | 功能 |
---|---|
-<行数> |
指定要显示多少行的文本,该参数必须与参数 -c 或 -u 一起使用 |
-a | 将所有的文件均作为文本文件进行处理 |
-b | 不检查文件中的空格字符的不同 |
-B | 不检查文件中的空白行 |
-c | 显示全部的文件内容,并标示出其不同之处 |
-C<行数> |
与参数 -c、-<行数> 含义相同 |
-d | 使用不同的演算法,以较少的单位进行比较 |
-D<巨集名称> |
此参数的输出格式可以用于前置处理器巨集 |
-e | 此参数的输出格式可以用于 ed 指令的 script 文件 |
-f | 输出的格式类似于 ed 指令的 script 文件,但按照原来文件的顺序显示不同处 |
-H | 对大的文件进行比较时,可以加快其比较速度 |
-I<字符和字符串> |
如果两个文件在某几行有不同,并且这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异 |
-i | 不检查文件数据的大小写不同 |
-n 或 -rcs | 将比较价格以 RCS 的格式进行显示 |
-N | 在比较目录时,如果文件1仅仅出现在某个目录中,则默认显示 “only in 目录名”。若比较文件1时使用了该参数,则 diff 指令将文件1与一个空白文件进行比较 |
-p | 如果比较的文件为 C 语言代码文件,则将显示差异所在的函数名称 |
-P | 与参数 -N 功能相似。但只有当目录2中包含了目录1所没有的文件时,才会将这个文件与空白的文件进行比较 |
-q | 仅仅显示有无差异,并不显示详细的信息 |
-r | 比较子目录中的文件 |
-s | 如果没有发现任何差异,将仍然显示相关的信息 |
-S<文件> |
在比较目录时,将从指定的开始比较 |
-t | 在输出信息时,会将 tab 字符展开 |
-T | 在每行前面都加上 tab 字符进行对齐 |
-u 或 -U<列数> |
以合并的的方式显示文件内容的不同 |
-v | 显示版本信息 |
-w | 忽略全部的空白字符 |
-W<宽度> |
在使用参数 “-y” 时,指定栏宽 |
-x<文件或目录> |
不比较选项中所指定的文件或目录 |
-X<文件> |
可以将文件或目录保存为文本文件 |
-y | 以并列的方式显示文本文件的比较 |
–help | 显示帮助信息 |
-–left-column | 在使用参数 “-y” 时,如果两个文件的某一行内容相同,则只在左侧的栏位中显示该行的内容 |
–suppress-common-line | 在使用参数 “-y” 时,只显示其不同之处 |
注意:
如果用户使用 “-” 表示文件或目录名时,将默认从标准输入设备中读取数据进行比较。
经验技巧:
- diff 指令是以逐行的方式,比较文本文件的异同处。
- 如果该指令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作
示例:将目录 “/usr/li” 下的文件 test.txt 与当前目录下的 test.txt 进行比较,则输入以下命令:
$ diff /usr/li test.txt # 使用 diff 指令对文件进行比较
上面的命令执行以后,会将比较后的不同之处以指定的形式列出。代码如下所示
n1 a n3, n4
n1, n2 d n3
n1, n2 c n3, n4
其中,字母 a, b, c 分别表示添加、删除以及修改操作。而 n1、n2 表示在文件1中的行号,n3、n4 表示在文件2中的行号
注意:
以上说明指定了两个文件中不同处的行号及其相应的操作。在输出形式中,每一行后面将跟随受到影响的若干行。其中,以 “<“ 开始的行属于文件1,以 ”>” 开始的行属于文件2。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/141905.html