首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何删除以双连字符开头的文件?

如何删除以双连字符开头的文件?
EN

Stack Overflow用户
提问于 2009-04-01 15:57:40
回答 7查看 16K关注 0票数 73

我的Unix计算机上有一些以

 --

例如--testings.html

如果我尝试删除它,我会得到以下错误:

cb0$ rm --testings.html
rm: illegal option -- -
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

我试过了

rm "--testings.html" || rm '--testings.html' 

但是什么都不起作用。

如何在终端上删除此类文件?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 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

票数 150
EN

Stack Overflow用户

发布于 2009-04-01 19:10:56

rm -- --somefile

虽然这是可行的,但它是一种依赖于使用getopts解析其选项的rm的解决方案。有一些应用程序会进行自己的解析,并且也会依赖于此(因为它们可能不一定实现"--意味着选项结束“的逻辑)。

正因为如此,你应该通过你的头骨来解决这个问题:

rm ./--somefile

它将始终有效,因为这样您的参数就不会以-开头。

此外,如果您正在尝试创建真正像样的shell脚本,那么从技术上讲,您应该将./放在所有文件名参数扩展之前,以防止脚本由于错误的文件名输入而中断(或者防止它们被滥用/利用来做不应该做的事情:例如,rm将删除文件,但跳过目录;而rm -rf *将删除所有内容。通过将文件名"-rf“传递给脚本或某人touch ~victim/-rf'ing,可以通过这种方式改变其行为,从而导致非常糟糕的后果)。

票数 56
EN

Stack Overflow用户

发布于 2009-04-01 16:01:46

rm -- --testings.htmlrm ./--testings.html

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/706196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档