8288分类目录 8288分类目录 8288分类目录
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

[linux]循序渐进学运维-基础命令篇-diff

来源:本站原创 浏览:119次 时间:2022-01-06

写在前面: 博主是一名投身教培事业的标准八零后,叛逆而且追求自由,昵称取自于苏轼的《水调歌头》中的“高处不胜寒”,时刻提醒自己要耐得住寂寞,受的了孤独,在技术的道路上,不畏艰难,勇往直前。 我已经将全部的linux运维体系发到了gitee上,https://gitee.com/gaosh08/LinuxFamily 欢迎star,投稿,交流。


文章目录
    • diff的基本语法及参数
    • 补充: 三个文本比较命令:
    • 后记
    • 1. 比较两个文件
    • 2. 并排格式输出
    • 3. -u 以合并文件的方式显示不同
    • 举例:
    • comm: 比较相同的文本,特点是: 如果文本中有空格就无法识别
    • patch 补丁:


小手一抖,点赞走起

diff的基本语法及参数

diff的用法,diff后面直接加选项,主要用来逐行对比文件
参数:

  • -<行数>  指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
  • -a或–text  diff预设只会逐行比较文本文件。
  • -b或–ignore-space-change  不检查空格字符的不同。
  • -B或–ignore-blank-lines  不检查空白行
  • -c  显示全部内文,并标出不同之处。
  • -H或–speed-large-files  比较大文件时,可加快速度。
  • -i或–ignore-case  不检查大小写的不同。
  • -u,-U<列数>或–unified=<列数>  以合并的方式来显示文件内容的不同。
  • -v或–version  显示版本信息。
  • -w或–ignore-all-space  忽略全部的空格字符。
  • –help  显示帮助。

举栗子:

1. 比较两个文件
[root@zmgaosh ~]# diff passwd passwd12a3> aaa[root@zmgaosh ~]#

2. 并排格式输出
[root@zmgaosh ~]# diff passwd passwd1 -y -W 10tc      tcmy      my>   aa[root@zmgaosh ~]#


注: 这里的
-y表示并排显示
-W 指定行宽

"<"表示后面文件比前面文件少了1行内容
">"表示后面文件比前面文件多了1行内容

3. -u 以合并文件的方式显示不同
[root@zmgaosh ~]# diff -u passwd passwd1--- passwd      2020-06-19 20:17:37.535217346 +0800+++ passwd1     2020-06-19 20:17:57.605397654 +0800@@ -1,2 +1,3 @@ tcpdump:x:72:72::/:/sbin/nologin mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin+aaa

注:
—开头的是原始文件

+++开头的是目标文件

以-开头的是只出现在原始文件中的

以+开头的是只出现在目标文件中的

以空格 开始的行是在目标文件和原始文件中都出现的行

补充: 三个文本比较命令:

comm , diff, patch

comm: 比较相同的文本,特点是: 如果文本中有空格就无法识别
[root@zmgaosh ~]# cat a.txt aaa   bbb[root@zmgaosh ~]# cat b.txtaaabbb[root@zmgaosh ~]# comm a.txt b.txtaaa   (输出形同的文本)        bbb(输出不同的文本)   bbb[root@zmgaosh ~]#

其实bbb是相同的,只是一个有空格,一个没有空格,会被当成不同来显示。

patch 补丁:

通常在更新几百万行的项目时,如果只有几行有变化,全部打包过来根本是不可能的,因为它太大了,而且全部拷过来也没有意义,最大的问题是人力难以对比。 这个时候我们可以用到patch

patch主要用于修补文件

举例:

创建两个文件

[root@zmgaosh ~]# cat a.txt11111111111111111111[root@zmgaosh ~]# cat b.txt22222111112222211111

使用diff 创建补丁 b.txt.patch

[root@zmgaosh ~]# diff -uN a.txt b.txt > b.txt.patch[root@zmgaosh ~]# cat b.txt.patch--- a.txt       2020-06-19 20:54:54.115330192 +0800+++ b.txt       2020-06-19 20:55:34.924697772 +0800@@ -1,4 +1,5 @@+22222 11111+22222 11111-11111-11111+

备注:
补丁头是分别由—/+++开头的两行,用来表示要打补丁的文件。—开头表示旧文件,+++开头表示新文件。
*diff命令会在补丁文件中记录这两个文件的首次创建时间,如下
— a.txt 2020-06-19 20:54:54.115330192 +0800
+++ b.txt 2020-06-19 20:55:34.924697772 +0800

接下来开始打补丁:

[root@zmgaosh ~]# patch -p0 < b.txt.patch patching file a.txt[root@zmgaosh ~]# cat a.txt 22222111112222211111

可以看到a.txt变得和b.txt一样了

我们也可以去除补丁

[root@zmgaosh ~]# patch -RE -p0 < b.txt.patch patching file a.txt[root@zmgaosh ~]# cat a.txt11111111111111111111[root@zmgaosh ~]#

可以看到又恢复到了原版本的a.txt

后记

学习Linux基础命令,最好的方法就是根据一个命令去联想类似的命令的使用方法,你会发现很多参数,虽然命令不同,但表示的意思基本相同。

计算机行业,无论是编程还是运维,都需要多练习,熟能生巧。

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net