Searching your command history on macOS terminal
Use Ctrl
+ R
for searching a command from history in Terminal.
(reverse-i-search)`':
Type any substring of the command you want to search e.g. grep
(reverse-i-search)`grep': grep "XYZ" abc.txt
It will return the latest command that matches your input. If that is not the command you were searching for, keep pressing Ctrl
+ R
for next match until you find your command.
Once you found your command press Return
to execute it.
If you want to exit without running any command, press Ctrl
+ G
PS: This answer is same as suggested by Inian, just giving more details for easy usage.
The command history is stored under your home folder in a hidden file called .bash_history. To view it's content in nano, use the following command in Terminal:
nano ~/.bash_history
Or open with your text editor (default is TextEdit):
open ~/.bash_history
In my case it's a very long list and as I scroll through seems like the last ~500 command is stored here.
How about using Ctrl+
R for searching on the Terminal
Utility in Mac
for searching on the command history,
dudeOnMac: freddy$ whoami
freddy
(reverse-i-search)`who': whoami
Well for controlling how long the history
would be retained that depends on a few shell
environment variables, HISTFILESIZE
which is nothing but number of lines of history you want to retain. Set a huge value for it in .bash_profile
for it to take effect
HISTFILESIZE=10000000
Migrating an answer to SO from this answer on the Unix and Linux Stack Exchange:
Pressing ctrl+R will open the history-search-backward. Now start typing your command, this will give the first match. By pressing ctrl+R again (and again) you can cycle through the history.
If you like to be super lazy you can bind the up/down arrow keys to perform this search, I have the following in my .inputrc
to bind the up/down arrow key to history-search-backward
and history-search-forward
:
# Key bindings, up/down arrow searches through history
"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward
Just type something (optional), then press up/down arrow key to search through history for commands that begin with what you typed.
To do this in .bashrc
rather than .inputrc
, you can use:
bind '"\e[A": history-search-backward'