Linuxには、過去に実行したコマンドを記録しておく「コマンド履歴」機能があります。この機能をうまく使えば、コマンドを一から入力しなくても、過去の操作を素早く呼び出して再実行できます。
この記事では、
historyコマンドの基本から、Ctrl+Rを使ったインクリメンタル検索、HISTSIZE設定によるカスタマイズまで、WSL2・VPS・Ubuntu 24.04環境で実際に手を動かして確認できるよう解説します。この記事のポイント
・ historyコマンドで過去のコマンド一覧を番号付きで表示できる
・ !番号で特定のコマンドを再実行、!!で直前のコマンドを再実行できる
・ Ctrl+Rでコマンドをインクリメンタル検索して呼び出せる
・ HISTSIZE・HISTIGNOREで履歴のサイズや除外パターンを設定できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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 で検索を中断してコマンドラインに戻る
コマンド履歴のカスタマイズ設定
~/.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サーバー構築入門マニュアル(図解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に渡すコツ(トラブルシューティング)
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:Linuxの絶対パスと相対パス入門|WindowsユーザーがCドライブなしのパス指定を理解する方法
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます