1. 程式人生 > >linux下的檔案連結

linux下的檔案連結

在linux系統中連結有兩種,分別是軟連結和硬連結,操作命令是ln(link的縮寫),要注意的是該命令只能對檔案進行操作操作,可以使用絕對路徑和相對路徑。順便說一下絕對路徑和相對路徑,絕對路徑就是從根目錄下一直到當前檔案的路徑,相對路徑是從當前路徑開始到檔案。
1.硬連結:
先使用touch命令建立一個link檔案,給檔案裡寫入內容,在命令列輸入:ln ./link ./a按Enter,按ls顯示看會生成硬連結檔案。
這裡寫圖片描述
在這裡你可以看到檔案a和link檔案的建立時間 大小都是一樣的 這就是我們線上面要討論的問題,軟連線和硬連結的區別;硬連結可以形象的用C語言下面的指標來加強理解,硬連結生成的檔案就像是新的指標指向舊檔案一樣。
這裡寫圖片描述


我們也可以使用cat(和tail 、more、head都是檢視檔案的命令)檢視原始檔和目標檔案,都是一樣的
這裡寫圖片描述
如果你在刪除原始檔或者是目標檔案的一個後開啟剩下的檔案內容還是和之前一樣的,原因就類似兩個指標free其中一個後還有另外一個指標存在,所以檔案內容沒有變,如果你學過c++,這裡的硬連結就相當於引用計數,你刪除和增加硬連結都是在對引用計數的增減,只有當引用計數減為0的時候就找不到檔案了,你也可以在上面圖片中執行ll命令後看到原始檔和目標檔案都有一個2,那就是引用計數。
2、軟連線:
軟連結也用上面的link檔案當作原始檔,命令格式:ls -s file1 file2,在命令列輸入:ln -s ./link ./b 在當前目錄通過軟連線生成b檔案,之後使用ll檢視生成檔案;
這裡寫圖片描述

這裡的顯示可以看到b檔案和link檔案的生成時間和引用計數都是不一樣,這裡的link引用計數是2是因為之前的a檔案存在,這裡的b檔案和link檔案內容也是一樣的。大小不一樣的原因是軟連結是真的建立了檔案,如果刪除了原始檔就會變成死連結我們看那一下:
這裡寫圖片描述
這裡的顯示b檔案是紅色的,就是死連結的標誌,其實軟連線真的建立了檔案但是為什麼和原始檔大小不一樣呢?那是因為產生的軟連線檔案其實儲存的是原始檔的路徑,這裡也可以用C語言的二級指標來形象的比喻,當你刪除原始檔雖然你軟連線檔案存在但是原始檔沒有了是打不開軟連線檔案的。

要注意的是不管是軟連線還是硬連結都不可以跨分割槽操作。