指令名稱 : ln
使用權限 : 所有使用者
使用方式 : ln [options] source dist,其中 option 的格式為 :
[-bdfinsvF] [-S backup-suffix] [-V {numbered, existing, simple}]
[--help] [--version] [--]
說明 : Linux/Unix 檔案系統中,有所謂的連結(link),我們可以將其視為檔案的別名,而連結又可分為兩種 : 硬連結(hard link)與軟連結(symbolic link)(符號連接),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬連結是存在同一個檔 案系統中,而軟連結卻可以跨越不同的檔案系統。
ln source dist 是產生一個連結(dist)到 source,至於使用硬連結或軟鏈結則由參數決定。
不論是硬連結或軟鏈結都不會將原本的檔案復制一份,只會占用非常少量的磁碟空間。
參數格式 :
-f : 鏈結時先將與 dist 同檔名的檔案刪除
-d : 允許系統管理者硬鏈結自己的目錄
-i : 在刪除與 dist 同檔名的檔案時先進行詢問
-n : 在進行軟連結時,將 dist 視為一般的檔案
-s : 進行軟鏈結(symbolic link)
-v : 在連結之前顯示其檔名
-b : 將在鏈結時會被覆寫或刪除的檔案進行備份
-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾
-V METHOD : 指定備份的方式
--help : 顯示輔助說明
--version : 顯示版本
范例 :
將檔案 yy 產生一個 symbolic link : zz
ln -s yy zz
將檔案 yy 產生一個 hard link : zz
ln yy xx
ln 命令的使用(F)
ln 這是linux中一個非常重要命令。它的功能是為某一個文件在另外一個位置建立一個同不的鏈接,這個命令最常用的參數是-s,具體用法是:ln -s 源文件 目標文件。
當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然後在其它的目錄下用ln命令鏈接(link)它就可以,不必重復的占用磁盤空間。例如:ln -s /bin/less /usr/local/bin/less
-s 是代號(symbolic)的意思。
這裡有兩點要注意:
第一,ln命令會保持每一處鏈接文件的同步性,也就是說,不論你改動了哪一處,其它的文件都會發生相同的變化;
第二,ln的鏈接又分為符號鏈接和硬鏈接兩種,符號鏈接就是ln -s ** **,它只會在你選定的位置上生成一個文件的鏡像,不會占用磁盤空間,硬鏈接ln ** **,沒有參數-s, 它會在你選定的位置上生成一個和源文件大小相同的文件,無論是符號鏈接還是硬鏈接,文件都保持同步變化。
如果你用ls察看一個目錄時,發現有的文件後面有一個@的符號,那就是一個用ln命令生成的文件,用ls -l命令去察看,就可以看到顯示的link的路徑了。
硬鏈接與符號鏈接的區別在於硬鏈接與原來的文件有相同的i-node即它們是無差別的指向一個存儲數據的空間的索引.
硬鏈接產生的文件與之前的文件名具有相同的意義,而且,由於都是無差別的指向同一個存儲空間,所以對硬鏈接產生的文件進行的操作,實際上都是對於那一個存儲空間進行的操作。
而且,當一個存儲空間,具有幾個硬鏈接時,刪除其中的一個,並不會對存儲空間進行操作,所以其它的硬鏈接不會受到影響。
此種方式,類似於C語言裡的指針,當一個存儲空間裡面有幾個指針指向它時,刪除其中的一個指針並不會帶來存儲空間被回收的操作。
而符號鏈接可以理解為指向原來的文件的索引的索引.它與原來的文件是兩個不同的文件.所以這樣的話假如存在三個文件的話,a是原文件,b是a的硬鏈接,而c 是a 的符號鏈接.剛不管是那個文件或者目錄的內容改變都會使得其它的文件的內容改變.對於原文件的刪除,則c將變的不可用,而對b卻沒有任何的影響.b,c的刪除不會對任何文件有影響.
注:
1. 對於ln命令默認是建立硬鏈接的.
2. -s不是soft(軟)的意思,而是symbolic(符號)的意思,因此應該是符號鏈接。