diff命令用法分享

diff命令

​ 简介:find difference between A and B ,记得是高中英语的语法的语法,正好拿来作为本文的简介。

diff命令用法分享

一、diff命令

​ diff命令就像我简介里写的那样,find difference between A and B,发现两者之间的不同,那么这个文件的用处在哪呢?

​ 肉眼区分配置文件的方式,低效而且容易对眼睛不是很友好,所以,在更改配置文件后,我只需要和备份文件进行比对,就会知道自己是否只更改了需要需改的文件,上图。

​ 首先cat 一下两个文件。

[root@k8s-master-01 tmp]# cat log.yaml-backup 
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: nginx								## 将要修改
  namespace: default					                ## 将要修改
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: nginx
subjects:
- kind: ServiceAccount
  app: nginx								## 将要修改
  namespace: default                                                    ## 将要修改
  ##                                                                    ## 将要增加
  
[root@k8s-master-01 tmp]# cat log.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: jenkins                           	                        ## 已修改
  namespace: kube-system 	                                        ## 已修改
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: jenkins
subjects:
- kind: ServiceAccount
  name: jenkins								## 已修改
  namespace: kube-system                                                ## 已修改
  [root@k8s-master-01 tmp]# 

​ 开始比对:

[root@k8s-master-01 tmp]# diff log.yaml log.yaml-backup 
4,5c4,5                                                                 ## 回显⬇⬇
<   name: jenkins			                 
<   namespace: kube-system                     
---
>   name: nginx                               
>   namespace: default                       
9c9                                            
<   name: jenkins
---
>   name: nginx          
12,13c12,13                                    
<   name: jenkins
<   namespace: kube-system
---
>   app: nginx
>   namespace: default

​ 效果已经展现出来了,那么回显的内容又是什么含义呢?

二、diff回显分析

## 老规矩:先看答案,再看习题,看看能不能让你恍然大明白。
字母含义:a:add
         c:change
         d:delete
(表问我为什么没有c选项...)
符号含义:>:第一个文件少了XXXX
         <:第二个文件需要XXXX
         ,:跟vi是一样的1,3表示1到3行
数字含义:第n行
## 上答案:
[root@k8s-master-01 ~]# cat -n 1.txt 
     1	00
     2	1
     3	22
     4	333
     5	4444
     6	55555
[root@k8s-master-01 ~]# cat -n 3.txt 
     1	1
     2	21
     3	3333
     4	44
     5	55555
     6	666666
     7	7777777
[root@k8s-master-01 ~]# diff 1.txt 3.txt
1d0                          ## 第一个文件d(删除)在第1行以下内容和第二个文件相同
< 00
3,5c2,4                      ## 第二个文件从第3行到第5行c(改变)以下内容与第二个文件2到4行相同
< 22
< 333
< 4444
---
> 21
> 3333
> 44
6a6,7                         ## 第一个文件从第6行a(增加)以下内容与第二个文件6到7行相同
> 666666
> 7777777

三、如果,还有人觉得diff命令不合适,不要走,要不要再考虑一下vimdiff...

[root@k8s-master-01 ~] vimdiff 1.txt 3.txt

diff命令用法分享

diff命令用法分享

课后作业:你猜diff 目录会怎么样?diff -y 、-W 、-H... 这些参数你不想知道吗?答案都在--help里面哦~
一緒に勉強しましょう!!!

diff命令用法分享

​更多关于diff的用法,欢迎大家交流分享~

上一篇:GIT 的merge、rebase和cherry-pick区别和使用示例


下一篇:Vue3.0为啥这么快?