Searching Shell Command History
March 25, 2008 by Ankit
Almost all modern shell allows you to search command history if enabled by user. Use history command to display the history list with line numbers. Lines listed with with a * have been modified by user.
Shell history search command
Type history at a shell prompt:
$ history
Output:
Sample output:
6 du -c
7 du -ch
8 ls [01-15]*-2008
9 ls -ld [01-15]*-2008
….
41 g++ prime1.cpp
42 ./a.out
43 ssh ankit@delta
44 scp ~/Desktop/passport.jpg ankit@delta:
45 man expr
46 iptab
47 history
….
…
996 ping intrarouter.delta.nitt.edu
997 ssh ankit@intrarouter.delta.nitt.edu
998 alias
999 ~/scripts/clean.rss –fetch
1000 vnstat
1001 ~/scripts/clean.rss –update
To search particular command, enter:
$ history | grep command-name
$ history | egrep -i ’scp|ssh|ftp’
Emacs Line-Edit Mode Command History Searching
To get previous command containing string, hit [CTRL]+[r] followed by search string:
(reverse-i-search):
To get previous command, hit [CTRL]+[p]. You can also use up arrow key.
CTRL-p
To get next command, hit [CTRL]+[n]. You can also use down arrow key.
CTRL-n
fc command
fc stands for either “find command” or “fix command. For example list last 10 command, enter:
$ fc -l 10
To list commands 130 through 150, enter:
$ fc -l 130 150
To list all commands since the last command beginning with ssh, enter:
$ fc -l ssh
You can edit commands 1 through 5 using vi text editor, enter:
$ fc -e vi 1 5
Delete command history
The -c option causes the history list to be cleared by deleting all of the entries:
$ history -c

