Linux基礎是很是重要得,不管是工做仍是咱們平時得學習,掌握Linux對你的學習道路必定能提供很多幫助。html
下面簡單的介紹下Linux中的硬連接和軟鏈接,爲了你更好的理解我下面的分享,你須要掌握Linux中的inode概念,若是你還不知道,推薦你到個人另外一篇分享,先了解inode。傳送門node
Linux中文件的inode號碼與文件名通常都是一對一的關係,可是也能夠多個一對多(多個文件名指向一個inode號碼),稱爲硬連接。git
能夠用不一樣的文件名訪問一樣的內容github
對其中一個文件內容修改時,會影響到其餘文件的內容。vim
刪除其中一個文件時,其餘文件能夠正常訪問,不受影響bash
首先,建立一個測試文件一,並寫入 "作個哎記錄的人"post
vim 1.txt
複製代碼
接着建立一個硬連接學習
格式:ln 源文件 目標文件測試
ln 1.txt 2.txt
複製代碼
能夠看到執行命令後多了個2.txtspa
咱們打開2.txt看看~~
vim 2.txt
複製代碼
發現內容跟1.txt 同樣,跟copy差很少,但也是有取別:
硬連接,不管是修改源文件仍是目標文件,是會影響其它文件的,而copy後的文件修改是不會影響源文件的,而爲何不會影響到呢,無非就是inode的問題
我 copy 2.txt 到 3.txt,
咱們能夠經過一下命令來查看區別:
ls -i
複製代碼
從圖中能夠發現, 1和2的 inode號碼是同樣的,因此修改其中一個文件,其他文件內容會隨之變化. copy出來的3.txt 生成了個新的inode號碼,因此是不會影響源文件的。因此驗證了咱們上面那個結論。
咱們再驗證一下,修改 inode號碼同樣的文件,其它文件是否會隨之改變。
我打開2.txt 修改裏面的內容,看1.txt是否有更新
發現1.txt也更新了
驗證了咱們的1,2條結論。
那咱們把 2.txt 刪除試試
發現 1.txt 還在,第三條結論也沒有問題。
經過上面的驗證,相信你們對Linux 的硬連接,應該掌握得差很少了,那咱們接着來說講軟鏈接,若是你已經掌握了硬連接,那軟鏈接 很快就能掌握。
硬連接inode號碼一致,軟鏈接相反。
硬連接讀的內容是不一樣文件的內容,軟連讀的是源文件的內容。
經過如下命令建立一個軟鏈接
命令結構:ln 源文件 目標文件
ln -s 1.txt 2.txt
複製代碼
觀察2.txt 後面,什麼意思呢,就是 把2.txt路徑指向1.txt的路徑,當咱們訪問2.txt的時候,實際讀取的是1.txt的內容。
咱們訪問 2.txt看看
vim 2.txt
複製代碼
內容一致,沒問題。怎麼驗證咱們上面說的實際讀取的是1.txt的內容呢?很好驗證,咱們把1.txt刪除了。
明顯看到,刪除1.txt 後 字變紅了,爲何呢?很好理解,有錯誤,文件找不到了嘛,咱們把1.txt刪除了,而2.txt還指向1.txt,一個不存在的文件。
咱們試着訪問下2.txt
cat 2.txt
複製代碼
發現報了個錯誤,文件找不到,因此咱們的結論沒有問題。
相信到這裏你對Linux的 inode 、硬連接、軟鏈接已經掌握得差很少了,但願能幫助到在看得你。