我是如何执行 "rm -rf ~" 的

赞赏 2017-08-22

前几天“机缘巧合”之下不小心执行了 rm -rf ~,所幸造成的破坏有限,打算简单总结下。
事情的起因源于 Shell 脚本中的一个小需求,如果某个文件夹不存在,就创建它,所以代码大概是这样的:


directory="~/a/b/c"
if [[ ! -e $directory]]; then
    mkdir -p $directory
fi
cd $directory

然而 mkdir 命令会直接把文件路径当做普通字符串处理, 也就是其中的 ~ 并不会被识别成用户目录,而是直接在当前文件夹下生成一个名为 ~/a/b/c 的文件夹。

所以此时用 ls 来查看文件就会看到有一个名为 ~ 的文件夹。再加上自己想当然的用命令行去删除它,就执行了文章开头所说的 rm -rf ~ 命令。

得出几个结论:

  1. 如果要表示用户目录,$HOME 会比 ~ 更安全

  2. mkdir 会直接把字符串的字面量当做要创建的文件夹

  3. 如果是手动执行 rm,一定要谨慎谨慎再谨慎

  4. 似乎删除顺序和 ls 的打印顺序一致,所以删掉了我很多隐藏文件,里面大多是配置文件

  5. 有精力的同学不妨实现自己的 dotfile,用来一键配置开发环境,注意考虑特殊情况哦~

登陆后阅读全文
阅读 1801 赞赏 0 有用 7 没用 0 收藏 0 分享

   



0 条留言

linux分享的头像

linux分享

每个软件都有确定的用途

相关文章

安全组设置允许SSH登录到 Linux 实例

Linux 流控原理,实现,及实例

Linux 如何使用 kpartx 命令读取分区表信息

云服务器 ECS Linux /tmp 目录文件是如何做到定期清理的?

Linux Web 环境配置站点的方法

Linux 内核配置问题导致 NAT 环境访问异常

Linux Mac Window网络异常时如何抓包?

Linux 系统虚拟主机 .htaccess 如何限制某些 IP 访问?

云服务器 ECS Linux 系统如何屏蔽某个 IP 的访问?

Linux IO占用高问题如何排查?

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

我是如何执行 "rm -rf ~" 的

正态分布为什么常见?(财富的分布却不符合正态分布)

Linux下窗口管理器 xmonad 的使用教程

用披萨做比喻来解释 IaaS,PaaS,SaaS 的区别

如何制作CSR(证书私钥和证书请求文件)文件?

php RedisException with message read error on connection

Windows环境下ping丢包或不通时链路测试工具推荐

Linux下ping丢包或不通时链路测试工具推荐

链路测试结果分析说明及常见链路异常场景和测试报告

SSH 登录时出现如下错误:login: Module is unknown

手机扫一扫
分享文章