你們好,我是良許。程序員
咱們在平時工做的時候,常常要知道兩個文件之間,以及同個文件不一樣版本之間有何異同點。在 Windows 下,有 beyond compare 這個好用的工具,而在 Linux 下,也有不少很強大的工具,良許以前也寫過一篇文章介紹:面試
Linux下9種優秀的代碼比對工具推薦shell
這些比對工具其實都是基於 diff
命令,下面就詳細介紹一些 diff 命令的用法。架構
diff 命令是一個分析文件信息的命令,能夠打印出文件之間的差別。它能夠逐行地比較兩個文件的內容,也能夠遞歸地比較文件夾的內容。diff 命令的輸出內容可讓咱們知道要使兩個文件相同須要作哪些修改,這對於咱們的工做頗有幫助。編輯器
在開始前,咱們先用文件編輯器建立兩個內容相同的文件。這裏咱們使用的是 nano 。工具
$ nano diffsample1複製代碼
輸入內容:學習
發佈測試
優質的網站
技術文章spa
使用 Ctrl
+X
和 Y
保存並退出。
建立第二個文件:
$ nano diffsample2複製代碼
輸入一樣的內容並保存退出。
須要注意的是,空格和 Tab
對兩個文件是否徹底相同會有影響。
使用 diff 命令查看兩個文件是否有差別:
$ diff diffsample1 diffsample2複製代碼
這時 diff 命令沒有輸出任何信息,說明這兩個文件的內容是徹底相同的。
如今咱們對 diffsample2 作一些修改,將文章改成帖子而後保存並退出
再使用 diff 命令:
$ diff diffsample1 diffsample2複製代碼
查看輸出的信息:
在以上輸出信息中,3c3 表示第一個文件的第三行須要被替換爲第二個文件的第三行,而後爲咱們提示出了須要修改的內容: 技術文章 和 技術帖子
diff 命令所參考的不是第一個文件,而是第二個文件,它的輸出信息有如下幾種字符:
c : 表示必須作一些修改
a : 表示必須添加一些內容
d : 表示必須刪除一些內容
字符前的數字表示第一個文件中的行數,字符後的內容表示第二個文件中的行數。
< 表示引用的第一個文件中的內容,而 > 表示引用的第一個文件中的內容
如今讓咱們交換兩個文件的順序再試試:
$ diff diffsample2 diffsample1複製代碼
在交換文件順序以後 diff 參考的文件變成了 diffsample1,提示咱們將 技術帖子 修改成 技術文章 。
如今咱們將 diffsample1 編輯爲如下內容:
刪除了第二行和第三行,再試試使用 diff 命令
$ diff diffsample2 diffsample1複製代碼
如今咱們能夠看到,由於咱們以 diffsample1 做爲參考,爲了使兩個文件相同,咱們須要刪除 diffsample2 中的第二行和第三行,而後就會和 diffsample1 中的第一行內容相同。
咱們再試試交換 diffsample1 和 diffsample2 的順序:
$ diff diffsample1 diffsample2複製代碼
能夠看到,如今 diff 給咱們的提示信息變爲了在 diffsample1 中的第一行後面添加 diffsample2 中的第二行和第三行內容。
如今讓咱們來測試區份內容的大小寫:
編輯 diffsample1 的內容爲:
編輯 diffsample1 的內容爲:
兩個文件中惟一的區別是第三行的大小寫,再試試 diff 命令
$ diff diffsample1 diffsample2複製代碼
能夠看到 diff 命令找出了大小寫的不一樣,若是咱們不想檢查大小寫,可使用 -i 選項。
$ diff -i diffsample1 diffsample2複製代碼
這時內容沒有區別,diff 沒有輸出任何信息。
咱們可使用 -u 選項以統一的格式輸出信息:
輸出信息中使用 - 和 + 表示哪些內容須要被刪除或者添加來使得文件內容相同。
以前提到過 diff 命令會檢查空格或tab,若是咱們想要忽略空格和tab,可使用 -w 選項。
在 diffsample2 的第二行 good 後面輸入一些空格和tab,並把以前的大寫改回小寫。
再使用 diff 命令
$ diff diffsample1 diffsample2複製代碼
能夠看到找出了不一樣,再使用 -w 忽略空格和tab,這時便沒有任何輸出信息了。
diff 命令還有許多選項,能夠用來忽略某些狀況或者更改輸出等,咱們可使用 man 命令來獲取更多的相關信息。
最後,最近不少小夥伴找我要Linux學習路線圖,因而我根據本身的經驗,利用業餘時間熬夜肝了一個月,整理了一份電子書。不管你是面試仍是自我提高,相信都會對你有幫助!目錄以下:
免費送給你們,只求你們金指給我點個贊!
也但願有小夥伴能加入我,把這份電子書作得更完美!
推薦閱讀: