执行“rm”时我们是否应该系统地使用“--”?

执行“rm”时我们是否应该系统地使用“--”?

关于 rm 和--

假设我创建了两个文件-ixx。如果我尝试使用

$ rm *

我得到:

rm: remove regular file `xx'? n

并且,正如如何在 Linux 中删除名称看起来只有一个连字符(如“-”)的文件和其他人一样,解决这个问题的方法是:

$ rm -- *

-rf显然,如果名称为或类似名称,问题可能会更加严重。

我的问题是:

我们是否应该在任何可扩展的东西之前系统地使用命令,以避免不愉快的意外或漏洞--rm

我之所以问这个问题,是因为不久前我学会了这个rm陷阱,然后就忘了,直到最近一个队友又把它带了进来。然而,我从未见过这样的建议,而且风险如此之大,我想知道我们是否应该更多地使用它?每次使用(可能还有其他命令)时,是否应该使用--某种脚本和控制台模式?rm

答案1

在理想情况下,我想是的,我们应该系统地使用--。但是我们都学会了使用命令rm而不系统地输入--,而输入它会花费额外的三次击键,所以我不认为这种情况会发生。此外,--终止选项的惯例并不总是存在的(这就是为什么许多人在学习如何使用 时没有了解它的原因rm)。

话虽如此,rm在 shell 脚本中使用(和其他命令)时,你绝对应该始终谨慎编程。例如:

rm "$1"    # Remove the file named in the first command line argument

是不安全的,应该rm -- "$1"。然而,

rm "/var/spool/foo/$thatfile"

是安全的,因为的内容$thatfile不会导致rm误解其参数。

在您的具体示例(rm *)中,我通常会将其用作rm ./*安全的解决方法。

相关内容