Bash history tricks
In addition to the possibility to view/edit your ~/.bash_history
manually, I’ve collected some little tips for the bash history:
-
Hide single commands from the bash history
If your command line begins with a space character, it won’t be logged. -
Log a command for later execution
If you’ve just typed a long command line and realized that there’s other stuff to do before executing it, jump to its beginning (withHome
) and type#
. The command will then be treated as comment and won’t be executed. As soon as you’ve finished running all the other instructions use the history to get back to your comment. Remove the#
and execute it. - disable .bash_history file
one simple way to disable the .bash_history file is to remove the write permission to it:chmod -w ~/.bash_history
If you first edit your .bash_history file manually you can turn it into a permanent history list with all your favourite commands.
-
use the reverse search
press Ctrl+R and then enter your search string. To edit the command (and exit the search mode) use tab or one of the position keys.The reverse-i-search always brings you the first match before the current history position
-
full history processing
The history command lists the whole saved bash command history.You could use it e.g. to show the last 10 commands:
history|tail -n 10
or to show all lines containing the word
ssh
history|grep ssh
-
execute the last matching command
If you want to run a command several times without scrolling through the history all the time you can use the!
at the start of the line to execute the last line that starts with your search string, e.g.:!ssh
will re-run the last invocation of ssh
-
clear local history
To clear the session history (not the one in.bash_history
) callhistory -c
- read/write history
If you have multiple sessions running and want to get the local history of one session to another one, you can usehistory -a
to append the local history to .bash_history in the first terminal and
history -r
in the second terminal to read
.bash_history
Those parameters can also be combined (read man bash for detailed information)