web-dev-qa-db-ja.com

bash履歴の最後の5行を削除するにはどうすればよいですか?

Bash履歴の最後の5行を削除するにはどうすればよいですか?それで、Ubuntuサーバーをリロードしたり、再起動したりしても、まったくそこにないのですか?

history -cは現在のセッションからのみ削除しますが、再ログインするとコマンドが再び表示されるので、最後の5つをクリアします。

私が実行しました:

history

次に、コマンドの番号が表示されます例:

  489  cd ..
  490  cd .zshrc
  491  cat .zshrc

次に、たとえば次を実行します。

history -d 489
history -c 

次に、ターミナルを閉じて再度開きますが、まだ現在のセッションでのみ削除された行489が表示されますが、今後のすべてのセッションから完全に削除するにはどうすればよいですか?

お知らせ下さい。

5
Anthony Pinto

このタスクを実行するにはさまざまな方法がありますが、先に進む前に何かを明確にしましょう。

~/.bash_historyという名前のファイルがあります。これには、古い端末セッション履歴が含まれ、端末を閉じるたびに、履歴がそこに保存されます。

同時に、現在のセッションとともに古いセッションの履歴は、ターミナルを閉じるまでhistoryコマンドによって一時的にアクセスでき、ターミナルは~/.bash_historyファイルに保存されます。

したがって、~/.bash_historyの最後の5行を削除すると、ターミナルを閉じると、次のセッションで現在のコマンドにアクセスできるようになります。

.bash_historyでwcを実行すると:

wc -l ~/.bash_history

ほとんどの場合、history | wc -lの数よりも少ない数を取得します。

ファイルの最後の5行を削除する場合は、次のコマンドを使用できます。

for i in {1..5}; do sed -i '$d' .bash_history; done;

また、現在のセッションの実行で発行された最後の5つのコマンドを除くすべての履歴を保持する場合:

history | awk '{ print $2 }' | head -n -5 > .bash_history

history -cも実行することを忘れないでください。

4
Ravexina

次の2つの手順でコマンドラインを使用して、履歴ファイルから削除できます。

history -d <line_number>と入力すると、指定した行がメモリの履歴から削除されます。 history -wと入力すると、現在のメモリ内履歴が〜/ .bash_historyファイルに書き込まれます。 2つのステップを合わせて、メモリ内の履歴と.bash_historyファイルから行を永久に削除します。

参照: StackExchange

6
EODCraft Staff

あなたはこれをとても簡単で簡単に試す必要があると思います。

  1. トレースなしで履歴を削除する方法

    history -d $((HISTCMD-1)) && history -d NO_of_History_you_want_to_delete
    
  2. トレースを残さずにコマンドを実行する場合。

    history -d $((HISTCMD-1)) && type_your_command_here_and_execute
    
5
Kartik Agarwal

エディターで~/.bash_historyを開き、最後の5行を削除します。

0
Nick Rodriguez