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 目錄會怎么樣?vimdiff 可不可以看多個文件?diff -y 、-W 、-H... 這些參數你不想知道嗎?答案都在--help里面哦~
一緒に勉強しましょう!!!
更多關於diff的用法,歡迎大家交流分享~