How can I remove the last 5 lines in bash history? So that when I reload the Ubuntu server, or restart it they're not there at all?
history -c only removes it from current session, but when I re-login I see the commands again, I want to clear the last 5.
I've run:
historyThen i'll see the numbers of the commands e.g:
489 cd .. 490 cd .zshrc 491 cat .zshrcThen I run for example:
history -d 489
history -c Then i close terminal and reopen it and i still see line 489 it was only deleted for that current session, how do I delete it permentantly from all sessions going forward?
25 Answers
You can achieve removal from the history file using the commandline in two steps:
Typing history -d <line_number> deletes a specified line from the history in memory.
Typing history -w writes the current in-memory history to the ~/.bash_history file.
The two steps together remove the line permanently from the in-memory history and from the .bash_history file as well.
Ref: Super User
5I think you need to try this its very easy & simple.
How to delete history without any trace
history -d $((HISTCMD-1)) && history -d NO_of_History_you_want_to_deleteif you want to excute a command without leaving any trace.
history -d $((HISTCMD-1)) && type_your_command_here_and_execute
There are different ways to accomplish this task, but lets clarify something before going further.
There is a file named: ~/.bash_history, which contains your older terminal sessions history, whenever you close your terminal, your history will be saved there.
At the same time the history of your old sessions along with current session is temporary accessible by history commands until you close the terminal which then will be saved into ~/.bash_history file.
So if you remove 5 lines at the end of ~/.bash_history, then closing terminal will cause your current command to be accessible at next sessions.
So if I do a wc on .bash_history:
wc -l ~/.bash_historyMost of the time I'll get a smaller number than of history | wc -l.
If you want to remove the last 5 line of the file, you can use this command:
for i in {1..5}; do sed -i '$d' .bash_history; done;And if you want to keep all history except last 5 command issued in current session run:
history | awk '{ print $2 }' | head -n -5 > .bash_historyDon't forget to run history -c too.
Write the current history to the history file, overwriting the history file's contents
history -wEdit history as you wish
vi ~/.bash_historyRead the contents of the history file and use them as the current history.
history -r
Open ~/.bash_history in your editor, and remove last 5 lines.