在 linux
系统,软连接相当与在win
系统下的快捷方式。但是在 linux 下不正确的删除软连接可能造成灾难。一般删除软连接使用命令 rm
,有些使用 rm -rf
习惯的人在操作这个的时候会存在很大的危险性。正确删除 软连接 最安全的方式是使用 命令unlink
。
如下举个例子:
1 2 3 4 5 6 7 8 9
| # 创建一个文件夹 两个文件 一个软连接 ~ mkdir origin ~ touch origin/file1.php ~ touch origin/file2.php ~ ln -s origin/ link # 查看文件 ~ ll origin ~ ..... file1.php ~ ..... file2.php
|
删除软连接的操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| # 以下这样的删除都没问题 ~ unlink link ~ rm link ~ rm -r link # 这里的参数 r 其实是没有意义的,因为link是一个软连接 不是目录 ~ rm -rf link # 这里的 rf 同样没有意义,只是rm 命令忽略了这里的参数 ~ ~ # 这样删除就会造成灾难 ~ rm -rf link/ # 这个时候你发现软连接并没有删除,但是 origin 目录下的文件是全部没删除了 ==! # 这些罪魁祸首是 参数 f,如果你没有使用f参数 这一切还可以挽回 ~ rm link/ rm: cannot remove `link/': Is a directory # 这里 rm 通过你的参数 link/ 发现是要删除一个目录,这时候需要你添加参数 r ~ rm -r link/ rm: cannot remove `link': Not a directory # 这里你添加了 r 参数,但是并不能找到目录 link/ 因为link并不是一个目录,他是一个软连接,只不过有些shell在补全的时候会将 `/` 补全上去
|
这里mark下:
centos系统,如果使用 rm -rf 软连接/
的时候会将软连接指定的目录下的文件递归删除,不带提示!!!
罪魁祸首有两个:
- rm 的f参数
- 软连接后面的
/
所以正确 安全 的删除软连接的方式是 unlink 软连接
,这个时候如果 shell 自动补全后面的 /
,unlink 命令会提示你删除不了。
其次使用rm
删除的时候不要加参数 f
,这个时候即使你带上了后面的 /
,rm也会提醒你没有这个目录。