ln命令可以生成軟鏈接和硬鏈接,也可叫做符號鏈接和實體鏈接。 有興趣深入理解的可以查閱相關(guān)文檔,一般的讀者只需記住以下幾點即可:
不管是軟鏈接還是硬鏈接都不會額外增加磁盤空間(雖然實際情況可能會多占用1個block)
軟鏈接會占用1個inode,而硬鏈接不占用inode(想深究的可以自行查閱,不深究的可以直接略過)
硬鏈接不能跨文件系統(tǒng),不能鏈接目錄(可以得出軟鏈接是可以的)。
為了更好理解舉例如下:
硬鏈接:假設(shè)在當(dāng)前目錄有文件名為linuxidc.jpg(大小為1M),現(xiàn)在為它創(chuàng)建硬鏈接linuxidc-h.jpg,那么當(dāng)前目錄就有了2個文件,這2個文件除了名字不一樣其他的一模一樣,但是占用的實際磁盤空間還是只有1M,改變?nèi)魏我粋€文件的內(nèi)容另一個文件也會跟著改變;
當(dāng)你只刪除linuxidc.jpg或只刪除linuxidc-h.jpg時,文件內(nèi)容都還在磁盤,只有同時刪除了這2個文件時才會真的徹底刪除該1M的占用。
軟鏈接:假設(shè)在當(dāng)前目錄有文件名為linuxidc.jpg(大小為1M),現(xiàn)在為它創(chuàng)建軟鏈接linuxidc-s.jpg,那么當(dāng)前目錄就有了2個文件,linuxidc-s.jpg是一個全新的文件大小為7bytes(等于linuxidc.jpg名稱占用的字節(jié)數(shù)),它指向linuxidc.jpg(學(xué)過C語言的指針理解起來會很快);
改變?nèi)魏我粋€文件的內(nèi)容另一個文件也會跟著改變,刪除linuxidc-s.jpg不影響linuxidc.jpg,但是刪除了linuxidc.jpg那么tmp-s.jpg就會失效因為它找不到它指向的文件了 。
我相信通過上面例子的解釋,你應(yīng)該可以自己辨別在哪些情況選擇哪種鏈接方式了吧。
###bash###
#常用命令選項
#默認(rèn)硬鏈接
-s #軟鏈接
-f #如果目標(biāo)文件存在時,直接移除后再創(chuàng)建(危險)
例子:
###bash###
#為/root/linuxidc.jpg生成軟鏈接
ln -s /root/linuxidc.jpg /tmp/linuxidc.jpg
#為/root/dir目錄生成軟鏈接
ln -s /root/dir /linuxidc/dir1
#為/root/linuxidc.jpg生成硬鏈接
ln /root/linuxidc.jpg /tmp/linuxidc.jpg
注意:
###bash###
#假設(shè)文件夾aaa下有10個文件
ln -s aaa bbb #生成aaa的軟鏈接bbb
#未來有一天當(dāng)你想要刪除軟鏈接bbb
#只要敲如下命令
rm -f bbb
#千萬別大意敲如下命令,這樣會把aaa里面的10個文件刪除掉
rm -rf bbb/ #在使用軟連接過程中,請使用絕對路徑,如果使用了想對路徑,可能會出現(xiàn)連接數(shù)過多錯誤。
責(zé)任編輯:ct
評論