Annotation of embedaddon/readline/doc/hsuser.texi, revision 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>