サイトアイコン IT NEWS

Linuxでhistoryコマンドの履歴を削除する3つの方法

Linuxで過去に実行したコマンド履歴を表示できるhistoryコマンドは、履歴を見て以前実行したことがあるコマンドを思い出すのに凄く便利ですが、history履歴に表示したくない場合もあります。
そこで、history履歴個別に削除する方法と、一括で削除する方法をご紹介します。

historyの履歴を削除するのはなぜ?

普通なら、証跡(ログ)として残す上でも、あまりhistory履歴削除することはありませんが、例えば、平文のパスワード付きのコマンドを実行した場合など、history履歴を他人に見られては困ることもあります。

管理者

残しておくのはセキュリティ的にあまりよろしくない場合もあるということですね!

あとは、間違ったコマンドを打った時に恥ずかしいとか?

historyの履歴を個別に削除

それでは、historyコマンドの[-d]オプションを使用し、履歴から任意の1行のみを個別に削除する方法をご紹介します!
まずは、いつも通りhistoryコマンドを実行します。

# history
 1622  ll /home/ubuntu/
 1623  vi /etc/crontab
 1624  exit
 1625  history
 1626  history -d 1620
 1627  vi ~/.bash_history
 1628  history

すると、表示されたコマンド実行履歴の左側に行番号が表示されていると思います。
この行番号を[-d]オプションのパラメーターとして実行したら、その行のみ削除されます。
例えば、上記の例で1625行目の[history]削除すると…

# history -d 1625

結果はこのようになります。

# history
 1622  ll /home/ubuntu/
 1623  vi /etc/crontab
 1624  exit
 1625  history -d 1620
 1626  vi ~/.bash_history
 1627  history
 1628  history -d 1625
 1629  history

[history -d]の履歴は残ってしまいますが、あまり気にしない。
ちなみに、直前のコマンド(history)と同じコマンドを実行しても履歴には残りません

historyの履歴を一括で削除

次は、historyすべての履歴一括削除する方法です。
これには、historyコマンドの[-c]オプションを使用しますが、確認もされずに即時削除されますので、実行する際は十分に注意してください。

# history -c

すべて削除されますので、当然ですが結果はこのようになります。

# history
    1  history

historyの履歴を自由に削除

history履歴は、実際は単純に各ユーザー毎のhistoryファイルに書かれているだけですので、いつものようにvi(またはvim)でファイルを開いて、あとは煮るなり焼くなり二宮和也。

vi ~/.bash_history

この方法だと、個別削除するのも、範囲削除するのも、一括削除するも自由自在ですね!

モバイルバージョンを終了