天天看點

ln 指令的使用

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(符号)的意思,是以應該是符号連結。

繼續閱讀