diff 命令
- diff 命令是用来比较两个文件或目录的不同,并且是以行为单位来比对的。一般是用在 ASCII 纯文本文件的比对上。由于是以行为比对的单位,因此 diff 通常是用在同一文件(或软件)的新旧版本差异上对比上,能够借由 diff 创建的分析档,以处理补丁(patch)功能的文件。
diff [options] target1 target2
diff file1 file2
diff direcory1 directory2
diff 在比较文件过程中结果读取方式
[num1 , num2][a|c|d][num3,num4]
num1,num2 表示在第一个文件中的行数
a 表示添加 ----add
c 表示更改 ----change
d 表示删除 ----delete
< 表示第一个文件中的内容 > 表示第二个文件中的内容
— 分割线
num3,num4 表示在第二个文件中的行数
例如:2,4c2,4 表示改变第一个文件中的第二行和第四行才能匹配第二个文件中
的第二行和第四行
举例:
意思是:删除第一个文件的2,3行才能匹配第二个文件的第一行,增加第一个文件的第四行才能匹配第2个文件的3,4行
diff 在比较目录过程中结果的读取
Only in directroy/: filename
directory 表示在那个目录中
filename 表示在这个目录
diff 中常用的参数
- 通过
man diff
可以查看具体的参数及说明。
-b 或 --ignore-space-change | 不检查空格字符的不同 |
---|---|
-B 或 --ignore-blank-lines | 不检查空白行 |
-c | 显示全部内文,并标出不同之处 |
-i 或 --ignore-case | 不检查大小写的不同 |
-P | 若比较的文件为 C 语言的程序码文件时,显示差异所在的函数名称 |
-q 或 --brief | 仅显示有无差异,不显示详细的信息 |
-r 或 --recursive | 比较子目录中的文件 |
-u | 以合并的方式来显示文件内容的不同 |
举例: -b 不检查空格
-B 忽略空行
-c 显示全部内容,并标出不同之处
-i 忽略大小写
-P 若比较的文件为 C 语言的程序码文件时,显示差异所在的函数名称。
-q:仅显示有无差异,不显示详细的信息
-r 比较子目录中的文件
-u 以合并的方式来显示文件内容的不同
patch
- Linux patch命令用于修补文件,用于文件不同文件打布丁。这个指令常与 diff 配合使用,diff 可以用来分辨两个版本之间的差异。我们将旧的文件升级成为新的文件时,应该要怎么做?就是“先比较先旧版本的差异,并将差异档制作成为补丁文件,再由补丁文件更新旧文件”即可。也就是我们俗称的打补丁。
patch指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。
-b或–backup 备份每一个原始文件。在修补文件时,重命名或复制原始文件,而不是删除它
-p :后面可以接“取消几层目录”的意思。
-R :代表还原,将新的文件还原成原来旧的版本
patch [options] file.old file.path
yum install patch -y ##安装打补丁的软件
diff -u test1 test2 > test.patch ##生成补丁文件 test.patch
patch -b test1 test.patch ##修补文件test1
举例:
首先生成补丁文件:
对test1进行修补,-b保存源文件,可以看到生成了.org文件。test1的内容发生改变。