diff命令用法分享


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的用法,歡迎大家交流分享~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM