Linux下diff命令用法詳解

你們好,我是良許。程序員

咱們在平時工做的時候,常常要知道兩個文件之間,以及同個文件不一樣版本之間有何異同點。在 Windows 下,有 beyond compare 這個好用的工具,而在 Linux 下,也有不少很強大的工具,良許以前也寫過一篇文章介紹:面試

Linux下9種優秀的代碼比對工具推薦shell

這些比對工具其實都是基於 diff 命令,下面就詳細介紹一些 diff 命令的用法。架構

diff 命令是一個分析文件信息的命令,能夠打印出文件之間的差別。它能夠逐行地比較兩個文件的內容,也能夠遞歸地比較文件夾的內容。diff 命令的輸出內容可讓咱們知道要使兩個文件相同須要作哪些修改,這對於咱們的工做頗有幫助。編輯器

在開始前,咱們先用文件編輯器建立兩個內容相同的文件。這裏咱們使用的是 nano工具

$ nano diffsample1複製代碼

輸入內容:學習

發佈測試

優質的網站

技術文章spa

使用 Ctrl+XY 保存並退出。

建立第二個文件:

$ 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學習路線圖,因而我根據本身的經驗,利用業餘時間熬夜肝了一個月,整理了一份電子書。不管你是面試仍是自我提高,相信都會對你有幫助!目錄以下:

免費送給你們,只求你們金指給我點個贊!

電子書 | Linux開發學習路線圖

也但願有小夥伴能加入我,把這份電子書作得更完美!

有收穫?但願老鐵們來個三連擊,給更多的人看到這篇文章

推薦閱讀:

相關文章
相關標籤/搜索