[Linux] historyコマンドの使い方 – コマンド使用履歴の確認

historyコマンドは、Linuxシェルで実行したコマンドの履歴を表示するために使用されます。

デフォルトでは、過去に実行したコマンドが番号付きで一覧表示されます。

historyコマンドにオプションを付けることで、特定の範囲の履歴を表示したり、履歴をクリアしたりすることが可能です。

例えば、history 10は直近10件の履歴を表示し、!番号で特定の履歴を再実行できます。

history -cで履歴をクリアできます。

この記事でわかること
  • historyコマンドの基本的な使い方
  • 履歴の管理と設定方法
  • 履歴コマンドの便利なオプション
  • コマンド履歴の再利用テクニック

目次から探す

historyコマンドとは

historyコマンドは、Bashシェルで実行したコマンドの履歴を表示するための非常に便利なツールです。

このコマンドを使用することで、過去に入力したコマンドを簡単に確認したり、再実行したりすることができます。

デフォルトでは、historyコマンドは、シェルセッション中に実行されたコマンドのリストを表示し、各コマンドには一意の番号が付与されます。

この番号を利用することで、特定のコマンドを簡単に再実行することが可能です。

また、historyコマンドは、コマンドの履歴を管理するためのさまざまなオプションを提供しており、履歴のクリアや特定のコマンドの削除なども行えます。

これにより、効率的な作業が実現できるため、LinuxやUnix系のシステムを使用する際には欠かせない機能となっています。

historyコマンドの基本的な使い方

コマンド履歴の表示

historyコマンドを単独で実行すると、現在のシェルセッションで実行したコマンドの履歴が表示されます。

デフォルトでは、最新のコマンドから順にリストされ、各コマンドには番号が付与されます。

これにより、過去に実行したコマンドを簡単に確認できます。

$ history
  1  ls
  2  cd Documents
  3  mkdir test
  4  history

特定の範囲の履歴を表示する

特定の範囲の履歴を表示するには、historyコマンドに表示したい行数を指定します。

例えば、最新の5つのコマンドを表示するには、次のようにします。

$ history 5

履歴番号を指定してコマンドを再実行する

表示された履歴の番号を使って、特定のコマンドを再実行することができます。

!の後に履歴番号を指定することで、そのコマンドを実行できます。

$ !3  # 履歴番号3のコマンドを再実行

履歴を検索する方法

履歴の中から特定のコマンドを検索するには、grepコマンドと組み合わせて使用します。

例えば、gitに関連するコマンドを検索する場合は次のようにします。

$ history | grep git

このようにして、過去に実行したコマンドを効率的に確認し、再利用することができます。

historyコマンドのオプション

-cオプション:履歴のクリア

-cオプションを使用すると、現在のシェルセッションのコマンド履歴をすべてクリアすることができます。

このオプションを実行すると、履歴が完全に消去されるため、注意が必要です。

履歴をクリアしたい場合は、次のようにコマンドを入力します。

$ history -c

-dオプション:特定の履歴を削除

-dオプションを使うと、指定した履歴番号のコマンドを削除することができます。

特定のコマンドだけを消したい場合に便利です。

以下のように使用します。

$ history -d 3  # 履歴番号3のコマンドを削除

-aオプション:履歴をファイルに即時保存

-aオプションを使用すると、現在のシェルセッションで実行したコマンド履歴を即座に履歴ファイルに保存できます。

これにより、セッションが終了しても履歴が失われることがありません。

次のように実行します。

$ history -a

-rオプション:ファイルから履歴を読み込む

-rオプションを使うと、指定した履歴ファイルからコマンド履歴を読み込むことができます。

これにより、以前のセッションの履歴を復元することが可能です。

以下のように使用します。

$ history -r

-wオプション:履歴をファイルに書き込む

-wオプションを使用すると、現在のコマンド履歴を履歴ファイルに書き込むことができます。

このオプションを使うことで、履歴を手動で保存することができます。

次のように実行します。

$ history -w

これらのオプションを活用することで、コマンド履歴の管理がより柔軟に行えるようになります。

履歴の管理と設定

履歴の保存件数を変更する

Bashでは、保存するコマンド履歴の件数を変更することができます。

これには、HISTSIZEHISTFILESIZEという環境変数を設定します。

HISTSIZEはメモリ内に保持する履歴の件数、HISTFILESIZEは履歴ファイルに保存する最大件数を指定します。

これらの設定は、~/.bashrcファイルに追加することで永続化できます。

export HISTSIZE=1000  # メモリ内の履歴件数を1000に設定
export HISTFILESIZE=2000  # 履歴ファイルの最大件数を2000に設定

履歴ファイルの場所と設定

デフォルトでは、Bashの履歴は~/.bash_historyというファイルに保存されます。

このファイルの場所を変更したい場合は、HISTFILE環境変数を設定します。

~/.bashrcファイルに以下のように追加することで、履歴ファイルの場所を変更できます。

export HISTFILE=~/my_custom_history  # 履歴ファイルの場所を変更

履歴に保存しないコマンドを設定する

特定のコマンドを履歴に保存しないようにするには、HISTIGNORE環境変数を使用します。

この変数に、履歴に保存したくないコマンドを指定することで、特定のコマンドを除外できます。

複数のコマンドを指定する場合は、コロンで区切ります。

export HISTIGNORE="ls:cd:exit"  # ls, cd, exitコマンドを履歴に保存しない

履歴の重複を防ぐ方法

履歴に同じコマンドが重複して保存されるのを防ぐには、HISTCONTROL環境変数を設定します。

ignoredupsを指定することで、直前のコマンドと同じコマンドは履歴に保存されなくなります。

また、ignorespaceを指定すると、スペースで始まるコマンドも履歴に保存されません。

export HISTCONTROL=ignoredups:ignorespace  # 重複とスペースで始まるコマンドを除外

これらの設定を行うことで、Bashの履歴管理をより効率的に行うことができます。

応用例:historyコマンドの活用

!を使った履歴の再利用

!を使うことで、特定の履歴番号のコマンドを再実行できます。

例えば、履歴番号が5のコマンドを再実行したい場合は、次のように入力します。

これにより、過去に実行したコマンドを簡単に再利用できます。

$ !5  # 履歴番号5のコマンドを再実行

!!で直前のコマンドを再実行

!!を使用すると、直前に実行したコマンドを再実行できます。

これにより、誤ってコマンドを実行した場合や、再度同じコマンドを実行したい場合に便利です。

$ !!  # 直前のコマンドを再実行

!$で直前のコマンドの引数を再利用

!$を使うと、直前のコマンドの最後の引数を再利用できます。

これにより、同じ引数を使った別のコマンドを簡単に実行できます。

例えば、直前のコマンドがcp file.txt /backup/だった場合、次のように入力します。

$ mv !$  # cpコマンドの最後の引数を再利用してmvコマンドを実行

fcコマンドで履歴を編集して再実行

fcコマンドを使用すると、履歴のコマンドを編集して再実行できます。

fcを実行すると、デフォルトのエディタが開き、履歴のコマンドを編集できます。

編集後、保存して終了すると、そのコマンドが実行されます。

$ fc  # 履歴のコマンドを編集

grepと組み合わせて履歴を検索

historyコマンドとgrepを組み合わせることで、特定のコマンドを履歴から検索できます。

これにより、過去に実行したコマンドを迅速に見つけることができます。

例えば、gitに関連するコマンドを検索する場合は次のようにします。

$ history | grep git  # gitに関連するコマンドを検索

これらの応用例を活用することで、Bashの履歴機能をより効果的に利用し、作業効率を向上させることができます。

よくある質問

履歴が保存されないのはなぜ?

履歴が保存されない原因はいくつか考えられます。

主な理由は以下の通りです。

  • HISTSIZEHISTFILESIZEが0に設定されている場合、履歴が保存されません。
  • シェルセッションが異常終了した場合、履歴が保存されないことがあります。
  • HISTIGNOREに指定されたコマンドは履歴に保存されません。
  • HISTCONTROLの設定によって、重複やスペースで始まるコマンドが保存されないことがあります。

履歴を完全に削除する方法は?

履歴を完全に削除するには、以下の手順を実行します。

  1. history -cコマンドを実行して、現在のシェルセッションの履歴をクリアします。
  2. history -wコマンドを実行して、履歴ファイルに変更を保存します。
  3. ~/.bash_historyファイルを手動で削除するか、内容を空にします。

例:> ~/.bash_history

これにより、履歴が完全に削除されます。

他のユーザーの履歴を確認できる?

他のユーザーの履歴を確認することは、通常の設定ではできません。

各ユーザーの履歴は、個別の~/.bash_historyファイルに保存されているため、他のユーザーのファイルにアクセスする権限が必要です。

権限がある場合は、次のようにして確認できます。

$ cat /home/username/.bash_history  # 他のユーザーの履歴を表示

ただし、プライバシーの観点から、他のユーザーの履歴を無断で確認することは避けるべきです。

まとめ

この記事では、Bashのhistoryコマンドの基本的な使い方やオプション、履歴の管理方法、さらには応用例について詳しく解説しました。

これにより、コマンド履歴を効果的に活用し、作業効率を向上させるための手段が明らかになりました。

ぜひ、これらの知識を活かして、日々のシェル操作をよりスムーズに行ってみてください。

  • URLをコピーしました!
目次から探す