bashの履歴の展開機能でちょっとだけあわあわしてしまった

苦労してようやくいい感じの実装ができて、さてコミットを付けようと思いまして。

[bash]
$ git commit -am "タイルモード描画を設定できた!!!!!"

うれしさのあまりエクスクラメーションマーク「!」を5つも書いてしまっているところに喜びを表したかったのですが、 コミットログがおかしくなってしまいました。

git commit -am "タイルモード描画を設定できたgit commit -am "スプライトつくる周りをリファクタリング"git commit -am "スプライトつくる周りをリファクタリング"!"
[master abcdef0] タイルモード描画を設定できたgit commit -am スプライトつくる周りをリファクタリングgit commit -am スプライトつくる周りをリファクタリング!

bash!! は「最後に実行したコマンドを参照する」と解釈されるために起こる現象みたい。

たとえば、

$ echo hoge
> hoge

としたあとに、echo hoge!! を実行してみると、

$ echo hoge!!
> echo hogeecho hoge
> hogeecho hoge

と表示されます。(つまり、!!echo hoge が入り、 echo hogeecho hoge を実行したことに相当する)

全角で を書くか、bash! を解釈しないようにコミットメッセージ部分をシングルクォート ' で囲んであげればよいということですね。

ちょっとまえに読んでいた「入門bash」の知識がさっそく役に立った場面だったのでした。 www.oreilly.co.jp

ではでは。