How to delete a single command from history on a Linux/Unix Bash shell
I‘m working in Ubuntu bash terminal application and remotely on a RHEL server in cloud platform. I typed the wrong and dangerous command. I no longer wish to remember dangerous command in the history file. How can I remove or delete a single command from bash history file?
You can use the history command to clear all history or selected command line. In this tutorial, you will learn how to clear a specific command from bash history in Linux, MacOS, and Unix-like systems.
How do I view history with line number?
Simply type the history command:
How to delete a single command number 1013 from history in Linux
## Delete the bash history entry at offset OFFSET ## history -d offset history -d number history -d 1013
How do I delete all the history?
The syntax is:
Add above command to your ~/.bash_logout file to clean when you logout:
cat /dev/null > ~/.bash_history && history -c
Tip: Control bash history like a pro
First, you can increase your bash history size by appending the following config option in ~/.bashrc file:
## Set the maximum number of lines contained in the history file ## HISTFILESIZE=5000000 ## Set the number of commands to remember in the command history ## HISTSIZE=10000 ## Append it ## shopt -s histappend ###### # Controlling how commands are saved on the history file ## # ignoreboth means: ## # a) Command which begin with a space character are not saved in the history list ## # b) Command matching the previous history entry to not be saved (avoid duplicate commands) ## ###### HISTCONTROL=ignoreboth
Save and close the file.
Where to find more information about history command?
Read bash man page by typing the following command:
$ man bash
Another option is to type the following command:
$ help history
history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...] Display or manipulate the history list. Display the history list with line numbers, prefixing each modified entry with a '*'. An argument of N lists only the last N entries. Options: -c clear the history list by deleting all of the entries -d offset delete the history entry at offset OFFSET. -a append history lines from this session to the history file -n read all history lines not already read from the history file -r read the history file and append the contents to the history list -w write the current history to the history file and append them to the history list -p perform history expansion on each ARG and display the result without storing it in the history list -s append the ARGs to the history list as a single entry If FILENAME is given, it is used as the history file. Otherwise, if $HISTFILE has a value, that is used, else ~/.bash_history. If the $HISTTIMEFORMAT variable is set and not null, its value is used as a format string for strftime(3) to print the time stamp associated with each displayed history entry. No time stamps are printed otherwise. Exit Status: Returns success unless an invalid option is given or an error occurs.