【history】Linuxコマンドの実行履歴を確認・削除・再実行する使い方【Linuxコマンド入門 Part4-6】

はじめに

Linuxを操作していて、「さっき打ったあの長いコマンド、もう一回打ちたいな」と思った時、皆さんはどうしていますか?おそらく、キーボードの「上矢印キー(↑)」を押して履歴を遡っている方が多いと思います。

もちろん直前のコマンドを呼び出すならそれで十分ですが、例えば「3ヶ月前にこのサーバーを構築した時、何のパッケージをインストールしたっけ…?」と思い出したい時、上矢印キーを何千回も押すわけにはいきませんよね。

そこで活躍するのが、過去の自分の足跡をすべて記録している history コマンドです。 今回は、単なる履歴の呼び出しにとどまらない、環境構築の「自動マニュアル」としても使える history の強力な使い方を紹介します。

Linuxコマンド入門第4シリーズ。linuxで実行したコマンドの履歴確認をする方法。historyコマンドについて詳しく紹介。historyで確認した過去コマンドを一撃で再度実行する方法も併せて紹介します。

1. history コマンドの基本

使い方は非常にシンプルで、ターミナルに以下のように打ち込むだけです。

history

【出力例】

  101  cd /var/www/html
  102  ls -l
  103  nano index.html
  104  systemctl restart nginx
  105  history

このように、左側に「履歴番号」、右側に「実行したコマンド」がズラッと一覧表示されます。

2. 真の価値は「環境構築の記録」にある

この履歴データは、実はターミナルを閉じても消えません。(ホームディレクトリにある .bash_history という隠しファイルに自動的に保存され続けています)。

これが最も役立つのが、サーバーの環境構築や初期設定の場面です。

「とりあえずネットの記事を見ながら色々コマンドを打って、なんとか動くようになった!」という経験はありませんか? その後、「他のPCでも同じ環境を作りたい」「チームメンバーに手順書を共有したい」となった時、自分の記憶を頼りに手順書を書くのは困難です。

そんな時は、自分が打った history の結果をコピペするだけで、立派な環境構築の手順書(マニュアル)が完成します。 history は、あなたの作業を裏でずっと記録してくれている優秀な書記官なのです。


3. 実務で役立つ!履歴の検索と再実行

何百、何千という履歴の中から目的のコマンドを探し出し、再実行するためのテクニックを紹介します。

grep で特定のコマンドだけを探す

第2シリーズで学んだ「パイプ(|)」と「検索(grep)」の合わせ技です。これが一番よく使われます。

history | grep "apt install"

これで、「過去に何をインストールしたか」だけを絞り込んで表示できます。

② 履歴番号で再実行する (!<番号>)

history で表示された左側の「番号」を使えば、長いコマンドを打ち直すことなく一発で再実行できます。

historyコマンド実行例

historyの結果の例

historyで上記のような履歴があるとき 179番目のコマンド(treeっぽく標準コマンドだけでフォルダ構造表示させる)を再度実行したいときは以下のように実行すればOKです。

#過去コマンドを1撃で再実行
# !<番号>

!179
ディレクトリ構造をいい感じに出力させるコマンドチートシート

③ 直前のコマンドを再実行する (!!)

上矢印キーを押してEnterを押すのと同じですが、コマンドライン上で「直前のコマンド」を意味するショートカットです。 特に、**「あ! sudo を付け忘れて権限エラーになった!」**という時に、以下のように打つのがエンジニアの定番の手癖です。

sudo !!

(直前のコマンドの先頭に sudo をくっつけて再実行してくれます)


4. 履歴を消したい時(パスワードを打っちゃった!)

たまに、コマンドの引数に間違えて「自分のパスワード」や「秘密のキー」をそのまま打ち込んでしまうというミスがあります。履歴に残ったままだとセキュリティ上危険です。

特定の行だけ削除する (-d)

103番の履歴を消したい場合は、-d (delete) オプションを使います。

# -d <数字> で数字のログを削除
history -d 103

履歴をすべてリセットする (-c)

環境構築が終わって、ごちゃごちゃになった履歴を一度真っさらにしたい時は、-c (clear) を使います。

history -c

5. 【おまけ】履歴に「実行日時」を表示する

デフォルトの history は「いつ」そのコマンドを実行したか分かりません。 第2回で学んだ .bashrc に以下の設定を追記すると、履歴にタイムスタンプ(日時)がつくようになります!

# ~/.bashrc に以下を追記
export HISTTIMEFORMAT='%Y-%m-%d %H:%M:%S '

設定を反映(source ~/.bashrc)した後に history を打つと、以下のように記録されるようになります。

105  2024-03-15 10:00:00 systemctl restart nginx

いつ作業したか一目でわかるので、トラブルシューティングの際に「昨日エラーが起きた時間に何をしてたっけ?」を振り返るのに劇的に役立ちます。


まとめ

  • history: 過去のコマンド実行記録を一覧表示する。環境構築の手順書づくりに最適。
  • 検索: history | grep 〇〇 で目的のコマンドを探す。
  • 再実行: !番号 で指定した履歴を、!! で直前の履歴を再実行。
  • 削除: 危険な履歴は history -d 番号 でこっそり消す。

過去の自分を振り返る術を身につけましたね! しかし、「いちいち history | grep と打つすら面倒くさい…もっと直感的に探したい!」というワガママな方のために、次回は「現代のタイムマシン」とも呼べる最強の履歴検索ショートカットを紹介します。

関連記事は、2026年3月25日に公開予定 (まもなく公開予定)


第四回”Linuxコマンド入門 Part4 ~自分好みの環境を整える~”では、linuxでの作業を効率化し自分好みの環境を作り上げる方法を紹介しています

デフォルト画像 6 記事
シリーズ

Linuxコマンド入門 Part4 ~ターミナル操作の効率化とシェル環境のカスタマイズ~

Linuxで、コマンドライン操作を効率化したり、自分好みにカスタマイズする方法を学ぼう。

ここまで読んでいただきありがとうございます。

では、次の記事で。 lumenHero