Regex 尝试运行silver searcher时出现Bash语法错误
我正在尝试查找Regex 尝试运行silver searcher时出现Bash语法错误,regex,bash,ag,Regex,Bash,Ag,我正在尝试查找$的实例,这些实例后面没有 这应该需要$,转义,这是\\$和[^!]转义,这应该是[^\\!],除非[和]也需要转义?不确定这一点-还不太了解bash ag "\\$[^\!]" bash: ^\!: syntax error: operand expected (error token is "^\!") ag "\\$[^!]" bash: !]: event not found ag "\\$[^\\!]" bash: ^\\!: syntax error: operan
$
的实例,这些实例后面没有代码>
这应该需要$
,转义,这是\\$
和[^!]
转义,这应该是[^\\!]
,除非[
和]
也需要转义?不确定这一点-还不太了解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 "\^\!")
这些都不会产生结果:
ag "\\$\\[\\^\\!\\]"
ag "\\$\\[\\^\\!\\]"
ag "\\$\[\\^\\!\]"
ag "\\$\[\^\!\]"
ag "\$\[\^\!\]"
ag "\\$\[\^\!\]"
如果有疑问,请使用单引号和字符类
ag '[$][^!]'
- 单引号阻止
代码>被视为历史扩展字符(bash用shell历史中的命令替换命令的指令)
- 单引号防止反斜杠被解释为转义序列的一部分,确保它们按字面意思传递
[$]
比\$
更清晰:如果我们处于不同类型的引用上下文中,\
可能会被该上下文使用;方括号更不容易被误解。(如果有一个名为$
的文件,并且我们处于一个完全不带引号的上下文中,那么它可以被视为一个glob表达式……但这是一组比反斜杠情况下相关的小得多的关注点)
此外,鉴于20世纪70年代和80年代的目标不是与外壳兼容,请考虑在<<代码> ~/.BasHrc>代码>中使用以下代码来生成<代码> <代码>角色不再特殊(仅在交互式shell中,使其行为偏离脚本):
如果有疑问,请使用单引号和字符类
ag '[$][^!]'
- 单引号阻止
代码>被视为历史扩展字符(bash用shell历史中的命令替换命令的指令)
- 单引号防止反斜杠被解释为转义序列的一部分,确保它们按字面意思传递
[$]
比\$
更清晰:如果我们处于不同类型的引用上下文中,\
可能会被该上下文使用;方括号更不容易被误解。(如果有一个名为$
的文件,并且我们处于一个完全不带引号的上下文中,那么它可以被视为一个glob表达式……但这是一组比反斜杠情况下相关的小得多的关注点)
此外,鉴于20世纪70年代和80年代的目标不是与外壳兼容,请考虑在<<代码> ~/.BasHrc>代码>中使用以下代码来生成<代码> <代码>角色不再特殊(仅在交互式shell中,使其行为偏离脚本):
我觉得自己像个老古董,我还是用代码>用于历史参考,即使我可以使用交互式编辑。感谢这对我来说非常有效。我对bash和regexI都有了更多的了解。我觉得自己像个老古董,我仍然使用代码>用于历史参考,即使我可以使用交互式编辑。感谢这对我来说非常有效。我已经了解了更多有关bash和regex的信息