Linuxのコマンド履歴(history)入門|Ctrl+Rで検索して再実行する方法

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > Linuxのコマンド履歴(history)入門|Ctrl+Rで検索して再実行する方法
「Linuxでさっきのコマンドをもう一度実行したい」「長いコマンドを毎回打つのが面倒」と感じていませんか?
Linuxには、過去に実行したコマンドを記録しておく「コマンド履歴」機能があります。この機能をうまく使えば、コマンドを一から入力しなくても、過去の操作を素早く呼び出して再実行できます。

この記事では、historyコマンドの基本から、Ctrl+Rを使ったインクリメンタル検索、HISTSIZE設定によるカスタマイズまで、WSL2・VPS・Ubuntu 24.04環境で実際に手を動かして確認できるよう解説します。

この記事のポイント

historyコマンドで過去のコマンド一覧を番号付きで表示できる
!番号で特定のコマンドを再実行、!!で直前のコマンドを再実行できる
Ctrl+Rでコマンドをインクリメンタル検索して呼び出せる
・ HISTSIZE・HISTIGNOREで履歴のサイズや除外パターンを設定できる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

historyコマンドの基本

historyコマンドを実行すると、これまでに実行したコマンドが番号付きで一覧表示されます。ログイン後に実行してきたコマンド履歴が確認できます。

# コマンド履歴を表示する $ history 497 ls /etc 498 cat /etc/hostname 499 pwd 500 cd /var/log 501 ls -la 502 tail -f syslog 503 cd ~ 504 history

左の数字が「履歴番号」です。この番号を使って後述するコマンド再実行が可能です。

1. 直近N件だけ表示する

# 直近10件の履歴を表示 $ history 10 495 sudo apt update 496 sudo apt upgrade -y 497 ls /etc 498 cat /etc/hostname 499 pwd 500 cd /var/log 501 ls -la 502 tail -f syslog 503 cd ~ 504 history 10

履歴からコマンドを再実行する

1. !番号 で特定のコマンドを再実行する

履歴番号を指定して、そのコマンドをそのまま再実行できます。

# 履歴番号499番のコマンドを再実行する(pwdが実行される) $ !499 /home/tanaka # 履歴番号495番のコマンドを再実行する(sudo apt updateが実行される) $ !495 Hit:1 http://jp.archive.ubuntu.com/ubuntu noble InRelease ...

2. !! で直前のコマンドを再実行する

!!は「ひとつ前のコマンド」を再実行するショートカットです。
特に、sudoを付け忘れてPermission deniedになったときに便利です。

# sudo なしでコマンドを実行してしまった $ cat /etc/shadow cat: /etc/shadow: Permission denied # sudo !! で直前のコマンドをsudo付きで再実行 $ sudo !! sudo cat /etc/shadow root:$6$...:19841:0:99999:7::: daemon:*:19841:0:99999:7::: ...

3. !$ で直前のコマンドの最後の引数を再利用する

!$は「直前のコマンドの最後の引数」を参照します。
ディレクトリを作った後にそこへ移動するときなど、同じパスを2回打つ場面で役立ちます。

# ディレクトリを作成する $ mkdir /tmp/myproject # !$ で直前の引数 "/tmp/myproject" を再利用してcdする $ cd !$ cd /tmp/myproject # 現在地を確認 $ pwd /tmp/myproject

Ctrl+R:インクリメンタル検索(最も使えるショートカット)

Ctrl+Rはコマンド履歴をリアルタイムで検索できる機能です。長いコマンドをすぐに呼び出せるため、慣れると作業速度が大幅に上がります。

1. 操作手順

# ① Ctrl+R を押すとプロンプトが変わる (reverse-i-search)`': # ② キーワードを入力すると一致するコマンドが表示される (reverse-i-search)`ssh': ssh user@192.168.1.100 # ③ Enter で実行、または矢印キーで編集してから実行 # ④ もう一度 Ctrl+R を押すとさらに前の一致コマンドに移動 # ⑤ Ctrl+G または ESC で検索を中断してコマンドラインに戻る

長いSSHコマンドやrsyncのオプション、dockerのrun命令など、「なんとなく覚えている一部の文字」を手がかりに呼び出せます。

コマンド履歴のカスタマイズ設定

~/.bashrcに設定を追加すると、履歴の保存件数や除外パターンを変更できます。Ubuntu 24.04 LTSで動作確認済みです。

1. 履歴の保存件数を増やす

# ~/.bashrc に追記する $ vi ~/.bashrc # 追記する設定(デフォルトは1000件) HISTSIZE=10000 # メモリ上に保持する件数 HISTFILESIZE=20000 # ~/.bash_history ファイルの最大行数 # 設定を反映する $ source ~/.bashrc

2. 重複したコマンドを履歴から除外する

同じコマンドを何度も実行すると履歴が冗長になります。HISTCONTROLで除外設定ができます。

# ignoredups:直前と同じコマンドは記録しない # erasedups:履歴全体から重複を削除する HISTCONTROL=ignoredups:erasedups # 設定を ~/.bashrc に追記して反映 $ source ~/.bashrc

3. 特定のコマンドを履歴に残さない

パスワードを含むコマンドや、頻繁すぎるコマンドを履歴から除外できます。

# ls・cd・exit・history を履歴に残さない設定 HISTIGNORE="ls:ll:ls -la:cd:exit:history" # コロンで区切って複数指定できる HISTIGNORE="ls*:cd *:exit:clear:history"

履歴ファイルの場所とセキュリティ上の注意

コマンド履歴は ~/.bash_history ファイルに保存されます。

# 履歴ファイルの場所を確認 $ echo $HISTFILE /home/tanaka/.bash_history # 履歴ファイルの内容を直接確認することもできる $ tail -20 ~/.bash_history ls -la cd /var/log tail -f syslog sudo systemctl restart nginx ...

注意:パスワードをコマンドの引数として渡した場合(例:mysql -u root -p password123)、そのパスワードが ~/.bash_history にそのまま記録されます。パスワードを含むコマンドは実行後にhistory -d 番号で個別削除するか、HISTIGNOREで除外設定してください。

よくあるトラブルとトラブルシュート

「historyコマンドを実行しても何も表示されない」

ログアウト前のセッションの履歴が引き継がれていない場合があります。~/.bash_historyを直接確認してみてください。

# 履歴が表示されない場合、直接ファイルを確認 $ wc -l ~/.bash_history 1245 /home/tanaka/.bash_history # ファイルはあるのに history コマンドで空の場合、設定確認 $ echo $HISTSIZE 1000

「Ctrl+Rを押しても何も起きない」

WSL2環境によっては、ターミナルアプリの設定でCtrl+Rが別の機能に割り当てられている場合があります。Windowsターミナルの「設定>キーバインド」を確認してください。

本記事のまとめ

コマンド・操作 意味
history コマンド履歴を番号付きで一覧表示
history 10 直近10件の履歴を表示
!500 履歴番号500番のコマンドを再実行
!! 直前のコマンドを再実行(sudo !! が便利)
!$ 直前のコマンドの最後の引数を再利用
Ctrl+R コマンドをキーワードでインクリメンタル検索
history -c 現在のセッションの履歴をすべてクリア
history -d 番号 特定番号のコマンドを履歴から削除
historyコマンドとCtrl+Rを使いこなすと、Linuxの操作効率が格段に上がります。特に「sudo !!」と「Ctrl+R」は現場でのスピードに直結します。まずこの2つを反射的に使えるようになるまで練習してみてください。

次のステップとして、実務で役立つLinux技術をさらに深めましょう。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンドを「なんとなく打つ」段階から卒業したい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>

次に読む記事

コマンドの効率的な操作を身につけたら、次は実務で役立つLinux技術を深めましょう。

Linuxのファイル権限完全ガイド|chmod・chown・umaskの基礎と実務でよく使う設定(ファイル権限・セキュリティ)
Linuxサーバーの初期セキュリティ設定チェックリスト|公開直後にやるべき10項目を実機で解説(サーバーセキュリティ設定)
Rocky Linuxサーバーを構築する手順|最小インストールから初期設定・Webサーバー公開まで(サーバー構築ハンズオン)
シェルスクリプトのバッチ処理設計|大量ファイルの進捗管理と途中再開を実装する方法(シェルスクリプト自動化)
Linuxサーバーのネットワーク設定をsystemd-networkdで管理する方法(ネットワーク診断・設定)
mkfsコマンドでLinuxのファイルシステムを作成する方法|ext4・xfsの使い分けとfstab設定も(ファイルシステム・ストレージ管理)
AIにLinuxトラブルを解析させる方法|journalctl・dmesgのログをChatGPT・Claudeに渡すコツ(トラブルシューティング)

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。