Bash Command History

#linux-byte

Once upon a time, a user asked Linux where can I find my bash command history. Linux replied cat .bash_history in your root directory.

User: On executing, saw so many commands and asked how many will you store.

Linux: It depends on the environment variable HISTFILESIZE

User: echo $HISTFILESIZE, it gave 2000. Getting curious and asking how can I run a specific command from my history?

Linux: Executing history will get you to command history with line numbers. You can execute a command at a specific line with the syntax !<line-number> example: !4

@user:~$ history
 1  apt get update
 2  apt-get update
 3  sudo apt-get update
 4  sudo apt install nmap
 5  ifconfig
 6  sudo apt install net-tools
 7  ifconfig
 8  sudo nmap -sp 172.22.52.*
 9  sudo nmap -sP 172.22.52.*
 10  ls

@user:~$ !10
ls
example.sh generated_files
  • The amount of commands stored in history is managed by the environment variable HISTSIZE

  • Use !! to execute the last command

  • !-2 will execute the command which was executed before the last 2 command executions. You can change the number and play with it.

  • !<command_name> will execute the last execution of the command provided eg: !cat will execute the last cat command that you ran. If you just want to print the command to the console and not execute it use !<command_name:p> eg: !cat:p will log to the terminal the complete cat command that you executed last time.

User: Is there any way to search for a command in bash history?

Linux: ctrl+r brings up the search, start typing a command to search for it, once you get the command you are looking for press enter or ctrl+p to execute it. You can also leave the search by using ctrl+g

User: Hey I accidentally executed some commands which I shouldn't have, how to delete them from history?

Linux: I know you will do that! use history -d <line-number> to delete a specific command with the line number from history eg: history -d 10 will remove 10th command that you executed in history. You can also delete the entire history by using history -c.

User: That's a lot of info, let me practice a few.

Linux: As if you are going to.. with a sarcastic smile!

Linux will return.