コマンド履歴を後方検索
Bashを使っている時に以前実行したコマンドをもう一度または少し変えて実行したい場合があります。
そんな時はCtrl-r
で検索モードにしてからコマンドを入力することで以前実行したコマンドを簡単に後方検索することができます。Ctrl-r
を実行する度に以前のコマンドが表示されるので、何度かCtrl-r
を実行すると目的のコマンドが出てくると思います。
$ (Ctrl-r)
(reverse-i-search)`git': git commit
もしCtrl-r
を実行しすぎて目的のコマンドを通り過ぎた場合は、Ctrl-s
で履歴を戻ることもできます。
ただし、通常はCtrl-s
にスクリーンロックがかかっていて戻れないことが多いです(スクリーンロックしてしまったらCtrl-q
で解除してください)。そんな時はCtrl-s
に割り当てられているスクリーンロックを解除することで戻れるようにできます。
スクリーンロックを解除して前方検索出来るように設定
ショートカットキーの割当状況を確認します。もしstop=^S
になっていれば以下の操作によって解除してください。
$ stty -a
スクリーンロックを未定義にする。
$ stty stop undef
stop=<undef>
になっているか確認する。
$ stty -a
history
で検索
もちろんhistory
コマンドを実行して履歴番号をもとに実行(出力)することもできます。grep
を使って絞り込んだりできるので、この方が便利なこともあります。必要に応じて使い分けてください。
$ history
...
122 git statu
123 git diff app/
...
$ !123↵ <== 123番目のコマンドを実行する
$ !123:p↵ <== 123番目のコマンドを出力(echo?)する
$ !123
^--- ここで ESC Control-e を押す