我的Unix计算机上有一些以
--
例如--testings.html
如果我尝试删除它,我会得到以下错误:
cb0$ rm --testings.html
rm: illegal option -- -
usage: rm [-f | -i] [-dPRrvW] file ...
unlink file
我试过了
rm "--testings.html" || rm '--testings.html'
但是什么都不起作用。
如何在终端上删除此类文件?
发布于 2009-04-01 15:59:20
rm -- --testings.html
--
选项告诉rm将所有其他参数视为文件名,而不是选项,即使它们以-
开头。
这不是rm命令所特有的。getopt函数实现了它,并且有许多(all?)UNIX风格的命令以同样的方式处理它:--
终止选项处理,它之后的任何内容都是一个常规参数。
http://www.gnu.org/software/hello/manual/libc/Using-Getopt.html#Using-Getopt
发布于 2009-04-01 19:10:56
rm -- --somefile
虽然这是可行的,但它是一种依赖于使用getopts解析其选项的rm
的解决方案。有一些应用程序会进行自己的解析,并且也会依赖于此(因为它们可能不一定实现"--
意味着选项结束“的逻辑)。
正因为如此,你应该通过你的头骨来解决这个问题:
rm ./--somefile
它将始终有效,因为这样您的参数就不会以-
开头。
此外,如果您正在尝试创建真正像样的shell脚本,那么从技术上讲,您应该将./
放在所有文件名参数扩展之前,以防止脚本由于错误的文件名输入而中断(或者防止它们被滥用/利用来做不应该做的事情:例如,rm
将删除文件,但跳过目录;而rm -rf *
将删除所有内容。通过将文件名"-rf
“传递给脚本或某人touch ~victim/-rf
'ing,可以通过这种方式改变其行为,从而导致非常糟糕的后果)。
发布于 2009-04-01 16:01:46
rm -- --testings.html
或rm ./--testings.html
。
https://stackoverflow.com/questions/706196
复制相似问题