在 bash 中,我想删除以#
.我尝试过rm #*
,但收到消息:rm: missing operand
。
那么如何实现这一目标呢?
答案1
octothorpe ( #
) 或井号是一个注释字符,在POSIX 语法在这里正如所说:
如果当前字符是“#”,则该字符以及下一个 <newline> 之前(但不包括)的所有后续字符都将作为注释被丢弃。结束行的 <newline> 不被视为注释的一部分。
因此,您需要引用或转义井号,以便它不会被解释为注释:
rm '#'*
或者
rm "#"*
或者
rm \#*
答案2
虽然它#
开始评论,但它只在单词的开头才这样做。因此,为路径添加前缀(例如./
当前目录)也可以禁用它。
rm ./#*
顺便说一句,前缀./
也是防止以破折号
( -like-this
) 开头的文件名被解释为命令选项的两种方法之一。
答案3
如果您的 shell 是bash
,您可以禁用 用作#
注释字符在交互式 shell 中和
shopt -u interactive_comments
清除此 shell 选项后,
rm #*
应该按照您最初的预期工作,而不需要转义#
.
答案4
取决于您可能使用的 shell 设置
rm \#file
或者
rm '#file'
或者如果它是一个特殊字符,则解释并显示为 # 则
rm ?file
可以工作