当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何删除以双连字符开头的文件?》经验,为你挑选了4个好方法。

我的Unix机器上有一些文件开头

 --

例如 --testings.html

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

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

我试过了

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

但没有任何作用.

如何在终端上删除这些文件?



1> Steve Jessop..:
rm -- --testings.html

--选项告诉rm将所有其他参数视为文件名,而不是选项,即使它们以-.

这不是rm命令特有的.getopt函数实现了它,并且许多(所有?)UNIX样式的命令以相同的方式处理它:--终止选项处理,以及它之后的任何常规参数.

http://www.gnu.org/software/hello/manual/libc/Using-Getopt.html#Using-Getopt


这并不是所有Unix版本的标准,尽管它确实适用于大多数版本.请参阅vatine的答案,了解适用于所有版本的替代方案.

2> lhunath..:
rm -- --somefile

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

因此,您应该通过头骨驾驶的解决方案是:

rm ./--somefile

它总会有效,因为这样你的论证永远不会以a开头-.

而且,如果你想要制作非常好的shell脚本; 你应该在技术上放在./你所有的文件名参数扩展前面,以防止你的脚本因文件名输入而破坏(或者防止它们被滥用/利用来做他们不应该做的事情:例如,rm会删除文件但跳过目录;同时rm -rf *删除所有内容.将" -rf" 的文件名传递给脚本或某人touch ~victim/-rf可以通过这种方式来改变其行为并带来非常糟糕的后果.


+1,因为你是对的,但除了处理一个笨拙的文件名之外,制作脚本防弹是另外一个问题.如果问题是"如何删除以连字符开头或包含空格,;,<>,$和其他恶意垃圾的文件"那么它将需要完整的答案:-)

3> Vatine..:

无论是rm -- --testings.htmlrm ./--testings.html.



4> Juliano..:
rm -- --testings.html

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有