ln和lndir
1) ln
ln命令用于連接文件或目錄。
ln ../a.txt
在當前目錄創建上一個目錄下的a.txt文件的鏈接,默認是創建硬鏈接,目標目錄如果不給出則默認為當前目錄,文件名默認為原文件名
ln -s a.txt
創建a.txt文件的軟鏈接(符號鏈接)
ln -s a.txt backup/a.txt.back
創建a.txt文件的軟鏈接(符號鏈接)到backup目錄,文件名為a.txt.back
ln ../a.txt ./b.txt ./c.txt backup
創建多個文件的硬鏈接到backup目錄
ln -s -S".back" a.txt b.txt backup
創建多個文件的軟鏈接到backup目錄,文件名不變
ln -s -S".back" ../a.txt ../b.txt .
創建多個文件的軟鏈接到backup目錄 ,并進行備份,使用原文件名+".back"為新文件的文件名
ls執行結果如下:
lrwxrwxrwx 1 sky sky 8 Sep 2 23:19 a.txt -> ../a.txt
lrwxrwxrwx 1 sky sky 5 Sep 2 23:18 a.txt.back -> a.txt
lrwxrwxrwx 1 sky sky 8 Sep 2 23:19 b.txt -> ../b.txt
lrwxrwxrwx 1 sky sky 5 Sep 2 23:18 b.txt.back -> b.txt
ln ../a.txt
ln -f ../a.txt
創建鏈接,然后再次創建同一個軟鏈接覆蓋上一個,如果不加-f 則會報錯"ln: creating hard link '../a.txt': File exists"
注意:
-f 選項有些地方的文章解釋為"強行建立文件或目錄的連接,不論文件或目錄是否存在",這個是不正確的,測試中發現:
ln -f ../c.txt .
ln: accessing `../c.txt': No such file or directory
用ln --help打印出來的幫助中是這樣描述:"-f, --force remove existing destination files",可見只是先刪除原有的文件(可以是普通文件而不必是鏈接文件)然后再創建新的鏈接,相當于新鏈接文件覆蓋舊有文件。
ln -i ../a.txt
如果a.txt文件已經存在,-i參數表示在覆蓋既有文件之前需要先詢問用戶:
ln: replace `./a.txt'? 輸入yes后命令繼續執行。
2) lndir
lndir命令用于創建目錄的符號鏈接,和ln不同的是lndir會自動為源文件目錄下所有的文件和子目錄都建立對應的符號鏈接
lndir ../src ./backup
創建src目錄的軟鏈接到backup目錄,連同該目錄下所有的文件和子目錄都建立對應的符號鏈接