天天看點

linux中ln指令的使用方法

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 

繼續閱讀