ln
用來爲文件創建鏈接
補充說明
ln命令 用來爲文件創建鏈接,鏈接類型分爲硬鏈接和符號鏈接兩種,默認的鏈接類型是硬鏈接。如果要創建符號鏈接必須使用"-s"選項。
注意:符號鏈接文件不是一個獨立的文件,它的許多屬性依賴於源文件,所以給符號鏈接文件設置存取權限是沒有意義的。
語法
1ln [選項]... [-T] 目標 鏈接名 (第一種格式)
2 或:ln [選項]... 目標 (第二種格式)
3 或:ln [選項]... 目標... 目錄 (第三種格式)
4 或:ln [選項]... -t 目錄 目標... (第四種格式)
選項
1--backup[=CONTROL] # 爲每個已存在的目標文件創建備份文件
2-b # 類似--backup,但不接受任何參數
3-d, -F, --directory # 創建指向目錄的硬鏈接(只適用於超級用戶)
4-f, --force # 強行刪除任何已存在的目標文件
5-i, --interactive # 覆蓋既有文件之前先詢問用戶
6-L, --logical # 取消引用作爲符號鏈接的目標
7-n, --no-dereference # 把符號鏈接的目的目錄視爲一般文件
8-P, --physical # 直接將硬鏈接到符號鏈接
9-r, --relative # 創建相對於鏈接位置的符號鏈接
10-s, --symbolic # 對源文件建立符號鏈接,而非硬鏈接
11-S, --suffix=SUFFIX # 用"-b"參數備份目標文件後,備份文件的字尾會被加上一個備份字符串,預設的備份字符串是符號“~”,用戶可通過“-S”參數來改變它
12-t, --target-directory=DIRECTORY # 指定要在其中創建鏈接的DIRECTORY
13-T, --no-target-directory # 將“LINK_NAME”視爲常規文件
14-v, --verbose # 打印每個鏈接文件的名稱
15--help # 顯示此幫助信息並退出
16--version # 顯示版本信息並退出
參數
- 源文件:指定鏈接的源文件。如果使用
-s
選項創建符號鏈接,則“源文件”可以是文件或者目錄。創建硬鏈接時,則“源文件”參數只能是文件。 - 目標文件:指定源文件的目標鏈接文件。
1none, off # 不進行備份(即使使用了--backup 選項)
2numbered, t # 備份文件加上數字進行排序
3existing, nil # 若有數字的備份文件已經存在則使用數字,否則使用普通方式備份
4simple, never # 永遠使用普通方式備份
實例
將目錄/usr/mengqc/mub1
下的文件 m2.c 鏈接到目錄 /usr/liu
下的文件 a2.c
1cd /usr/mengqc
2ln mub1/m2.c /usr/liu/a2.c
在執行ln命令之前,目錄/usr/liu
中不存在a2.c文件。執行ln之後,在/usr/liu
目錄中才有a2.c這一項,表明m2.c和a2.c鏈接起來(注意,二者在物理上是同一文件),利用ls -l
命令可以看到鏈接數的變化。
創建軟鏈接
在目錄/usr/liu
下建立一個符號鏈接文件abc,使它指向目錄/usr/mengqc/mub1
1ln -s /usr/mengqc/mub1 /usr/liu/abc
執行該命令後,/usr/mengqc/mub1
代表的路徑將存放在名爲/usr/liu/abc
的文件中。
創建硬鏈接
給文件創建硬鏈接,爲 log2022.log
創建硬鏈接 ln2022
,log2022.log
與 ln2022
的各項屬性相同
1ln log2022.log ln2022
輸出:
1[root@localhost test]# ll
2lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2022.log
3-rw-r--r-- 1 root bin 61 11-13 06:03 log2022.log
4[root@localhost test]# ln log2022.log ln2022
5[root@localhost test]# ll
6lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2022.log
7-rw-r--r-- 2 root bin 61 11-13 06:03 ln2022
8-rw-r--r-- 2 root bin 61 11-13 06:03 log2022.log
擴展知識
Linux具有爲一個文件起多個名字的功能,稱爲鏈接。被鏈接的文件可以存放在相同的目錄下,但是必須有不同的文件名,而不用在硬盤上爲同樣的數據重複備份。另外,被鏈接的文件也可以有相同的文件名,但是存放在不同的目錄下,這樣只要對一個目錄下的該文件進行修改,就可以完成對所有目錄下同名鏈接文件的修改。對於某個文件的各鏈接文件,我們可以給它們指定不同的存取權限,以控制對信息的共享和增強安全性。
文件鏈接有兩種形式,即硬鏈接和符號鏈接。
ln功能說明:是爲某一個文件在另外一個位置建立一個同步的鏈接,當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然後在其它的目錄下用ln命令鏈接(link)它就可以,不必重複的佔用磁盤空間。
:warning: ln命令會保持每一處鏈接文件的同步性,也就是說,不論你改動了哪一處,其它的文件都會發生相同的變化。
軟鏈接:
- 軟鏈接,以路徑的形式存在。類似於Windows操作系統中的快捷方式
- 軟鏈接可以 跨文件系統 ,硬鏈接不可以
- 軟鏈接可以對一個不存在的文件名進行鏈接
- 軟鏈接可以對目錄進行鏈接
硬鏈接
建立硬鏈接時,在另外的目錄或本目錄中增加目標文件的一個目錄項,這樣,一個文件就登記在多個目錄中。如下所示的m2.c文件就在目錄mub1和liu中都建立了目錄項。
- 硬鏈接,以文件副本的形式存在。但不佔用實際空間。
- 不允許給目錄創建硬鏈接
- 硬鏈接只有在同一個文件系統中才能創建
1ls -ailR
2.:
3total 16
4922730 drwxr-xr-x 4 root root 4096 Jun 17 11:18 .
5393217 drwxrwxrwt. 9 root root 4096 Jun 17 11:19 ..
6922733 drwxr-xr-x 2 root root 4096 Jun 17 11:18 liu
7922731 -rw-r--r-- 3 root root 0 Jun 17 11:18 m2.c
8922732 drwxr-xr-x 2 root root 4096 Jun 17 11:18 mub1
9
10./liu:
11total 8
12922733 drwxr-xr-x 2 root root 4096 Jun 17 11:18 .
13922730 drwxr-xr-x 4 root root 4096 Jun 17 11:18 ..
14922731 -rw-r--r-- 3 root root 0 Jun 17 11:18 m2.c
15
16./mub1:
17total 8
18922732 drwxr-xr-x 2 root root 4096 Jun 17 11:18 .
19922730 drwxr-xr-x 4 root root 4096 Jun 17 11:18 ..
20922731 -rw-r--r-- 3 root root 0 Jun 17 11:18 m2.c
創建硬鏈接後,己經存在的文件的索引節點號(inode)會被多個目錄文件項使用。一個文件的硬鏈接數可以在目錄的長列表格式的第二列中看到,無額外鏈接的文件的鏈接數爲1。
在默認情況下,ln命令創建硬鏈接。ln命令會增加鏈接數,rm命令會減少鏈接數。一個文件除非鏈接數爲0,否則不會從文件系統中被物理地刪除。
對硬鏈接有如下限制:
- 不能對目錄文件做硬鏈接。
- 不能在不同的文件系統之間做硬鏈接。就是說,鏈接文件和被鏈接文件必須位於同一個文件系統中。
符號鏈接(軟連接)
符號鏈接也稱爲軟鏈接,是將一個路徑名鏈接到一個文件。這些文件是一種特別類型的文件。事實上,它只是一個文本文件(如下所示的abc文件),其中包含它提供鏈接的另一個文件的路徑名,如虛線箭頭所示。另一個文件是實際包含所有數據的文件。所有讀、寫文件內容的命令被用於符號鏈接時,將沿着鏈接方向前進來訪問實際的文件。
1$ ls -il
2total 0
3922736 lrwxrwxrwx 1 root root 5 Jun 17 11:27 abc -> a.txt
4922735 -rw-r--r-- 1 root root 0 Jun 17 11:27 a.txt
與硬鏈接不同的是,符號鏈接確實是一個新文件,當然它具有不同的索引節點號;而硬鏈接並沒有建立新文件。
符號鏈接沒有硬鏈接的限制,可以對目錄文件做符號鏈接,也可以在不同文件系統之間做符號鏈接。
用ln -s
命令建立符號鏈接時,源文件最好用絕對路徑名。這樣可以在任何工作目錄下進行符號鏈接。而當源文件用相對路徑時,如果當前的工作路徑與要創建的符號鏈接文件所在路徑不同,就不能進行鏈接。
符號鏈接保持了鏈接與源文件或目錄之間的區別:
- 刪除源文件或目錄,只刪除了數據,不會刪除鏈接。一旦以同樣文件名創建了源文件,鏈接將繼續指向該文件的新數據。
- 在目錄長列表中,符號鏈接作爲一種特殊的文件類型顯示出來,其第一個字母是l。
- 符號鏈接的大小是其鏈接文件的路徑名中的字節數。
- 當用
ls -l
命令列出文件時,可以看到符號鏈接名後有一個箭頭指向源文件或目錄,例如lrwxrwxrwx … 14 jun 20 10:20 /etc/motd->/original_file
其中,表示“文件大小”的數字“14”恰好說明源文件名original_file
由14個字符構成。
來源:https://github.com/jaywcjlove/linux-command
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。