186
153

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Bashでコマンド履歴から検索して実行する

Last updated at Posted at 2014-12-16

コマンド履歴を後方検索

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 を押す
186
153
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
186
153

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?