每天一个Linux命令(31)diff命令
diff命令在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。
(1)用法:
用法: diff [选项参数] [文件1或目录1] [文件2或目录2]
(2)功能:
功能: diff命令能比较单个文件或者目录内容。如果指定比较的是文件,则只有当输入为文本文件时才有效。以逐行的方式,比较文本文件的异同处。如果指定比较的是目录的的时候,diff 命令会比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。
(3)选项参数:
1) -y --side-by-side 以并列的方式显示文件的异同之处。
2) -W --width 在使用-y参数时,指定栏宽。
3) -c 显示全部内文,并标出不同之处。
4) -u -U --unified 以合并的方式来显示文件内容的不同。
5) -r --recursive 比较子目录中的文件
6) -n --rcs 将比较结果以RCS的格式来显示。
(4)实例:
1)[root@localhost Document]# diff t1.txt t2.txt 比较两个文档的区别
[root@localhost Document]# cat >t1.txt <<EOF //第一种新建文档的方式
> this is a text!
>
> Name is t1.txt!
> The extra content!
> I am MenAngel!
> EOF
[root@localhost Document]# cat >t2.txt //第二种新建文档的方式
this is a text! Name is t2.txt!
^Z
[]+ 已停止 cat > t2.txt //按ctrl+z键停止
[root@localhost Document]# diff ../Document/t1.txt ../Document/t2.txt diff后的两个文件参数可以跟相对路径也可以跟绝对路径
,5c3
< Name is t1.txt!
< The extra content!
< I am MenAngel!
---
> Name is t2.txt!
[root@localhost Document]# diff t1.txt t2.txt
,5c3
< Name is t1.txt!
< The extra content!
< I am MenAngel!
---
> Name is t2.txt!
第一个3表示两个文档第3行不同,第二个5c3表示第一个文档有5行,而第2个文档有三行。
2)[root@localhost Document]# diff -y t1.txt t2.txt 以并排显示比较两个文档的区别
[root@localhost Document]# diff -y t1.txt t2.txt
this is a text! this is a text! Name is t1.txt! | Name is t2.txt!
The extra content! <
I am MenAngel! <
3)[root@localhost Document]# diff -y -W 40 t1.txt t2.txt 在(2)的基础上自定义显示的宽度
[root@localhost Document]# diff -y -W t1.txt t2.txt
this is a text! this is a text! Name is t1.txt! | Name is t2.txt!
The extra conten <
I am MenAngel! <
4)[root@localhost Document]# diff -y -W 40 t1.txt t2.txt 或者 t2.txt t1.txt 文档顺序对结果的影响
[root@localhost Document]# diff -y -W t1.txt t2.txt
this is a text! this is a text! Name is t1.txt! | Name is t2.txt!
The extra conten <
I am MenAngel! <
[root@localhost Document]# diff -y -W t2.txt t1.txt
this is a text! this is a text! Name is t2.txt! | Name is t1.txt!
> The extra conten
> I am MenAngel!
说明:
“|”表示前后2个文件内容有不同
“<”表示后面文件比前面文件少了1行内容
“>”表示后面文件比前面文件多了1行内容
5)[root@localhost Document]# diff -c t1.txt t2.txt 将进行比较的两个文档的内容全部显示出来标明行数,标出不同点
[root@localhost Document]# diff -c t1.txt t2.txt
*** t1.txt -- ::25.949100752 -
--- t2.txt -- ::54.287100555 -
***************
*** , **** //从1到5行
this is a text! ! Name is t1.txt! //第3.4.5行不同
! The extra content! //由于t2.txt没有第4和第5行,所以第4和第5行表明是比t2.txt多的
! I am MenAngel!
--- , ---- //从1到3行
this is a text! ! Name is t2.txt! //第三行不同
说明:
这种方式在开头两行作了比较文件的说明,这里有三中特殊字符:
(“+” 比较的文件的后者比前着多一行
“-” 比较的文件的后者比前着少一行) //-u参数用的
“!” 比较的文件两者有差别的行
6)[root@localhost Document]# diff -u t1.txt t2.txt 以合并的方式显示文本的不同
[root@localhost Document]# diff -u t1.txt t2.txt //它的第一部分,也是文件的基本信息
--- t1.txt -- ::25.949100752 -0700 //-号表示第一个文件
+++ t2.txt -- ::54.287100555 -0700 //+号表示第二个文件
@@ -, +, @@
this is a text! -Name is t1.txt!
-The extra content!
-I am MenAngel!
+Name is t2.txt! //每个减号对应一个加号,如果没有对应则表明在另一个文件中没有此行
7)[root@localhost Document]# diff dir1 dir2 比较两个目录
[root@localhost Document]# mkdir dir1 dir2 //创建两个目录
[root@localhost Document]# cd dir1
[root@localhost dir1]# cat >text1 <<EOF //在dir1中创建text1,text2在dir2中创建text1,text3
> dir: dir1
> name: text1
>
> Total !
> EOF
[root@localhost dir1]# cat >text2 <<EOF
> I am MenAngel!
> I am studying the order of Linux!
> EOF
[root@localhost dir1]# cd ../dir2
[root@localhost dir2]# cat >text1 <<EOF
> dir: dir2
> name: text1
>
>
> Total !
> EOF
[root@localhost dir2]# cat >text3 <<EOF
> Working hard makes success!
> I am MenAngel!
> EOF
[root@localhost dir2]# cd ../
[root@localhost Document]# diff dir1 dir2
只在 dir2 存在:text3
diff dir1/text1 dir2/text1 //遇到同名文件自动比较
1c1
< dir: dir1
---
> dir: dir2
4c4,
< Total !
---
>
> Total !
只在 dir1 存在:text2
8)[root@localhost Document]# diff dir1 dir2 >dir.log 产生补丁,其实就是把原本要输出到标准输出的内容输出到自定义文件中
[root@localhost Document]# diff dir1 dir2 >dir.log
[root@localhost Document]# cat dir.log
只在 dir2 存在:text
diff dir1/text1 dir2/text1
1c1
< dir: dir1
---
> dir: dir2
4c4,
< Total !
---
>
> Total !
只在 dir1 存在:text2
9)[root@localhost Document]# diff t1.txt t2.txt>t12.log 产生补丁,并用此补丁更新文件
[root@localhost Document]# cat t1.txt t2.txt
this is a text! Name is t1.txt!
The extra content!
I am MenAngel! //到这是t1.txt的内容
this is a text! Name is t2.txt! //到这是t2.txt的内容
[root@localhost Document]# diff t1.txt t2.txt>t12.log //产生补丁
[root@localhost Document]# patch t1.txt t12.log //给t1.txt打补丁,让它的内容变为t2.txt的内容
patching file t1.txt
[root@localhost Document]# cat t1.txt
this is a text! Name is t2.txt!
[root@localhost Document]# patch t2.txt t12.log //给t2.txt打补丁,不过好像有点差别
patching file t2.txt
Reversed (or previously applied) patch detected! Assume -R? [n] y //还不知道是为什么?
[root@localhost Document]# cat t2.txt
this is a text! Name is t1.txt!
The extra content!
I am MenAngel!
(5)其他:
扩展知识:
diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。diff程序的输出被称为补丁 (patch),因为Linux系统中还有一个patch程序,可以根据diff的输出将a.c的文件内容更新为b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。
每天一个Linux命令(31)diff命令的更多相关文章
- 每天一个linux命令(49)--diff命令
diff 命令是 Linux 上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff 在命令行中打印每一个行的改动.最新版本的diff还支持二进制文件,diff ...
- linux常用命令:diff 命令
diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff在命令行中打印每一个行的改动.最新版本的diff还支持二进制文件.diff程序的 ...
- Linux 文本对比 diff 命令详解(整理)
diff 命令详解 1.概述 windows系统下面就有不错的文本对比工具可以使用,例如常用的Beyond Compare,WinMerge都是图形界面的比较工具而且使用非常方便,如果你仅仅是在win ...
- 【Linux常见命令】diff命令
diff - compare files line by line diff命令用于比较文件的差异. diff以逐行的方式,比较文本文件的异同处. 如果指定要比较目录,则diff会比较目录中相同文件名 ...
- 每天一个linux命令31)--chown命令
chown将 指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID,组可以使组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷 ...
- linux中的diff命令
今天在公司的代码中看到了一个用的不是很多的命令diff,一开始以为不是,后来一查发现还真有这个命令,有关它的详细资料在这个网址中查看[http://blog.chinaunix.net/uid-253 ...
- linux每日命令(33):diff命令
diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff在命令行中打印每一个行的改动.最新版本的diff还支持二进制文件.diff程序的 ...
- Linux学习历程——Centos 7 diff命令
一.命令介绍 diff命令用于比较文本差异. diff以逐行的方式,比较文本文件的异同处.如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录. ------------- ...
- Linux命令之---diff
命令介绍 diff命令可以酌行比较纯文本文件内的内容,并输出文件的差异. 命令格式 diff [option] [file1] [file2] 举例子 1)比较俩文本文件 [root@king ~]# ...
随机推荐
- spring集成PHPRPC及使用
PHPRPC,它的商业版本是Hprose.这里仅记录其使用方法.其它相关内容可自行搜索. 对于开源的东西,建议大家看看其源码. 1.需要引入的jar包:phprpc_spring.jar,http:/ ...
- Linux终端:speedtest_cli检测你的实时带宽速度
你在家(或者办公室)的上传和下载速度如何?你能保证,你支付费用给ISP的同时得到了等价的回报? 要想测试我们因特网连接的速度,当下存在着一些因特网服务,比如说SpeedTest,这是一种可以通过Web ...
- 程序员不修复BUG怎么办
在测试过程中,难免遇到开发人员因为一些原因不想修改个别bug的情况.遇到这种问题时,该如何去推进开发修改bug呢? 一.现状分析 1.开发人员为啥不愿意修复BUG? (1)开发与测试对bug的定义理解 ...
- Java Learning Path(三)过程篇
Java Learning Path(三)过程篇 每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法.因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基 ...
- mysql 随机取数据
SELECT * FROM table WHERE id >= (SELECT FLOOR(RAND()*MAX(id)) FROM table ) ORDER BY idLIMIT 1; 这样 ...
- MyReport报表引擎2.7.8.8公布
支持嵌套子报表直接编辑保存,多个子报表同一时候存储在一个报表格式文件中,设计更简便,避免了嵌套报表的多个报表格式载入. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5 ...
- [码海拾贝 之Perl]在字符串数组中查找特定的字符串是否存在
前言 检索一个字符串是否存在于一个数组中, 最主要的想法应该就是对数组进行循环, 逐个推断数组的每一个元素值和给定的值是否相等. (在Java语言还能够把数组转成 List , 在 list 中直接有 ...
- scala 遇到过的问题
1:在我安装完scala的插件后,在打开方法的实现类(open implementactions)的时候,抛出这个异常,后来发现这个异常是因为我的scala的插件跟我eclipse版本不兼容导致的. ...
- MBA人物俞洪敏:亿万富翁的生活表
我的智商非常一般,就是比别人勤奋.我的脑袋不属于特别笨的那种,但肯定也不是顶尖聪明的类型.在北大的50个同学当中,我的智商应该属于中下水平,这说明我不是顶尖高智商. 我的勤奋一般人跟不上.我平均每天工 ...
- centos关机与重启命令详解
Linux centos关机与重启命令详解与实战 Linux centos重启命令: 1.reboot 普通重启 2.shutdown -r now 立刻重启(root用户使用) 3.shutdo ...