显而易见的解决方案产生的退出代码为1:
bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
一种可能的解决方案是跳过“。” 和“ ..”目录,但只会删除名称长度超过3个字符的文件:
bash$ rm -f .??*
好吧,如果您不太担心无法删除。&..那谁在乎呢?除非您担心脚本中的输出丑陋,否则我认为显而易见的解决方案是坦率地说其他类型的输入较少。
—
马特
请注意,..和。不是文件。它们是对目录的引用。。(仅一个点)是当前目录,而..(两个点)是指向上一级目录的链接。例如,如果是cd / home / user,则为。等于/ home / user和..等于/ home /换句话说,您不能删除。和..(。?)
—
phuzion
感谢您的评论,马特。我经常在脚本中使用该命令,并按命令退出代码进行检查(设置-e)。在这些情况下,必须提供指示性的退出代码。
—
Yonatan Broza 09年
没有内在的内在。和..可以防止它们被rm -rf删除。这只是rm的现代变体中增加的一种保护机制。
—
kubanczyk,2009年
总是有rm -rf。* || 如果只想绕过该语句的set -e行为,则为true。
—
Domingo Ignacio Galdos 2012年