如何处理以连字符( – )字符开头的文件名?
不知何故,在某个时候,我不小心在我的主目录中创build了一个名为“-s”的文件。 它大约是500 kb,我不知道它是否包含重要的数据。 我找不出任何方法来处理这个文件,因为我用来查看,复制或移动它的每个命令都将文件名解释为一个参数。
我试过把它放在引号中,用反斜杠,两者的组合来转义它,似乎没有任何工作。
另外,当我第一次向同事提出这个问题的时候,我们困惑了一会儿,直到有人终于听到,问“你为什么不重新命名呢?” 我向他解释说,cp和mv都认为文件名是一个参数,所以它不起作用,他说:“不,不是从命令行,从Gnome执行。 我羞于听从他的build议,而且工作。 不过如果你没有窗口pipe理器,命令行是唯一的select,我仍然对如何解决这个难题感兴趣。
你可以使用./-filename
来引用它,或者一些命令会让你把它放在双破折号之后:
rm -- -filename
你可以用下面的方法去掉它:
rm ./-s
rm
命令(至less在Ubuntu 10.04下)甚至告诉你:
pax@pax-desktop:~$ rm -w rm: invalid option -- 'w' Try `rm ./-w' to remove the file `-w'. Try `rm --help' for more information.
原因是因为rm
不认为这是一个选项(因为它不是以-
开头),但它仍然指的是当前目录中的特定文件。
你可以使用 – 例如:
rm -- -file
除了使用rm
,如果你知道一种语言,你也可以使用它们。 他们不受这种shell疣的影响。
ruby(1.9+)
$ ruby -rfileutils -e 'FileUtils.rm("-s")'
要么
$ ruby -e 'File.unlink("-s")'