我需要了解rm -rf $TIGER/${LION}/${RABBIT}/* and rm -rf $TIGER/${LION}/${RABBIT}之间的区别,以便将其放入脚本中不会产生灾难,使其在变量未设置的情况下从根目录中删除所有可以删除的内容。在csh/ksh中使用rm -rf的安全方法是什么?
谢谢你的帮助!
发布于 2014-05-09 04:43:01
如果所有变量都未设置,这两个命令都会造成灾难;它们的区别只在于它们是删除目录本身,还是删除它的非隐藏内容。
如果您希望安全地防止从根目录递归删除,请显式测试这种情况,然后取消:
[[ $TIGER && $LION && $RABBIT ]] || {
echo "TIGER, LION and RABBIT must all be set; script exiting"
exit 1
}
rm -rf ...发布于 2014-05-09 04:42:38
此操作将递归删除${}目录中的所有非隐藏文件-${}目录中的文件不会被删除:
rm -rf $TIGER/${LION}/${RABBIT}/* 注意:隐藏文件(又称点文件)的文件名以.开头。除非设置了 dotglob选项,否则这些是与典型的扩展不匹配的*。
因此,要删除所有文件(包括隐藏文件),您可以使用shopt,如下所示:
shopt -s dotglob # turns shell option dotglob ON
rm -rf $TIGER/${LION}/${RABBIT}/* # Now deletes all (including hidden) files
shopt -u dotglob # FYI - unsets or turns dotglob OFF这会递归地删除所有内容,包括${RABBIT}目录。
rm -rf $TIGER/${LION}/${RABBIT}发布于 2014-05-09 04:44:14
将/*放在末尾将删除该目录中的内容
而只有"/“会删除目录本身以及目录中的内容。
https://stackoverflow.com/questions/23552034
复制相似问题