UNIX in a Nutshell: System V Edition

UNIX in a Nutshell: System V EditionSearch this book
Previous: 5.4 ExpressionsChapter 5
The C Shell
Next: 5.6 Built-in C Shell Commands
 

5.5 Command History csh shell

Previously executed commands are stored in a history list. The C shell lets you access this list so you can verify commands, repeat them, or execute modified versions of them. The history built-in command displays the history list; the predefined variables histchars, history, and savehist also affect the history mechanism. Accessing the history list involves three things:

5.5.1 Command Substitution

!Begin a history substitution.
!!Previous command.
!NCommand number N in history list.
!-NNth command back from current command.
!string

Most recent command that starts with string.

!?string?

Most recent command that contains string.

!?string?%Most recent command argument that contains string.
!$Last argument of previous command.
!!string

Previous command, then append string.

!N stringCommand N, then append string.
!{s1}s2Most recent command starting with string s1, then append string s2.
^old^new^Quick substitution; change string old to new in previous command; execute modified command.

5.5.2 Command Substitution Examples

The following command is assumed:

%3 vi cprogs/01.c ch002 ch03

EventCommandCommand
NumberTypedExecuted
4^00^0vi cprogs/01.c ch02 ch03
5nroff !*nroff cprogs/01.c ch02 ch03
6nroff !$nroff ch03
7!vivi cprogs/01.c ch02 ch03
8!6nroff ch03
EventCommandCommand
NumberTypedExecuted
9!?01vi cprogs/01.c ch02 ch03
10!{nr}.newnroff ch03.new
11!!|lpnroff ch03.new | lp
12more !?pr?%more cprogs/01.c

5.5.3 Word Substitution

Colons may precede any word specifier. After an event number, colons are optional unless shown below:

:0Command name.
:nArgument number n.
^First argument.
$Last argument.
:n-mArguments n through m.
-mWords 0 through m; same as :0-m.
:n-Arguments n through next-to-last.
:n*Arguments n through last; same as n-$.
*All arguments; same as ^-$ or 1-$.
#Current command line up to this point; fairly useless.

5.5.4 Word Substitution Examples

The following command is assumed:

%13 cat ch01 ch02 ch03 biblio back

EventCommandCommand
NumberTypedExecuted
14ls !13^ls ch01
15sort !13:*sort ch01 ch02 ch03 biblio back
16lp !cat:3*more ch03 biblio back
17!cat:0-3cat ch01 ch02 ch03
18vi !-5:4vi biblio

5.5.5 History Modifiers

Command and word substitutions can be modified by one or more of the following:

5.5.5.1 Printing, Substitution, and Quoting

:pDisplay command but don't execute.
:s/old/new

Substitute string new for old, first instance only.

:gs/old/newSubstitute string new for old, all instances.
:&

Repeat previous substitution (:s or ^ command), first instance only.

:g&Repeat previous substitution, all instances.
:qQuote a wordlist.
:xQuote separate words.

5.5.5.2 Truncation

:rExtract the first available pathname root.
:grExtract all pathname roots.
:eExtract the first available pathname extension.
:geExtract all pathname extensions.
:hExtract the first available pathname header.
:ghExtract all pathname headers.
:tExtract the first available pathname tail.
:gtExtract all pathname tails.

5.5.6 History Modifier Examples

From above, command number 17 is:

%17 cat ch01 ch02 ch03

EventCommandCommand
NumberTypedExecuted
19!17:s/ch/CH/cat CH01 ch02 ch03
20!:g&cat CH01 CH02 CH03
21!more:pmore cprogs/01.c (displayed only)
22cd !$:hcd cprogs
23vi !mo:$:tvi 01.c
24grep stdio !$grep stdio 01.c
25^stdio^include stdio^:qgrep "include stdio" 01.c
26nroff !21:t:pnroff 01.c (is that want I wanted?)
27!!nroff 01.c (execute it)


Previous: 5.4 ExpressionsUNIX in a Nutshell: System V EditionNext: 5.6 Built-in C Shell Commands
5.4 ExpressionsBook Index5.6 Built-in C Shell Commands

The UNIX CD Bookshelf NavigationThe UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System