[macOS] How to search or view previous terminal command history


This happens to most of us that we used some command in the Terminal in the past and forgot about it, some ssh command or a grep with a regex, or a curl command that you want to reuse but do not recall it, in such case you can use a very powerful command called as history,

Whenever you are working on a shell (say a terminal on macOS, or any other CLI), it maintains a record of commands or operations that you had executed during the current session. Using the history command you can works with this list of mainated records and search and manipulate it.

When you fire a history command (with or without arguments) this list is printed out in the console/terminal.

Syntax: 

history [-c] [-d offset] [n] or 
history -anrw [filename] or 
history -ps arg [arg...]

History Command Examples:

This will print out all the previously typed command in sequence with the mostly newest command at the last.

1. With no arguments
Terminal history command
Terminal history command
$ history
1    printf '%s\n' ${PATH//:/\/* }
2    vi ?
3    vi asf
4    ssh 192.168.1.111
5    help
6    vi help
7    vi abc
8    vi abc
9    vim abc.txt
10   grep '%a'
11   ls -ltr
12   clear
1    grep '%chicago%'
1    grep '%linux%'
.
.
.
564  help history
2. With with number [n] argument: history [n]

As you would have seen in the example 1, we get all the previous history list when you simply use history, if you want to restric the results you can make use of a numeric value post the command,

$ history 10
  505  bash
  506  ls -ltrh
  507  grep '%sweden%'
  508  grep '%txt%'
  509  curl http://code2care.org
  510  ls -ltr
  511  ps -ef
  512  clear
  513  pwd
  514  history 10
3. Search history with grep command:

Now this is the most most interesting stuff, you can combine the grep command with history command to find specific key words you are looking for in the command search.

$ history | grep curl
   27  curl https://code2care.org
   29  history | grep curl

⛔️ If you want to delete all historical command list you can make use of history -c.

⚡️ Did you know?: In initial versions of Unix based Operating Systems the history command was available as a separate program. Which is built-in now-a-days, so the separate history program is not used anymore (mostly!)