Linux

Linux 建立連結 ln 指令教學與範例

介紹如何在 Linux 系統中使用 ln 指令建立各種連結檔案。

建立硬連結

ln 指令預設會建立硬連結(hard link):

# 建立 file.txt 的硬連結(hard link)
ln file.txt hard_link.txt

執行這行指令之後,會建立一個新的 hard_link.txt 硬連結檔案,此檔案與原始檔案 file.txt 具有相同的 inode:

# 列出檔案的 inode 資訊
ls -li
total 8
774210 -rw-rw-r-- 2 ubuntu ubuntu 1097  6月  1 14:09 file.txt
774210 -rw-rw-r-- 2 ubuntu ubuntu 1097  6月  1 14:09 hard_link.txt

在這個 ls 的輸出中,第三欄的 2 是檔案的連結數量(link count),當新的硬連結建立之後,此數值就會增加。

建立軟連結

ln 指令加上 -s 參數可以用來建立檔案的軟連結(soft link):

# 建立 file.txt 的軟連結(soft link)
ln -s file.txt soft_link.txt

軟連結實際上是另外一個獨立的檔案,指向其所連結的目標檔案,所以它的 inode 跟原本的檔案是不同的:

# 列出檔案的 inode 資訊
ls -li
total 8
774210 -rw-rw-r-- 2 ubuntu ubuntu 1097  6月  1 14:09 file.txt
774210 -rw-rw-r-- 2 ubuntu ubuntu 1097  6月  1 14:09 hard_link.txt
776759 lrwxrwxrwx 1 ubuntu ubuntu    8  6月  1 14:52 soft_link.txt -> file.txt

下圖是軟連結與硬連結的差異。

建立目錄軟連結

軟連結也可以用於目錄,建立一個連結至目錄的軟連結:

# 建立 myfolder 目錄的軟連結
ln -s myfolder folder_link

查看新建立的目錄軟連結:

# 列出檔案的 inode 資訊
ls -li
total 4
776760 lrwxrwxrwx 1 ubuntu ubuntu    8  6月  1 15:37 folder_link -> myfolder
790308 drwxrwxr-x 2 ubuntu ubuntu 4096  6月  1 15:30 myfolder

更新連結

如果要建立的軟連結檔案已經存在時,就會出現這樣的錯誤訊息:

ln: failed to create symbolic link 'soft_link.txt': File exists

這時候可以加上 -i 參數,以互動式確認的方式覆蓋檔案:

# 以互動式方式確認覆蓋檔案
ln -si file.txt soft_link.txt

或是加上 -f 參數,強制覆蓋檔案:

# 強制覆蓋檔案
ln -sf file.txt soft_link.txt

顯示原始檔案

在 Linux 系統上時常會遇到串連的軟連結,也就是一個軟連結又連到另外一個軟連結。例如 /etc/vtrgb 連到 /etc/alternatives/vtrgb

# 串連的軟連結
ls -l /etc/vtrgb
lrwxrwxrwx 1 root root 23  6月 26  2019 /etc/vtrgb -> /etc/alternatives/vtrgb

/etc/alternatives/vtrgb 又連到 /etc/console-setup/vtrgb

# 串連的軟連結
ls -l /etc/alternatives/vtrgb
lrwxrwxrwx 1 root root 24  6月 26  2019 /etc/alternatives/vtrgb -> /etc/console-setup/vtrgb

如果需要顯示串連的軟連結最後所連結到的檔案,可以使用 readlink 指令:

# 顯示串連軟連結最後的原始檔案
readlink -f /etc/vtrgb
/etc/console-setup/vtrgb

參考資料

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago