如何使用cli删除名称以“-r”开头的文件

Chi*_*pow 6 linux bash command-line rm

我每隔一段时间就创建奇数文件,例如

$ls -rthl
$-rw-r--r--  1 shamil hep  290 Aug 13 11:58 -rf
Run Code Online (Sandbox Code Playgroud)

有趣的是,不可能删除此文件

rm -f -rf
Run Code Online (Sandbox Code Playgroud)

我知道我需要转义像“-”这样的特殊符号,所以问题很清楚。我曾经知道解决方案,但后来忘记了。

如何正确删除它?

我试过这样的事情

rm -f \-rf
Run Code Online (Sandbox Code Playgroud)

但无济于事。

小智 14

--switch 意味着:标志结束,它后面的所有内容都被假定为文件名。所以你可以这样做:

rm -- -rf
Run Code Online (Sandbox Code Playgroud)

包含文件的完整路径也有效:

rm /full/path/to/-rf
Run Code Online (Sandbox Code Playgroud)

实际上,这有点搞笑,但是这个命令行可以给你答案:)

$man rm | cat | grep -B4 -A3 -- "rm --"

To remove a file whose name starts with a `-', for example `-foo', use 
one of these commands:

rm -- -foo
rm ./-foo
Run Code Online (Sandbox Code Playgroud)

  • 这个约定是否适用于所有命令是无关紧要的,并且对不同的问题有不同的答案。**提问者专门询问了`rm`和删除文件**以及xe忘记的调​​用`rm`的方法。Paulo Bu 的回答专门解决了这个问题,甚至引用了“rm”的手册,在那里提问者会找到 xyr 答案。它的主要问题是“cat”的无用使用。(-: (2认同)

Mad*_*ist 8

你可以做

rm -rf ./-rf
Run Code Online (Sandbox Code Playgroud)

这将使它-rf不以-.


归档时间:

查看次数:

564 次

最近记录:

11 年,8 月 前