このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linux:コマンド履歴の検索

 多くのコマンドを実行していくと、履歴は数千行にも及ぶことがあります。その中から特定のコマンドを探し出して再度実行したい場合、Ctrl + p を何百回も押して遡るのは非効率です。そんなときに役立つのが、コマンド履歴の検索機能(Ctrl + r)です。

インクリメンタル検索とは

Ctrl + r を押すと、シェルのプロンプトが以下のように変化します。

(reverse-i-search)`':

 これはインクリメンタル検索と呼ばれるモードで、ユーザーが文字を入力するたびに、リアルタイムでコマンド履歴を検索します。一般的な検索エンジンのように「検索」ボタンを押す必要はなく、検索したいキーワードを入力するだけで自動的に該当するコマンドが表示されます。

インクリメンタル検索の操作方法
操作キー内容
文字の入力検索語を追加して再検索
Ctrl + r前の検索結果へ移動(同じキーワードでさらに遡る)
Enter検索結果のコマンドを実行
Esc検索を終了して、コマンドラインに戻る
Ctrl + g検索をキャンセルし、プロンプトに戻る
インクリメンタル検索の操作方法

インクリメンタル検索の使い方

実践例1:特定のコマンドを検索して実行する。

Ctrl + r を押してインクリメンタル検索モードに入ります。

(reverse-i-search)`':

 検索したいキーワードを入力します。例えば、e と入力します。皆さんの環境によって異なるでしょうが、たとえば管理人の環境では以下のようにコマンドが表示されました。

(reverse-i-search)`e': env $NAME=Taro

履歴から e を含む最新のコマンドが表示されます。

続けて c を入力します。

(reverse-i-search)`ec': echo Hello

ec を含むコマンドが検索され、echo Hello が表示されます。

目的のコマンドが見つかったら、Enterキーを押して実行します。

user01@ubuntu:~$ echo Hello
Hello
実践例2:検索結果を編集して実行する。

Ctrl + r で検索モードに入り、キーワードを入力して目的のコマンドを表示します。

(reverse-i-search)`ec': echo Hello

Escキーを押して検索モードを終了し、コマンドラインに検索結果を残します。

(reverse-i-search)`ec': echo

必要に応じてコマンドを編集し、Enterキーで実行します。

user01@ubuntu:~$ echo Hello World
Hello World

インクリメンタル検索中の操作

  • 前の検索結果に遡る: 同じキーワードでさらに過去のコマンドを探したい場合、Ctrl + r を再度押します。
(reverse-i-search)`ec': echo Goodbye
  • 検索語を削除する: バックスペースキーで入力した文字を削除すると、検索結果もリアルタイムで更新されます。
  • 検索をキャンセルするCtrl + g を押すと、検索をキャンセルして元のプロンプトに戻ります。

まとめ

 インクリメンタル検索(Ctrl + r)は、膨大なコマンド履歴の中から目的のコマンドを素早く見つけ出す強力なツールです。最初は慣れが必要かもしれませんが、使いこなすことで作業効率が大幅に向上します。過去のコマンドを再利用したり、少し修正して再実行したい場合などに、ぜひ活用してみてください。