Bash履歴にこのコマンドが記録されないのはなぜですか?

Bash履歴にこのコマンドが記録されないのはなぜですか?

コマンドでprintf "#!/bin/bash\n" > tエラー(bash: !/bin/bash\n": event not found)が発生しますが、上キーを押してもコマンドが呼び出されないため、修正できません。なぜそんなことですか?

printf "%s\n" '#!/bin/bash' >t(私がここで試していることは、Bashを学ぶことを試み、bashの履歴が以前のコマンドをキャプチャできない理由を本当に理解したいと思うことによって達成できますprintf。)

ベストアンサー1

あなたが見つけたように、この!キャラクターは歴史の拡大を引き起こします。このステップは、拡張が完了したときにコマンドを履歴に保存できるように、コマンドが履歴に保存される前に発生します。履歴拡張中にエラーが発生した場合、bashはコマンドの処理を停止するため、履歴には保存されません。

履歴拡張を使用すると、前のコマンドまたは前のコマンドの一部を現在のコマンドに置き換えることができます。コマンドを履歴に保存する前にこれを実行すると、前のコマンドがインスタンスごとに異なるため、実行されるたびに異なる意味を持つことができます。バラよりhttp://www.gnu.org/software/bash/manual/bashref.html#History-Interaction

ちなみにzsh動作が異なります。コマンドを保存しますが、履歴拡張が不足しています。

おすすめ記事