一、ln指令
ln [選項] 新檔案名/路徑
- 參數與選項:
- 如果不寫任何選項,則建立的是硬連結檔案
- -s:建立符号連結
- -f:如果新檔案存在,則将新檔案删除後重建立立
二、硬連結(Hard Link,硬式連結或實際連結)
- 概念:我們知道檔案名是記錄在目錄中的,且每個檔案隻有一個inode号碼。如果有多個檔案名對應同一個inode,這就是硬連結。簡單地說,硬連結就是某個目錄下新增一條檔案名連結到某inode号碼的關聯記錄而已
- 特點:
- 硬連結對應的檔案内容一模一樣
- 如果你将其中一個檔案名删除,其實inode還是存在的,你可以通過另一個檔案名來讀取資料。或者你使用一個檔案名來編輯檔案時,最終的結果都會被寫入到相同的inode與區塊中
- 使用硬連結設定連結檔案時,磁盤的空間與inode的數目不會變化。(但是某些情況下會變化:例如你新增的這條資料剛好将目錄的區塊填滿,那麼目錄就會新增一個區塊來記錄檔案名的關聯性,但是一般硬連結所用的關聯資料量很小)
- 不能跨越檔案系統
- 不能連結目錄(如果想要連結目錄,則目錄下的子檔案/子目錄都需要連結,會造成相當大的環境複雜度,是以不支援連結目錄)
- ln指令格式:如果最後一個參數是一個路徑,則在該路徑下建立一個硬連結檔案,硬連結檔案名與源檔案名相同
ln 源檔案名 新連結檔案名/路徑
示範案例
- 将/etc目錄下的crontab檔案,在目前目錄下建立一個同名的硬連結檔案與一個名為abc的硬連結檔案
# 建立同名的硬連結檔案
ln /etc/crontab .
# 建立一個名為abc的硬連結檔案
ln /etc/crontab abc
- 建立完之後檢視三個檔案的屬性:
- 可以看到三個檔案最前面的inode号碼都是相同的,都是393360
- 另外,其中3代表連結數(代表有多少檔案連結到這個inode号碼,此處有3個檔案)
ll -i /etc/crontab crontab abc
三、符号連結(Symbolic Link,亦即快捷方式)
- 概念:符号連結就是建立一個獨立的檔案,而這個檔案會讓資料的讀取指向它連結的那個檔案的檔案名
-
- 符号連結檔案是一個單獨的檔案,有單獨的inode與區塊
- 符号連結檔案的内容是自己所連結的檔案名。
- 重點:承上,但是如果去編輯這個符号連結檔案,則編輯的是自己連結的檔案的内容。是以如果你修改了連結檔案,則自己連結的檔案内容也會被修改
- 如果自己所連結的檔案被删除,則符号連結會操作不了,因為找不到原始檔案了
- 注意:如果是一個符号連結目錄,則連結的是一個目錄,修改該目錄,連結的目錄也會修改,原理相同
- ln指令格式:如果最後一個參數是一個路徑,則在該路徑下建立一個符号連結檔案,符号連結檔案名與源檔案名相同
ln -s 新連結檔案名/路徑
- 将/etc目錄下的crontab檔案,在目前目錄下建立一個名為crontab2的符号連結檔案:
ln -s /etc/crontab crontab2
- 建立完之後檢視2個檔案的屬性:
- 我們可以清楚的看到,crontab2是一個符号連結檔案,且inode與自己連結的檔案的inode不同
- 另外,該檔案的大小為12KB:因為符号連結的檔案内容就是自己連結的檔案名(/etc/crontab),剛好12個字元
ll -i /etc/crontab crontab2
四、關于目錄的連結數
- 下面,我們以在/tmp目錄下建立一個test目錄為例,當我們建立一個test目錄時,基本上有三樣東西:
- /tmp/test
- /tmp/test/.
- /tmp/test/..
- 其中,/tmp/test與/tmp/test/.是相同的:都代表/test這個目錄。/tmp/test/..代表/test目錄的上一級目錄/tmp
- 結論:當我們建立一個新的目錄時,新的目錄的連結數為2,而新目錄的上層目錄的連結數加1
- 建立新目錄之前,/tmp目錄的連結數為8
- 建立新目錄/test後,/tmp的連結數為9,/test的連結數為2
- 我是小董,V公衆點選"筆記白嫖"解鎖更多【Linux入門基礎】資料内容。