View history of commands run in terminal

Is there a way to save all my typed terminal commands and view it like history in a log book?


Solution 1:

This is automatically done. Bash stores your commands in ~/.bash_history. If you want to have a look at the history, either print the output of this file using one of

cat ~/.bash_history
less ~/.bash_history
...any other pager or output command...

Or you can use bash's builtin command:

history

To clear the history, delete the file and clear the temp history:

rm ~/.bash_history && history -c

The history size defaults to 500 commands. You can, however, increase this by adding a line to your ~/.bashrc file to set the HISTSIZE variable:

HISTSIZE=<number of entries, -1 for unlimited>

This will not take effect immediately, but only to newly started sessions. To apply this, re-source the .bashrc file:

. ~/.bashrc

or run HISTSIZE=... in your current session.

Solution 2:

You can type history on a terminal to view all the previous executed commands.


You can truncate the output to some lines (where 5 is the number of lines):

history 5

If do you want to view only commands containing a string (i.e. mv), you can do this:

history | grep mv

You can recall a command by typing ! followed by the entry number.

Let's say that I have a history like this:

1 ls -la
2 mkdir foo
3 mv bar.txt foo
  • To run mkdir foo, you can type !2.
  • To run the last command, you can use !-1 or !!
  • To run the penultimate, you can use !-2

If you run a command that fails because it needs root privileges (i.e. touch /etc/foo), you can use sudo !! to run the last command as root.


  • If you type !man you will execute the last command that begins with man
  • If do you type !?man? it will execute the last command that contains man (not neccessarily at the line begin)

If do you have a typo in a command, you can fix it this way. Let's say that I type cat .bash_hi, to replace .bash_hi by .bash_history I only need to type ^hi^history^.


Source: https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps

Solution 3:

Just type :

history > print.txt

A new file called print.txt will be created in your currently working directory.