ln - 建立連結指令

本篇介紹如何使用 Linux 的 ln 指令建立各種連結檔案。

ln 是在 Linux 及其他 Unix Like 作業系統建立連結的指令,概念跟 Windows 的捷徑差不多。ln 建立的連結分為 "硬連結" (hard link) 及 "軟連結" (symbolic link), 預設 ln 會使用 hard link。

建立硬連結

所謂的硬連結就是使用相同 inode 的連結檔案,ln 指令預設就是建立硬連結:
# 建立硬連結
ln test.txt test_hardlink.txt
這樣就會建立一個 test_hardlink.txt 硬連結檔,指向 test.txt 這個檔案。

建立了硬連結之後,可以查看一下 inode:
# 查看 inode
ls -i test.txt test_hardlink.txt
787682 test_hardlink.txt    787682 test.txt
硬連結會跟原來的檔案有相同的 inode。

建立軟連結

軟連結(符號連結)則是靠著絕對路徑或相對路徑來指向目標檔案的連結檔,若要使用 ln 指令建立軟連結,可以加上 -s 參數:
# 建立軟連結
ln -s test.txt test_softlink.txt
這樣就會建立一個 test_softlink.txt 軟連結檔,指向 test.txt 這個檔案。

查看一下 inode:
# 查看 inode
ls -i test.txt test_softlink.txt
792852 test_softlink.txt    787682 test.txt
軟連結的 inode 就會跟原始的檔案不相同。

路徑

在建立連結檔案時,亦可使用相對路徑或是絕對路徑,例如:
# 使用相對路徑
ln -s ../source/test.txt test.txt

# 使用絕對路徑
ln -s /home/gtwang/source/test.txt test.txt
由於軟連結是直接靠著路徑來指向目標檔案的,所以對於軟連結來說,使用相對路徑與絕對路徑所建立的連結檔案效果會有不同,在搬移軟連結檔案時,以絕對路徑所建立的連結檔還是會指向相同的位置,而以相對路徑所建立的連結檔,其指向的位置就會跟著連結檔的位置而有變動。

至於硬連結檔是直接使用相同的 inode,所以不管是用相對路徑或絕對路徑,效果都相同。

留言

這個網誌中的熱門文章

Visual Sudio2019創建MFC ActiveX工程製作IE OCX插件

Little Endian VS Big Endian

Converting Between Byte Arrays and Hexadecimal Strings in Java