Linux Mint 17.1 Rebeccaを約2日間使用していますが、誤って自分のパスワードを端末に入力しましたが、以前に入力したコマンドの履歴リストに表示されます。
端末履歴を完全にクリアしたい。端末で次のコマンドを使用してみましたが、履歴は永久にクリアされると思いましたが、そうではありません。
history -c
reset
tput reset
上記のコマンドは、ターミナルから履歴を「消去」しますが、終了して新しい履歴を表示すると、以前の履歴はすべてそのまま残り、-historyコマンドを使用して、またキーボードの上矢印キーを押すことで、すべて再度一覧表示できます。 。私の履歴を完全にクリアするまでこれを起こしたくないので、それを使い続けたいです。
端末の履歴を完全にクリアするにはどうすればよいですか?
注意:履歴を保存せずにターミナルを終了したくない場合は、この1つのインスタンスで履歴を完全にクリアしてください。
reset
またはtput reset
は、端末に対してのみ処理を行います。歴史は完全に影響を受けないままシェルによって管理されています。
history -c
は、現在のシェルの履歴をクリアします。パスワードを入力してシェルを終了していないか、履歴を明示的に保存していない場合は、これで十分です(やりすぎです)。
Bashを終了すると、履歴は履歴ファイルに保存されます。デフォルトでは、ホームディレクトリの.bash_history
です。より正確には、現在のセッション中に作成された履歴がファイルに追加されます。すでに存在するエントリは影響を受けません。履歴ファイルを現在のシェルの履歴で上書きするには、history -w
を実行します。
すべての履歴エントリを削除する代わりに、.bash_history
をエディターで開いて、保持したくない行を削除できます。 history
を使用してすべてのエントリを表示し、次にhistory -d
を使用して不要なエントリを削除し、最後にhistory -w
を使用してbash内で行うこともできます。 。
パスワードを読み取った実行中のbashインスタンスが複数ある場合は、それぞれが再度保存する可能性があることに注意してください。履歴ファイルからパスワードを完全に削除する前に、実行中のすべてのシェルインスタンスからパスワードが削除されていることを確認してください。
履歴ファイルを編集した後でも、パスワードが以前のバージョンのファイルのディスクのどこかに残っている可能性があることに注意してください。ファイルシステムから取得することはできませんが、ディスクに直接アクセスして検索することは可能かもしれませんが(おそらく簡単ではありません)。このパスワードを他の場所で使用していて、ディスクが盗まれた(または誰かがディスクにアクセスした)場合、これは問題になる可能性があります。
私はhistory -cを試しましたが、いったん終了して再び開くと、履歴が戻ってきます。これは私を助けました。
cat /dev/null > ~/.bash_history && history -c && exit
これにより、履歴ファイルに保存されている履歴と現在のセッションの履歴が消去されます(bash
の終了時にファイルに保存されないようにするため)。その後、シェルを終了します。次のシェルセッションには履歴がありません。
すべての履歴エントリを削除する代わりに、ターミナルで次のコマンドを入力します。
history -c
(削除履歴の場合)history -w
(履歴を保存)ここにはセキュリティの問題があるため、履歴ファイルを安全に削除することを検討してください。
$ shred -u ~/.bash_history && touch ~/.bash_history
初心者が同じ問題に直面したとき、私は履歴ファイルを削除して再作成するというかなり残忍な手段に頼りました:
rm .bash_history
touch .bash_history
それは私が知っている不快な副作用を引き起こすことなく私のために働きました。
タイプ:history -c; rm ~/.bash_history
history -c
現在のセッションの履歴をクリアしますrm ~/.bash_history
は長期間の履歴をクリアするので、history -c; rm ~/.bash_history
は両方をクリアします。