The C shell and bash can save copies of the previous command lines you type. Later, you can ask for a copy of some or all of a previous command line. That can save time and retyping.
This feature is called 
history substitution
, and it's done when you type a string that starts with an exclamation point (
!
command
). You can think of it like 
variable substitution (
$
varname
) (
6.8
)
 or 
command substitution (
`
command
`
) (
9.16
)
: the shell replaces what you type (like 
!$
) with something else (in this case, part or all of a previous command line).
Article 11.1 is an introduction to shell history. These articles show lots of ways to use history substitution:
We start with favorite uses from several contributors - articles 11.3 , 11.4 , 11.5 , 11.6 .
Article 11.7 starts with a quick introduction, then covers the full range of history substitutions with a series of examples that show the different kinds of things you can do with history.
(Back in article 
9.6
 are examples of 
csh
 and 
bash
 operators like 
:r
. Many of these can be used to edit history substitutions.)
See an easy way to repeat a set of csh or bash commands in article 11.8 .
Each shell saves its own history. To pass a shell's history to another shell, see articles 11.11 and 11.12 .
You don't have to use an exclamation point (
!
) for history. Article 
11.15
 shows how to use some other character.
The Korn shell does history in a different way. Article 11.13 introduces part of that: command-line editing in ksh and bash .
One last note: putting the history number in your prompt ( 7.2 ) makes it easy to re-use commands that haven't scrolled off your screen.
-