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
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