History is a very useful Linux command that allows you to view the most recently executed commands in your current session. It keeps track of all the commands you execute in a given session and enables you to view, reuse those commands quickly. This way you don’t need to retype long and error-prone commands. In this article, we will look at how to use Linux history command.
How to Use Linux History Command
History command is available in almost all Linux shells, however their implementation may slightly differ from one shell to another. For example, in some Linux distributions, history command will also show commands executed from previous sessions.
Open terminal and enter history to view history of recent commands.
$ history
Here is the output
1003 ls 1004 sudo mv tech_blog/ tech-blog/ 1005 sudo mv database_blog/ database-blog/ 1006 ls 1007 cd analytics-blog/ 1008 ls 1009 cd /etc/apache2/sites-enabled/ 1010 ls ... 2000 sudo vim .htaccess 2001 history
You will see the each line has a number followed by the command executed. The command number allows you to easily rerun any command quickly, as you will see later.
If you have a large number of commands in your history and want to see only the last 5 commands you have run then use the following command
$ history 5 1998 cd tech-blog/ 1999 ls 2000 sudo vim .htaccess 2001 history 2002 history 5
Also read : How to Change XAMPP Apache Server Project
Repeating Commands
There are some commands in shell which make use of this history of commands.
For example, here is the command to rerun command number 1009. You just need to enter an exclamation mark followed by the command number you want to repeat.
$ !1009
If you want to repeat the last command you executed, just use double exclamation mark.
$ !!
If you want to repeat the nth previous command (e.g. 10th previous command), then use an exclamation mark, followed by hyphen and the number of previous command, all without any space, as shown below.
$ !-10
Also read : How to Fix Apache Not Executing PHP Files
Search for Command in History
If you want to search for a command from history that starts with a specific string, then type an exclamation followed by your search string, without any spaces.
For example, here is how to search for a command starting with the string “grep”
$ !grep
If you want to search for a command from history that contains a specific string, even if it does not start with it, then type an exclamation, followed by question mark, followed by the search string. Here is an example
$ !?grep
If you want to interactively search your history, just type ctrl+r, you will see a prompt. As you enter your search string, Linux will automatically search the most recent matching command.
(reverse-i-search)`ls': ls -all
Every time you enter ctrl+r, Linux will search for the next matching string going backwards. Once you find the command of your need, press enter to execute it.
Otherwise, press Ctrl+C to exit the interactive search at any time.
Also read : How to Uninstall NGINX in CentOS
Delete Command from History
You can easily delete command from history by adding -d option with history command followed by command number.
$ history 5 1996 cd tech-blog/ 1997 ls 1998 sudo vim .htaccess 1999 history 2000 history 5 $ history -d 1998 $ history 5 1997 ls 1998 history 1999 history 5 2000 history -d 1998 2001 history 5
Also read : How to Set UTF-8 Encoding in Tomcat Server
Modify the Last Command
If you want to modify the very last command, here is how to do it. Let us say in the last command you entered prep instead of grep, then enter the following command to simply replace prep with grep in last command and execute it.
$ ^prep^grep^
Basically you have to enter ^ followed by old string, followed by ^, followed by new string and finally ^ again.
That’s it. We have given a basic overview of how to use Linux history command. As you can see, history command is a very useful tool to be more efficient, and also helps you avoid re-typing commands unnecessarily.
Also read : How to Delete or Empty Large Files in Linux
Related posts:
Sreeram has more than 10 years of experience in web development, Python, Linux, SQL and database programming.