home *** CD-ROM | disk | FTP | other *** search
- @ignore
- This file documents the user interface to the GNU History library.
-
- Copyright (C) 1988, 1991 Free Software Foundation, Inc.
- Authored by Brian Fox and Chet Ramey.
-
- Permission is granted to make and distribute verbatim copies of this manual
- provided the copyright notice and this permission notice are preserved on
- all copies.
-
- Permission is granted to process this file through Tex and print the
- results, provided the printed document carries copying permission notice
- identical to this one except for the removal of this paragraph (this
- paragraph not being relevant to the printed manual).
-
- Permission is granted to copy and distribute modified versions of this
- manual under the conditions for verbatim copying, provided also that the
- GNU Copyright statement is available to the distributee, and provided that
- the entire resulting derived work is distributed under the terms of a
- permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this manual
- into another language, under the above conditions for modified versions.
- @end ignore
-
- @node Using History Interactively
- @chapter Using History Interactively
-
- @ifset BashFeatures
- This chapter describes how to use the GNU History Library interactively,
- from a user's standpoint. It should be considered a user's guide. For
- information on using the GNU History Library in your own programs,
- see the GNU Readline Library Manual.
- @end ifset
- @ifclear BashFeatures
- This chapter describes how to use the GNU History Library interactively,
- from a user's standpoint. It should be considered a user's guide. For
- information on using the GNU History Library in your own programs,
- @pxref{Programming with GNU History}.
- @end ifclear
-
- @menu
- * History Interaction:: What it feels like using History as a user.
- @end menu
-
- @node History Interaction
- @section History Interaction
- @cindex expansion
-
- The History library provides a history expansion feature that is similar
- to the history expansion provided by @code{csh}. The following text
- describes the syntax used to manipulate the history information.
-
- History expansion takes place in two parts. The first is to determine
- which line from the previous history should be used during substitution.
- The second is to select portions of that line for inclusion into the
- current one. The line selected from the previous history is called the
- @dfn{event}, and the portions of that line that are acted upon are
- called @dfn{words}. The line is broken into words in the same fashion
- that Bash does, so that several English (or Unix) words
- surrounded by quotes are considered as one word.
-
- @menu
- * Event Designators:: How to specify which history line to use.
- * Word Designators:: Specifying which words are of interest.
- * Modifiers:: Modifying the results of substitution.
- @end menu
-
- @node Event Designators
- @subsection Event Designators
- @cindex event designators
-
- An event designator is a reference to a command line entry in the
- history list.
- @cindex history events
-
- @table @asis
-
- @item @code{!}
- Start a history substitution, except when followed by a space, tab,
- the end of the line, @key{=} or @key{(}.
-
- @item @code{!!}
- Refer to the previous command. This is a synonym for @code{!-1}.
-
- @item @code{!n}
- Refer to command line @var{n}.
-
- @item @code{!-n}
- Refer to the command @var{n} lines back.
-
- @item @code{!string}
- Refer to the most recent command starting with @var{string}.
-
- @item @code{!?string}[@code{?}]
- Refer to the most recent command containing @var{string}.
-
- @item @code{!#}
- The entire command line typed so far.
-
- @item @code{^string1^string2^}
- Quick Substitution. Repeat the last command, replacing @var{string1}
- with @var{string2}. Equivalent to
- @code{!!:s/string1/string2/}.
-
- @end table
-
- @node Word Designators
- @subsection Word Designators
-
- A @key{:} separates the event specification from the word designator. It
- can be omitted if the word designator begins with a @key{^}, @key{$},
- @key{*} or @key{%}. Words are numbered from the beginning of the line,
- with the first word being denoted by a 0 (zero).
-
- @table @code
-
- @item 0 (zero)
- The @code{0}th word. For many applications, this is the command word.
-
- @item n
- The @var{n}th word.
-
- @item ^
- The first argument; that is, word 1.
-
- @item $
- The last argument.
-
- @item %
- The word matched by the most recent @code{?string?} search.
-
- @item x-y
- A range of words; @code{-@var{y}} abbreviates @code{0-@var{y}}.
-
- @item *
- All of the words, except the @code{0}th. This is a synonym for @code{1-$}.
- It is not an error to use @key{*} if there is just one word in the event;
- the empty string is returned in that case.
-
- @item x*
- Abbreviates @code{x-$}
-
- @item x-
- Abbreviates @code{x-$} like @code{x*}, but omits the last word.
-
- @end table
-
- @node Modifiers
- @subsection Modifiers
-
- After the optional word designator, you can add a sequence of one or more
- of the following modifiers, each preceded by a @key{:}.
-
- @table @code
-
- @item h
- Remove a trailing pathname component, leaving only the head.
-
- @item r
- Remove a trailing suffix of the form @samp{.}@var{suffix}, leaving the basename.
-
- @item e
- Remove all but the trailing suffix.
-
- @item t
- Remove all leading pathname components, leaving the tail.
-
- @item p
- Print the new command but do not execute it.
-
- @ifset BashFeatures
- @item q
- Quote the substituted words, escaping further substitutions.
-
- @item x
- Quote the substituted words as with @code{q},
- but break into words at spaces, tabs, and newlines.
- @end ifset
-
- @item s/old/new/
- Substitute @var{new} for the first occurrence of @var{old} in the
- event line. Any delimiter may be used in place of @key{/}.
- The delimiter may be quoted in @var{old} and @var{new}
- with a single backslash. If @key{&} appears in @var{new},
- it is replaced by @var{old}. A single backslash will quote
- the @key{&}. The final delimiter is optional if it is the last
- character on the input line.
-
- @item &
- Repeat the previous substitution.
-
- @item g
- Cause changes to be applied over the entire event line. Used in
- conjunction with @code{s}, as in @code{gs/old/new/}, or with
- @code{&}.
-
- @end table
-