Whenever using Linux from a command line you will be typing a large number of commands throughout the day in your terminal. Every now and then you want to review what command you used to achieve something, or you might even want to reuse a command from the history. As your terminal will only show a limited number of lines and you cannot scroll backwards endlessly you can make use of history. The history command will show you a long list of commands you executed.
As an example of the history command you can see the output of one of my machines:
[root@localhost ~]# history 1 ./filebeat.sh -configtest -e 2 service filebeat.sh status 3 service filebeat status 4 chkconfig --list 5 chkconfig --list | grep file 6 chkconfig --add filebeat 7 service filebeat status 8 service filebeat start 9 cd /var/log/ 10 ls 11 cat messages 12 cd /etc/filebeat/ 13 ls 14 vi filebeat.yml 15 service filebeat stop 16 service filebeat start 17 date 18 tail -20 /var/log/messages 19 date 20 tail -f /var/log/messages 21 clear
Having the option to travel back in time a review which commands you used is great, especially if you are trying to figure out something and have tried a command a number of times in different ways and you are no longer sure what some of the previous “versions” of your attempt where.
An additional trick you can do with history is to reuse the command by simply calling it back from history without the need to enter it again. As an example, in the above example you can notice that line 17 is date. If we want to reuse it we can simply do a !17 on the command line interface. As an example we execute 17 again.
[root@localhost ~]# !17 date Sun Nov 27 13:41:55 CET 2016 [root@localhost ~]#