如何在bash中逃避感叹号?

时间:2012-06-14 00:06:51

标签: bash

有时候我觉得有必要在我的git提交消息中加入一些表达性。不幸的是,bash似乎不喜欢这个。

iblue@silence ~/git/wargames $ git commit -m "Frustrating <insert object of frustration here>!"
-bash: !": event not found

使用反斜杠转义会有所帮助,但这包括提交消息中的反斜杠。

如何正确转义bash中的感叹号?

4 个答案:

答案 0 :(得分:25)

当您将感叹号包含在单引号字符串中时,字面上会保留感叹号。

示例:

git commit -m 'Frustrating <insert object of frustration here>!'

答案 1 :(得分:6)

使用单引号来防止扩展。

答案 2 :(得分:6)

试试这个

git commit -m "Frustrating <insert object of frustration here>"'!'

如果在字符串中间那么

"hello"'!'"world"

答案 3 :(得分:2)

除了使用单引号引起惊叹之外,在大多数shell中,您还可以使用反斜杠\对其进行转义。那是: git commit -m "Frustrating <insert object of frustration here>\!"

但是,我个人建议通过在您的set +H文件中添加set +o histexpand.bashrc在外壳程序中添加disabling bash expansion

如果像我一样,从未在外壳中使用bash扩展,则禁用它会允许您在任何双引号字符串中使用感叹号-不仅在提交期间,而且对于 all bash命令