硬連接指向的是節(jié)點(diǎn)(inode),是已存在文件的另一個(gè)名字,修改其中一個(gè),與其連接的文件同時(shí)被修改;對(duì)硬鏈接文件進(jìn)行讀寫和刪除操作時(shí)候,效果和符號(hào)鏈接相同。但如果我們刪除硬鏈接文件的源文件,硬鏈接文件仍然存在,而且保留了原有的內(nèi)容。這時(shí),系統(tǒng)就“忘記”了它曾經(jīng)是硬鏈接文件,而把他當(dāng)成一個(gè)普通文件。
復(fù)制代碼
用法:ln [選項(xiàng)]… [-T]源文件 鏈接名 (第一種格式)
或:ln [選項(xiàng)]… 源文件 (第二種格式)
或:ln [選項(xiàng)]… 源文件 … 目錄 (第三種格式)
或:ln [選項(xiàng)]… -t 源文件夾 鏈接名… (第四種格式)
在第一種格式中,創(chuàng)建指定名稱的鏈接且指向指定的源文件。
在第二種格式中,在當(dāng)前目錄創(chuàng)建指向源文件的鏈接。
在第三、四種格式中,在指定目錄中創(chuàng)建指向源文件的鏈接。
默認(rèn)創(chuàng)建硬鏈接,當(dāng)使用–symbolic 時(shí)創(chuàng)建符號(hào)鏈接。
當(dāng)創(chuàng)建硬鏈接時(shí)文件必須在同一個(gè)文件系統(tǒng),并且不能對(duì)目錄進(jìn)行硬鏈接。符號(hào)鏈接可以指向任意的位置,
選項(xiàng)說明:
–backup[=CONTROL] 為每個(gè)已存在的目標(biāo)文件創(chuàng)建備份文件
-b 類似–backup,但不接受任何參數(shù)
-d, -F, –directory 創(chuàng)建指向目錄的硬鏈接(只適用于超級(jí)用戶,而且有不可預(yù)知的風(fēng)險(xiǎn),慎用哦)
-f, –force 強(qiáng)行刪除任何已存在的目標(biāo)文件
-n, –no-dereference 如果目的地是一個(gè)已存在的鏈接至某目錄的符號(hào)鏈接,會(huì)將
該符號(hào)鏈接當(dāng)作普通文件處理,先將該已存在的
鏈接備份或刪除
-i, –interactive 詢問是否刪除目的地文件
-s, –symbolic 創(chuàng)建符號(hào)鏈接而不是硬鏈接
-t, –target-directory=目錄 在指定目錄中創(chuàng)建鏈接
-T, –no-target-directory 將鏈接名當(dāng)作普通文件(在對(duì)目錄進(jìn)行符號(hào)鏈接時(shí)要用到此選項(xiàng))
舉例:
1.對(duì)某個(gè)文件創(chuàng)建一個(gè)連接
$ln -s /tmp/abc.txt ~/
此命令表示在家目錄下創(chuàng)建與源文件同名的鏈接到/tmp/abc.txt符號(hào)連接
$ln -s /tmp/abc.txt ~/abc
http://bbs.phpchina.com/viewthread.php?tid=214812
LINUX LS 建立連接的一些問題總結(jié)
http://hi.baidu.com/forrestyx/blog/item/5233d1ef3f5a97232df534dd.html
ls 建立的連接分為 軟連接和硬連接
1.硬鏈接文件和原文件指向同樣的數(shù)據(jù),兩者就像科隆一樣,inode號(hào)也相同,當(dāng)刪除原文件 時(shí),硬鏈接文件仍然存在有效。但硬鏈接文件不同于文件的復(fù)制。應(yīng)該說硬鏈接文件的產(chǎn)生只是原文件所在目錄文件的內(nèi)容發(fā)生改變,原文件的數(shù)據(jù)并沒有得到復(fù) 制,而復(fù)制文件,磁盤上有兩份數(shù)據(jù)。簡(jiǎn)單說,硬鏈接就是一個(gè)類似于別名的概念。當(dāng)原來的名字沒有了,別名照樣可以使用。
認(rèn)識(shí)了硬鏈接究竟是怎么一回事,理解硬鏈接的兩個(gè)限制就容易多了。
(1)不允許給目錄創(chuàng)建硬鏈接;
(2)只有在同一文件系統(tǒng)中的文件之間才能創(chuàng)建鏈接。
2.軟連接和windows系統(tǒng)的快捷方式含義一樣,不做多的解釋。軟鏈接和原文件的inode不同,該文件的內(nèi)容是指向原文件的路徑信息。軟鏈接就好像是指針一樣。而硬鏈接就是引用。
3.思考:對(duì)于文件系統(tǒng)而言,增加一個(gè)硬鏈接文件與增加一個(gè)軟鏈接文件,哪種方式將使用的空間多。 當(dāng)然是軟連接
使用:
1>為了創(chuàng)建到一個(gè)文件的另一個(gè)鏈接(別名),請(qǐng)輸入:
ln -f file1 file2
這會(huì)將 file1 鏈接到新的名稱, file2。如果 file2 不存在,那么會(huì)創(chuàng)建該文件名。如果 file2 已經(jīng)存在了,那么這個(gè)文件會(huì)被替換為指向 file1的一個(gè)鏈接。然后 file1 和 file2 文件名會(huì)指向同一個(gè)文件。對(duì)其中任何一個(gè)的更改都會(huì)出現(xiàn)在另一個(gè)中。如果一個(gè)文件名被 rm 命令刪除,那么該文件并沒有完全被刪除,因?yàn)樗匀灰云渌拿执嬖凇?/div>
2>為了將文件鏈接為另一個(gè)目錄中的相同名字,請(qǐng)輸入:
ln index dir1
這會(huì)將 index 鏈接到新的名稱,dir1/index。
注意:在示例 1 中的 file2 是一個(gè)文件的名稱;在示例 2 中的 dir1 是一個(gè)已經(jīng)存在的目錄。
3>為了將幾個(gè)文件鏈接為另一個(gè)目錄中的名稱,請(qǐng)輸入:
ln file2 dir2/file3 /home/dir1
這會(huì)將 file2 鏈接到新的名稱 /home/dir1/file2;將 dir2/file3 鏈接到新的名稱 /home/dir1/file3。
4>如果想要在 ln 命令中使用模式匹配字符,請(qǐng)輸入:
ln dir1/* .
這會(huì)將 dir1 目錄中的所有文件鏈接到當(dāng)前目錄中, . (點(diǎn)),給他們?cè)?dir1 目錄中同樣的名稱。
注意: 必須在星號(hào)和句點(diǎn)之間輸入一個(gè)空格。
5>為了創(chuàng)建一個(gè)符號(hào)鏈接,輸入:
ln -s /tmp/test test
這會(huì)在當(dāng)前的目錄中創(chuàng)建符號(hào)鏈接 test。 test 文件指向 /tmp/test 文件。如果 /tmp/test 文件已經(jīng)存在了,那么 cat test 命令可以列出其內(nèi)容。
6>如果想要在不指明 TargetFile 參數(shù)的情況下得到相同的結(jié)果,請(qǐng)輸入:
ln -s /tmp/test
@@@@問題: 建立連接之后出現(xiàn)error: 連接層數(shù)太多(采用相對(duì)路徑的原因)
解決: 源和目標(biāo)均采用絕對(duì)路徑
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。