I'm working in Mac OSX, so I guess I'm using bash...?
Sometimes I enter something that I don't want to be remembered in the history. How do I remove it?
I'm working in Mac OSX, so I guess I'm using bash...?
Sometimes I enter something that I don't want to be remembered in the history. How do I remove it?
If you want to run a command without saving it in history, prepend it with an extra space
prompt$ echo saved
prompt$ echo not saved \
> # ^ extra space
For this to work you need either ignorespace or ignoreboth in HISTCONTROL. For example, run
HISTCONTROL=ignorespace
To make this setting persistent, put it in your .bashrc.
If you've already run the command, and want to remove it from history, first use
history
to display the list of commands in your history. Find the number next to the one you want to delete (e.g. 1234) and run
history -d 1234
Additionally, if the line you want to delete has already been written to your $HISTFILE (which typically happens when you end a session by default), you will need to write back to $HISTFILE, or the line will reappear when you open a new session:
history -w
To clear all your history, use
history -c
To delete a single line, use
history -d linenumber
I have this in my ~/.bashrc, which makes the command $ forget delete the previous command from history
function forget() {
history -d $(expr $(history | tail -n 1 | grep -oP '^\s*\d+') - 1);
}
You always can edit and remove entries from ~/.bash_history, useful when you want to remove either one entry or more than one entry
If you want to forget the entire bash session, you can kill the current bash process. Since the variable $$ hold the pid of the current shell, you can do:
kill -9 $$
To remove a single line from the history file, use the -d option. For example, if you want to clear a command where you entered the clear-text password as in the scenario above, find the line number in the history file and run this command.
$ history -d 2038
To delete or clear all the entries from bash history, use the history command below with the -c option.
$ history -c
Alternatively, you can use the command below to delete the history of all last executed commands permanently in the file.
$ cat /dev/null > ~/.bash_history
Also With Bash 5, you can delete a range aswell
history -d 511-520
1- in bash terminal type
history # This will list all commands in history .bash_history file with line numbers
ex:
...
987 cd
988 ssh [email protected]
990 exit
991 cd
2- pick the CMD line number you want to delete
history -d 988
Note: if you want to delete for example last 3 CMDs, just pick the third line number from bottom ex: 988 and repeat the CMD history -d 988 3 times in sequence.
You need to write the changes after you cleared the history. And if you wouldn't like to have the history wipe command in your history then you need to run the command like that:
history -c && history -w && logout
Good luck.
If you have hstr (a way better reverse-i-search that can be installed with sudo apt install hstr), then it's really simple:
Ctrl+r to search your history.delete key, and press y to confirm.If you want to delete a range of history lines, you can use the script below.
This example will delete history output from line 1 to line 150.
for i in `history | awk 'NR > 1 && NR <=150{print $1}'`; do history -d $i; done
Quick steps:
echo $HISTFILEhistory command in your terminalIn Ubuntu (but I'm pretty sure, it will be work for other Linux distributions and also MacOS the same way) the bash history file can be simply edited in an arbitrary text editor:
$ nano ~/.bash_history
If you don't know, where it's stored, you can find it as follows:
$ echo $HISTFILE
Or you can just do it a bit more generic way:
$ nano $HISTFILE