bashの履歴を完全にクリアする方法は?


254

サーバーの履歴から以前のすべてのコマンドをクリアしたい。私は使用しhistory -c、すべてのものがクリアされているようですが、サーバーにsshするとき、すべてのコマンドはまだそこにあります。

永久にクリアするにはどうすればよいですか?

回答:


332

ファイルに~/.bash_historyは履歴が保持されます。

サーバーでbash履歴を完全にクリアするには、ターミナルを開いて次を入力します。

cat /dev/null > ~/.bash_history

他の代替方法は、リンク~/.bash_historyすることです/dev/null

しかしながら、

ワン迷惑な副作用は、履歴エントリを持っているということですメモリにコピーし、それはなりますが、ログアウト時にファイルに戻ってフラッシュ

これを回避するには、次のコマンドを使用します(私のために機能しました)。

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

17
上記のコマンドを.bashrc&.bash_logoutに入れることもできます。あなたはuはあなたがあなたの歴史をログアウト時にクリアされます&明確な歴史を持っていますログインするとき、それは何を意味する
カシム

26
なぜ/ dev / nullが必要なのですか?> ~/.bash_hstory十分ではないでしょうか?
コンフィギュレー

4
はい、それで十分です!
fromnaboo

3
SSHで接続しているときに、ラズベリーボックスでそれを実行しようとしました。上記のコマンド(cat / dev / null>〜/ .bash_history && history -c && exit)を、@Qasimが示唆するように.bashrcと.bash_logoutの両方に追加しました。SSH経由で接続するとすぐに、リモートホストが接続を閉じます(motdを出力した後)。ヘルプ:/
高度な

14
適切に読んだり、処理やデータフローを理解したりせずに、やみくもに物事を行ったときに何が起こるかを示します。また、悪いコミュニケーションの落とし穴も示しています。devav2が1回実行したのは、Qasimが書き込むべきだったことは、ログインスクリプトに追加する前にexitコマンドを削除することです。
シュリ

142

何をすべきか:

では、すべてのオープンbashシェル(開いている複数の端末を持っている場合があります)。

history -c
history -w

理由:上記のようhistory -cに、ファイルを空にします~/.bash_history。bashシェルはすぐに履歴をbash_historyファイルにフラッシュしないことに注意することが重要です。そのため、すべての端末で(1)履歴をファイルにフラッシュし、(2)履歴をクリアすることが重要です。それが上記のコマンドが行うことです。

参照:http : //www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/


3
実際には、他の方法は私のために働いた。
クリスチャンプ14

24
多くの場合、あなたは、これらの2つのコマンドを一緒に組み合わせることができますhistory -cw
エリオット

2
何らかの理由で、これはUbuntu 14.04では機能しませんが、おそらく他の機能です。すべきですが、そうではありません。コマンド「history -cw」を発行すると、履歴がもう存在しないことを上矢印で確認できますが、Shiftキーを押しながら別のターミナルウィンドウ(Unityデスクトップで)を起動し、ターミナルアイコン(ランチャーに固定されている)コマンド履歴は戻ってきます。「history -cw」を何回実行しても関係ありません。「cat / dev / null>〜/ .bash_history」は私のために働いた唯一の方法です。
半蔵H 14

私はUbantuではありませんが、OSXのbashシェルでは問題なく動作します。
スコットビッグス

3
履歴-c、次に履歴-wで、最初に履歴をクリアしてから変更を書き込みます。これは、端末を閉じて再度開くことで簡単に確認できます。最初に-wを指定するとコマンドが再び表示され、-wを指定すると最後の履歴が事実上クリアされます。
半蔵H

56

次のコマンドを実行して、履歴を永久にクリアします

history -c && history -w

幸運を!


3
受け入れられた答えよりもはるかに良い。;)
ちらみす

この答えは、これらのフラグが何をするのかを説明している場合(したがって、使用するのに適切なコマンドである理由とタイミング)を説明するとさらに役立ちます。
LarsH

20

もう1つもっと簡単な方法があります。history -cターミナルプロンプトで実行すると、bash_historyファイル内のすべてのエントリが消えます。


いいえそうではありません。ログアウト、ログイン、矢印アップですべてが得られます。「history -w」も必要です。
stolsvik

1
OPの質問を読んだ場合history -c、この質問に至った正確な方法はusingであることがわかります。
J.Money

10

これを行う別の方法は、コマンド~/.bash_historyを使用してファイルを削除することですrm ~/.bash_history。別の時間にログイン.bash_historyすると、ファイルが自動的に作成されます。


4
少なくとも一部のOSでは、ログアウト時に〜/ .bash_historyがディスクに書き込まれます-* buntusについてはわかりません。
d -_- b

7

現在のシェルの履歴をクリアします。

history -c

ログアウトすると、現在のシェルの履歴が最大数まで、前のシェルの履歴のキャッシュである〜/ .bash_historyに追加されます(「man bash」のHISTFILESIZEを参照)。

履歴を完全に削除する場合は、上記のエントリの多くが示唆している〜/ .bash_historyを空にする必要があります。といった:

history -c && history -w

これにより、現在のシェルの履歴がクリアされ、現在のシェルの履歴(空)が強制的に〜/ .bash_history ....を上書きするか、より正確にするには、HISTFILE(デフォルトは〜/ .bash_history)を上書きします。

お役に立てれば。


4
あなたの答えは正確ですが、質問は2年前のものであり、回答を受け入れ、あなたが与えたのと同じ回答が含まれていました。
チャールズグリーン14

6
rm ~/.bash_history; history -c; logout

再度ログインして、矢印が何も与えないことを確認してください。


1
@KasiyAそれは...そう必要は編集しないために、サーバおよびSSHセッションについてです
ラドゥRădeanu

0

これを試して

を編集して.profile、ファイルの最後に以下の行を追加します

rm -f .bash_history

この方法では、ログインするたびに、.bash_historyファイルが自動的に削除されます。-r recursive removeオプションを追加するのは危険なようで、必要ありません。

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