【发布时间】:2014-06-26 10:49:41
【问题描述】:
我需要了解rm -rf $TIGER/${LION}/${RABBIT}/* and rm -rf $TIGER/${LION}/${RABBIT} 之间的差异,以便将其放入脚本中不会产生灾难,使其在未设置变量的情况下从根目录中删除所有内容。在 csh/ksh 中使用 rm -rf 的安全方法是什么?
感谢您的帮助!!
【问题讨论】:
-
您的两个问题 - 如果未设置变量并理解这两个命令之间的区别是否安全 - 彼此没有任何关系。
-
...顺便说一句——引号是你的朋友。如果这些变量中的任何一个包含空格,
rm -rf "$tiger/$lion/$rabbit"的错误就会减少。 (如果变量既不是 shell 内置变量也不是环境变量,则使用小写变量名更为传统)。 -
...在此命令中
$foo和${foo}之间根本没有有效区别;你可以忽略所有的花括号而不会造成任何伤害。 -
@CharlesDuffy,我认为如果未设置变量 rm -rf $TIGER/${LION}/${RABBIT}/* 结果 ///* 或 /* 从根中删除所有有权删除和 rm -rf $TIGER/${LION}/${RABBIT} 结果 rm -rf * 无论密码指向何处。你同意吗?
-
不,我不同意。
rm -rf $TIGER/${LION}/${RABBIT}产生rm -rf //,与rm -rf /完全相同。另一个结果是rm -rf //*。