运维 shell 编程中 rm 命令的执行问题好奇怪

moliliang · 2014年09月29日 · 最后由 msg7086 回复于 2014年09月30日 · 2839 次阅读

shell 编程初学,有一个 rm 删除文件的问题。

dir="/home/wwwroot/web/";
rm -rf "${dir}*"
rm -rf "${dir}.*"

为什么 web 目录会被删掉呢。。。。

谢谢~~~ = =

没能在我电脑上重现啊

#1 楼 @iBachue ubuntu ...系统。。很蛋疼,在 mac 上没问题。。

#2 楼 @moliliang Ubuntu 14.04.1 也没重现

#3 楼 @iBachue 我直接删除 rm -rf xxx & mkdir web 也不行。。。。哎。。。

因为 '.*' 会扩展成 ['.', '..', '.XXX'] 所以会把自己删掉。

bash 和 dash 似乎都会扩展,而 zsh 又好像没有。你可以仔细研究一下……

#5 楼 @msg7086 ╮(╯▽╰)╭。。我改成

rm -rf ${dir} && mkdir ${dir}

其实 web 不是这个命令删的。。我是想通过 git clone 数据。。结果被 git 的命令删除了。。一直以为是 rm 删的。。╮(╯▽╰)╭。。坑了一天。。

#5 楼 @msg7086 rm 命令是不会删除'.'和'..'这两个东西的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号