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