Linux教程之读懂diff仓酷云
讨论什么版本好并无意义,关键是你是不是真心想学.不过,为了避免曲高和寡,最好选用的人多的版本。diff是Unix体系的一个很主要的工具程序。
它用来对照两个文本文件的差别,是代码版本办理的基石之一。你在命令行下,输出:
$diff<变化前的文件><变化后的文件>
diff就会告知你,这两个文件有何差别。它的显现了局不太好懂,上面我就来讲明,怎样读懂diff。
<br>
1、diff的三种格局
因为汗青缘故原由,diff有三种格局:
*一般格局(normaldiff)
*高低文格局(contextdiff)
*兼并格局(unifieddiff)
我们顺次来看。
2、示例文件
为了便于解说,先新建两个示例文件。
第一个文件叫做f1,内容是每行一个a,一共7行。
a
a
a
a
a
a
a
第二个文件叫做f2,修正f1而成,第4行酿成b,其他稳定。
a
a
a
b
a
a
a
3、一般格局的diff
如今对f1和f2举行对照:
$difff1f2
这时候,diff就会显现一般格局的了局:
4c4
<a
---
>b
第一行是一个提醒,用来讲明变化地位。
4c4
它分红三个部分:后面的"4",暗示f1的第4行有变更;两头的"c"暗示变化的形式是内容改动(change),其他形式另有"增添"(a,代表addition)和"删除"(d,代表deletion);前面的"4",暗示变化后酿成f2的第4行。
第二行分红两个部分。
<a
后面的小于号,暗示要从f1傍边往除该行(也就是第4行),前面的"a"暗示该行的内容。
第三行用来支解f1和f2。
---
第四行,相似于第二行。
>b
后面的年夜于号暗示f2增添了该行,前面的"b"暗示该行的内容。
最早的Unix(即AT&T版本的Unix),利用的就是这类格局的diff。
4、高低文格局的diff
上个世纪80年月初,加州年夜学伯克利分校推出BSD版本的Unix时,以为diff的显现了局太复杂,最好到场高低文,便于懂得产生的变化。因而,推出了高低文格局的diff。
它的利用办法是到场c参数(代表context)。
$diff-cf1f2
显现了局以下:
***f12012-08-2916:45:41.000000000+0800
---f22012-08-2916:45:51.000000000+0800
***************
***1,7****
a
a
a
!a
a
a
a
---1,7----
a
a
a
!b
a
a
a
这个了局分红四个部分。
第一部分的两行,显现两个文件的基础情形:文件名和工夫信息。
***f12012-08-2916:45:41.000000000+0800
---f22012-08-2916:45:51.000000000+0800
"***"暗示变化前的文件,"---"暗示变化后的文件。
第二部分是15个星号,将文件的基础情形与变化内容支解开。
***************
第三部分显现变化前的文件,即f1。
***1,7****
a
a
a
!a
a
a
a
这时候不但显现产生变更的第4行,还显现第4行的后面三行和前面三行,因而一共显现7行。以是,后面的"***1,7****"就暗示,从第1行入手下手一连7行。
别的,文件内容的每行最后面,另有一个标志位。假如为空,暗示该行无变更;假如是叹息号(!),暗示该行有修改;假如是减号(-),暗示该行被删除;假如是加号(+),暗示该举动新增。
第四部分显现变化后的文件,即f2。
---1,7----
a
a
a
!b
a
a
a
除变化行(第4行)之外,也是高低文各显现三行,统共显现7行。
5、兼并格局的diff
假如两个文件类似度很高,那末高低文格局的diff,将显现大批反复的内容,很华侈空间。1990年,GNUdiff领先推出了"兼并格局"的diff,将f1和f2的高低文兼并在一同显现。
它的利用办法是到场u参数(代表unified)。
$diff-uf1f2
显现了局以下:
---f12012-08-2916:45:41.000000000+0800
+++f22012-08-2916:45:51.000000000+0800
@@-1,7+1,7@@
a
a
a
-a
+b
a
a
a
它的第一部分,也是文件的基础信息。
---f12012-08-2916:45:41.000000000+0800
+++f22012-08-2916:45:51.000000000+0800
"---"暗示变化前的文件,"+++"暗示变化后的文件。
第二部分,变化的地位用两个@作为首先和停止。
@@-1,7+1,7@@
后面的"-1,7"分红三个部分:减号暗示第一个文件(即f1),"1"暗示第1行,"7"暗示一连7行。合在一同,就暗示上面是第一个文件从第1行入手下手的一连7行。一样的,"+1,7"暗示变化后,成为第二个文件从第1行入手下手的一连7行。
第三部分是变化的详细内容。
a
a
a
-a
+b
a
a
a
除有变化的那些行之外,也是高低文各显现3行。它将两个文件的高低文,兼并显现在一同,以是叫做"兼并格局"。每行最后面的标记位,空暗示无变化,减号暗示第一个文件删除的行,加号暗示第二个文件新增的行。
6、git格局的diff
版本办理体系git,利用的是兼并格局diff的变体。
$gitdiff
显现了局以下:
diff--gita/f1b/f1
index6f8a38c..449b072100644
---a/f1
+++b/f1
@@-1,7+1,7@@
a
a
a
-a
+b
a
a
a
第一行暗示了局为git格局的diff。
diff--gita/f1b/f1
举行对照的是,a版本的f1(即变化前)和b版本的f1(即变化后)。
第二行暗示两个版本的git哈希值(index地区的6f8a38c对象,与事情目次地区的449b072对象举行对照),最初的六位数字是对象的形式(一般文件,644权限)。
index6f8a38c..449b072100644
第三行暗示举行对照的两个文件。
---a/f1
+++b/f1
"---"暗示变化前的版本,"+++"暗示变化后的版本。
前面的行都与官方的兼并格局diff不异。
@@-1,7+1,7@@
a
a
a
-a
+b
a
a
a
7、浏览质料
*diff-Wikipedia
*Howtoreadapatchordiff
*Howtoworkwithdiffrepresentationingit
(完)
在学习初期,你一定会遇到很多困难,或者说各种困难,所以你最好先将你linux中的重要内容备份,因为,在你学习的过程中,很可能将系统搞废(eg:源混乱等); 通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。 一定要学好命令,shell是命令语言,命令解释程序及程序设计语言的统称,shell也负责用户和操作系统之间的沟通。 下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。 其实老师让写心得我也没怎么找资料应付,自己想到什么就写些什么,所以不免有些凌乱;很少提到编程,因为那些在实验报告里已经说了,这里再写就多余了。 掌握硬件配置,如显卡,声卡,网卡等,硬件只要不是太老或太新一般都能被支持,作为一名Linux系统管理员建议多阅读有关硬件配置文章,对各种不支持或支持不太好的硬件有深刻的了解。 目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。 不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。 另外Linux上也有很多的应用软件,安装运行了这些软件后,你就可以在Linux上编辑文档、图?片,玩游戏、上网、播放多媒体文件等。 学习Linux,应该怎样学,主要学些什么,一位Linux热心学习者,一段学习Linux的风云经验,历时十二个小时的思考总结,近十位网络Linux学习者权威肯定,为您学习Linux指明方向。
页:
[1]