ln (Unix)
ln (Unix)
ln 是用來為檔案建立連結的標準 Unix 命令。
連結檔案
通過連結檔案,不同的檔名可以指向同一個檔案。
ln 可以建立兩種類型的連結檔案:
參數
- 原始檔:指定連結的原始檔。如果使用-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