Word Designators

Commands consist of words. A word is a command name, an argument, an operator, or a special character like ; or &. 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

Designator

Description

!*

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 file3          Look at some files
% pr !* | lpr                     Print 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 file2          Search for a word
% grep -i !*                      Do a case-insensitive search instead
grep -i error file1 file2

Using !$ 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: ...

Get Using csh & tcsh now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.