【Nikki积累-shell】diff命令的使用方法

     diff是shell下用来比较两个文件或者文件夹异同的,在进行两个版本的文件的比较时能发挥不小的作用。在之前的使用过程中,多半都是不加参数直接diff的,但是今天在写脚本进行测试的时候,需要用diff的多一点的功能,所以了解了下diff的相关参数和调用方法,下次用diff的时候可以来看看。

一、diff的使用及参数

功能说明:比较文件的差异。
语  法:diff [-abBcdefHilnNpPqrstTuvwy][-][-C ][-D ][-I ][-S ][-W ][-x ][-X ][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
补充说明:diff以逐行的方式,比较文本文件的异同处。所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录列出不同的二进制文件、公共子目录和只在一个目录出现的文件。

spacer.gif

参  数:
 - 指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
 -a或--text  diff预设只会逐行比较文本文件。
 -b或--ignore-space-change  不检查空格字符的不同。
 -B或--ignore-blank-lines  不检查空白行。
 -c  显示全部内文,并标出不同之处。
 -C或--context  与执行"-c-"指令相同。
 -d或--minimal  使用不同的演算法,以较小的单位来做比较。
 -D或ifdef  此参数的输出格式可用于前置处理器巨集。
 -e或--ed  此参数的输出格式可用于ed的script文件。
 -f或-forward-ed  输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
 -H或--speed-large-files  比较大文件时,可加快速度。
 -l或--ignore-matching-lines  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
 -i或--ignore-case  不检查大小写的不同。
 -l或--paginate  将结果交由pr程序来分页。
 -n或--rcs  将比较结果以RCS的格式来显示。
 -N或--new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:
Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
 -p  若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
 -P或--unidirectional-new-file  与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
 -q或--brief  仅显示有无差异,不显示详细的信息。
 -r或--recursive  比较子目录中的文件。
 -s或--report-identical-files  若没有发现任何差异,仍然显示信息。
 -S或--starting-file  在比较目录时,从指定的文件开始比较。
 -t或--expand-tabs  在输出时,将tab字符展开。
 -T或--initial-tab  在每行前面加上tab字符以便对齐。
 -u,-U或--unified=  以合并的方式来显示文件内容的不同。
 -v或--version  显示版本信息。
 -w或--ignore-all-space  忽略全部的空格字符。
 -W或--width  在使用-y参数时,指定栏宽。
-x或--exclude  不比较选项中所指定的文件或目录。
 -X或--exclude-from  您可以将文件或目录类型存成文本文件,然后在=中指定此文本文件。
 -y或--side-by-side  以并列的方式显示文件的异同之处。
 --help  显示帮助。

 --left-column  在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。

  --suppress-common-lines  在使用-y参数时,仅显示不同之处。


二、diff命令的返回

   退出值 0 表示没有不同,1 表示找到不同处,2 表示出错。

在Linux状态中,每当命令执行完成后,系统都会返回一个退出状态。该退出状态用一个整数值表示,用于判断命令运行的正确与否。若退出状态为0,表示命令运行成功;而退出状态值不为0时,则表示命令运行失败。最后一次执行命令的退出状态值被保存在内置变量“$?”中,所以,可以通过echo语句测试命令是否运行成功。POSIX规定了几种退出状态和退出状态的含义。

退出状态及其含义

状态值含义

0表示运行成功,程序执行未遇到任何问题

1-125表示运行失败,脚本命令、系统命令错误或参数传递错误

126找到了命令但无法执行

127未找到要运行的命令

>128命令被系统强行结束

注意,虽然有些命令“失败”的退出状态在1-125之间有可能是因为Linux的版本不同而有差异,但其他退出状态都有其特定的含义





你可能感兴趣的:(shell,使用方法,diff)