Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
145
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

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

コマンド履歴を後方検索

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 を押す
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
145
Help us understand the problem. What are the problem?