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を押すとコマンド履歴検索画面に変わります。

$
bck-i-search: _

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

$ ls -lrt /etc/hosts
bck-i-search: ls -l_

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

$ ls -lrt /var/log/
bck-i-search: ls -l_

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

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

vi ~/.bashrc

##HISTSIZE, HISTFILESIZEを編集##
export HISTSIZE=10000
export HISTFILESIZE=10000

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

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

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

$ grep 'ls -l' ~/.bash_history | less
ls -l /usr/local/bin ←最も古い履歴
ls -llrt ~
....
ls -l /.bashrc
ls -l /var/log/
ls -l /etc/hosts ←最も新しい履歴

おわりに

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

Blog TOP  Linuxコマンドを勉強したい人向け|Linuxの使い方 記事まとめ

Linux&Linuxコマンドを勉強したい人向けの記事もくじ

用語解説・技術一般

  "UNIXとLINUX"の違いについて解説します
  CUIとGUIの違い・特徴について解説します

サーバリソースを確認するコマンドの使い方

  【Linux】CPU使用率を確認する3つの方法を解説します
  【Linux】topコマンドで,CPU消費の原因を特定する方法
  【Linux】ps実行時に-efオプションを付ける理由について
  【Linux】メモリ使用率を確認する|容量・空きの確認も
  【Linux】ディスク容量を確認する|ディスク容量監視も

ファイル操作に関するコマンドの使い方

  【Linux】ファイルの行数をカウントする方法を解説
  【Linux】文字コード変換ならiconvコマンド1択です
  【Linux】/dev/nullを、エンジニアが使う2つの目的
  【Linux】findのexecオプションの使い方とその注意点
  【Linux】findの結果から圧縮ファイルを作るコマンド
  【Linux】hostsの場所はどこ?→/etc/hostsにあります
  【Linux】touchコマンドで,時刻更新&空ファイル作成

Linux管理者用コマンドの使い方

  【Linux】再起動コマンド(shutdown)の使い方と注意点

よく使う便利なコマンドの使い方

  【Linux】改行なしでechoコマンドを使う時の -nオプション
  【Linux】sleepコマンドの使用例と注意点について解説する
  【Linux】rmコマンドでディレクトリを削除する方法を解説
  【Linux】ファイルを削除するコマンド2選【rm以外もあり】
  【Linux】awkの区切り文字を指定する,-Fオプションを解説
  【Linux】sedで文字列の置換をするeオプションを解説する
  【Linux】dateコマンドのフォーマットとその便利な使い方
  【Linux】大文字から小文字に変換する方法【小文字から大文字も】

シェルの便利機能

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