ターミナルの履歴をクリアするにはどうすればよいですか?


93

私は約2日間Linux Mint 17.1 Rebeccaを使用しており、誤ってパスワードを端末に入力しました。これは、以前に入力したコマンドの履歴リストに表示されます。

ターミナルの履歴を完全にクリアしたい。私は端末で次のコマンドを使用してみましたが、これは履歴を永久にクリアすると思っていましたが、そうではありません:

history -c
reset
tput reset

上記のコマンドは端末から履歴を「消去」しますが、終了して新しい履歴を表示すると、以前の履歴がすべて残っており、-historyコマンドを使用してキーボードのUP矢印を押すことですべてを再度一覧表示できます。履歴を完全にクリアするまでこれを実行したくないので、引き続き使用します。

どうすれば端末の履歴を完全にクリアできますか?

注:履歴を保存せずにターミナルを終了したくないのは、この1つのインスタンスで永久にクリアするだけです。


1
sed -i "s/$your_pass//g" ~/.bash_history...
ジェイソン・ライアン

3
@jasonwryanそれだけでは、sedコマンドがシェル履歴に記録されるため、問題は解決しません。
ジル

1
私は@jasonwryanのコードを使用しようとしましたが、私は得ました:sed:-e expression#1、char 0:以前の正規表現はありませんが、なぜかを知っていると思うので、検索といくつかの混乱からこれを思い付きます: cat / dev / null>〜/ .bash_history && history -c && exit
シャンバラ

1
@Gilles:そのとおりです。コマンドの前にスペースがあるはずです...
jasonwryan

回答:


145

resetまたはtput reset、端末に対してのみ処理を行います。履歴はシェルによって完全に管理されますが、シェルは影響を受けません。

history -c現在のシェルの履歴をクリアします。パスワードを入力したばかりで、そのシェルを終了したり、その履歴を明示的に保存していない場合は、これで十分です(ただし、やり過ぎです)。

bashを終了すると、履歴は履歴ファイルに保存されます。これはデフォルトでは.bash_historyホームディレクトリにあります。より正確には、現在のセッション中に作成された履歴がファイルに追加されます。すでに存在するエントリは影響を受けません。履歴ファイルを現在のシェルの履歴で上書きするには、を実行しhistory -wます。

すべての履歴エントリを削除する代わり.bash_historyに、エディターで開き、保持したくない行を削除できます。また、historyすべてのエントリを表示し、不要なエントリhistory -dを削除し、最後history -wに保存するために使用することで、bash内であまり便利ではありません。

履歴ファイルを編集した後でも、以前のバージョンのファイルからディスク上のどこかにパスワードが残っている可能性があることに注意してください。ファイルシステムから取得することはできませんが、ディスクに直接アクセスして見つけることは可能ですが(おそらく簡単ではありません)。このパスワードを別の場所で使用し、ディスクが盗まれた(または誰かがディスクにアクセスした)場合、これは問題になる可能性があります。


1
私はあなたの答えが好きであり、あなたが私に非常に有用であるとは知らなかったかなり多くのことを言ったので受け入れます。パスワードも変更します!
シャンバラ

最初のタイプはhistory、その後、あなたは履歴ログに行番号1000年を削除したいはず、履歴ログおよび削除する行番号の内容を確認するhistory -d 1000
クロードCOULOMBE

私は直接の.bash_historyファイルを変更した場合、彼らは修正前にあったように、historyコマンドは、まだ私がログアウトするまで/にログインし、コマンドを示します。
Benitok

35

history -cを試しましたが、いったん終了して再び開くと履歴が戻ります。これは役に立ちました。

cat /dev/null > ~/.bash_history && history -c && exit

これにより、履歴ファイルに保存された履歴と現在のセッションの履歴がクリアされます(bash終了時にファイルに保存されないように)。その後、シェルを終了します。次のシェルセッションには履歴がありません。


18

すべての履歴エントリを削除する代わりに、ターミナルで次のコマンドを入力します。

  1. history -c (削除履歴用)
  2. history -w (履歴を保存)

inc_append_historyまたはshare_historyオプションが設定されている場合、これはzshでは十分ではありません。
サガ

5

ここにはセキュリティ上の問題があるため、履歴ファイルを安全に削除することを検討する必要があります。

$ shred -u ~/.bash_history && touch ~/.bash_history

3

初心者が同じ問題に直面したので、私は履歴ファイルを削除して再作成するというかなり残忍な手段に頼りました:

rm .bash_history
touch .bash_history

私が気づいている不快な副作用を引き起こすことなく、それは私のために働いた。


3

タイプ: history -c; rm ~/.bash_history

history -c現在のセッションの履歴をrm ~/.bash_historyクリアし、長期の履歴をクリアするため、history -c; rm ~/.bash_history両方をクリアします。


説明は、OPがよりよく理解するのに役立ちます。
雑種
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.