Event specification for the C shell
To select words from an event, follow the event specification with
a colon (:) and one of the following word designators (the
words of an input line are numbered sequentially starting from 0)
| Item | Description |
|---|---|
| 0 | First word (the command name) |
| n | nth argument |
| ^ | First argument |
| $ | Last argument |
| % | Word matched by an immediately preceding ?string? search |
| x-y | Range of words from the xth word to the yth word |
| -y | Range of words from the first word (0) to the yth word |
| * | First through the last argument, or nothing if there is only one word (the command name) in the event |
| x* | xth argument through the last argument |
| x- | Same as x* but omitting
the last argument |
If the word designator begins with a ^, $, *, -, or %, you can omit the colon that separates the event
specification from the word designator. You can also place a sequence of the
following modifiers after the optional word designator, each preceded by a
colon:
| Item | Description |
|---|---|
| h | Removes a trailing path name extension, leaving the head. |
| r | Removes a trailing .xxx component, leaving the root name. |
| e | Removes all but the .xxx trailing extension. |
| s/OldWord/NewWord/ | Substitutes the value of the NewWord variable for the value of the OldWord variable. |
/) delimits
the original word (OldWord) and its replacement
(NewWord). However, you can use any character as
the delimiter. In the following example, using the % as a
delimiter allows a / to be included in the words:s%/home/myfile%/home/yourfile%&)
with the OldWord text in the NewWord variable.
In the following example, /home/myfile becomes /temp/home/myfile.s%/home/myfile%/temp&%The shell replaces a null word in a substitution
with either the last substitution or with the last string used in the contextual
scan !?String?. You can omit the
trailing delimiter (/) if a newline character follows immediately.
Use the following modifiers to delimit the history list:
| Item | Description |
|---|---|
| t | Removes all leading path name components, leaving the tail |
| & | Repeats the previous substitution |
| g | Applies the change globally; that is, all occurrences for each line |
| p | Displays the new command, but does not run it |
| q | Quotes the substituted words, thus preventing further substitutions |
| x | Acts like the q modifier, but breaks into words at blanks, tabs, and newline characters |
When using the preceding modifiers, the change applies only to the first modifiable word unless the g modifier precedes the selected modifier.
!$), the shell uses the
previous command as the event. If a previous history reference occurs on the
same line, the shell repeats the previous reference. Thus, the following sequence
gives the first and last arguments of the command that matches ?foo?.!?foo?^ !$A special abbreviation of a history reference
occurs when the first nonblank character of an input line is a carat (^).
This is equivalent to !:s^, thus providing a convenient shorthand
for substitutions on the text of the previous line. The command ^
lb^ lib corrects the spelling of lib in the command.
{ } to insulate it from the characters that follow.
For example, if you want to use a reference to the command:ls -ld ~paulto
perform the command:ls -ld ~paulause
the following construction:!{l}aIn this
example, !{l}a looks for a command starting with l and
appends a to the end.