Linuxでコマンド履歴を検索する【Ctrl+r】

Linux Mac

Linuxでコマンド履歴を検索したい人

Linuxでコマンド履歴を検索したい人
「Linux環境で過去に使ったコマンド履歴を検索したいのですが、どうすればいいですか?コマンド履歴を効率的に利用する方法や設定についても具体的なやり方を教えてしてください。」

こんな悩みを解決します。

本記事ではLinux/Macの環境を前提にしています

本記事では、LinuxまたはMac環境を前提にしています。それ以外のUNIX環境では一部の動作が異なることがあります。

この記事を書いている私はIT業界歴12年、うちサーバエンジニア歴6年、年収1,000万円ちょっとの金融系エンジニアです。IRIXやSolarisなどのUnixやmac、Linuxなど様々なUNIX系環境を扱ってきました。

これまでの経験を踏まえ、コマンドの解説に留まらず実務視点で利用方法を記事にしました。お役にたちましたら幸いです。

本記事の内容

やり方は簡単です。
ターミナル上でCtrl+rを押すとコマンド履歴検索画面に変わります。

ここで、検索したいキーワードを入力します。例えばls -lと入力すると、コマンド履歴の中からls -lを含む最近使ったコマンドが補完され、表示されます。

欲しい履歴ではなかった場合は、Ctrl+rを押すたびに、一つずつ古い履歴が補完されます。目当ての履歴が見つかったら(1)Enterキーで実行するか、(2)←→のキーを押してコマンドを編集してから実行することができます。

2.検索用にコマンド履歴をたくさん保存する

過去のコマンドはデフォルトで500件保存されますから、直近500件のコマンドが検索対象です。もっと多くの履歴を検索できるようにするには、.bashrcの設定を変更します。次の例では、コマンド履歴の保存件数が10,000件になるよう、HISTSIZE, HISTFILESIZEを編集します。

あまり大きすぎるとI/O負荷が大きくなりますので、ほどほどの設定が良いと思います。SSDをお使いの場合はもう少し大きい値でも良いでしょう。

3.過去のコマンド履歴を効率的に検索する

コマンド履歴の保存量を大きくしたのはいいけど、履歴が多すぎてCtrl+rをいくら押しても古い履歴が表示されない、なんてことも起こり得ます。
そんな時は、Ctrl+rで検索するのではなく、直接コマンド履歴ファイル(~/.bash_history)を検索した方が良いです。古い履歴から順に表示されます。

おわりに

今回は以上です。Linuxでコマンド履歴を検索するCtrl+rと効率的に検索するための設定を解説しました。お役に立ちましたら幸いです。