显示文件之间的差别
diff [-abBcdeEilNqstTuwy] [-C num] [-I regexp] [-U num] [-W num] [gnu-opts] file1 file2
diff [-abBcdeEilNqrstTuwy] [-C num] [-I regexp] [-S file] [-U num] [-W num] [-x pattern] [-X file] [gnu-opts] dir1 dir2
diff [-abBcdeEilNqrstTuwy] [-C num] [-I regexp] [-S file] [-U num] [-W num] [-x pattern] [-X file] [gnu-opts] files dir
diff [-abBcdeEilNqrstTuwy] [-C num] [-I regexp] [-S file] [-U num] [-W num] [-x pattern] [-X file] [gnu-opts] dir files
diff [--help] [-v|--version]
diff命令主要用于逐行比较两个指定的文件,显示文件之间的差异。也可以逐对比较两个目录中的相应文件。如果两个文件相同,diff命令通常不会输出任何信息;如果两个文件不同,diff命令将会以不同的方式(取决于命令行选项)显示两个文件的不同点。
在上述第一种语法格式中,file1与file2是欲比较的两个文件。如果其中的一个文件指定为“-”,表示从标准输入读取数据,与另一个文件进行比较。
在第二种语法格式中,dir1与dir2是两个目录,表示对两个目录中的同名文件逐对进行比较。
在第三种和第四种语法格式中,files是一个或一组文件,dir是一个目录,表示以指定的文件为准,与目录中的同名文件逐对进行比较。
-a, --text 把所有文件当作文本文件处理,逐行比较。
-b, --ignore-space-change 比较时忽略因空格数量的多少而引起的差别。
-B, --ignore-blank-lines 比较时忽略因空行而引起的差别。
-c, -C num, --context[=num] 首先输出两个文件的名字与修改时间等信息,其次输出第一个和第二个文件以起始行和终止行表示的数据行范围,最后输出不同的数据行及前后相邻的num行数据。num的默认值为3。
-d, --minimal 尽可能找出文件之间的微小差异。这个选项会影响diff命令的运行速度。
-e, --ed 针对两个文件的差别,输出一个ed脚本文件,利用其中提供的ed编辑命令,能够确保两个文件一致。
-E, --ignore-tab-expansion 比较时忽略因制表符展开而引起的差异。
-i, --ignore-case 比较时忽略大小写字母的差异。
-I regexp, --ignore-matching-lines=regexp 比较时忽略两个文件中均匹配指定模式的数据行。
-l, --paginate 把比较结果传递给pr命令,形成一个标记时间、命令行和页码标题的输出形式,写到标准输出。
-N, --new-file 把不存在的文件作为空文件处理。
-q, --brief 仅当文件不同时才输出文字说明信息(文件相同时不显示任何信息)。可用于比较二进制数据文件。
-r, --recursive 按目录方式逐队比较文件时,递归地处理两个目录中的任何子目录。
-s, --report-identical-files 如果两个文件相同,输出文字说明信息。如果两个文件不同,按常规处理,显示存在差异的数据行。
-S file, --starting-file=file 比较目录时,从指定的文件开始逐一比较。可用于恢复中断的比较。
-t, --expand-tabs 展开制表符,输出适当数量的空格。
-T, --initial-tab 在输出的数据行之前插入一个制表符。
-u, -U num, --unified[=num] 同“-c”选项,只是以起始行与输出行数替代数据行范围。
-w, --ignore-all-space 比较时忽略所有的空格字符。
-W num, --width=num 指定数据显示的最大行宽,默认的行宽为130列。
-x pattern, --exclude=pattern 按目录方式比较时,忽略基本文件名部分(不含目录)匹配指定模式的文件或子目录。
-X file, --exclude-from=file 按目录方式比较时,忽略基本文件名部分(不含目录)匹配指定文件中包含的任何模式的文件或子目录。
-y, --side-by-side 采用两列的形式显示文件之间的差异。
--from-file=file1 使用指定的文件作为第一个文件参数,与其他文件进行比较。注意,指定的文件可以是一个目录。
--to-file=file2 使用指定的文件作为第二个文件参数,与其他文件进行比较。注意,指定的文件可以是一个目录。
--ignore-file-name-case 比较文件名时,忽略大小写字母的差异。
--left-column 指定“-y”选项两列显示时,再指定此选项表示仅在左边第一列输出相同的数据行,第二列省略。
--speed-large-files 假定文件存在大量零散的微小差异,采用探索法加速处理这样的大型文件。
--strip-trailing-cr 删除输入数据行尾的回车字符。
--suppress-common-lines 禁止输出两个文件相同的数据行(默认的做法)。
--unidirectional-new-file 把不存在的第一个文件作为空文件处理。
1. 比较两个文件,输出结果“3c3”表示两个文件的第3行数据不同,原因是其中的数据发生了变动(“c”)。
$ diff test1 test2 3c3 < which are all alike. --- > which are all different. $
2. 采用两列的形式显示两个文件之间的差异。
$ diff -W 80 -y test1 test2 You are in a maze of You are in a maze of twisty little passages twisty little passages which are all alike. | which are all different. $
索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z