Ubuntu : ルート .bash_history の一部を痕跡を残さずに削除する

Ubuntu : ルート .bash_history の一部を痕跡を残さずに削除する

ルートの .bash_history ファイルは次のようになります。

line 1
line 2
line 3
line 4

3行目と4行目を削除します

su
vim ~/.bash_history

#delete line 3 und 4 with dd
line 1
line 2

:wq

ENTER
CTRL + D

しかし、今 .bash_history を見てみると:

su
cat ~/.bash_history

#.bash_history
line 1
line 2
vim ~/.bash_history

では、最後の行にファイルを編集したことが表示させずに、履歴の一部だけを削除するにはどうすればよいでしょうか。

ありがとう

答え1

使用:

su
 vim ~/.bash_history

履歴には、空間その前に。


これは変数に依存しますHISTCONTROL。デフォルトでは(ルートの場合) ですignoredups:ignorespace

答え2

すでに述べたように、コマンドの前にスペースを入れることもできますが、それはHISTCONTROL変数に依存します。代替案をいくつか示します。

実際に、ターミナルに履歴の記録を停止および開始するように指示することができます。これは次のコマンドを使用して実行できます。

set +o history      #stop recording history
set -o history      #start recording history

すでにいくつかのコマンドを実行していて、記録を停止したりスペースを使用したりし忘れた場合でも、セッションが開いている限り、書き込みを停止することができます.bash_history。これは、ターミナルセッションを閉じるときにファイルに書き込まれます。したがって、セッションを閉じる直前に(suこの場合は終了する前に)、現在のセッション履歴を削除できます。これは、次のコマンドを使用して実行できます。

history -c

極端なオプションとしては、すべてのコマンドの実行が完了したらターミナル プロセスを強制終了することです。基本的には、履歴をファイルに書き込む前にプロセスを強制終了します。

kill -9 $$

$$現在のターミナルプロセス ID を返し、kill -9そのプロセスを終了します。

関連情報