基本命令學習 -(4)鏈接文件:ln命令
前言
在Windows系統(tǒng)中,快捷方式是指向原始文件的一個鏈接文件,原文件一旦被刪除或剪切到其他地方,會導致鏈接文件失效。
而Linux中的鏈接文件是不同于Windows的快捷方式,Linux的鏈接文件分為軟鏈接與硬鏈接。
硬鏈接
可以把硬鏈接理解為“指向原始文件inode的指針”,系統(tǒng)不為它分配獨立的inode和文件。硬鏈接文件與原文件其實是同一個文件,只是名稱不同。
下面我們舉個例子:
[root@qll ~]# ll -i /etc/passwd
67544416 -rw-r--r--. 1 root root 882 2月 5 11:50 /etc/passwd
使用ln命令在當前目錄下創(chuàng)建/etc/passwd文件的硬鏈接,然后觀察其文件屬性:
[root@qll ~]# ln /etc/passwd passwd_test
[root@qll ~]# ll -i /etc/passwd passwd_test
67544416 -rw-r--r--. 2 root root 882 2月 5 11:50 /etc/passwd
67544416 -rw-r--r--. 2 root root 882 2月 5 11:50 passwd_test
可以看出,這兩個文件名關(guān)聯(lián)的inode號完全相同,都是67544416,所以它們指向的是同一個文件。
觀察上面輸出的第二個字段中的第一位,它們都是“-”,說明文件類型為普通文件,鏈接類型為硬鏈接。
觀察第三個字段,由1變成了2。這個字段叫作“鏈接數(shù)”,它說明有多少個文件名鏈接到同一個文件的inode。
硬鏈接的特點及局限性
幾乎不額外占用空間
硬鏈接只是在目錄中添加一條包含文件名和對應(yīng)inode的記錄,所以它幾乎不會額外占用磁盤容量
只要還有一個文件名引用著文件,文件就不會被真正刪除
由于技術(shù)局限性,不能跨文件系統(tǒng)創(chuàng)建硬鏈接
不能鏈接目錄
軟鏈接
僅僅包含所鏈接文件的路徑名,因此能鏈接目錄,也可以跨越文件系統(tǒng)進行鏈接。但是,當原始文檔被刪除后,鏈接文件也將失效,從這一點上來說與Windows系統(tǒng)中的“快捷方式”具有一樣的性質(zhì)。
還拿 /etc/passwd 文件舉例子,這次創(chuàng)建一個軟鏈接并查看其文件屬性:
[root@qll ~]# ln -s /etc/passwd passwd_soft
[root@qll ~]# ll -i /etc/passwd passwd_soft
67544416 -rw-r--r--. 1 root root 882 2月 5 11:50 /etc/passwd
100663362 lrwxrwxrwx. 1 root root 11 2月 19 17:51 passwd_soft -> /etc/passwd
第一列可以出來,兩個文件名對應(yīng)的inode不同,說明這是兩個文件。
第二列顯示的文件權(quán)限也不一樣,這一點和硬鏈接完全不同。注意文件類型被標記為“l(fā)”,說明這是一個軟鏈接文件。
第三列,觀察兩個文件的鏈接數(shù)量,都是1。說明創(chuàng)建軟鏈接并不增加原文件的鏈接數(shù)。
第六列是文件大小,注意新建的軟鏈接文件大小為11Bytes,也就是字符串“/etc/passwd”的長度。
最后一列顯示軟鏈接文件指向的源文件。
ln 命令
1. 硬鏈接
[root@qll tmp]# ln /tmp/data.txt data2.txt #創(chuàng)建硬鏈接
[root@qll tmp]# rm -rf /tmp/data.txt #刪除源文件
[root@qll tmp]# cat data2.txt #刪除源文件后,鏈接文件仍可以正常使用
2. 軟鏈接
[root@qll tmp]# ln -s /tmp/te.txt /tmp/te2.txt #創(chuàng)建文件軟鏈接
[root@qll tmp]# ln -s /bin testbin #創(chuàng)建目錄軟鏈接
[root@qll tmp]# rm -rf /tmp/te.txt #刪除源文件
[root@qll tmp]# cat /tmp/te2.txt #刪除源后,軟鏈接無法使用
cat: te2.txt: 沒有那個文件或目錄
關(guān)注「開源Linux」加星標,提升IT技能

