我的Unix机器上有一些以 --例如 --testings.html如果我尝试将其删除,则会出现以下错误:cb0$ rm --testings.htmlrm: illegal option -- -usage: rm [-f | -i] [-dPRrvW] file ... unlink file我试过了rm "--testings.html" || rm '--testings.html' 但没有任何效果。如何在终端上删除此类文件?
3 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
rm -- --somefile
在这种情况下,这是一种依靠rm使用getopts解析其选项的解决方案。那里有一些应用程序自己进行解析,并且也会对此进行呕吐(因为它们可能不一定实现“ --选项的均值”逻辑)。
因此,您应该开车穿过头骨的解决方案是:
rm ./--somefile
它将始终有效,因为这样您的参数就不会以开头-。
而且,如果您要制作真正体面的Shell脚本,请参阅。从技术上讲,您应该将./所有文件名参数扩展放在最前面,以防止脚本由于文件名输入的时髦而损坏(或防止脚本被滥用/利用来执行不应做的事情:例如,rm将删除文件但会跳过目录;同时rm -rf *会删除所有内容。将“ -rf” 文件名传递给脚本或某人touch ~victim/-rf的ing可能会以这种方式用于更改其行为,从而带来非常严重的后果。
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
对于删除文件名中包含不可能字符的文件的更通用方法,一种选择是使用文件的inode。
可以通过获取ls -i。
例如
$ ls -lai | grep -i test
452998712 -rw-r--r-- 1 dim dim 6 2009-05-22 21:50 --testings.html
并在find的帮助下擦除它:
$ find ./ -inum 452998712 -exec rm \{\} \;
当处理大量具有文件名特性的文件时,此过程可能会很有用,因为它很容易编写脚本。
- 3 回答
- 0 关注
- 740 浏览
添加回答
举报
0/150
提交
取消