大佬教程收集整理的这篇文章主要介绍了linux下删除文件夹的软链接时注意千万不能在后面加反斜杠,千万不要用强制删除,否则下面2种场景,你会把源文件删除,要闯祸的,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
今天遇到一个坑,自己在子目录下创建了父目录的软链接,导致可以无限循环进入父目录
[[email protected] dir1]$ ll @R_480_10586@l 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/ [[email protected] dir1]$ cd dir1/ [[email protected] dir1]$ cd dir1/ [[email protected] dir1]$ cd dir1/ [[email protected] dir1]$ cd dir1/ [[email protected] dir1]$ cd dir1/ [[email protected] dir1]$ cd dir1/ [[email protected] dir1]$ cd dir1/ [[email protected] dir1]$ cd dir1/ [[email protected] dir1]$ cd dir1/ [[email protected] dir1]$ cd dir1/ [[email protected] dir1]$ ls a.txt b.txt dir1 [[email protected] dir1]$ pwd /tmp/dir1/dir1/dir1/dir1/dir1/dir1/dir1/dir1/dir1/dir1/dir1
linux终端下,常利用@L_874_17@补全功能,输入部分文件名,如di,然后按tab键,@L_874_17@补全,结果自己带上了后面的反斜杠;
然后 被告知这是个文件夹
[[email protected] dir1]$ rm dir1/ rm: cAnnot remove ‘dir1/’: Is a directory
于是我加上-rf (f表示强制r表示删除递归删除,用于删除文件夹)
结果悲剧了,当文件夹dir1的软链接dir1在原文件的子目录,则rm -rf 软链接目录也会把源文件删除!!!
[[email protected] dir1]$ rm -rf dir1/ [[email protected] dir1]$ ll @R_480_10586@l 0
下面做一个实验,在另外一个目录dir2下创建dir1的软链接,强制删除软链接:rm -f dir1 也会把源目录删除!!!
准备源目录dir1,里面有a.txt,b.txt文件
[[email protected] tmp]$ cd dir1/ [[email protected] dir1]$ echo 'aaa'>a.txt [[email protected] dir1]$ echo 'aaa'>b.txt [[email protected] dir1]$ ll @R_480_10586@l 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目录的软链接
[[email protected] dir1]$ cd ../dir2 [[email protected] dir2]$ ll @R_480_10586@l 0 [[email protected] dir2]$ ln -s /tmp/dir1 . [[email protected] dir2]$ ll @R_480_10586@l 0 lrwxrwxrwx 1 clouder clouder 9 Oct 9 17:26 dir1 -> /tmp/dir1
[[email protected] dir2]$ file dir1 dir1: symbolic link to `/tmp/dir1'
删除目录的软链接文件成功(此处因为我用命令别名alias rm=‘rm -i‘ ,所以在我本机用rm命令时,都会提示是否确认删除)
[[email protected] dir2]$ rm dir1 rm: remove symbolic link ‘dir1’? y [[email protected] dir2]$ ls [[email protected] dir2]$ ls /tmp/dir1/ a.txt b.txt
[[email protected] dir2]$ ln -s /tmp/dir1/ . [[email protected] dir2]$ ll @R_480_10586@l 0 lrwxrwxrwx 1 clouder clouder 10 Oct 9 17:27 dir1 -> /tmp/dir1/
file命令查看dir1/ 是什么类型,软链接目录带了反斜杠就当成目录了
[[email protected] dir2]$ file dir1/ dir1/: directory
[[email protected] dir2]$ rm dir1/ rm: cAnnot remove ‘dir1/’: Is a directory
[[email protected] dir2]$ rm dir1/ -rf [[email protected] dir2]$ ll @R_480_10586@l 0 lrwxrwxrwx 1 clouder clouder 10 Oct 9 17:27 dir1 -> /tmp/dir1/
[[email protected] dir2]$ rm -f dir1/ rm: cAnnot remove ‘dir1/’: Is a directory
[[email protected] dir2]$ rm -f dir1 [[email protected] dir2]$ ll @R_480_10586@l 0 [[email protected] dir2]$ ll /tmp/dir1/ @R_480_10586@l 0
以上是大佬教程为你收集整理的linux下删除文件夹的软链接时注意千万不能在后面加反斜杠,千万不要用强制删除,否则下面2种场景,你会把源文件删除,要闯祸的全部内容,希望文章能够帮你解决linux下删除文件夹的软链接时注意千万不能在后面加反斜杠,千万不要用强制删除,否则下面2种场景,你会把源文件删除,要闯祸的所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。