Commands consist of words. A word is a command name, an argument, an operator, or a special character like
&. If I type the following command:
grep "Baton Rouge" addresses|sort>output&
the shell breaks the command into words, and numbers them as follows:
0 1 2 3 4 5 6 7 grep "Baton Rouge" addresses | sort > output &
Words are numbered, starting with 0, so the command name is usually word 0, and the first argument is usually word 1.
The history mechanism allows you to reference any word from any command in your history list, using word designators. Most often, however, you'll probably want to repeat words from your previous command, using the designators shown in Table 6-2.
Table 6-2. History Reference Word Designators for Previous Command
Repeat all arguments from previous command
Repeat first argument from previous command
Repeat last argument from previous command
!* is useful when you want to run a command on the files you used in your previous command:
more file1 file2 file3Look at some files %
pr !* | lprPrint the same files pr file1 file2 file3 | lpr
Or if you want to rerun a command, with an extra flag between the command name and the arguments:
grep error file1 file2Search for a word %
grep -i !*Do a case-insensitive search instead grep -i error file1 file2
!$ to repeat the last argument is useful for doing a series of operations on the same file. To review, edit, print, and mail a file, you might do something like this: ...