尝试运行银色搜索器时出现Bash语法错误

ano*_*932 0 regex bash ag

我正试图找到$没有遵循的实例!.

这应该必要$,躲过,这是\\$[^!]逃脱这应该是[^\\!]除非[]需要转义呢?对这一点不确定 - 对bash还不够了解.

ag "\\$[^\!]"
bash: ^\!: syntax error: operand expected (error token is "^\!")

ag "\\$[^!]"
bash: !]: event not found

ag "\\$[^\\!]"
bash: ^\\!: syntax error: operand expected (error token is "^\\!")

ag "\\$[\\^\\!]"
bash: \\^\\!: syntax error: operand expected (error token is "\\^\\!")

ag "\\$[\^\!]"
bash: \^\!: syntax error: operand expected (error token is "\^\!")
Run Code Online (Sandbox Code Playgroud)

这些没有结果:

ag "\\$\\[\\^\\!\\]"
ag "\\$\\[\\^\\!\\]"
ag "\\$\[\\^\\!\]"
ag "\\$\[\^\!\]"
ag "\$\[\^\!\]"
ag "\\$\[\^\!\]"
Run Code Online (Sandbox Code Playgroud)

Cha*_*ffy 5

如有疑问,请使用单引号和字符类.

ag '[$][^!]'
Run Code Online (Sandbox Code Playgroud)
  • 单引号阻止!被视为历史扩展字符(bash用shell历史记录替换命令的指令).
  • 单引号可防止反斜杠被解释为转义序列的一部分,确保它们按字面顺序传递.
  • [$]以前更清楚\$:如果我们处于不同类型的引用上下文中,则可能被该上下文消耗; 方括号不太容易被误解.(如果有一个名为的文件,并且我们处于一个完全没有引用的上下文中,它可以被视为一个glob表达式......但这是一个比反斜杠情况更小的关注点).\$

另外,考虑到你的目标不是手指与20世纪70年代和80年代的炮弹兼容,考虑在你~/.bashrc!角色中加入以下角色以使角色不再特殊(仅在交互式炮弹中,使他们的行为偏离剧本):

set +H
Run Code Online (Sandbox Code Playgroud)