diff命令
简介:find difference between A and B ,记得是高中英语的语法的语法,正好拿来作为本文的简介。
一、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 -y 、-W 、-H... 这些参数你不想知道吗?答案都在--help里面哦~
一緒に勉強しましょう!!!
更多关于diff的用法,欢迎大家交流分享~