今天遇到一個坑,自己在子目錄下創建了父目錄的軟鏈接,導致可以無限循環進入父目錄
[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