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

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

[[email protected] 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/
[[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终端下,常利用自动补全功能,输入部分文件名,如di,然后按tab键,自动补全,结果自己带上了后面的反斜杠;
然后 被告知这是个文件夹

[[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
total 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
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目录的软链接

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

用file命令查看文件类型,注意软链接目录没带反斜杠是链接

[[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
total 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
total 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
total 0
[[email protected] dir2]$ ll /tmp/dir1/
total 0

原文地址:https://www.cnblogs.com/xiaozhuangAna/p/11643527.html

时间: 2024-11-05 13:34:52

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

Linux下各个文件夹的作用

linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 /lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件 /sbin 系统管理命令,这里存放的是系统管理员使用的管理程序 /tmp 公用的临时文件存储点 /root 系统管理员的主目录(呵呵,特权

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

linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令.   /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示.   /lib:标准程序设计库,又 叫动态链接共享库,作用类似windows里的.dll文件.   /sbin:系统管理命令,这 里存放的是系统管理员使用的管理程序. /tmp:公用的临时文件存储 点. /root:

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

linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示. /lib:标准程序设计库,又 叫动态链接共享库,作用类似windows里的.dll文件. /sbin:系统管理命令,这 里存放的是系统管理员使用的管理程序. /tmp:公用的临时文件存储 点. /root:系统管理员的

纯干货!Linux 下各文件夹的结构说明及用途介绍

linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示. /lib:标准程序设计库,又 叫动态链接共享库,作用类似windows里的.dll文件. /sbin:系统管理命令,这 里存放的是系统管理员使用的管理程序. /tmp:公用的临时文件存储 点. /root:系统管理员的

linux下遍历文件夹---opendir等用法

首先要说肯定是头文件,#include <sys/types.h>   #include <dirent.h> linux下遍历文件夹需要用到以下几个函数,其中有三个是必须的,其它几个是可选的. DIR* opendir(const char * name);   失败返回NULL.成功返回DIR结构体.注意DIR前面没有struct,如果加上编译器会warning struct dirent *readdir(struct DIR* dir);   失败返回NULL. void

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

[文章摘要] 本文以实际的C源程序为样例,介绍了Linux下的文件夹创建命令(mkdir)的用法.为相关开发工作的开展提供了故意的參考. [关键词] C语言  Linux  文件夹创建  makefile  开发 一.mkdir命令简单介绍 mkdir命令用来创建指定名称的文件夹,其命令格式为:mkdir [选项] 文件夹... 当中,[选项]能够是"-m"."-p"或"-v". 此外,文件夹名是区分大写和小写的. 二.本程序流程 本文中的程序用

linux下设置文件夹打开方式

你是否为在linux下打开文件夹每次都新打开一个窗口而感到烦恼,想像windows平台一样打开文件夹都覆盖父窗口打开. 设置方法如下: 打开system-preferences-File Management,如下图: 2.选择behavior,勾选Always open in browser windows,重新打开文件夹就是windows下的打开方式了.如图:

linux 下个文件夹的用途和功能

/boot            :linux的启动文件和内核,例如LILO或者GRUB文件 /initrd (boot loader initialized RAM disk) : 由boot loader初始化的内存盘,在linux内核启动前,boot loader会将银盘中的initrd文件加载到内存,内核启动时会在访问真正根文件系统前先访问该内存的initrd文件系统 /bin (binary) : 标准命令和应用程序 /opt            :第三方软件在安装时默认会安装到这个

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

原文来自:http://www.cnblogs.com/wen858636827/archive/2012/12/26/2834373.html /opt   放置用户自己下载的软件  英文全称是optional 美 [ ?ɑ:p??nl ] 随意的 adj. 可选择的; 随意的,任意的; 非强制的; 选修科目 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比如用户user的主目录就是/h