W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
當(dāng)引領(lǐng)大家學(xué)習(xí)完本章所有的硬盤管理知識(shí)之后,劉遄老師終于可以放心大膽地講解Linux系統(tǒng)中的“快捷方式”了。在Windows系統(tǒng)中,快捷方式就是指向原始文件的一個(gè)鏈接文件,可以讓用戶從不同的位置來訪問原始的文件;原文件一旦被刪除或剪切到其他地方后,會(huì)導(dǎo)致鏈接文件失效。但是,這個(gè)看似簡(jiǎn)單的東西在Linux系統(tǒng)中可不太一樣。
在Linux系統(tǒng)中存在硬鏈接和軟連接兩種文件。
硬鏈接(hard link):可以將它理解為一個(gè)“指向原始文件inode的指針”,系統(tǒng)不為它分配獨(dú)立的inode和文件。所以,硬鏈接文件與原始文件其實(shí)是同一個(gè)文件,只是名字不同。我們每添加一個(gè)硬鏈接,該文件的inode連接數(shù)就會(huì)增加1;而且只有當(dāng)該文件的inode連接數(shù)為0時(shí),才算徹底將它刪除。換言之,由于硬鏈接實(shí)際上是指向原文件inode的指針,因此即便原始文件被刪除,依然可以通過硬鏈接文件來訪問。需要注意的是,由于技術(shù)的局限性,我們不能跨分區(qū)對(duì)目錄文件進(jìn)行鏈接。
軟鏈接(也稱為符號(hào)鏈接[symbolic link]):僅僅包含所鏈接文件的路徑名,因此能鏈接目錄文件,也可以跨越文件系統(tǒng)進(jìn)行鏈接。但是,當(dāng)原始文件被刪除后,鏈接文件也將失效,從這一點(diǎn)上來說與Windows系統(tǒng)中的“快捷方式”具有一樣的性質(zhì)。
ln命令
ln命令用于創(chuàng)建鏈接文件,格式為“l(fā)n [選項(xiàng)] 目標(biāo)”,其可用的參數(shù)以及作用如表6-6所示。在使用ln命令時(shí),是否添加-s參數(shù),將創(chuàng)建出性質(zhì)不同的兩種“快捷方式”。因此如果沒有扎實(shí)的理論知識(shí)和實(shí)踐經(jīng)驗(yàn)做鋪墊,盡管能夠成功完成實(shí)驗(yàn),但永遠(yuǎn)不會(huì)明白為什么會(huì)成功。
表6-6 ln命令中可用的參數(shù)以及作用
參數(shù) | 作用 |
---|---|
-s | 創(chuàng)建“符號(hào)鏈接”(如果不帶-s參數(shù),則默認(rèn)創(chuàng)建硬鏈接) |
-f | 強(qiáng)制創(chuàng)建文件或目錄的鏈接 |
-i | 覆蓋前先詢問 |
-v | 顯示創(chuàng)建鏈接的過程 |
為了更好地理解軟鏈接、硬鏈接的不同性質(zhì),接下來創(chuàng)建一個(gè)類似于Windows系統(tǒng)中快捷方式的軟鏈接。這樣,當(dāng)原始文件被刪除后,就無法讀取新建的鏈接文件了。
[root@linuxprobe ~]# echo "Welcome to linuxprobe.com" > readme.txt
[root@linuxprobe ~]# ln -s readme.txt readit.txt
[root@linuxprobe ~]# cat readme.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# cat readit.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# ls -l readme.txt
-rw-r--r-- 1 root root 26 Jan 11 00:08 readme.txt
[root@linuxprobe ~]# rm -f readme.txt
[root@linuxprobe ~]# cat readit.txt
cat: readit.txt: No such file or directory
接下來針對(duì)一個(gè)原始文件創(chuàng)建一個(gè)硬鏈接,即相當(dāng)于針對(duì)原始文件的硬盤存儲(chǔ)位置創(chuàng)建了一個(gè)指針,這樣一來,新創(chuàng)建的這個(gè)硬鏈接就不再依賴于原始文件的名稱等信息,也不會(huì)因?yàn)樵嘉募膭h除而導(dǎo)致無法讀取。同時(shí)可以看到創(chuàng)建硬鏈接后,原始文件的硬盤鏈接數(shù)量增加到了2。
[root@linuxprobe ~]# echo "Welcome to linuxprobe.com" > readme.txt
[root@linuxprobe ~]# ln readme.txt readit.txt
[root@linuxprobe ~]# cat readme.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# cat readit.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# ls -l readme.txt
-rw-r--r-- 2 root root 26 Jan 11 00:13 readme.txt
[root@linuxprobe ~]# rm -f readme.txt
[root@linuxprobe ~]# cat readit.txt
Welcome to linuxprobe.com
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: