~/.bash_history
に保存されている端末またはコマンドラインの履歴についていくつか質問があります。
history
コマンドで端末にファイルを表示できますが、gedit bash_history
でファイルを開こうとすると、ファイルは完全に空になります。どうして?
このコード行を使用して、ターミナルからファイル内の特定の行数を削除する方法を見つけました。
for i in {1..N}; do history -d N; done
ここで、Nは削除する行(またはコマンド)の数ですが、履歴ファイルにこの最後のコマンドが表示されるようになりました。質問は次のとおりです。最後のコード行を指定して、これが記録されないようにするにはどうすればよいですか?
直前のドットを忘れた場合、(bash)ターミナル履歴ファイルを開くコマンドは
gedit ~/.bash_history
このファイルは、close端末の場合にのみ更新されます。
このファイルから最後の1行を削除し、このコマンド自体を記録しないようにするには、新しいターミナルを開き、次の一連のコマンドを実行します。
sed -n -e :a -e '1,10!{P;N;D;};N;ba' ~/.bash_history && history -c && exit
または
for i in {1..10}; do sed -i '$d' ~/.bash_history; done && history -c && exit
または
head -n -10 ~/.bash_history > ~/.b_h_2 && mv ~/.b_h_2 ~/.bash_history && history -c && exit
sed
またはhead
は、選択された行をそれぞれ~/.bash_history
、history -c
から削除し、端末の履歴をクリアし、exit
を閉じます。
Bash_historyファイルは、ドットで始まる隠しファイルです。あなたがする必要があります
gedit ~/.bash_history
これにより、geditでファイルが開きます。
コマンドログの特定の部分のみを削除する場合は、上記の方法で十分です。特定のbashセッションのコマンドロギングを停止する場合は、コマンドを発行します
unset HISTFILE
もっと抜本的にするには、コマンドをログに記録したくないの場合、次のようにできます。
rm ~/.bash_history
ln -s /dev/null ~/.bash_history
最初の方法は単一のセッションでのみ有効であり、2番目の方法は将来のすべてのセッションでコマンドロギングを停止することに注意してください。
これにはすでに受け入れられた答えがありますが、80年代からこれをやっています。トラックを隠すのに最適な方法であり、マルチフェーズのアプローチです。ほとんどの場合、注意を払っていない限り気付かないものです。以下にその方法を示します。
ターミナル/シェル/セッションを開き、以下を実行します。
chmod 444 ~/.bash_history
シェルを終了し、ターミナル/シェル/セッションを開いて、次の操作を行います。ここに、履歴を完全に消去するための創造的な方法を示します。
vi ~/.bash_history
9999999 dd
<esc>wq!
Sudo echo "which ls" > ~/.bash_history
Sudo echo "cd ~/;ls" >> ~/.bash_history
その後、適切な測定のために:
chmod 444 ~/.bash_history
シェルを終了します
新しいシェルを開いて入力します
history
目立たないのは、ls -ratlを実行すると、〜/ .bash_historyがディレクトリリストのガラガラに消えてしまうことです。不要な注意を引くリンクとしては表示されません。ほとんどの人は、ルートで-aを実行しません。これは、エミュレーションが必要な場合に便利です。
このアプローチの欠点は、戻って履歴を取得する能力を失うことです。実際の〜/ .bash_historyファイルは、ディレクトリリストの最上部にも表示される可能性があります。これは、時間が経つにつれて非常に古い変更日になる可能性があり、それ自体が何かが間違っていることを発見する可能性があるためです.
シェルからログアウトするまで、履歴は保存されません。シェルからログアウトしてから、再度.bash_historyを確認してください。コマンド履歴がそこにあるはずです。
1)sh
;を実行しますこれにより、灰のサブシェルが生成され、履歴がまったく記録されません。そこから編集
2)行HISTCONTROL=ignoreboth
を.bashrc
に追加し、exec bash
を実行して現在のシェルを再初期化されたシェルに永続的に置き換え、ログに記録したくないすべてのコマンドを先行スペースで実行します。
私はまだコメントできないので、答えとして私のコメントを追加します:
man history
はすべてに答えます。
#1の答えは、履歴がメモリ上にあるということです。 history -a
は、すぐにファイルに保存します。 history -w
も保存しますが、他のセッションを台無しにする可能性があります。
回答#2:history -a
、gedit、必要な行を削除、history -r