在linux中[ln]這個命令用來創建連接文件。
共有兩種連接文件:一種是類似與Windows的快捷方式(軟鏈接),另一種就是通過文件系統的inode來產生的新的文件名(硬鏈接)。
這里解釋下什么叫inode。
我們在講解[ls]命令的時候,說過[-i]這個選項可以查看到該文檔的inode。

其中最前面一列的數字就表示inode,它保存了該文檔很多信息,其中有一項就是該文件真正內容的指向。
在linux的文件系統中,我們上面看到的Desktop,Documents這些個文件夾中其實並沒有真正的保存數據,而只是一個文件檔的名字而已。
真正的數據是保存在block中。
這個文件檔的inode中記錄了該文檔的很多信息,包括指向真實保存數據的block信息。
◇硬鏈接
由於硬鏈接有不可以垮文件系統,不能為目錄創建等限制,因此使用較少。
創建命令 ln 文件名 新連接名
實例:
[fuwh@localhost stu]$ ll -i 總用量 4 391838 -rw-rw-r--. 1 fuwh fuwh 58 7月 24 19:11 test.txt [fuwh@localhost stu]$ ln test.txt test2.txt [fuwh@localhost stu]$ ll -i 總用量 8 391838 -rw-rw-r--. 2 fuwh fuwh 58 7月 24 19:11 test2.txt 391838 -rw-rw-r--. 2 fuwh fuwh 58 7月 24 19:11 test.txt [fuwh@localhost stu]$
可以看到這時候,兩個文檔的inode是一樣的,而且連接數也從1變成了2。
這時候,不論修改哪個文檔,內容都會一起變。因為他們都是指向同一個block。
但是當你刪掉了其中一個文檔的時候,是對另一個沒有影響。
◇軟鏈接
這個就類似於Windows的快捷方式,使用較多。
使用方式:ln [-sf] 源文件 目標文件
選項:-s 就表示創建軟鏈接了,不加的話就是創建硬鏈接
-f 表示存在的時候刪除在創建
實例:

可以看到,新創建的軟連接和源文件的inode是不一樣的。
需要注意的是,新鏈接的大小為5,這剛好就是源文件名的5個字符。而他的名字中,也正確的顯示了指向哪個文件。
因為在軟鏈接中,只是保存了指向的文件的名字而已。當編輯軟鏈接這個文件的時候,首先通過指向的文件,找到指向的文件,
然后通過指向文件的inode來找到實體存放的inode,所以我們編輯軟鏈接文件的時候,實際上修改的就是真是存放的block中的內容。
