Linux命令:ln
摘要: 轉自 戀貓大鯉魚 https://dablelv.blog.csdn.net/article/details/103065438
1. 命令簡介
ln 命令用來為檔案建立連結, 分為軟連結(symbolic link)和硬連結 (hard link), 預設建立硬連結。如果要建立軟連線,使用 -s 選項。本文介紹 GNU 版本實現。
注意:
1) 硬連結不是一個獨立的檔案,只是一個檔名。一個檔案可以有多個檔名,只有將最後一個檔名從磁碟上刪除,才能把這個檔案刪掉。
2)軟連線可以跨檔案系統,但是硬連結不能跨檔案系統,因為硬連結只是檔案的別名,而非獨立的檔案。
3)不能給目錄建立硬連結,因為硬連結連線到目錄可能會導致目錄的 inode 和 實體的 block 形成環狀。此時,如果刪除目錄,會導致目錄實體 block 無法被系統訪問,產生孤立的目錄 (從根目錄無法再訪問)。
4) 建立硬連結時,每個目標必須存在,建立軟連結時, 目標檔案可以不存在。
5)軟連結是一個包含了路徑資訊的獨立檔案, 類似於windows的快捷方式,他的許多屬性依賴於原始檔,所以給軟連結檔案設定許可權是無意義的。
2. 命令格式
ln [OPTIONS] ... [-T] TARGET LINK_NAME (1st form) ln [OPTION] ... TARGET (2st form) ln [OPTION] ... TARGET ... DIRECTORY (3st form) ln [OPTION] ... -t DIRECTORY TARGET (4st form)
第一種格式,為指定的目標檔案建立指定名稱的連結,-T 選項可以省略, LINK_NAME 為目錄時可以省略連結名稱,此時連結與目錄檔案同名,該格式最為常用。
第二種格式,為指定的目標檔案在當前目錄下建立同名連結
第三種第四種, 分別為每一個目標檔案在指定的目錄下建立同名連結。
3. 引數解析
--backup[=CONTROL] 備份每一個存在的目標檔案 -b 類似於 --backup, 但不接受引數 -d, -F, --directory 允許超級使用者嘗試為目錄建立硬連結 -f, --force 強行建立檔案或者目錄的連結,與連結同名的檔案或目錄將被覆蓋-i, --interactive 覆蓋既有檔案之前先詢問使用者 -L, --logical 建立硬連結時,當目標檔案是軟連結時,進行解引用,指向軟連結的目標檔案 -n, --no-dereference 把軟連結視為一般檔案,不進行解引用 -P, physical 建立硬連結時,直接指向軟連結本身,而不是指向軟連結的目標檔案(預設)。 -r, --relative 建立相對於連結位置的符號連結
-s, --symbolic
建立軟連結
-S, --suffix=SUFFIX
修改備份檔案字尾。用 -b 引數備份目標檔案後,備份檔案字尾預設為 ~
-t, --target-directory=DIRECTORY
指定存放連結檔案的目錄
-T, --no-target-directory
將 LINK_NAME 視為連結檔案而非存放連結檔案的目錄
-V, --verbose
顯示指令執行過程
--help
顯示幫助並退出
--version
顯示版本並退出
選項 --backup 的引數 CONTROL 控制檔案備份後的版本生成方式,可取值如下:
none, nil 不進行備份 number, t 使用數字字尾進行滾動。備份檔名字尾一次遞增 ~1~、 existing, nil 如果有使用數字字尾則使用數字,否則使用簡單的備份方式 simple, never 只是用簡單的備份方式。
使用選項 -s 生產軟連結時,將忽略選項 -L, -P,建立硬連結, 預設使用 -P 選項,將硬連結指向軟連結本身,相當於給軟連結起了個別名。
4. 常用示例
1)給 /etc/passwd 建立軟連結
pi@raspberrypi:~ $ ln -s /etc/passwd passwdsoftlink pi@raspberrypi:~ $ ls -l passwdsoftlink lrwxrwxrwx 1 pi pi 11 Jan 19 14:15 passwdsoftlink -> /etc/passwd
2)給 /etc/passwd 多次建立軟連結, 軟連結的名稱相同,採用數字表示備份檔案的版本號,多次備份,版本號依次遞增
pi@raspberrypi:~ $ ls -l passwdsoftlink lrwxrwxrwx 1 pi pi 11 Jan 19 14:15 passwdsoftlink -> /etc/passwd pi@raspberrypi:~ $ ln -s --backup=number /etc/passwd passwdsoftlink pi@raspberrypi:~ $ ls -l passwdsoftlink* lrwxrwxrwx 1 pi pi 11 Jan 19 14:17 passwdsoftlink -> /etc/passwd lrwxrwxrwx 1 pi pi 11 Jan 19 14:15 passwdsoftlink.~1~ -> /etc/passwd pi@raspberrypi:~ $ ln -s --backup=number /etc/passwd passwdsoftlink pi@raspberrypi:~ $ ls -l passwdsoftlink* lrwxrwxrwx 1 pi pi 11 Jan 19 14:18 passwdsoftlink -> /etc/passwd lrwxrwxrwx 1 pi pi 11 Jan 19 14:15 passwdsoftlink.~1~ -> /etc/passwd lrwxrwxrwx 1 pi pi 11 Jan 19 14:17 passwdsoftlink.~2~ -> /etc/passwd