咱们在写代码的过程中,免不了会对代码进行一些修修改改。但常常会呈现改着改着,就不晓得改完后与源文件的差别是怎么的。这里,咱们就须要一个文本比对工具来进行文本比对。

有教训的程序员都晓得,Windows下有个很好用的文本比对工具——BeyondCompare。但它是免费软件,很多正规的公司是不容许应用破解软件的。而且,它也只能在Windows下应用,没有Linux版本。

本文所介绍的文本比对办法,无需任何软件,只需一个Linux命令。学会这个命令,妈妈就再也不怕你不会文本比对了。

这个Linux命令就是diff命令。

diff是Unix零碎的一个很重要的工具程序。它用来比拟两个文本文件的差别,是代码版本治理的基石之一。

首先咱们来看它的根本命令格局。

diff [OPTION]... FILES

很简略吧。不过它的选项相当多,多到你狐疑人生。咱们暂且不论那么多,先学一些最罕用的,毕竟工夫要花在刀刃上。

-b —— 疏忽一行中的空字符的区别(例如“Hello World!” 与 “Hello World!!”认为是一样的)
-B —— 疏忽空白行
-i —— 疏忽大小写的不同
-r —— 如果diff前面接的目录时,会递归比拟子目录中的文件不同

咱们再来具体看看如何进行文本比拟。

diff命令的输入格局有三种:

(1)失常格局(normal diff)
(2)上下文格局(context diff)
(3)合并格局(unified diff)

咱们通过实例具体介绍这三种输入格局。比方咱们当初有个文件a.c,它的内容如下:

当初咱们复制一份,命名为b.c,并将第3行小写的"hello"改为大写“HELLO",如下:

(1)失常格局

失常格局下咱们无需加任何选项,间接如下比对就好:

diff a.c b.c

执行完的后果如下:

咱们一行一行来解释上图的含意。

行一行:3c3

第一个3示意文件a.c中第3行有变动,前面的3示意a.c通过变动成为b.c中的第3行。两头的c就是具体的变动了。c示意扭转(change),其它类型还有d删除(delete),a减少(addition)。

第二行:< hello world!

示意a.c文件中去除第3行的内容,其中小于号示意去除。

第三行:------

分隔线

第四行:> HELLO world!

示意b.c文件中减少第3行的内容,其中大于号示意减少。

(2)上下文格局

因为在失常格局下,提示信息比拟少,咱们无奈疾速定位所批改的中央,常常须要关上文件才晓得批改细节。所以,为了给出更多的信息,引入了上下文格局。它的应用命令如下:

diff -c a.c b.c

其中,c示意context,即上下文的意思。

上图的输入后果的具体含意如下:

第1行和第2行示意批改前及批改后的文件及更新工夫。上面的 1,4 *示意a.c文件显示的从第1行开始到第4行为止的内容。hello world前的叹号(!)示意该行有改变,如果该行被删除,则为减号(-),如果该行被减少,则为加号(+)。前面几行的含意相似。

(3)合并格局

这种格局是失常格局与上下文格局的综合版,同时这种格局也是git diff所采纳的格局。应用这种格局的命令是:

diff -u a.c b.c

上图的输入后果具体含意如下:

第1行和第2行示意批改前及批改后的文件及更新工夫。前面的-hello world!示意原文件a.c里的内容,+HELLO world!示意b.c里的内容。

除了以上三种格局外,还有另外始终更直观的形式——并排格局。这种显示格局的命令格局如下:

diff a.c b.c -y -W 50

这种格局就是以并列的格局进行显示,也很直观明了。第3行里,有个“|”符号,示意这行有更改。另外,如果后面是“<”,示意前面文件比后面文件少了1行内容;如果是">",示意前面文件比后面文件多了1行内容。

更多精彩内容,请关注公众号良许Linux,公众内回复1024可收费取得5T技术材料,包含:Linux,C/C++,Python,树莓派,嵌入式,Java,人工智能,等等。公众号内回复进群,邀请您进高手如云技术交换群。


最初,最近很多小伙伴找我要Linux学习路线图,于是我依据本人的教训,利用业余时间熬夜肝了一个月,整顿了一份电子书。无论你是面试还是自我晋升,置信都会对你有帮忙!

收费送给大家,只求大家金指给我点个赞!

电子书 | Linux开发学习路线图

也心愿有小伙伴能退出我,把这份电子书做得更完满!

有播种?心愿老铁们来个三连击,给更多的人看到这篇文章

举荐浏览:

  • 干货 | 程序员进阶架构师必备资源免费送
  • 神器 | 反对搜寻的资源网站