OnWorks Linux 和 Windows 在线工作站

商标

工作站免费在线托管

<上一页 | 内容 | 下一页>

差异

COMM 程序 差异 用于检测文件之间的差异。 然而, 差异 是一个更复杂的工具,支持多种输出格式,并且能够同时处理大量文本文件。 差异 软件开发人员经常使用它来检查程序源代码不同版本之间的变化,因此具有递归检查源代码目录的能力,通常称为 源树. 一种常见用途 差异 是创造 差异文件 or 补丁 被程序使用,例如 补丁 (我们将很快讨论)将一个文件(或多个文件)的一个版本转换为另一个版本。

如果我们使用 差异 查看我们之前的示例文件:


[我@linuxbox ~]$ 差异文件1.txt 文件2.txt

1d0

< 4a4

> 和

[我@linuxbox ~]$ 差异文件1.txt 文件2.txt

1d0

< 4a4

> 和


我们看到它的默认输出样式:两个文件之间差异的简洁描述。 在默认格式中,每组更改前面都有一个 更改命令 的形式 范围操作范围 描述将第一个文件转换为第二个文件所需的更改位置和类型:


表 20-4:diff 更改命令


更改说明

更改说明

r1ar2 在位置追加行 r2 在第二个文件中的位置

r1 在第一个文件中。


图片

r1cr2 更改(替换)位置处的行 r1 与该位置的线条 r2 在第二个文件中。


图片

r1dr2 删除第一个文件中位置的行 r1,这将出现在范围 r2 在第二个文件中


图片


在这种格式中,范围是起始行和结束行的逗号分隔列表。 虽然这种格式是默认的(主要是为了符合 POSIX 和向后兼容传统的 Unix 版本的 差异),它不像其他可选格式那样被广泛使用。 两种比较流行的格式是 上下文格式 统一格式.

当使用上下文格式查看时( -c 选项),我们将看到:


[我@linuxbox ~]$ diff -c 文件1.txt 文件2.txt

*** 文件1.txt 2008-12-23 06:40:13.000000000 -0500

--- 文件2.txt 2008-12-23 06:40:34.000000000 -0500

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

*** 1,4 ***

- A B C D

-1,4 ----

bcd

+和

[我@linuxbox ~]$ diff -c 文件1.txt 文件2.txt

*** 文件1.txt 2008-12-23 06:40:13.000000000 -0500

--- 文件2.txt 2008-12-23 06:40:34.000000000 -0500

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

*** 1,4 ***

- A B C D

-1,4 ----

bcd

+和


输出以两个文件的名称及其时间戳开头。 第一个文件用星号标记,第二个文件用破折号标记。 在列表的其余部分,这些标记将表示它们各自的文件。 接下来,我们会看到更改组,包括周围上下文行的默认数量。 在第一组中,我们看到:

1,4年***

它表示第一个文件中的第 1 行到第 4 行。 后来我们看到:

--- 1,4 ---

这表示第二个文件中的第 1 行到第 4 行。 在更改组中,行以四个指标之一开始:


表 20-5:diff 上下文格式更改指示符


指示灯含义

指示灯含义

空白 为上下文显示的行。 它并不表示两个文件之间的差异。


图片

- 删除了一行。 此行将出现在第一个文件中,但不会出现在第二个文件中。


图片


图片

+ 添加了一行。 此行将出现在第二个文件中,但不会出现在第一个文件中。


图片

! 换了一条线。 将显示该行的两个版本,每个版本都在更改组的相应部分中。


图片


统一格式类似于上下文格式,但更简洁。 它指定为 -u 选项​​:


[我@linuxbox ~]$ diff -u 文件1.txt 文件2.txt

--- 文件1.txt 2008-12-23 06:40:13.000000000 -0500

+++ file2.txt 2008-12-23 06:40:34.000000000 -0500

@@ -1,4 + 1,4 @@

-A B C D

+e

[我@linuxbox ~]$ diff -u 文件1.txt 文件2.txt

--- 文件1.txt 2008-12-23 06:40:13.000000000 -0500

+++ file2.txt 2008-12-23 06:40:34.000000000 -0500

@@ -1,4 + 1,4 @@

-A B C D

+e


上下文和统一格式之间最显着的区别是消除了上下文的重复行,使得统一格式的结果比上下文格式的结果更短。 在我们上面的例子中,我们看到文件时间戳类似于上下文格式的时间戳,后跟字符串 @@ -1,4 + 1,4 @@. 这表示更改组中描述的第一个文件中的行和第二个文件中的行。 接下来是行本身,默认为三行上下文。 每行以三个可能的字符之一开始:


表 20-6:diff 统一格式更改指示符


字符含义

字符含义

空白 此行由两个文件共享。


图片

- 此行已从第一个文件中删除。


图片

+ 此行已添加到第一个文件中。


图片


OnWorks 的顶级操作系统云计算: