How to find previously used terminal commands in Linux and macOS
Almost everyone already knows this one, but I’m mentioning it anyway for the
sake of completeness: you can easily look up previously entered commands by
pressing the Up button (
⬆︎) until you’ve found what you’re looking for.
If it’s been a while since you last executed that command, it may take a lot of key presses before you get there though…
history command lists all commands that have been issued by
the user that’s currently logged in. This is mainly handy in situations where
you want to see an overview of commands.
By sending the output of the
history command to
grep using a pipe operator
|) we can filter the history so that it only shows commands that contain
specific words. For example, to show all previously used commands that include
the string “git config” you would run
history | grep 'git config':
Don’t forget to add quotes to your search string if it contains spaces;
grep will try to treat each subsequent keyword as a file or
Most people who use the
history | grep method manually copy and paste the
command that they want to execute again, but there’s actually no need for this.
You may have noticed that each line of
history’s output is .
!, followed by the number of the command that you were looking for,
and pressing Enter will write the contents of that line to the terminal:
There’s another shortcut,
!!, which you can use to quickly reissue the last
command. This is especially useful when you forgot to prepend
sudo to your
Instead of manually retrieving and modifying the last command, simply use
which serves as a placeholder for the contents of the original command:
The final method to look up previously issued commands is the method that I use most often: interactive search.
Press to enable interactive search mode.
You can now look up commands by entering a search string, e.g.
git push (no
need to add quotes).
If you’ve found the command you want, press Enter to execute it. Otherwise, keep
typing to improve your query, press
R to view the next result, or press
C to exit interactive search mode.
Interactive search mode can be a huge time saver, so make sure you use it often!