Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

コマンド履歴を後方検索

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 を押す
quwa
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした