今天遇到一个坑,自己在子目录下创建了父目录的软链接,导致可以无限循环进入父目录

[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

最新文章

  1. ViewBag 找不到编译动态表达式所需的一种或多种类型,是否缺少引用?
  2. winform用户控件、动态创建添加控件、timer控件、控件联动
  3. shell 生成指定范围随机数与随机字符串 .
  4. android SQLite使用SQLiteOpenHelper类对数据库进行操作
  5. jquery json 操作(转)
  6. SpringBoot 配置文件 application.properties
  7. monkeyrunner总结
  8. Oracle入门《Oracle介绍》第一章1-3 Oracle 逻辑组件
  9. CentOS7 通过YUM安装MySQL5.7
  10. css美化滚动条
  11. Nginx教程/概述
  12. 【Java】 剑指offer(28) 对称的二叉树
  13. 自我复制的3D打印机
  14. P、NP、NPC和NP-Hard相关概念的图形和解释
  15. django POST表单的使用
  16. 【GIS】GDAL Python 影像裁剪
  17. Python -- Gui编程 -- Tkinter的使用 -- 菜单与画布
  18. checked和unchecked的区别
  19. springboot 异步任务
  20. 进入保护模式(三)——《x86汇编语言:从实模式到保护模式》读书笔记17

热门文章

  1. 基于.NetCore开发博客项目 StarBlog - (20) 图片显示优化
  2. 关于python实现html转word(docx)
  3. go-dongle 0.2.0 版本发布了,一个轻量级、语义化的 golang 编码解码、加密解密库
  4. TypeScript 之 Class
  5. adb环境配置及常用命令
  6. 带cookie爬取内容demo
  7. 3、mysql着重号解决关键字冲突
  8. NC14501 大吉大利,晚上吃鸡!
  9. ArcGIS工具 - 导出数据库结构
  10. 《Effective C++》模版与泛型编程