原文网址:https://www.youyong.top/article/11599badde55f
前几天“机缘巧合”之下不小心执行了 rm -rf ~,所幸造成的破坏有限,打算简单总结下。
事情的起因源于 Shell 脚本中的一个小需求,如果某个文件夹不存在,就创建它,所以代码大概是这样的:
原文网址:https://www.youyong.top/article/11599badde55f
前几天“机缘巧合”之下不小心执行了 rm -rf ~,所幸造成的破坏有限,打算简单总结下。
事情的起因源于 Shell 脚本中的一个小需求,如果某个文件夹不存在,就创建它,所以代码大概是这样的:
原文网址:https://www.youyong.top/article/11599badde55f
directory="~/a/b/c" if [[ ! -e $directory]]; then mkdir -p $directory fi cd $directory
然而 mkdir
命令会直接把文件路径当做普通字符串处理, 也就是其中的 ~
并不会被识别成用户目录,而是直接在当前文件夹下生成一个名为 ~/a/b/c
的文件夹。
所以此时用 ls
来查看文件就会看到有一个名为 ~
的文件夹。再加上自己想当然的用命令行去删除它,就执行了文章开头所说的 rm -rf ~
命令。
得出几个结论:
如果要表示用户目录,$HOME
会比 ~
更安全
mkdir
会直接把字符串的字面量当做要创建的文件夹
如果是手动执行 rm
,一定要谨慎谨慎再谨慎
似乎删除顺序和 ls
的打印顺序一致,所以删掉了我很多隐藏文件,里面大多是配置文件
有精力的同学不妨实现自己的 dotfile,用来一键配置开发环境,注意考虑特殊情况哦~
共 0 条留言