linux下刪除文件夾的軟鏈接時注意千萬不能在后面加反斜杠,千萬不要用強制刪除,否則下面2種場景,你會把源文件刪除,要闖禍的


今天遇到一個坑,自己在子目錄下創建了父目錄的軟鏈接,導致可以無限循環進入父目錄

[clouder@ana53 dir1]$ ll
total 8
-rw-rw-r-- 1 clouder clouder  4 Oct  9 17:49 a.txt
-rw-rw-r-- 1 clouder clouder  4 Oct  9 17:49 b.txt
lrwxrwxrwx 1 clouder clouder 10 Oct  9 17:49 dir1 -> /tmp/dir1/
[clouder@ana53 dir1]$ cd dir1/
[clouder@ana53 dir1]$ cd dir1/
[clouder@ana53 dir1]$ cd dir1/
[clouder@ana53 dir1]$ cd dir1/
[clouder@ana53 dir1]$ cd dir1/
[clouder@ana53 dir1]$ cd dir1/
[clouder@ana53 dir1]$ cd dir1/
[clouder@ana53 dir1]$ cd dir1/
[clouder@ana53 dir1]$ cd dir1/
[clouder@ana53 dir1]$ cd dir1/
[clouder@ana53 dir1]$ ls
a.txt  b.txt  dir1
[clouder@ana53 dir1]$ pwd
/tmp/dir1/dir1/dir1/dir1/dir1/dir1/dir1/dir1/dir1/dir1/dir1

然后想把這個軟鏈接刪除,於是在終端輸入

linux終端下,常利用自動補全功能,輸入部分文件名,如di,然后按tab鍵,自動補全,結果自己帶上了后面的反斜杠;
然后 被告知這是個文件夾

[clouder@ana53 dir1]$ rm dir1/       
rm: cannot remove ‘dir1/’: Is a directory      

於是我加上-rf (f表示強制r表示刪除遞歸刪除,用於刪除文件夾)
結果悲劇了,當文件夾dir1的軟鏈接dir1在原文件的子目錄,則rm -rf 軟鏈接目錄也會把源文件刪除!!!

[clouder@ana53 dir1]$ rm -rf dir1/      
[clouder@ana53 dir1]$ ll   
total 0      

下面做一個實驗,在另外一個目錄dir2下創建dir1的軟鏈接,強制刪除軟鏈接:rm -f dir1 也會把源目錄刪除!!!
准備源目錄dir1,里面有a.txt , b.txt文件

[clouder@ana53 tmp]$ cd dir1/
[clouder@ana53 dir1]$ echo 'aaa'>a.txt
[clouder@ana53 dir1]$ echo 'aaa'>b.txt
[clouder@ana53 dir1]$ ll
total 8
-rw-rw-r-- 1 clouder clouder 4 Oct  9 17:26 a.txt
-rw-rw-r-- 1 clouder clouder 4 Oct  9 17:26 b.txt

進入目標目錄/tmp/dir2,創建/tmp/dir1目錄的軟鏈接

[clouder@ana53 dir1]$ cd ../dir2 
[clouder@ana53 dir2]$ ll
total 0
[clouder@ana53 dir2]$ ln -s /tmp/dir1 .
[clouder@ana53 dir2]$ ll
total 0
lrwxrwxrwx 1 clouder clouder 9 Oct  9 17:26 dir1 -> /tmp/dir1

用file命令查看文件類型,注意軟鏈接目錄沒帶反斜杠是鏈接

[clouder@ana53 dir2]$ file dir1 
dir1: symbolic link to `/tmp/dir1'

刪除目錄的軟鏈接文件成功(此處因為我用命令別名alias rm='rm -i' ,所以在我本機用rm命令時,都會提示是否確認刪除)

[clouder@ana53 dir2]$ rm dir1   
rm: remove symbolic link ‘dir1’? y
[clouder@ana53 dir2]$ ls
[clouder@ana53 dir2]$ ls /tmp/dir1/
a.txt  b.txt

在創建一個軟鏈接

[clouder@ana53 dir2]$ ln -s /tmp/dir1/ .
[clouder@ana53 dir2]$ ll
total 0
lrwxrwxrwx 1 clouder clouder 10 Oct  9 17:27 dir1 -> /tmp/dir1/

file命令查看dir1/ 是什么類型,軟鏈接目錄帶了反斜杠就當成目錄了

[clouder@ana53 dir2]$ file dir1/ 
dir1/: directory

刪除軟鏈接目錄提示這是一個文件夾

[clouder@ana53 dir2]$ rm dir1/  
rm: cannot remove ‘dir1/’: Is a directory

強制刪除軟鏈接目錄(文件夾)沒有成功

[clouder@ana53 dir2]$ rm dir1/ -rf  
[clouder@ana53 dir2]$ ll
total 0
lrwxrwxrwx 1 clouder clouder 10 Oct  9 17:27 dir1 -> /tmp/dir1/

強制刪除軟鏈接目錄提示這是一個目錄

[clouder@ana53 dir2]$ rm -f dir1/   
rm: cannot remove ‘dir1/’: Is a directory

強制刪除軟鏈接文件,結果把原始文件給刪了!!!

[clouder@ana53 dir2]$ rm -f dir1  
[clouder@ana53 dir2]$ ll
total 0
[clouder@ana53 dir2]$ ll /tmp/dir1/
total 0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM