在 Linux 系統中,符號連結(symbolic link,或簡稱 symlink)也稱為軟連結。它是一種特殊類型的文件,用作指向另一個文件的捷徑。
我們可以使用 ln 指令來建立軟連結。那麼如何刪除呢? Linux 系統中並沒有專門用於刪除符號連結的命令,但我們可以使用 rm 命令來刪除它。 rm 指令主要用於刪除檔案和目錄。
rm symbolic_link_name
當然也可以使用 unlink 命令,但不要直接使用軟鏈接的名稱,因為它不僅僅用於刪除鏈接,還會刪除文件。
unlink symbolic_link_name
下面我們來詳細看一下。
使用 rm 指令刪除符號連結
在 rm 指令後面提供連結路徑的名稱:
rm name_or_path_of_link
我們來看個具體例子,如下命令中列出目前路徑中的檔案:
$ ls -l total 4708 -rw-rw-r-- 1 abhishek abhishek 4794657 Sep 27 20:36 export.json -rw-rw-r-- 1 abhishek abhishek 311 Sep 22 12:19 line.txt lrwxrwxrwx 1 abhishek abhishek 26 Oct 17 11:24 mylink -> ./Documents/sample-mark.md -rw-rw-r-- 1 abhishek abhishek 106 Sep 27 20:39 redirects.json -rw-r--r-- 1 abhishek abhishek 12817 Sep 22 12:28 sample.txt
上述列表中 mylink 為符號鏈接,大家可以看到其是以 l (表示鏈接)開頭,名稱顯示它指向的文件。
我們使用 rm 刪除它,並驗證:
$ rm mylink $ ls -l total 4708 -rw-rw-r-- 1 abhishek abhishek 4794657 Sep 27 20:36 export.json -rw-rw-r-- 1 abhishek abhishek 311 Sep 22 12:19 line.txt -rw-rw-r-- 1 abhishek abhishek 106 Sep 27 20:39 redirects.json -rw-r--r-- 1 abhishek abhishek 12817 Sep 22 12:28 sample.txt
如下圖所示,原始檔案仍然存在:
刪除多個連結
可以使用 rm 指令一次刪除多個符號連結:
rm symlink1 symlink2 symlink3
使用 unlink 指令刪除軟連結
刪除軟連結的另一種方法是使用 unlink 指令。這個命令乍聽起來好像只用於刪除鏈接,但其實它也可以刪除文件。使用方式如下:
unlink name_or_path_of_link
我們使用上面的例子,如下圖:
unlink 不能一次刪除多個連結。
刪除指向目錄的軟連結
我們可以建立指向檔案的軟連接,也可以建立指向目錄的軟連結。刪除目錄需要使用 -r 選項,但刪除指向目錄的連結卻不需要使用 -r 選項。
使用方法與刪除檔案連結的方法相同:
rm name_or_path_to_link_to_dir
刪除指向目錄的軟連接的時候,在目錄的末尾不要添加斜杠,否則會報錯:
$ rm link_to_dir/ rm: cannot remove 'link_to_dir/': Is a directory
下圖是一個刪除目錄軟連結的範例:
注意,盡量不要使用 -f 選項強制刪除指向目錄的鏈接,因為它會刪除目錄的內容。如下圖所示:
刪除硬連結
與軟連結不同,硬連結與原始檔案幾乎無法區分,你只能透過 inode number 注意到它。
看下面的範例:
$ ls -li total 4716 544057 -rw-rw-r-- 1 abhishek abhishek 4794657 Sep 27 20:36 export.json 544884 -rw-rw-r-- 2 abhishek abhishek 311 Sep 22 12:19 hard_link 544884 -rw-rw-r-- 2 abhishek abhishek 311 Sep 22 12:19 line.txt 1181365 drwxrwxr-x 2 abhishek abhishek 4096 Oct 17 12:33 my_dir 546419 -rw-rw-r-- 1 abhishek abhishek 106 Sep 27 20:39 redirects.json
刪除硬連結與刪除檔案相同:
rm path_or_name_of_hard_link
刪除連結檔會怎麼樣呢?
實際上,幾乎沒有在刪除軟連結的同時,也要刪除原始檔案的場景和需求。當然,如果有的話,你可以透過符號連結找到原始文件,然後刪除它。
rm "$(readlink '/path/to/link')" /path/to/link
注意,如果刪除來源文件,但是沒有刪除軟鏈接,那麼這個連結將會成為斷開的或懸空的連結。
雖然存在 unlink 指令,但我建議使用 rm 指令來刪除符號連結。因為這個是我們都比較熟悉的指令,經常使用它來刪除文件,當然也可以用來刪除符號連結。
以上是Linux 系統中如何刪除軟連接的詳細內容。更多資訊請關注PHP中文網其他相關文章!