当前位置: 首页 > Linux

linux的diff命令

时间:2023-04-06 19:23:34 Linux

diff命令是linux上一个非常重要的比较文件内容的工具,特别是比较两个不同版本的文件,找出变化。diff打印命令行上每一行的更改。diff的最新版本也支持二进制文件。diff程序的输出称为patch(补丁),因为Linux系统中也有patch程序,可以根据diff的输出将a.c的文件内容更新为b.c。diff是svn、cvs、git等版本控制工具不可或缺的组成部分命令格式diff[参数][文件1或目录1][文件2或目录2]命令功能diff命令可以比较单个文件的内容文件或目录。如果您指定要比较文件,则仅当输入是文本文件时才有效。逐行比较文本文件的异同。如果指定比较目录,diff命令会比较两个目录中同名的文本文件。列出不同的二进制文件、公共子目录和仅出现在一个目录中的文件。命令参数-<行数>指定要显示的文本行数。该参数必须与-c或-u参数一起使用。-a或--text diff默认只会逐行比较文本文件。-b或--ignore-space-change 不检查空格字符的差异。-B或--ignore-blank-lines 不要检查空行。-c 显示全文,标出不同之处。-C或--context 等同于执行“-c-”命令。-d或--minimal 使用不同的算法以更小的单位进行比较。-Dorifdef 该参数的输出格式可用于预处理器宏。-e或--ed 该参数的输出格式可以在ed的脚本文件中使用。-f或-forward-ed 输出格式与ed的脚本文件类似,只是按照原文件的顺序显示不同。-H或--speed-large-files 比较大文件时加速。-lor--ignore-matching-lines 如果两个文件在某些??行不同,并且这些行也包含选项中指定的字符或字符串,则两个文件不会显示差异。-i或--ignore-case 不检查大小写差异。-l或--paginate 将结果交给pr程序进行分页。-n或--rcs 将以RCS格式显示比较结果。-N或--new-file 比较目录时,如果文件A只出现在某个目录下,默认会显示:Onlyindirectory:fileA如果使用-N参数,diff将包含文件A进行比较与一个空白文件。-p 如果要比较的文件是C语言的程序代码文件,则显示不同处的函数名。-Por--unidirectional-new-file 类似于-N,但只有当第二个目录包含第一个目录没有的文件时,才会将此文件与空白文件进行比较。-qor--brief 只显示是否有区别,不显示详细信息。-r或--recursive 比较子目录中的文件。-sor--report-identical-files 如果没有发现差异,还是会显示信息。-Sor--starting-file 比较目录时,从指定的文件开始比较。-t或--expand-tabs 在输出期间扩展制表符。-T或--initial-tab 在每行前添加制表符以对齐。-u,-Uor--unified= 以合并的方式显示文件内容的差异。-vor--version 显示版本信息。-w或--ignore-all-space 忽略所有空格字符。-W或--width 使用-y参数时,指定列宽。-xor--exclude 不比较选项中指定的文件或目录。-X或--exclude-from 可以将文件或目录类型保存为文本文件,然后在=中指定这个文本文件。-yor--side-by-side 并排显示文件的异同。--help 显示帮助。--left-column 使用-y参数时,如果两个文件的某一行内容相同,则左栏只显示该行的内容。--suppress-common-lines 使用-y参数时,只显示差异。diff正常的显示格式有三个提示:a-addc-changed-delete比较两个文件>cat-n1.txt1entrypoint21233rumenz>cat-n2.txt1entrypoint2456312345入门>diff1.txt2.txt1a2>4563c4,5>入门1a2就是在1.txt的第1行和2.txt文件的第2行一样的地方加上456。3c4,5表示把1.txt的第3行改成2.txt的第4、5行后两个文件相等。并列格式输出>diff1.txt2.txt-y-W50入口小站入口入口站>456123123rumenz|>进入|表示前后两个文件内容不同<表示后一个文件比前一个文件少1行>表示后一个文件比前一个文件多1行内容。上下文输出格式>diff1.txt2.txt-c***1.txt2021-02-2822:19:02.872483347+0800---2.txt2021-02-2822:19:29.834776319+0800******************1,3****入口点123!rumenz---1,5----入门站+456123!!GettingStarted+比较文件的后者比前者多一行-比较文件的后者比前者少一行!比较后的文件行不同,统一格式输出>diff1.txt2.txt-u---1.txt2021-02-2822:19:02.872483347+0800+++2.txt2021-02-2822:19:29.834776319+0800@@-1,3+1,5@@入门站+456123-rumenz++入门第1部分---1.txt2021-02-2822:19:02.872483347+0800+++2.txt2021-02-2822:19:29.834776319+0800"---"表示修改前的文件,"+++"表示修改后的文件。第二部分变化的位置使用两个@作为开始和结束@@-1,3+1,5@@前面的-1,3分为三部分:减号表示第一个文件(即1.txt),“1”表示第一行,“3”表示连续3行。综合起来,就是说下面是从第一个文件的第1行开始的连续3行。同样,“+1,5”表示改完后,从第二个文件的第1行开始,变成连续5行。比较两个文件的差异并生成patch>diff-ruN1.txt2.txt>patch.log>catpatch.log---1.txt2021-02-2822:19:02.872483347+0800+++2。txt2021-02-2822:19:29.834776319+0800@@-1,3+1,5@@入门小站+456123-rumenz++入门打补丁,把两个文件打成一样>patch1.txtpatch.logpatchingfile1.txt>cat1.txt入口站456123入口>cat2.txt入口站456123入口比较目录差异>treesrc/src/├──test1│└──one├──test2└──test34directories,0files>treedst/dst/├──test1├──test2│└──one└──test34目录,0files>diff-rsrc/dst/Onlyinsrc/test1:oneOnlyindst/test2:一个原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门站