在 shell 上输入包含“!!”的字符串而不进行解释

在 shell 上输入包含“!!”的字符串而不进行解释

我试图发送一个包含“!!”的字符串。但是,每次我在 zsh 上执行它时,zsh 都会用最后输入的命令替换 !!。我怎样才能让 zsh 不解释“!!”?我还确认当我仅使用 sh 时也会发生同样的事情。

答案1

您是否尝试过用单引号而不是双引号来引用字符串?

https://www.linuxquestions.org/questions/programming-9/bash-double-quotes-don%27t-protect-exclamation-marks-545662/

bbbco (04:45 PM) ~/ $ echo "Exclamation!!"
echo "Exclamationecho "Exclamationecho 'Exclamation!!'""
Exclamationecho Exclamationecho Exclamation!!

bbbco (04:43 PM) ~/ $ echo 'Exclamation!!'
Exclamation!!

答案2

您是否尝试过为每个字符使用一个反斜杠?

\!\!

前面带有反斜杠的字符(每个字符一个反斜杠)应准确表示该字符,而不是替换(则不进行解释)。

答案3

正如其他人提到的,引用或转义有助于防止当前命令行中的历史记录扩展。

但是你也可以使用

unsetopt BANG_HIST

完全禁用角色的特殊处理!。(将其设置~/.zshrc为永久禁用。)

相关内容