ln 指令
用途 : 連結檔案。
文法
1>将某個檔案連結到一個檔案上
ln [ -f | -n] [ -s ] SourceFile [ TargetFile ]
2>将一個或多個檔案連結到一個目錄上
ln [ -f | -n] [ -s ] SourceFile … TargetDirectory
描述
ln 指令将在 SourceFile 參數中指定的檔案連結到在 TargetFile 參數中指定的檔案,或将其連結到在 TargetDirectory 參數中指定的另一個目錄中的檔案。
在預設情況下,ln 指令會建立硬連結。如果需要使用 ln 指令來建立符号連結,請指明 -s 标志。
符号連結是指向檔案的一個間接指針;它的目錄項中包含了它所連結的檔案名。符号連結可能會跨越檔案系統,可能指向目錄。
如果正在将某個檔案連結到新的名字,那麼隻能列出一個檔案。如果連結到一個目錄,那麼可以列出多個檔案。
TargetFile 參數是可選的。
如果不指定目标檔案,ln 指令會在目前的目錄中建立一個新的檔案。新的檔案繼承了指定在 SourceFile 參數中的檔案名。
注意:
如果不使用 -s 标志,就不能在檔案系統之間連結檔案。
如果 TargetDirectory 已經是連結到目錄上的一個符号連結,那麼 ln 指令将現有的目标視為檔案。
這意味着,類似于 ln -fs somepath/lname symdir 的指令不會遵循現有的 symdir 符号連結,作為代替,它會建立一個從 somepath/lname 到 symdir 的新的符号連結。
參數
-f 促使 ln 指令替換掉任何已經存在的目的路徑。如果目的路徑已經存在,而沒有指定 -f 标志,ln 指令不會建立新的連結,而是向标準錯誤寫一條診斷消息并繼續連結剩下的 SourceFiles。
-n 指定,如果連結是一個現有的檔案,那麼不要覆寫檔案的内容。 -f 标志重設了這個标志。這是預設的行為。
-s 促使 ln 指令建立符号連結。符号連結中包含了它所連結的檔案的名字。當對連結執行打開操作的時候,會使用到引用檔案。對符号連結的 stat 調用會傳回連結的目标檔案;必須完成lstat 調用來擷取連結的資訊。可以使用 readlink 調用來讀取符号連結的内容。符号連結可能跨越檔案系統,指向目錄。
注意:當為 -s 标志指定 SourceFile 參數的時候,必須使用絕對路徑。如果沒有指明絕對路徑,那麼當 SourceFile 和 TargetFile 參數位于不同的目錄中的時候,可能會發生意外的結果。在建立符号連結之前,不需要存在源檔案。
退出狀态
此指令傳回以下的退出值:
0 所有指定的檔案都成功連結上了。
>0 出現一次錯誤。
示例
1>為了建立到一個檔案的另一個連結(别名),請輸入:
ln -f file1 file2
這會将 file1 連結到新的名稱, file2。如果 file2 不存在,那麼會建立該檔案名。如果 file2 已經存在了,那麼這個檔案會被替換為指向 file1的一個連結。然後 file1 和 file2 檔案名會指向同一個檔案。對其中任何一個的更改都會出現在另一個中。如果一個檔案名被 rm 指令删除,那麼該檔案并沒有完全被删除,因為它仍然以其它的名字存在。
2>為了将檔案連結為另一個目錄中的相同名字,請輸入:
ln index dir1
這會将 index 連結到新的名稱,dir1/index。
注意:在示例 1 中的 file2 是一個檔案的名稱;在示例 2 中的 dir1 是一個已經存在的目錄。
3>為了将幾個檔案連結為另一個目錄中的名稱,請輸入:
ln file2 dir2/file3 /home/dir1
這會将 file2 連結到新的名稱 /home/dir1/file2;将 dir2/file3 連結到新的名稱 /home/dir1/file3。
4>如果想要在 ln 指令中使用模式比對字元,請輸入:
ln dir1/* .
這會将 dir1 目錄中的所有檔案連結到目前目錄中, . (點),給他們在 dir1 目錄中同樣的名稱。
注意: 必須在星号和句點之間輸入一個空格。
5>為了建立一個符号連結,輸入:
ln -s /tmp/test test
這會在目前的目錄中建立符号連結 test。 test 檔案指向 /tmp/test 檔案。如果 /tmp/test 檔案已經存在了,那麼 cat test 指令可以列出其内容。
6>如果想要在不指明 TargetFile 參數的情況下得到相同的結果,請輸入:
ln -s /tmp/test
本文來源于時光漂流瓶 http://www.9usb.net , 原文位址: http://www.9usb.net/200812/linux-ln.html