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