17

有时我会想在我的 git commit 消息中加入更多的表现力。不幸的是 bash 似乎不喜欢这样。

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

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

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

4

4 回答 4

35

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

例子:

git commit -m 'Frustrating <insert object of frustration here>!'
于 2012-06-14T00:08:46.710 回答
15

试试这个

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

如果在字符串中间,则

"hello"'!'"world"

于 2015-06-15T07:44:52.310 回答
9

请改用单引号来防止扩展。

于 2012-06-14T00:09:13.653 回答
2

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

但是,我个人建议通过向文件中添加或来禁用shell 中的bash 扩展。set +Hset +o histexpand.bashrc

如果像我一样,您从不在 shell 中使用 bash 扩展,禁用它将允许您在任何双引号字符串中使用感叹号 - 不仅在您的提交期间,而且对于所有bash 命令。

于 2020-08-09T13:46:29.340 回答