DEV Community


Using grep and history command to find previous commands in Linux

asimdahall profile image Asim Dahal ・2 min read

You input command in your linux terminal which is very long and hard to remember. It is needed to input the command again to the terminal. You find it hard to search for the command that is needed. You keep pressing up arrow again and again until the required command is found. Time is wasted during this process.

This is where history command comes in. Go to your linux terminal and type the command history. You will find the list of commands you previously used like this.
Use of history command

In the above image you can see all the previous commands you have used along with their respective numbers. Now let's assume you have to use the command git clone which is number 56. Now you can execute the command by typing

asims-MacBook-Pro:~ !56

which will execute the command on number 56.
Now let'say we have to search the previous command that we have used. For that, we can combine grep with the history command. Let's take a case here. I have to search for the command

xcrun simctl shutdown all

which I have used before but I don't remember the full command and only remember xcrun. So for searching the command, we can combine the history and grep command like this:

asims-MacBook-Pro:~ asim$ history|grep xcrun

after that you will get the following output

  422  xcrun simctl shutdown all 
  452  xcrun simctl shutdown all 
  454  xcrun simctl shutdown all 
  502  history|grep xcrun

you get all the commands where xcrun command is used with their respective numbers. Now you can execute the command like this:

asims-MacBook-Pro:~ asim$ !422

which will then execute the needed command.

I am sorry for the bad grammar. Feedbacks and suggestions are kindly welcome. Thank you.

You can follow me on Twitter


Editor guide
ferricoxide profile image
Thomas H Jones II

If you know the command you're trying to repeat, then !<starting-string> is great. Similarly, if you know the command you're trying to repeat, but you need to modify it, !<starting-string>:s/<SEARCH>/<REPLACE> or even !<starting-string>:gs/<SEARCH>/<REPLACE> are freaking awesome.

Note: This type of advanced command-history usage works in BASH and CSH-derived shells. Dunno about other shell-families.

darkes profile image
Victor Darkes

Big fan of using history, I'd be lost if I didn't have it. My personal way of accessing it on Macs is by using Ctrl + R and that let's you do pretty much the same thing as the grep method and you don't have to do the second line to execute the expression. Give it a try!