歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux學習筆記--ln命令(鏈接命令)

Linux學習筆記--ln命令(鏈接命令)

日期:2017/3/1 12:16:38   编辑:關於Linux

ln:英文名link,鏈接的意思。

Linux 系統中有軟鏈接和硬鏈接兩種特殊的“文件”。

硬鏈接特征:

1) 硬鏈接文件跟源文件擁有相同的i(inode)節點和存儲block塊,
   它們可以看作是同一個文件。
2) 可通過i節點進行識別(i節點相同)。
3) 鏈接文件和源文件必須在相同的分區,不能跨分區。
3) 不能針對目錄創建硬鏈接。
   (這個雖然Linux ln命令幫助說明裡說可以用"ln -d"創建目錄的硬鏈接,
   但是本人實測不可行,本人在網上搜索出來了一段詳細解釋說明,
   具體說明請看文章最下邊的"特別說明"。)
4) 修改任意一個文件,另外一個文件的內容都會改變。
5) 當源文件被刪除時,硬鏈接文件還可以正常使用。

軟鏈接特征:

1) 軟鏈接文件作用跟windows系統的快捷方式作用相同。
2) 軟鏈接擁有自己的i節點和存儲block塊,
   但是此數據塊中保存的信息是源文件的i節點和文件名信息,
   並不會保存實際的文件數據內容。
3) 用"ll"命令查看時,軟鏈接文件前面都是"lrwxrwxrwx",
   其中第一位的字母"l"即表示此文件為軟鏈接文件,
   軟鏈接文件的真實權限取決於源文件的權限。
4) 修改任意一個文件,另外一個文件的內容都會改變。
5) 當源文件被刪除時,軟鏈接文件將不能使用。

1. 命令格式:

ln [選項] 源文件或目錄 目標文件或目錄

2. 常用選項:

"ln -b" 如果目標目錄中已經有同名的文件,那麼在覆蓋之前先進行備份
"ln -f" 如果目標目錄中已經有同名的文件,無需提示,直接覆蓋
"ln -i" 人機交互,如果目標目錄中已經有同名的文件,則提示是否進行覆蓋
"ln -n" 把軟鏈接視為一般目錄(說明:范例中我會詳細解釋)
"ln -s" 創建軟鏈接
"ln -v" 詳細顯示操作進行的步驟。(v為verbose的意思)

3. 常用范例:

1) 創建一個硬鏈接文件。

這裡寫圖片描述

2) 創建一個軟鏈接文件。

這裡寫圖片描述

3) 創建一個硬鏈接文件,如果目標目錄中已經有同名文件,覆蓋前先進行備份。

這裡寫圖片描述<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:sql;"> 4) 給目錄創建一個軟鏈接。

這裡寫圖片描述

5) "ln -n" 命令實例說明。

這裡寫圖片描述

6) 創建軟鏈接失敗實例說明

這裡寫圖片描述

特別說明:

1) 創建軟鏈接時,如果軟鏈接文件跟源文件不在同一個目錄,那麼源文件地址必須為絕對路徑,否則創建出來的軟鏈接無法使用。

2) 不能針對文件創建硬鏈接。

"linux系統中的硬連接有兩個限制:不能跨越文件系統和不允許普通用戶對目錄作硬連接。至於第一個限制,很好理解,而第二個就不那麼好理解了。 我們對任何一個目錄用ls -l 命令都可以看到其連接數至少是2,這也說明了系統中是存在硬連接的,而且命令ln -d 也可以讓超級用戶對目錄作硬連接,這些都說明了系統限制對目錄進行硬連接只是一個硬性規定,並不是邏輯上不允許或技術上的不可行。那麼操作系統為什麼要進行限制呢?如果引入了對目錄的硬連接就有可能在目錄中引入循環,那麼在目錄遍歷的時候系統就會陷入無限循環當中。也許您會說,符號連接不也可以引入循環嗎,那麼為什麼不限制目錄的符號連接呢?原因就在於在linux系統中,每個文件(目錄也是文件)都對應著一個inode結構,其中inode數據結構中包含了文件類型(目錄,普通文件,符號連接文件等等)的信息,也就是說操作系統在遍歷目錄時可以判斷出符號連接,既然可以判斷出符號連接當然就可以采取一些措施來防范進入過大的循環了,系統在連續遇到8個符號連接後就停止遍歷,這就是為什麼對目錄符號連接不會進入死循環的原因了。但是對於硬連接,由於操作系統中采用的數據結構和算法限制,目前是不能防范這種死循環的。" (此解答是在網上找到的,因為無法找到文章的出處以及原作者信息,故無法標識原作者信息,如有知情者,可速與我聯系,我會及時加入作者信息。謝謝)
Copyright © Linux教程網 All Rights Reserved