Annotation of embedaddon/readline/doc/hsuser.texi, revision 1.1.1.1

1.1       misho       1: @ignore
                      2: This file documents the user interface to the GNU History library.
                      3: 
                      4: Copyright (C) 1988--2014 Free Software Foundation, Inc.
                      5: Authored by Brian Fox and Chet Ramey.
                      6: 
                      7: Permission is granted to make and distribute verbatim copies of this manual
                      8: provided the copyright notice and this permission notice are preserved on
                      9: all copies.
                     10: 
                     11: Permission is granted to process this file through Tex and print the
                     12: results, provided the printed document carries copying permission notice
                     13: identical to this one except for the removal of this paragraph (this
                     14: paragraph not being relevant to the printed manual).
                     15: 
                     16: Permission is granted to copy and distribute modified versions of this
                     17: manual under the conditions for verbatim copying, provided also that the
                     18: GNU Copyright statement is available to the distributee, and provided that
                     19: the entire resulting derived work is distributed under the terms of a
                     20: permission notice identical to this one.
                     21: 
                     22: Permission is granted to copy and distribute translations of this manual
                     23: into another language, under the above conditions for modified versions.
                     24: @end ignore
                     25: 
                     26: @node Using History Interactively
                     27: @chapter Using History Interactively
                     28: 
                     29: @ifclear BashFeatures
                     30: @defcodeindex bt
                     31: @end ifclear
                     32: 
                     33: @ifset BashFeatures
                     34: This chapter describes how to use the @sc{gnu} History Library
                     35: interactively, from a user's standpoint.
                     36: It should be considered a user's guide.
                     37: For information on using the @sc{gnu} History Library in other programs,
                     38: see the @sc{gnu} Readline Library Manual.
                     39: @end ifset
                     40: @ifclear BashFeatures
                     41: This chapter describes how to use the @sc{gnu} History Library interactively,
                     42: from a user's standpoint.  It should be considered a user's guide.  For
                     43: information on using the @sc{gnu} History Library in your own programs,
                     44: @pxref{Programming with GNU History}.
                     45: @end ifclear
                     46: 
                     47: @ifset BashFeatures
                     48: @menu
                     49: * Bash History Facilities::    How Bash lets you manipulate your command
                     50:                                history.
                     51: * Bash History Builtins::      The Bash builtin commands that manipulate
                     52:                                the command history.
                     53: * History Interaction::                What it feels like using History as a user.
                     54: @end menu
                     55: @end ifset
                     56: @ifclear BashFeatures
                     57: @menu
                     58: * History Interaction::                What it feels like using History as a user.
                     59: @end menu
                     60: @end ifclear
                     61: 
                     62: @ifset BashFeatures
                     63: @node Bash History Facilities
                     64: @section Bash History Facilities
                     65: @cindex command history
                     66: @cindex history list
                     67: 
                     68: When the @option{-o history} option to the @code{set} builtin
                     69: is enabled (@pxref{The Set Builtin}),
                     70: the shell provides access to the @dfn{command history},
                     71: the list of commands previously typed.
                     72: The value of the @env{HISTSIZE} shell variable is used as the
                     73: number of commands to save in a history list.
                     74: The text of the last @env{$HISTSIZE}
                     75: commands (default 500) is saved.
                     76: The shell stores each command in the history list prior to
                     77: parameter and variable expansion
                     78: but after history expansion is performed, subject to the
                     79: values of the shell variables
                     80: @env{HISTIGNORE} and @env{HISTCONTROL}.
                     81: 
                     82: When the shell starts up, the history is initialized from the
                     83: file named by the @env{HISTFILE} variable (default @file{~/.bash_history}).
                     84: The file named by the value of @env{HISTFILE} is truncated, if
                     85: necessary, to contain no more than the number of lines specified by
                     86: the value of the @env{HISTFILESIZE} variable.
                     87: When a shell with history enabled exits, the last
                     88: @env{$HISTSIZE} lines are copied from the history list to the file
                     89: named by @env{$HISTFILE}.
                     90: If the @code{histappend} shell option is set (@pxref{Bash Builtins}),
                     91: the lines are appended to the history file,
                     92: otherwise the history file is overwritten.
                     93: If @env{HISTFILE}
                     94: is unset, or if the history file is unwritable, the history is not saved.
                     95: After saving the history, the history file is truncated
                     96: to contain no more than @env{$HISTFILESIZE} lines.
                     97: If @env{HISTFILESIZE} is unset, or set to null, a non-numeric value, or
                     98: a numeric value less than zero, the history file is not truncated.
                     99: 
                    100: If the @env{HISTTIMEFORMAT} is set, the time stamp information
                    101: associated with each history entry is written to the history file,
                    102: marked with the history comment character.
                    103: When the history file is read, lines beginning with the history
                    104: comment character followed immediately by a digit are interpreted
                    105: as timestamps for the previous history line.
                    106: 
                    107: The builtin command @code{fc} may be used to list or edit and re-execute
                    108: a portion of the history list.
                    109: The @code{history} builtin may be used to display or modify the history
                    110: list and manipulate the history file.
                    111: When using command-line editing, search commands
                    112: are available in each editing mode that provide access to the
                    113: history list (@pxref{Commands For History}).
                    114: 
                    115: The shell allows control over which commands are saved on the history
                    116: list.  The @env{HISTCONTROL} and @env{HISTIGNORE}
                    117: variables may be set to cause the shell to save only a subset of the
                    118: commands entered.
                    119: The @code{cmdhist}
                    120: shell option, if enabled, causes the shell to attempt to save each
                    121: line of a multi-line command in the same history entry, adding
                    122: semicolons where necessary to preserve syntactic correctness.
                    123: The @code{lithist}
                    124: shell option causes the shell to save the command with embedded newlines
                    125: instead of semicolons.
                    126: The @code{shopt} builtin is used to set these options.
                    127: @xref{Bash Builtins}, for a description of @code{shopt}.
                    128: 
                    129: @node Bash History Builtins
                    130: @section Bash History Builtins
                    131: @cindex history builtins
                    132: 
                    133: Bash provides two builtin commands which manipulate the
                    134: history list and history file.
                    135: 
                    136: @table @code
                    137: 
                    138: @item fc
                    139: @btindex fc
                    140: @example
                    141: @code{fc [-e @var{ename}] [-lnr] [@var{first}] [@var{last}]}
                    142: @code{fc -s [@var{pat}=@var{rep}] [@var{command}]}
                    143: @end example
                    144: 
                    145: The first form selects a range of commands from @var{first} to
                    146: @var{last} from the history list and displays or edits and re-executes
                    147: them.
                    148: Both @var{first} and
                    149: @var{last} may be specified as a string (to locate the most recent
                    150: command beginning with that string) or as a number (an index into the
                    151: history list, where a negative number is used as an offset from the
                    152: current command number).  If @var{last} is not specified it is set to
                    153: @var{first}.  If @var{first} is not specified it is set to the previous
                    154: command for editing and @minus{}16 for listing.  If the @option{-l} flag is
                    155: given, the commands are listed on standard output.  The @option{-n} flag
                    156: suppresses the command numbers when listing.  The @option{-r} flag
                    157: reverses the order of the listing.  Otherwise, the editor given by
                    158: @var{ename} is invoked on a file containing those commands.  If
                    159: @var{ename} is not given, the value of the following variable expansion
                    160: is used: @code{$@{FCEDIT:-$@{EDITOR:-vi@}@}}.  This says to use the
                    161: value of the @env{FCEDIT} variable if set, or the value of the
                    162: @env{EDITOR} variable if that is set, or @code{vi} if neither is set.
                    163: When editing is complete, the edited commands are echoed and executed.
                    164: 
                    165: In the second form, @var{command} is re-executed after each instance
                    166: of @var{pat} in the selected command is replaced by @var{rep}.
                    167: @var{command} is intepreted the same as @var{first} above.
                    168: 
                    169: A useful alias to use with the @code{fc} command is @code{r='fc -s'}, so
                    170: that typing @samp{r cc} runs the last command beginning with @code{cc}
                    171: and typing @samp{r} re-executes the last command (@pxref{Aliases}).
                    172: 
                    173: @item history
                    174: @btindex history
                    175: @example
                    176: history [@var{n}]
                    177: history -c
                    178: history -d @var{offset}
                    179: history [-anrw] [@var{filename}]
                    180: history -ps @var{arg}
                    181: @end example
                    182: 
                    183: With no options, display the history list with line numbers.
                    184: Lines prefixed with a @samp{*} have been modified.
                    185: An argument of @var{n} lists only the last @var{n} lines.
                    186: If the shell variable @env{HISTTIMEFORMAT} is set and not null,
                    187: it is used as a format string for @var{strftime} to display
                    188: the time stamp associated with each displayed history entry.
                    189: No intervening blank is printed between the formatted time stamp
                    190: and the history line.
                    191: 
                    192: Options, if supplied, have the following meanings:
                    193: 
                    194: @table @code
                    195: @item -c
                    196: Clear the history list.  This may be combined
                    197: with the other options to replace the history list completely.
                    198: 
                    199: @item -d @var{offset}
                    200: Delete the history entry at position @var{offset}.
                    201: @var{offset} should be specified as it appears when the history is
                    202: displayed.
                    203: 
                    204: @item -a
                    205: Append the new
                    206: history lines (history lines entered since the beginning of the
                    207: current Bash session) to the history file.
                    208: 
                    209: @item -n
                    210: Append the history lines not already read from the history file
                    211: to the current history list.  These are lines appended to the history
                    212: file since the beginning of the current Bash session.
                    213: 
                    214: @item -r
                    215: Read the history file and append its contents to
                    216: the history list.
                    217: 
                    218: @item -w
                    219: Write out the current history list to the history file.
                    220: 
                    221: @item -p
                    222: Perform history substitution on the @var{arg}s and display the result
                    223: on the standard output, without storing the results in the history list.
                    224: 
                    225: @item -s
                    226: The @var{arg}s are added to the end of
                    227: the history list as a single entry.
                    228: 
                    229: @end table
                    230: 
                    231: When any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options is
                    232: used, if @var{filename}
                    233: is given, then it is used as the history file.  If not, then
                    234: the value of the @env{HISTFILE} variable is used.
                    235: 
                    236: @end table
                    237: @end ifset
                    238: 
                    239: @node History Interaction
                    240: @section History Expansion
                    241: @cindex history expansion
                    242: 
                    243: The History library provides a history expansion feature that is similar
                    244: to the history expansion provided by @code{csh}.  This section
                    245: describes the syntax used to manipulate the history information.
                    246: 
                    247: History expansions introduce words from the history list into
                    248: the input stream, making it easy to repeat commands, insert the
                    249: arguments to a previous command into the current input line, or
                    250: fix errors in previous commands quickly.
                    251: 
                    252: History expansion takes place in two parts.  The first is to determine
                    253: which line from the history list should be used during substitution.
                    254: The second is to select portions of that line for inclusion into the
                    255: current one.  The line selected from the history is called the
                    256: @dfn{event}, and the portions of that line that are acted upon are
                    257: called @dfn{words}.  Various @dfn{modifiers} are available to manipulate
                    258: the selected words.  The line is broken into words in the same fashion
                    259: that Bash does, so that several words
                    260: surrounded by quotes are considered one word.
                    261: History expansions are introduced by the appearance of the
                    262: history expansion character, which is @samp{!} by default.
                    263: @ifset BashFeatures
                    264: Only @samp{\} and @samp{'} may be used to escape the history expansion
                    265: character.
                    266: @end ifset
                    267: 
                    268: @ifset BashFeatures
                    269: Several shell options settable with the @code{shopt}
                    270: builtin (@pxref{Bash Builtins}) may be used to tailor
                    271: the behavior of history expansion.  If the
                    272: @code{histverify} shell option is enabled, and Readline
                    273: is being used, history substitutions are not immediately passed to
                    274: the shell parser.
                    275: Instead, the expanded line is reloaded into the Readline
                    276: editing buffer for further modification.
                    277: If Readline is being used, and the @code{histreedit}
                    278: shell option is enabled, a failed history expansion will be
                    279: reloaded into the Readline editing buffer for correction.
                    280: The @option{-p} option to the @code{history} builtin command
                    281: may be used to see what a history expansion will do before using it.
                    282: The @option{-s} option to the @code{history} builtin may be used to
                    283: add commands to the end of the history list without actually executing
                    284: them, so that they are available for subsequent recall.
                    285: This is most useful in conjunction with Readline.
                    286: 
                    287: The shell allows control of the various characters used by the
                    288: history expansion mechanism with the @code{histchars} variable,
                    289: as explained above (@pxref{Bash Variables}).  The shell uses
                    290: the history comment character to mark history timestamps when
                    291: writing the history file.
                    292: @end ifset
                    293: 
                    294: @menu
                    295: * Event Designators::  How to specify which history line to use.
                    296: * Word Designators::   Specifying which words are of interest.
                    297: * Modifiers::          Modifying the results of substitution.
                    298: @end menu
                    299: 
                    300: @node Event Designators
                    301: @subsection Event Designators
                    302: @cindex event designators
                    303: 
                    304: An event designator is a reference to a command line entry in the
                    305: history list.
                    306: Unless the reference is absolute, events are relative to the current
                    307: position in the history list.
                    308: @cindex history events
                    309: 
                    310: @table @asis
                    311: 
                    312: @item @code{!}
                    313: @ifset BashFeatures
                    314: Start a history substitution, except when followed by a space, tab,
                    315: the end of the line, @samp{=} or @samp{(} (when the
                    316: @code{extglob} shell option is enabled using the @code{shopt} builtin).
                    317: @end ifset
                    318: @ifclear BashFeatures
                    319: Start a history substitution, except when followed by a space, tab,
                    320: the end of the line, or @samp{=}.
                    321: @end ifclear
                    322: 
                    323: @item @code{!@var{n}}
                    324: Refer to command line @var{n}.
                    325: 
                    326: @item @code{!-@var{n}}
                    327: Refer to the command @var{n} lines back.
                    328: 
                    329: @item @code{!!}
                    330: Refer to the previous command.  This is a synonym for @samp{!-1}.
                    331: 
                    332: @item @code{!@var{string}}
                    333: Refer to the most recent command
                    334: preceding the current position in the history list
                    335: starting with @var{string}.
                    336: 
                    337: @item @code{!?@var{string}[?]}
                    338: Refer to the most recent command
                    339: preceding the current position in the history list
                    340: containing @var{string}.
                    341: The trailing
                    342: @samp{?} may be omitted if the @var{string} is followed immediately by
                    343: a newline.
                    344: 
                    345: @item @code{^@var{string1}^@var{string2}^}
                    346: Quick Substitution.  Repeat the last command, replacing @var{string1}
                    347: with @var{string2}.  Equivalent to
                    348: @code{!!:s/@var{string1}/@var{string2}/}.
                    349: 
                    350: @item @code{!#}
                    351: The entire command line typed so far.
                    352: 
                    353: @end table
                    354: 
                    355: @node Word Designators
                    356: @subsection Word Designators
                    357: 
                    358: Word designators are used to select desired words from the event.
                    359: A @samp{:} separates the event specification from the word designator.  It
                    360: may be omitted if the word designator begins with a @samp{^}, @samp{$},
                    361: @samp{*}, @samp{-}, or @samp{%}.  Words are numbered from the beginning
                    362: of the line, with the first word being denoted by 0 (zero).  Words are
                    363: inserted into the current line separated by single spaces.
                    364: 
                    365: @need 0.75
                    366: For example,
                    367: 
                    368: @table @code
                    369: @item !!
                    370: designates the preceding command.  When you type this, the preceding
                    371: command is repeated in toto.
                    372: 
                    373: @item !!:$
                    374: designates the last argument of the preceding command.  This may be
                    375: shortened to @code{!$}.
                    376: 
                    377: @item !fi:2
                    378: designates the second argument of the most recent command starting with
                    379: the letters @code{fi}.
                    380: @end table
                    381: 
                    382: @need 0.75
                    383: Here are the word designators:
                    384:  
                    385: @table @code
                    386: 
                    387: @item 0 (zero)
                    388: The @code{0}th word.  For many applications, this is the command word.
                    389: 
                    390: @item @var{n}
                    391: The @var{n}th word.
                    392: 
                    393: @item ^
                    394: The first argument; that is, word 1.
                    395: 
                    396: @item $
                    397: The last argument.
                    398: 
                    399: @item %
                    400: The word matched by the most recent @samp{?@var{string}?} search.
                    401: 
                    402: @item @var{x}-@var{y}
                    403: A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}.
                    404: 
                    405: @item *
                    406: All of the words, except the @code{0}th.  This is a synonym for @samp{1-$}.
                    407: It is not an error to use @samp{*} if there is just one word in the event;
                    408: the empty string is returned in that case.
                    409: 
                    410: @item @var{x}*
                    411: Abbreviates @samp{@var{x}-$}
                    412: 
                    413: @item @var{x}-
                    414: Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word.
                    415: 
                    416: @end table
                    417: 
                    418: If a word designator is supplied without an event specification, the
                    419: previous command is used as the event.
                    420: 
                    421: @node Modifiers
                    422: @subsection Modifiers
                    423: 
                    424: After the optional word designator, you can add a sequence of one or more
                    425: of the following modifiers, each preceded by a @samp{:}.
                    426: 
                    427: @table @code
                    428: 
                    429: @item h
                    430: Remove a trailing pathname component, leaving only the head.
                    431: 
                    432: @item t
                    433: Remove all leading pathname components, leaving the tail.
                    434: 
                    435: @item r
                    436: Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving
                    437: the basename.
                    438: 
                    439: @item e
                    440: Remove all but the trailing suffix.
                    441: 
                    442: @item p
                    443: Print the new command but do not execute it.
                    444: 
                    445: @ifset BashFeatures
                    446: @item q
                    447: Quote the substituted words, escaping further substitutions.
                    448: 
                    449: @item x
                    450: Quote the substituted words as with @samp{q},
                    451: but break into words at spaces, tabs, and newlines.
                    452: @end ifset
                    453: 
                    454: @item s/@var{old}/@var{new}/
                    455: Substitute @var{new} for the first occurrence of @var{old} in the
                    456: event line.  Any delimiter may be used in place of @samp{/}.
                    457: The delimiter may be quoted in @var{old} and @var{new}
                    458: with a single backslash.  If @samp{&} appears in @var{new},
                    459: it is replaced by @var{old}.  A single backslash will quote
                    460: the @samp{&}.  The final delimiter is optional if it is the last
                    461: character on the input line.
                    462: 
                    463: @item &
                    464: Repeat the previous substitution.
                    465: 
                    466: @item g
                    467: @itemx a
                    468: Cause changes to be applied over the entire event line.  Used in
                    469: conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/},
                    470: or with @samp{&}.
                    471: 
                    472: @item G
                    473: Apply the following @samp{s} modifier once to each word in the event.
                    474: 
                    475: @end table

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>