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