猿问

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

我的Unix机器上有一些以


 --

例如 --testings.html


如果我尝试将其删除,则会出现以下错误:


cb0$ rm --testings.html

rm: illegal option -- -

usage: rm [-f | -i] [-dPRrvW] file ...

       unlink file

我试过了


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

但没有任何效果。


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


www说
浏览 742回答 3
3回答

慕哥9229398

rm -- --somefile在这种情况下,这是一种依靠rm使用getopts解析其选项的解决方案。那里有一些应用程序自己进行解析,并且也会对此进行呕吐(因为它们可能不一定实现“ --选项的均值”逻辑)。因此,您应该开车穿过头骨的解决方案是:rm ./--somefile它将始终有效,因为这样您的参数就不会以开头-。而且,如果您要制作真正体面的Shell脚本,请参阅。从技术上讲,您应该将./所有文件名参数扩展放在最前面,以防止脚本由于文件名输入的时髦而损坏(或防止脚本被滥用/利用来执行不应做的事情:例如,rm将删除文件但会跳过目录;同时rm -rf *会删除所有内容。将“ -rf” 文件名传递给脚本或某人touch ~victim/-rf的ing可能会以这种方式用于更改其行为,从而带来非常严重的后果。

肥皂起泡泡

对于删除文件名中包含不可能字符的文件的更通用方法,一种选择是使用文件的inode。可以通过获取ls -i。例如$ ls -lai | grep -i test452998712 -rw-r--r--  1 dim   dim      6 2009-05-22 21:50 --testings.html并在find的帮助下擦除它:$ find ./ -inum 452998712 -exec rm \{\} \;当处理大量具有文件名特性的文件时,此过程可能会很有用,因为它很容易编写脚本。
随时随地看视频慕课网APP
我要回答