shell 常用命令之一ln

2021-07-08 17:53:31 字數 2084 閱讀 7519

硬鏈結:令格式為「ln 目標 鏈結名稱「

例項:[root@zhangna zhangna1]# touch a.txt

[root@zhangna zhangna1]# vim a.txt

[root@zhangna zhangna1]# ll

總用量 4

-rw-r--r--. 1 root root 41 12月  9 15:41 a.txt

[root@zhangna zhangna1]# ln a.txt aaa.txt                              >a.txt

[root@zhangna zhangna1]# ls

aaa.txt  a.txt

[root@zhangna zhangna1]# vim aaa.txt

[root@zhangna zhangna1]# ll -i a

aaa.txt  a.txt    

[root@zhangna zhangna1]# ll -i a.txt aaa.txt

2232785 -rw-r--r--. 2 root root 41 12月  9 15:41 aaa.txt

2232785 -rw-r--r--. 2 root root 41 12月  9 15:41 a.txt

[root@zhangna zhangna1]#

總結:第一,原檔名和連線檔名都指向相同的實體地址,即原檔案和硬連線檔案是同乙個檔案,兩個檔案占用相同的索引接點(相當於引用計數加1),即有相同的inode。為檔案建立乙個硬連線後,檔案的連線數加1。第二,目錄不能有硬鏈結。第三,不能跨檔案系統,即不能跨分割槽。

[root@zhangna zhangna1]# vim b.txt

[root@zhangna zhangna1]# ln -s b.txt bbb.txt

[root@zhangna zhangna1]# ls

aaa.txt  a.txt  bbb.txt  b.txt

[root@zhangna zhangna1]# cat bbb.txt

1111111111111

22222222222

33333333333

[root@zhangna zhangna1]# ll -i b.txt bbb.txt

2232783 lrwxrwxrwx. 1 root root  5 12月  9 15:51 bbb.txt -> b.txt

2232784 -rw-r--r--. 1 root root 38 12月  9 15:51 b.txt

[root@zhangna zhangna1]#

總結:第一,軟鏈結必須有選項-s;第二b.txt和bbb.txt的inode號是不一樣的,這說明他們完全指向兩個不同的資料庫快;第三,軟鏈結檔案的許可權欄首字元為l,這也是軟鏈區別於普通檔案的地方之一。第四,如果這個時候,我們刪除了source.txt檔案,則軟鏈結softsource就會程式設計紅色字型,這表示警告,這是乙個有問題的檔案,它無法找到它所標識的檔案source.txt了。第五,目錄可以有軟鏈結

目錄為什麼不能由硬鏈結,但是可以有軟鏈結呢?

「linux系統中的硬連線有兩個限制:不能跨越檔案系統和不允許普通使用者對目錄作硬連線。至於第乙個限制,很好理解,而第二個就不那麼好理解了。 我們對任何乙個目錄用ls -l 命令都可以看到其連線數至少是2,這也說明了系統中是存在硬連線的,而且命令ln -d 也可以讓超級使用者對目錄作硬連線,這些都說明了系統限制對目錄進行硬連線只是乙個硬性規定,並不是邏輯上不允許或技術上的不可行。那麼作業系統為什麼要進行限制呢?

如果引入了對目錄的硬連線就有可能在目錄中引入迴圈,那麼在目錄遍歷的時候系統就會陷入無限迴圈當中。也許您會說,符號連線不也可以引入迴圈嗎,那麼為什麼不限制目錄的符號連線呢?原因就在於在linux系統中,每個檔案(目錄也是檔案)都對應著乙個inode結構,其中inode資料結構中包含了檔案型別(目錄,普通檔案,符號連線檔案等等)的資訊,也就是說作業系統在遍歷目錄時可以判斷出符號連線,既然可以判斷出符號連線當然就可以採取一些措施來防範進入過大的迴圈了,系統在連續遇到8個符號連線後就停止遍歷,這就是為什麼對目錄符號連線不會進入死迴圈的原因了。但是對於硬連線,由於作業系統中採用的資料結構和演算法限制,目前是不能防範這種死迴圈的。」

Linux 常用命令 ln

linux ln命令是乙個非常重要命令,它的功能是為某乙個檔案在另外乙個位置建立乙個同步的鏈結。當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每乙個需要的目錄下都放乙個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後在 其它的目錄下用ln命令鏈結 link 它就可以,不必重複的占用...

linux常用命令之ln

ln是linux中又乙個非常重要命令,它的功能是為某乙個檔案在另外乙個位置建立乙個同不的鏈結,這個命令最常用的引數是 s,具體用法是 ln s 原始檔 目標檔案。當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每乙個需要的目錄下都放乙個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後...

Linux常用命令之一

linux常用命令之一 學習目標 1 使用者管理命令 2 基本的檔案和目錄操作命令 一 linux使用者管理命令 1 修改密碼命令 passwd root帳號可無條件的修改任何使用者的密碼 使用者本身也可以用它來修改自己的密碼 如果使用者本身已經設定了密碼,則在修改密碼時需要輸入舊密碼。注 密碼最短...