1.abc!``!+123 是有效的文件名吗?

1.abc!``!+123 是有效的文件名吗?

1.abc!``!+123这是Ubuntu 中的有效文件名吗?

我发出了命令

rm 1.abc!``!+123 

并收到错误消息

-bash: !``!+123: event not find

为什么?我该如何删除该文件?

答案1

只是简单rm '1.abc!``!+123'。注意'

笔记:引号用于删除某些字符或单词对 shell 的特殊含义。引号可用于禁用对特殊字符的特殊处理,防止保留字被识别为保留字,并防止参数扩展。一些特殊字符是:$ ` " !

答案2

是的,这是一个有效的文件名。但是,shell 会将这些字符视为特殊字符,因此要在文件命令中使用它们,您需要使用以下命令对其进行转义'

rm '1.abc!``!+123'

根据bash 手册页

开始历史替换,除非后面跟着空格、换行符、回车符、= 或 ((当使用内置命令 shopt 启用 extglob shell 选项时)。

命令替换

命令替换允许用命令的输出替换命令名。有两种形式:

$(command)

或者

`command`

因此,如果您想使用!`字符作为常规字符,则需要使用它们进行转义,'以便 shell 不会尝试启动历史记录或命令替换。

相关内容