From serverwatch.com
Type history at the Bash command prompt, and you’ll get a list of your previous commands. You can navigate through these with the up and down arrows, but there are other ways of interacting with them that I’ve been investigating this week. One straightforward option is to use the number at the start of the line to refer to the command. So,
> !15268
will execute the line numbered 15268.
!!
executes the last command, and
!-2
will execute the last-but-two command.
You can edit previous commands quickly using :s///. For example, if you typed ‘temp’ when you meant ‘tmp’ in command 15200, use this to correct it:
!15200:s/temp/tmp/
To do this, edit with the previous command, use
!!:s/temp/tmp/
or the shortcut
^temp^tmp
Using the g global modifier changes every occurrence of the word, not just the first one:
!15200:gs/temp/tmp/
You can also edit a block of commands. Let’s say you executed a series of commands, between numbers 1478 and 1482, with a particular value, and want to edit them all. (Maybe you did a series of things to a file or a directory, and now want to repeat the sequence with another file.) Use this command:
fc 1478 1482
The lines will be opened up in your preferred editor, where you can edit them, save and exit, and they’ll be run (as edited) immediately. (And then added, in their edited form, to your history!)
Check out the bash manual for more things you can do with the history.