严重的文件名事故

严重的文件名事故

在威廉·肖特的Linux 命令行Shotts 指出,Linux 的一个缺陷是文件名,文件名几乎可以是任何东西。因此,人们可以-rf ~随意命名文件。然后他说,考虑一下如果有人运行rm该文件会发生什么。所以我猜它会删除用户主目录中的所有文件。但我猜这意味着 bash 无法区分选项和文件名?这对我来说似乎很奇怪。

答案1

要删除~您需要的所有文件rm -rf ~

您的示例不会发生任何严重的事情。请参阅:

pilot6@Pilot6:~/test$ ls
-rf~
pilot6@Pilot6:~/test$:rm -rf~
rm: invalid option -- '~'
Try 'rm ./-rf~' to remove the file '-rf~'.
Try 'rm --help' for more information.
pilot6@Pilot6:~/test$ rm ./-rf~
pilot6@Pilot6:~/test$ ls
pilot6@Pilot6:~/test$

Shell 将所有看起来像选项的东西都视为选项。因此,您不能通过以下方式创建文件

touch -rf~

例如。

rm无论如何,运行命令时需要非常小心空格。

查看最近的麻烦Ubuntu 恢复到结构(?)

如果您询问-rf ~文件,那么这不会是个问题。要删除名称中带有空格的文件,您需要将其放在引号中,或者转义空格:rm "-rf ~", 或rm ./-rf\ ~

相关内容