如何删除文件名“:?”

如何删除文件名“:?”

:~我不小心在 bash shell 上创建了一个文件名

scp foo :~

怎么删除呢?

答案1

尝试rm ':?'rm ":?"rm :\?

主要是您需要用单引号或双引号引用文件名。或转义文件名中包含的任何特殊字符。

我可以数的一些特殊字符是:

*
|
$
&
#
<>
;
space/tab/newline
\
brackets/parenthesis/braces
'"`
?
etc

我建议使用单引号来防止删除错误命名的文件,my_file而不是使用$filerm $file。单引号字符是唯一不能在 Bourne 类 shell 中用单引号引用的字符,但您始终可以使用 和 本身来引用文件名的其余部分,如下所示:rm "$file"file='my_file''...''\'

rm -- '-$#~<>'\''"*?[]{}'`

请注意,这-对 shell 来说并不特殊,但其特殊之处在于,rm如果在参数开头找到它,则将其视为选项。这里--告诉rm后面的参数不被视为选项,即使它们以 开头-

答案2

一般来说,每当你想删除一个奇怪名称的文件时,你可以尝试使用--表示选项结束的标记。该标志之后的任何内容都将作为位置参数处理。 (也可以看看:“--”(双破折号)是什么意思?

那么,那就是

rm -i -- :?

(正如 @Doug O'Neal 所建议的,该-i选项会在删除之前提示您,以确保您删除的是正确的文件。)

然而,在这种情况下,?shell 会将其扩展为全局字符。所以上面的方法是行不通的。

在这种情况下,您可以使用 shell 的自动完成功能。进入该奇怪名称的文件所在的目录,然后键入rm :(不按Enter),然后按Tab循环浏览当前目录中的所有文件。名称奇怪的文件将被正确引用。

相关内容