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

[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

linux下删除文件夹的软链接时注意千万不能在后面加反斜杠,千万不要用强制删除,否则下面2种场景,你会把源文件删除,要闯祸的的更多相关文章

  1. linux下各文件夹的结构说明及用途介绍

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令.   /dev:设备特殊文件.   /etc:系统管理和配置文件.   /etc/rc.d:启动的配 置文件和脚本.   /ho ...

  2. 【转】linux下各文件夹的结构说明及用途介绍

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

  3. Linux下各文件夹的结构说明及用途介绍(转载)

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

  4. linux下各文件夹的结构说明及用途介绍:Linux目录结构介绍

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

  5. 【转载】Linux下各文件夹的含义和用途

    原文地址:https://www.cnblogs.com/lanqingzhou/p/8037269.html Linux下各文件夹的含义和用途 Linux根目录”/“下各个系统文件夹的含义和用途 1 ...

  6. Linux下的文件夹创建命令使用实践

    [文章摘要] 本文以实际的C源程序为样例,介绍了Linux下的文件夹创建命令(mkdir)的用法.为相关开发工作的开展提供了故意的參考. [关键词] C语言  Linux  文件夹创建  makefi ...

  7. Linux下tmp文件夹的文件自动删除的问题(转)

    场景: 近日发现有一台机器tmp文件夹下放置的文件无辜丢失,而且排查发现是自动丢失,并且,只是删除10天之前的文件. 本来以为是哪位写了一个自动执行脚本, find了一下10天前的文件删除了. 结果, ...

  8. (转载)linux下各个文件夹的作用

    linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ...

  9. linux 下各文件夹的功能性介绍。(转载)

    原文来自:http://www.cnblogs.com/wen858636827/archive/2012/12/26/2834373.html /opt   放置用户自己下载的软件  英文全称是op ...

  10. Linux下一些文件夹的含义

    在 Linux系统里面,"分区",被称作"挂载点",简单明了的说,"挂载点"意思就是:把一部分硬盘容量,"分"成一个文件 ...

随机推荐

  1. i春秋象棋

    这是一道非常有意思的一道题,打开后就是一个pve的象棋游戏,我觉得下赢了就应该会出现flag,可惜多次尝试后失败了(果真有点厉害,我一时兴起就玩了好几把,有空试试拿更厉害的电脑跟他对下,如果赢了会怎么 ...

  2. devexpress中dockManager保存布局后恢复不正常

    在使用dockManager保存布局后进行恢复发现不正常,与中间的gridcontorl接触的都不行.gridcontorl设置的填充是fill 所以在在界面上再添加一个PanelControl控件并 ...

  3. React综合使用联系

    index.js import React from 'react' import ReactDOM from 'react-dom' import CartSimple from './CartSi ...

  4. 学习ASP.NET Core Blazor编程系列十五——查询

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  5. 【SQL进阶】Day05:窗口函数

    〇.概述 一.专用窗口函数 1.每类试卷得分前3名 自己写出来的部分 SELECT tag AS tid, uid AS uid, Rank AS ranking -- 如何确定排名 FROM exa ...

  6. Django批量插入(自定义分页器)

    目录 一:批量插入 1.常规批量插入数据(时间长,效率低 不建议使用) 2.使用orm提供的bulk_create方法批量插入数据(效率高 减少操作时间) 3.总结 二:自定义分页器 1.自定义分页器 ...

  7. uniapp vue3下的代理转发不生效问题,亲测有效解决

    以前配置过vue vite 的代理转发,没想到在uniapp的代理转发下翻车了,其实是一个很小的问题.调试过程中,尝试了webpack.vite 等写法 在根目录下 创建了 vite.config.j ...

  8. 巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1.18)

    研发少闲月,九月人倍忙.又到了一年一度的"金九银十"秋招季,又到了写简历的时节,如果你还在用传统的Word文档寻找模板,然后默默耕耘,显然就有些落后于时代了,本次我们尝试使用云平台 ...

  9. Web3区块链DAS域名注册教程 tron trx链波卡钱包地址解析 用户名转账 ENS

    而在去中心化系统中,大部分人充值.转账时,使用的都是区块链原生的长地址,比如: ETH 的地址: 0x9euo8sHip*******dHld90 CKB 的地址: ckHUEI829D******* ...

  10. 使用 Link Cut Tree 维护最小生成树

    简介 本文将简单介绍如何使用 Link Cut Tree 维护动态图最小生成树. 思路 最小生成树的性质:一个基环树的最小生成树,为将环上边权最大的边删除后所组成的树. Proof:如果删除环上的其他 ...