bash 中的安全递归删除

Safe recursive delete in bash

有没有办法检查通过用户输入或某些自我检测机制提供的路径是否可以安全地在 bash 脚本中删除?

例如:

rm -rf $SOMELOCATION

显然我不希望 SOMELOCATION 是 / /var /etc /home /usr /opt /root 或一些重要目录中的任何一个。

有没有一种方法可以防止 bash 中的此类 事件 而无需迭代上面的所有目录(可能更重要的目录)?

是否有像 isSystemDirectory 函数这样的东西 return 是对还是错? :-)

否;您需要先检查 SOMELOCATION 的值,然后再将其用作 rm.

的参数
case $SOMELOCATION of
  /|/var|/etc|/home|/usr|/opt|/root) echo "Will not delete $SOMELOCATION" ;;
  *) rm -rf "$SOMELOCATION ;;
esac

权限允许 rm 失败,但由于 root 本质上具有执行 任何事情的权限,您只需在以下情况下采取适当的措施即可运行 任何命令如 root。 (或者至少,有一个最新的备份可用于从错误中恢复。)