1) -s 軟鏈接(符號鏈接)
2) -v 顯示詳細的處理過程
3) -d 允許超級用戶制作目錄的硬鏈接
用法:
#ln --help
用法:ln [選項]... 目標 [鏈接名]
或:ln [選項]... 目標... 目錄
或:ln [選項]... --target-directory=目錄 目標...
創建連至指定<目標>的鏈接,並可選擇性指定<鏈接名>。
如果沒有指定<鏈接名>,會在目前的目錄中創建一個和<目標>名稱一樣的鏈接。
當使用第二種格式而<目標>多於一個時,最后的參數必須是目錄;這樣會在指定的
<目錄>中分別創建連至每個<目標>的鏈接。默認會創建硬鏈接,若
使用 --symbolic 選項則創建符號鏈接。當創建硬鏈接時,每個<目標>都必須存
在。
長選項必須用的參數在使用短選項時也是必須的。
--backup[=CONTROL] make a backup of each existing destination file
-b like --backup but does not accept an argument
-d, -F, --directory allow the superuser to attempt to hard link
directories (note: will probably fail due to
system restrictions, even for the superuser)
-f, --force remove existing destination files
-n, --no-dereference 如果目的地是一個鏈接至某目錄的符號鏈接,會將
該符號鏈接當作一般文件處理,先將該已存在的
鏈接備份或刪除
-i, --interactive 確認是否刪除目的地文件
-s, --symbolic 創建符號鏈接而不是硬鏈接
-S, --suffix=后綴 自行指定備份文件的<后綴>
--target-directory=目錄 在指定<目錄>中創建鏈接
-v, --verbose 鏈接前先印出每個文件的名稱
--help 顯示此幫助信息並離開
--version 顯示版本信息並離開
備份文件的后綴為‘~’,除非以 --suffix 選項或是 SIMPLE_BACKUP_SUFFIX
環境變量指定。版本控制的方式可透過 --backup 選項或 VERSION_CONTROL 環境
變量來選擇。以下是可用的變量值:
none, off 不會進行備份 (即使使用了 --backup 選項)
numbered, t 備份文件會加上數字
existing, nil 若有數字的備份文件已經存在則使用數字,否則使用普通方式備份
simple, never 永遠使用普通方式備份
刪除鏈接時,直接用rm命令
例:
添加
ln -s /usr/jboss4.0.5.GA/ jboss
刪除
rm jboss
-f 建立時,將同檔案名刪除.
-i 刪除前進行詢問.
ln -s abc cde 建立abc 的軟連接
ln abc cde 建立abc的硬連接,
ln -s findDir finDir_link 為目錄創建軟連接 當源文件失效后,鏈接文件將失效。
2)[root@localhost Documents]# ln newFile newLink 給文件創建硬鏈接
[root@localhost Documents]# ll 總用量 0 drwxr-xr-x. 2 root root 51 5月 21 07:10 NoPdir drwxr-xr-x. 2 root root 51 5月 21 07:09 Pdir [root@localhost Documents]# touch newFile //創建文件 [root@localhost Documents]# ln -s newFile newLink_s //創建文件符號鏈接 [root@localhost Documents]# ln newFile newLink //創建文件硬鏈接 [root@localhost Documents]# ln -s Pdir PdirLink_s //創建目錄符號鏈接 [root@localhost Documents]# ln Pdir PdirLink //不允許創建目錄硬鏈接 ln: "Pdir": 不允許將硬鏈接指向目錄 [root@localhost Documents]# ll 總用量 0 -rw-r--r--. 2 root root 0 5月 27 06:18 newFile -rw-r--r--. 2 root root 0 5月 27 06:18 newLink lrwxrwxrwx. 1 root root 7 5月 27 06:19 newLink_s -> newFile drwxr-xr-x. 2 root root 51 5月 21 07:10 NoPdir drwxr-xr-x. 2 root root 51 5月 21 07:09 Pdir lrwxrwxrwx. 1 root root 4 5月 27 06:19 PdirLink_s -> Pdir
創建的文件硬鏈接newLink與源文件newFile具有相同的權限,並且沒有箭頭。而文件軟鏈接newLink_s的權限要多得多,而且有指向符號。
3)綜合實例,比較硬鏈接與符號鏈接的差別
[root@localhost Documents]# cat >newFile <<EOF > This is original file! > > I'm test the hard link and the symbol link! > EOF //到這里新建一個文件 總用量 4 [root@localhost Documents]# ln -s newFile newFile_link_s [root@localhost Documents]# ln newFile newFile_link [root@localhost Documents]# rm newFile //刪除源文件 rm:是否刪除普通文件 "newFile"?y [root@localhost Documents]# ll 總用量 4 -rw-r--r--. 1 root root 68 5月 27 06:30 newFile_link lrwxrwxrwx. 1 root root 7 5月 27 06:31 newFile_link_s -> newFile drwxr-xr-x. 2 root root 51 5月 21 07:10 NoPdir drwxr-xr-x. 2 root root 51 5月 21 07:09 Pdir [root@localhost Documents]# cat newFile_link //查看硬鏈接,完全不受影響,但符號鏈接已經失效 This is original file! I'm test the hard link and the symbol link! [root@localhost Documents]# cat >newFile <<EOF 再新建一個文件newFile > The Second Test! > > EOF [root@localhost Documents]# ll 總用量 8 -rw-r--r--. 1 root root 18 5月 27 06:33 newFile -rw-r--r--. 1 root root 68 5月 27 06:30 newFile_link lrwxrwxrwx. 1 root root 7 5月 27 06:31 newFile_link_s -> newFile //符號鏈接已經恢復 drwxr-xr-x. 2 root root 51 5月 21 07:10 NoPdir drwxr-xr-x. 2 root root 51 5月 21 07:09 Pdir [root@localhost Documents]# cat newFile_link //分別查看符號鏈接和硬鏈接發現硬鏈接內容不變,符號鏈接內容變為新建的文件內容了。 This is original file! I'm test the hard link and the symbol link! [root@localhost Documents]# cat newFile_link_s The Second Test!
4)[root@localhost Documents]# ln newFile ln_dir 在另一個目錄創建同名硬鏈接
[root@localhost Documents]# mkdir ln_dir [root@localhost Documents]# ln newFile ln_dir [root@localhost Documents]# cd ln_dir [root@localhost ln_dir]# ll 總用量 4 -rw-r--r--. 2 root root 18 5月 27 06:33 newFile
修改newFile硬鏈接目錄文件,也會導致源文件被修改。
5)[root@localhost Documents]# ln -sv a.c ./Pdir 在指定目錄創建鏈接
[root@localhost Documents]# touch a.c [root@localhost Documents]# ll 總用量 0 -rw-r--r--. 1 root root 0 5月 27 07:03 a.c lrwxrwxrwx. 1 root root 6 5月 27 06:58 No_link -> NoPdir drwxr-xr-x. 2 root root 51 5月 21 07:10 NoPdir drwxr-xr-x. 2 root root 51 5月 21 07:09 Pdir [root@localhost Documents]# ln -sv a.c ./Pdir "./Pdir/a.c" -> "a.c" [root@localhost Documents]# ln -sv a.c ./Pdir/b.c "./Pdir/b.c" -> "a.c" [root@localhost Documents]# ln -v a.c ./Pdir/c.c "./Pdir/c.c" => "a.c" [root@localhost Documents]# ls -l Pdir 總用量 8 lrwxrwxrwx. 1 root root 3 5月 27 07:04 a.c -> a.c lrwxrwxrwx. 1 root root 3 5月 27 07:04 b.c -> a.c -rw-r--r--. 2 root root 0 5月 27 07:03 c.c -r--r--r--. 1 root root 0 5月 19 04:16 find -rw-r--r--. 1 root root 85 5月 19 04:25 t3.txt --w-------. 1 root root 0 5月 15 18:34 uText -rw-r--r--. 1 root root 105 5月 21 06:35 vf
(5)其他:
擴展知識:
Linux具有為一個文件起多個名字的功能,稱為鏈接。被鏈接的文件可以存放在相同的目錄下,但是必須有不同的文件名,而不用在硬盤上為同樣的數據重復備份。另外,被鏈接的文件也可以有相同的文件名,但是存放在不同的目錄下,這樣只要對一個目錄下的該文件進行修改,就可以完成對所有目錄下同名鏈接文件的修改。對於某個文件的各鏈接文件,我們可以給它們指定不同的存取權限,以控制對信息的共享和增強安全性。 文件鏈接有兩種形式,即硬鏈接和符號鏈接。
硬鏈接:
建立硬鏈接時,在另外的目錄或本目錄中增加目標文件的一個目錄項,這樣,一個文件就登記在多個目錄中。
創建硬鏈接后,己經存在的文件的I節點號(Inode)會被多個目錄文件項使用。一個文件的硬鏈接數可以在目錄的長列表格式的第二列中看到,無額外鏈接的文件的鏈接數為l。 在默認情況下,ln命令創建硬鏈接。ln命令會增加鏈接數,rm命令會減少鏈接數。一個文件除非鏈接數為0,否則不會從文件系統中被物理地刪除。
對硬鏈接有如下限制:
1.不能對目錄文件做硬鏈接。
2.不能在不同的文件系統之間做硬鏈接。就是說,鏈接文件和被鏈接文件必須位於同一個文件系統中。
軟鏈接:
符號鏈接也稱為軟鏈接,是將一個路徑名鏈接到一個文件。這些文件是一種特別類型的文件。事實上,它只是一個文本文件,其中包含它提供鏈接的另一個文件的路徑名,如圖中虛線箭頭所示。另一個文件是實際包含所有數據的文件。所有讀、寫文件內容的命令被用於符號鏈接時,將沿着鏈接方向前進來訪問實際的文件。
與硬鏈接不同的是,符號鏈接確實是一個新文件,當然它具有不同的I節點號;而硬鏈接並沒有建立新文件。 符號鏈接沒有硬鏈接的限制,可以對目錄文件做符號鏈接,也可以在不同文件系統之間做符號鏈接。
用ln -s命令建立符號鏈接時,源文件最好用絕對路徑名。這樣可以在任何工作目錄下進行符號鏈接。而當源文件用相對路徑時,如果當前的工作路徑與要創建的符號鏈接文件所在路徑不同,就不能進行鏈接。 符號鏈接保持了鏈接與源文件或目錄之間的區別: 刪除源文件或目錄,只刪除了數據,不會刪除鏈接。一旦以同樣文件名創建了源文件,鏈接將繼續指向該文件的新數據。 在目錄長列表中,符號鏈接作為一種特殊的文件類型顯示出來,其第一個字母是l。 符號鏈接的大小是其鏈接文件的路徑名中的字節數。
2. 軟鏈接與硬鏈接的區別(通俗):
硬鏈接可認為是一個文件擁有兩個文件名; 而軟鏈接則是系統新建一個鏈接文件,此文件指向其所要指的文件
3. 軟鏈接與硬鏈接的區別(講解):
Linux 軟連接與硬連接
連接有軟連接和硬連接(hard link)之分的,軟連接(symbolic link)又叫符號連接。符號連接相當於Windows下的快捷方式。
不可以對文件夾建立硬連接的,我們通常用的還是軟連接比較多。
eg:
ln -s source dist # 建立軟連接
ln source dist # 建立硬連接
軟鏈接實際上只是一段文字,里面包含着它所指向的文件的名字,系統看到軟鏈接后自動跳到對應的文件位置處進行處理;相反,硬聯接為文件開設一個新的目錄 項,硬鏈接與文件原有的名字是平權的,在Linux看來它們是等價的。由於這個原因,硬鏈接不能連接兩個不同文件系統上的文件。
(1)軟連接可以 跨文件系統 ,硬連接不可以 。實踐的方法就是用共享文件把windows下的 aa.txt文本文檔連接到linux下/root目錄 下 bb,cc . ln -s aa.txt /root/bb 連接成功 。ln aa.txt /root/bb 失敗 。
(3)軟連接可以對一個不存在的文件名進行連接 。
(4)軟連接可以對目錄進行連接。
硬鏈接:可以刪除源文件,鏈接文件可以正常打開
(1)軟連接可以 跨文件系統 ,硬連接不可以 。
實踐的方法就是用共享文件把windows下的 aa.txt文本文檔連接到linux下/root目錄 下 bb,cc . ln -s aa.txt
/root/bb 連接成功 。ln aa.txt /root/bb 失敗 。
(2)關於 I節點的問題 。硬連接不管有多少個,都指向的是同一個I節點,會把 結點連接數增加 ,只要結點的連接數不是 0,文件就一直存在 ,不管你刪除的是
源文件還是 連接的文件 。只要有一個存在 ,文件就 存在 (其實也不分什么 源文件連接文件的 ,因為他們指向都是同一個 I節點)。 當你修改源文件或者連接文件
任何一個的時候 ,其他的 文件都會做同步的修改 。軟鏈接不直接使用i節點號作為文件指針,而是使用文件路徑名作為指針。所以 刪除連接文件 對源文件無影響,但
是 刪除 源文件,連接文件就會找不到要指向的文件 。軟鏈接有自己的inode,並在磁盤上有一小片空間存放路徑名.
(3)軟連接可以對一個不存在的文件名進行連接 。
(4)軟連接可以對目錄進行連接。
備注:I節點 :它是UNIX內部用於描述文件特性的數據結構.我們通常稱I節點為文件索引結點(信息結點).i節點 含有關於文件的大部分的重要信 息,包括文件數據塊在
磁盤上的地址.每一個I節點有它自己的標志號,我們稱為文件順序號.I節點包含的信息 1.文件類型 2.文件屬主關系 3.文件的訪問權限 4.文件的時間截.