ln (Unix)

ln (Unix)

ln 是用來為檔案建立連結的標準 Unix 命令

連結檔案

通過連結檔案,不同的檔名可以指向同一個檔案。

ln 可以建立兩種類型的連結檔案:

  1. 符號連結,也稱軟連結,這是指向另一個不同路徑檔案的一個符號路徑。
  2. 硬連結,這是一個儲存了連結建立時它所指向檔案的實際數據的檔案副本。

參數

  • 原始檔:指定連結的原始檔。如果使用-s選項建立符號連結,則「原始檔」可以是檔案或者目錄。建立硬連結時,則「原始檔」參數只能是檔案;
  • 目標文件:指定原始檔的目標連結檔案。

從以下命令範例可看出兩種連結檔案的區別:

$ echo '文件内容' > oringinal.file
$ ln oringinal.file hardlink.file
$ ln -s oringinal.file softlink.file
$ cat softlink.file
文件内容
$ rm oringinal.file
$ cat softlink.file
cat: softlink.file: 没有那个文件或目录
$ cat hardlink.file
文件内容

原始檔案被刪除後,符號連結將失效,訪問軟連結時,會提示找不到檔案,但硬連結檔案還在,而且還儲存有原始檔案的內容。按照inode的設計理論,硬連結的檔案和原始檔案對應相同的inode號,共用同一個數據儲存區,而符號連結是一個獨立的特殊檔案,有自己的檔案inode號,而內容為指向原始檔案的路徑。

規範

單一Unix規範(SUS)規定了建立一個原始檔案(或目錄)的連結(不管是符號連結還是硬連結)檔案時的行為。

ln 可以用兩種方式使用。第一種,是第一個參數指定原始檔案,第二個參數指定連結檔案;第二種,指定多於兩個選項,應該先是多個原始檔案(或目錄),最後指定一個目錄,所有原始檔案(或目錄)的連結將會被建立於最後指定的目錄里。在後一種方式中,ln 命令的行為和具體的程式實現有關。

ln 和標準的 unlink()link() 函數執行完全一致的操作,詳細的 ln 命令用法,可以執行以下兩個命令查詢:

 $ man ln
 $ ln --help

參見

外部連結

手冊頁