ln 命令
用途 : 鏈接文件。
語法
1>將某個文件鏈接到一個文件上
ln [ -f | -n] [ -s ] SourceFile [ TargetFile ]
2>將一個或多個文件鏈接到一個目錄上
ln [ -f | -n] [ -s ] SourceFile ... TargetDirectory
描述
ln 命令將在 SourceFile 參數(shù)中指定的文件鏈接到在 TargetFile 參數(shù)中指定的文件,或?qū)⑵滏溄拥皆?TargetDirectory 參數(shù)中指定的另一個目錄中的文件。
在缺省情況下,ln 命令會創(chuàng)建硬鏈接。如果需要使用 ln 命令來創(chuàng)建符號鏈接,請指明 -s 標(biāo)志。
符號鏈接是指向文件的一個間接指針;它的目錄項中包含了它所鏈接的文件名。符號鏈接可能會跨越文件系統(tǒng),可能指向目錄。
如果正在將某個文件鏈接到新的名字,那么只能列出一個文件。如果鏈接到一個目錄,那么可以列出多個文件。
TargetFile 參數(shù)是可選的。
如果不指定目標(biāo)文件,ln 命令會在當(dāng)前的目錄中創(chuàng)建一個新的文件。新的文件繼承了指定在 SourceFile 參數(shù)中的文件名。
注意:
如果不使用 -s 標(biāo)志,就不能在文件系統(tǒng)之間鏈接文件。
如果 TargetDirectory 已經(jīng)是鏈接到目錄上的一個符號鏈接,那么 ln 命令將現(xiàn)有的目標(biāo)視為文件。
這意味著,類似于 ln -fs somepath/lname symdir 的命令不會遵循現(xiàn)有的 symdir 符號鏈接,作為代替,它會創(chuàng)建一個從 somepath/lname 到 symdir 的新的符號鏈接。
參數(shù)
-f 促使 ln 命令替換掉任何已經(jīng)存在的目的路徑。如果目的路徑已經(jīng)存在,而沒有指定 -f 標(biāo)志,ln 命令不會創(chuàng)建新的鏈接,而是向標(biāo)準(zhǔn)錯誤寫一條診斷消息并繼續(xù)鏈接剩下的 SourceFiles。
-n 指定,如果鏈接是一個現(xiàn)有的文件,那么不要覆蓋文件的內(nèi)容。 -f 標(biāo)志重設(shè)了這個標(biāo)志。這是缺省的行為。
-s
促使 ln 命令創(chuàng)建符號鏈接。符號鏈接中包含了它所鏈接的文件的名字。當(dāng)對鏈接執(zhí)行打開操作的時候,會使用到引用文件。對符號鏈接的 stat
調(diào)用會返回鏈接的目標(biāo)文件;必須完成lstat 調(diào)用來獲取鏈接的信息。可以使用 readlink
調(diào)用來讀取符號鏈接的內(nèi)容。符號鏈接可能跨越文件系統(tǒng),指向目錄。
注意:當(dāng)為 -s 標(biāo)志指定 SourceFile 參數(shù)的時候,必須使用絕對路徑。如果沒有指明絕對路徑,那么當(dāng) SourceFile 和 TargetFile 參數(shù)位于不同的目錄中的時候,可能會發(fā)生意外的結(jié)果。在創(chuàng)建符號鏈接之前,不需要存在源文件。
退出狀態(tài)
此命令返回以下的退出值:
0 所有指定的文件都成功鏈接上了。
0 出現(xiàn)一次錯誤。
示例
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
文件
/usr/bin/ln 包含了 ln 命令。