![1.abc!``!+123 是有效的文件名吗?](https://linux22.com/image/832115/1.abc!%60%60!%2B123%20%E6%98%AF%E6%9C%89%E6%95%88%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D%E5%90%97%EF%BC%9F.png)
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 不会尝试启动历史记录或命令替换。