Annotation of embedaddon/readline/doc/history.3, revision 1.1

1.1     ! misho       1: .\"
        !             2: .\" MAN PAGE COMMENTS to
        !             3: .\"
        !             4: .\"    Chet Ramey
        !             5: .\"    Information Network Services
        !             6: .\"    Case Western Reserve University
        !             7: .\"    chet.ramey@case.edu
        !             8: .\"
        !             9: .\"    Last Change: Thu Thu Jun 27 10:34:44 EDT 2013
        !            10: .\"
        !            11: .TH HISTORY 3 "2013 June 27" "GNU History 6.3"
        !            12: .\"
        !            13: .\" File Name macro.  This used to be `.PN', for Path Name,
        !            14: .\" but Sun doesn't seem to like that very much.
        !            15: .\"
        !            16: .de FN
        !            17: \fI\|\\$1\|\fP
        !            18: ..
        !            19: .ds lp \fR\|(\fP
        !            20: .ds rp \fR\|)\fP
        !            21: .\" FnN return-value fun-name N arguments
        !            22: .de Fn1
        !            23: \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3\fP\\*(rp
        !            24: .br
        !            25: ..
        !            26: .de Fn2
        !            27: .if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4\fP\\*(rp
        !            28: .if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4\fP\\*(rp
        !            29: .br
        !            30: ..
        !            31: .de Fn3
        !            32: .if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4,\|\\$5\fP\|\\*(rp
        !            33: .if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4, \\$5\fP\\*(rp
        !            34: .br
        !            35: ..
        !            36: .de Vb
        !            37: \fI\\$1\fP \fB\\$2\fP
        !            38: .br
        !            39: ..
        !            40: .SH NAME
        !            41: history \- GNU History Library
        !            42: .SH COPYRIGHT
        !            43: .if t The GNU History Library is Copyright \(co 1989-2011 by the Free Software Foundation, Inc.
        !            44: .if n The GNU History Library is Copyright (C) 1989-2011 by the Free Software Foundation, Inc.
        !            45: .SH DESCRIPTION
        !            46: Many programs read input from the user a line at a time.  The GNU
        !            47: History library is able to keep track of those lines, associate arbitrary
        !            48: data with each line, and utilize information from previous lines in
        !            49: composing new ones. 
        !            50: .PP
        !            51: .SH "HISTORY EXPANSION"
        !            52: .PP
        !            53: The history library supports a history expansion feature that
        !            54: is identical to the history expansion in
        !            55: .BR bash.
        !            56: This section describes what syntax features are available.
        !            57: .PP
        !            58: History expansions introduce words from the history list into
        !            59: the input stream, making it easy to repeat commands, insert the
        !            60: arguments to a previous command into the current input line, or
        !            61: fix errors in previous commands quickly.
        !            62: .PP
        !            63: History expansion is usually performed immediately after a complete line
        !            64: is read.
        !            65: It takes place in two parts.
        !            66: The first is to determine which line from the history list
        !            67: to use during substitution.
        !            68: The second is to select portions of that line for inclusion into
        !            69: the current one.
        !            70: The line selected from the history is the \fIevent\fP,
        !            71: and the portions of that line that are acted upon are \fIwords\fP.
        !            72: Various \fImodifiers\fP are available to manipulate the selected words.
        !            73: The line is broken into words in the same fashion as \fBbash\fP
        !            74: does when reading input,
        !            75: so that several words that would otherwise be separated 
        !            76: are considered one word when surrounded by quotes (see the
        !            77: description of \fBhistory_tokenize()\fP below).
        !            78: History expansions are introduced by the appearance of the
        !            79: history expansion character, which is \^\fB!\fP\^ by default.
        !            80: Only backslash (\^\fB\e\fP\^) and single quotes can quote
        !            81: the history expansion character.
        !            82: .SS Event Designators
        !            83: .PP
        !            84: An event designator is a reference to a command line entry in the
        !            85: history list.
        !            86: Unless the reference is absolute, events are relative to the current
        !            87: position in the history list.
        !            88: .PP
        !            89: .PD 0
        !            90: .TP
        !            91: .B !
        !            92: Start a history substitution, except when followed by a
        !            93: .BR blank ,
        !            94: newline, = or (.
        !            95: .TP
        !            96: .B !\fIn\fR
        !            97: Refer to command line
        !            98: .IR n .
        !            99: .TP
        !           100: .B !\-\fIn\fR
        !           101: Refer to the current command minus
        !           102: .IR n .
        !           103: .TP
        !           104: .B !!
        !           105: Refer to the previous command.  This is a synonym for `!\-1'.
        !           106: .TP
        !           107: .B !\fIstring\fR
        !           108: Refer to the most recent command
        !           109: preceding the current position in the history list
        !           110: starting with
        !           111: .IR string .
        !           112: .TP
        !           113: .B !?\fIstring\fR\fB[?]\fR
        !           114: Refer to the most recent command
        !           115: preceding the current position in the history list
        !           116: containing
        !           117: .IR string .
        !           118: The trailing \fB?\fP may be omitted if
        !           119: .I string
        !           120: is followed immediately by a newline.
        !           121: .TP
        !           122: .B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
        !           123: Quick substitution.  Repeat the last command, replacing
        !           124: .I string1
        !           125: with
        !           126: .IR string2 .
        !           127: Equivalent to
        !           128: ``!!:s/\fIstring1\fP/\fIstring2\fP/''
        !           129: (see \fBModifiers\fP below).
        !           130: .TP
        !           131: .B !#
        !           132: The entire command line typed so far.
        !           133: .PD
        !           134: .SS Word Designators
        !           135: .PP
        !           136: Word designators are used to select desired words from the event.
        !           137: A 
        !           138: .B :
        !           139: separates the event specification from the word designator.
        !           140: It may be omitted if the word designator begins with a
        !           141: .BR ^ ,
        !           142: .BR $ ,
        !           143: .BR * ,
        !           144: .BR \- ,
        !           145: or
        !           146: .BR % .
        !           147: Words are numbered from the beginning of the line,
        !           148: with the first word being denoted by 0 (zero).
        !           149: Words are inserted into the current line separated by single spaces.
        !           150: .PP
        !           151: .PD 0
        !           152: .TP
        !           153: .B 0 (zero)
        !           154: The zeroth word.  For the shell, this is the command
        !           155: word.
        !           156: .TP
        !           157: .I n
        !           158: The \fIn\fRth word.
        !           159: .TP
        !           160: .B ^
        !           161: The first argument.  That is, word 1.
        !           162: .TP
        !           163: .B $
        !           164: The last word.  This is usually the last argument, but will expand to the
        !           165: zeroth word if there is only one word in the line.
        !           166: .TP
        !           167: .B %
        !           168: The word matched by the most recent `?\fIstring\fR?' search.
        !           169: .TP
        !           170: .I x\fB\-\fPy
        !           171: A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
        !           172: .TP
        !           173: .B *
        !           174: All of the words but the zeroth.  This is a synonym
        !           175: for `\fI1\-$\fP'.  It is not an error to use
        !           176: .B *
        !           177: if there is just one
        !           178: word in the event; the empty string is returned in that case.
        !           179: .TP
        !           180: .B x*
        !           181: Abbreviates \fIx\-$\fP.
        !           182: .TP
        !           183: .B x\-
        !           184: Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word.
        !           185: .PD
        !           186: .PP
        !           187: If a word designator is supplied without an event specification, the
        !           188: previous command is used as the event.
        !           189: .SS Modifiers
        !           190: .PP
        !           191: After the optional word designator, there may appear a sequence of
        !           192: one or more of the following modifiers, each preceded by a `:'.
        !           193: .PP
        !           194: .PD 0
        !           195: .PP
        !           196: .TP
        !           197: .B h
        !           198: Remove a trailing file name component, leaving only the head.
        !           199: .TP
        !           200: .B t
        !           201: Remove all leading file name components, leaving the tail.
        !           202: .TP
        !           203: .B r
        !           204: Remove a trailing suffix of the form \fI.xxx\fP, leaving the
        !           205: basename.
        !           206: .TP
        !           207: .B e
        !           208: Remove all but the trailing suffix.
        !           209: .TP
        !           210: .B p
        !           211: Print the new command but do not execute it.
        !           212: .TP
        !           213: .B q
        !           214: Quote the substituted words, escaping further substitutions.
        !           215: .TP
        !           216: .B x
        !           217: Quote the substituted words as with
        !           218: .BR q ,
        !           219: but break into words at
        !           220: .B blanks
        !           221: and newlines.
        !           222: .TP
        !           223: .B s/\fIold\fP/\fInew\fP/
        !           224: Substitute
        !           225: .I new
        !           226: for the first occurrence of
        !           227: .I old
        !           228: in the event line.  Any delimiter can be used in place of /.  The
        !           229: final delimiter is optional if it is the last character of the
        !           230: event line.  The delimiter may be quoted in
        !           231: .I old
        !           232: and
        !           233: .I new
        !           234: with a single backslash.  If & appears in
        !           235: .IR new ,
        !           236: it is replaced by
        !           237: .IR old .
        !           238: A single backslash will quote the &.  If
        !           239: .I old
        !           240: is null, it is set to the last
        !           241: .I old
        !           242: substituted, or, if no previous history substitutions took place,
        !           243: the last
        !           244: .I string
        !           245: in a
        !           246: .B !?\fIstring\fR\fB[?]\fR
        !           247: search.
        !           248: .TP
        !           249: .B &
        !           250: Repeat the previous substitution.
        !           251: .TP
        !           252: .B g
        !           253: Cause changes to be applied over the entire event line.  This is
        !           254: used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR')
        !           255: or `\fB:&\fP'.  If used with
        !           256: `\fB:s\fP', any delimiter can be used
        !           257: in place of /, and the final delimiter is optional
        !           258: if it is the last character of the event line.
        !           259: An \fBa\fP may be used as a synonym for \fBg\fP.
        !           260: .TP
        !           261: .B G
        !           262: Apply the following `\fBs\fP' modifier once to each word in the event line.
        !           263: .PD
        !           264: .SH "PROGRAMMING WITH HISTORY FUNCTIONS"
        !           265: This section describes how to use the History library in other programs.
        !           266: .SS Introduction to History
        !           267: .PP
        !           268: The programmer using the History library has available functions
        !           269: for remembering lines on a history list, associating arbitrary data
        !           270: with a line, removing lines from the list, searching through the list
        !           271: for a line containing an arbitrary text string, and referencing any line
        !           272: in the list directly.  In addition, a history \fIexpansion\fP function
        !           273: is available which provides for a consistent user interface across
        !           274: different programs.
        !           275: .PP
        !           276: The user using programs written with the History library has the
        !           277: benefit of a consistent user interface with a set of well-known
        !           278: commands for manipulating the text of previous lines and using that text
        !           279: in new commands.  The basic history manipulation commands are
        !           280: identical to
        !           281: the history substitution provided by \fBbash\fP.
        !           282: .PP
        !           283: If the programmer desires, he can use the Readline library, which
        !           284: includes some history manipulation by default, and has the added
        !           285: advantage of command line editing.
        !           286: .PP
        !           287: Before declaring any functions using any functionality the History
        !           288: library provides in other code, an application writer should include
        !           289: the file
        !           290: .FN <readline/history.h>
        !           291: in any file that uses the
        !           292: History library's features.  It supplies extern declarations for all
        !           293: of the library's public functions and variables, and declares all of
        !           294: the public data structures.
        !           295: 
        !           296: .SS History Storage
        !           297: .PP
        !           298: The history list is an array of history entries.  A history entry is
        !           299: declared as follows:
        !           300: .PP
        !           301: .Vb "typedef void *" histdata_t;
        !           302: .PP
        !           303: .nf
        !           304: typedef struct _hist_entry {
        !           305:   char *line;
        !           306:   char *timestamp;
        !           307:   histdata_t data;
        !           308: } HIST_ENTRY;
        !           309: .fi
        !           310: .PP
        !           311: The history list itself might therefore be declared as
        !           312: .PP
        !           313: .Vb "HIST_ENTRY **" the_history_list;
        !           314: .PP
        !           315: The state of the History library is encapsulated into a single structure:
        !           316: .PP
        !           317: .nf
        !           318: /*
        !           319:  * A structure used to pass around the current state of the history.
        !           320:  */
        !           321: typedef struct _hist_state {
        !           322:   HIST_ENTRY **entries; /* Pointer to the entries themselves. */
        !           323:   int offset;           /* The location pointer within this array. */
        !           324:   int length;           /* Number of elements within this array. */
        !           325:   int size;             /* Number of slots allocated to this array. */
        !           326:   int flags;
        !           327: } HISTORY_STATE;
        !           328: .fi
        !           329: .PP
        !           330: If the flags member includes \fBHS_STIFLED\fP, the history has been
        !           331: stifled.
        !           332: .SH "History Functions"
        !           333: .PP
        !           334: This section describes the calling sequence for the various functions
        !           335: exported by the GNU History library.
        !           336: .SS Initializing History and State Management
        !           337: This section describes functions used to initialize and manage
        !           338: the state of the History library when you want to use the history
        !           339: functions in your program.
        !           340: 
        !           341: .Fn1 void using_history void
        !           342: Begin a session in which the history functions might be used.  This
        !           343: initializes the interactive variables.
        !           344: 
        !           345: .Fn1 "HISTORY_STATE *" history_get_history_state void
        !           346: Return a structure describing the current state of the input history.
        !           347: 
        !           348: .Fn1 void history_set_history_state "HISTORY_STATE *state"
        !           349: Set the state of the history list according to \fIstate\fP.
        !           350: 
        !           351: .SS History List Management
        !           352: 
        !           353: These functions manage individual entries on the history list, or set
        !           354: parameters managing the list itself.
        !           355: 
        !           356: .Fn1 void add_history "const char *string"
        !           357: Place \fIstring\fP at the end of the history list.  The associated data
        !           358: field (if any) is set to \fBNULL\fP.
        !           359: 
        !           360: .Fn1 void add_history_time "const char *string"
        !           361: Change the time stamp associated with the most recent history entry to
        !           362: \fIstring\fP.
        !           363: 
        !           364: .Fn1 "HIST_ENTRY *" remove_history "int which"
        !           365: Remove history entry at offset \fIwhich\fP from the history.  The
        !           366: removed element is returned so you can free the line, data,
        !           367: and containing structure.
        !           368: 
        !           369: .Fn1 "histdata_t" free_history_entry "HIST_ENTRY *histent"
        !           370: Free the history entry \fIhistent\fP and any history library private
        !           371: data associated with it.  Returns the application-specific data
        !           372: so the caller can dispose of it.
        !           373: 
        !           374: .Fn3 "HIST_ENTRY *" replace_history_entry "int which" "const char *line" "histdata_t data"
        !           375: Make the history entry at offset \fIwhich\fP have \fIline\fP and \fIdata\fP.
        !           376: This returns the old entry so the caller can dispose of any
        !           377: application-specific data.  In the case
        !           378: of an invalid \fIwhich\fP, a \fBNULL\fP pointer is returned.
        !           379: 
        !           380: .Fn1 void clear_history "void"
        !           381: Clear the history list by deleting all the entries.
        !           382: 
        !           383: .Fn1 void stifle_history "int max"
        !           384: Stifle the history list, remembering only the last \fImax\fP entries.
        !           385: 
        !           386: .Fn1 int unstifle_history "void"
        !           387: Stop stifling the history.  This returns the previously-set
        !           388: maximum number of history entries (as set by \fBstifle_history()\fP).
        !           389: history was stifled.  The value is positive if the history was
        !           390: stifled, negative if it wasn't.
        !           391: 
        !           392: .Fn1 int history_is_stifled "void"
        !           393: Returns non-zero if the history is stifled, zero if it is not.
        !           394: 
        !           395: .SS Information About the History List
        !           396: 
        !           397: These functions return information about the entire history list or
        !           398: individual list entries.
        !           399: 
        !           400: .Fn1 "HIST_ENTRY **" history_list "void"
        !           401: Return a \fBNULL\fP terminated array of \fIHIST_ENTRY *\fP which is the
        !           402: current input history.  Element 0 of this list is the beginning of time.
        !           403: If there is no history, return \fBNULL\fP.
        !           404: 
        !           405: .Fn1 int where_history "void"
        !           406: Returns the offset of the current history element.
        !           407: 
        !           408: .Fn1 "HIST_ENTRY *" current_history "void"
        !           409: Return the history entry at the current position, as determined by
        !           410: \fBwhere_history()\fP.  If there is no entry there, return a \fBNULL\fP
        !           411: pointer.
        !           412: 
        !           413: .Fn1 "HIST_ENTRY *" history_get "int offset"
        !           414: Return the history entry at position \fIoffset\fP, starting from
        !           415: \fBhistory_base\fP.
        !           416: If there is no entry there, or if \fIoffset\fP
        !           417: is greater than the history length, return a \fBNULL\fP pointer.
        !           418: 
        !           419: .Fn1 "time_t" history_get_time "HIST_ENTRY *"
        !           420: Return the time stamp associated with the history entry passed as the argument.
        !           421: 
        !           422: .Fn1 int history_total_bytes "void"
        !           423: Return the number of bytes that the primary history entries are using.
        !           424: This function returns the sum of the lengths of all the lines in the
        !           425: history.
        !           426: 
        !           427: .SS Moving Around the History List
        !           428: 
        !           429: These functions allow the current index into the history list to be
        !           430: set or changed.
        !           431: 
        !           432: .Fn1 int history_set_pos "int pos"
        !           433: Set the current history offset to \fIpos\fP, an absolute index
        !           434: into the list.
        !           435: Returns 1 on success, 0 if \fIpos\fP is less than zero or greater
        !           436: than the number of history entries.
        !           437: 
        !           438: .Fn1 "HIST_ENTRY *" previous_history "void"
        !           439: Back up the current history offset to the previous history entry, and
        !           440: return a pointer to that entry.  If there is no previous entry, return
        !           441: a \fBNULL\fP pointer.
        !           442: 
        !           443: .Fn1 "HIST_ENTRY *" next_history "void"
        !           444: Move the current history offset forward to the next history entry, and
        !           445: return the a pointer to that entry.  If there is no next entry, return
        !           446: a \fBNULL\fP pointer.
        !           447: 
        !           448: .SS Searching the History List
        !           449: 
        !           450: These functions allow searching of the history list for entries containing
        !           451: a specific string.  Searching may be performed both forward and backward
        !           452: from the current history position.  The search may be \fIanchored\fP,
        !           453: meaning that the string must match at the beginning of the history entry.
        !           454: 
        !           455: .Fn2 int history_search "const char *string" "int direction"
        !           456: Search the history for \fIstring\fP, starting at the current history offset.
        !           457: If \fIdirection\fP is less than 0, then the search is through
        !           458: previous entries, otherwise through subsequent entries.
        !           459: If \fIstring\fP is found, then
        !           460: the current history index is set to that history entry, and the value
        !           461: returned is the offset in the line of the entry where
        !           462: \fIstring\fP was found.  Otherwise, nothing is changed, and a -1 is
        !           463: returned.
        !           464: 
        !           465: .Fn2 int history_search_prefix "const char *string" "int direction"
        !           466: Search the history for \fIstring\fP, starting at the current history
        !           467: offset.  The search is anchored: matching lines must begin with
        !           468: \fIstring\fP.  If \fIdirection\fP is less than 0, then the search is
        !           469: through previous entries, otherwise through subsequent entries.
        !           470: If \fIstring\fP is found, then the
        !           471: current history index is set to that entry, and the return value is 0. 
        !           472: Otherwise, nothing is changed, and a -1 is returned. 
        !           473: 
        !           474: .Fn3 int history_search_pos "const char *string" "int direction" "int pos"
        !           475: Search for \fIstring\fP in the history list, starting at \fIpos\fP, an
        !           476: absolute index into the list.  If \fIdirection\fP is negative, the search
        !           477: proceeds backward from \fIpos\fP, otherwise forward.  Returns the absolute
        !           478: index of the history element where \fIstring\fP was found, or -1 otherwise.
        !           479: 
        !           480: .SS Managing the History File
        !           481: The History library can read the history from and write it to a file.
        !           482: This section documents the functions for managing a history file.
        !           483: 
        !           484: .Fn1 int read_history "const char *filename"
        !           485: Add the contents of \fIfilename\fP to the history list, a line at a time.
        !           486: If \fIfilename\fP is \fBNULL\fP, then read from \fI~/.history\fP.
        !           487: Returns 0 if successful, or \fBerrno\fP if not.
        !           488: 
        !           489: .Fn3 int read_history_range "const char *filename" "int from" "int to"
        !           490: Read a range of lines from \fIfilename\fP, adding them to the history list.
        !           491: Start reading at line \fIfrom\fP and end at \fIto\fP.
        !           492: If \fIfrom\fP is zero, start at the beginning.  If \fIto\fP is less than
        !           493: \fIfrom\fP, then read until the end of the file.  If \fIfilename\fP is
        !           494: \fBNULL\fP, then read from \fI~/.history\fP.  Returns 0 if successful,
        !           495: or \fBerrno\fP if not.
        !           496: 
        !           497: .Fn1 int write_history "const char *filename"
        !           498: Write the current history to \fIfilename\fP, overwriting \fIfilename\fP
        !           499: if necessary.
        !           500: If \fIfilename\fP is \fBNULL\fP, then write the history list to \fI~/.history\fP.
        !           501: Returns 0 on success, or \fBerrno\fP on a read or write error.
        !           502: 
        !           503: 
        !           504: .Fn2 int append_history "int nelements" "const char *filename"
        !           505: Append the last \fInelements\fP of the history list to \fIfilename\fP.
        !           506: If \fIfilename\fP is \fBNULL\fP, then append to \fI~/.history\fP.
        !           507: Returns 0 on success, or \fBerrno\fP on a read or write error.
        !           508: 
        !           509: .Fn2 int history_truncate_file "const char *filename" "int nlines"
        !           510: Truncate the history file \fIfilename\fP, leaving only the last
        !           511: \fInlines\fP lines.
        !           512: If \fIfilename\fP is \fBNULL\fP, then \fI~/.history\fP is truncated.
        !           513: Returns 0 on success, or \fBerrno\fP on failure.
        !           514: 
        !           515: .SS History Expansion
        !           516: 
        !           517: These functions implement history expansion.
        !           518: 
        !           519: .Fn2 int history_expand "char *string" "char **output"
        !           520: Expand \fIstring\fP, placing the result into \fIoutput\fP, a pointer
        !           521: to a string.  Returns:
        !           522: .RS
        !           523: .PD 0
        !           524: .TP
        !           525: 0
        !           526: If no expansions took place (or, if the only change in
        !           527: the text was the removal of escape characters preceding the history expansion
        !           528: character);
        !           529: .TP
        !           530: 1
        !           531: if expansions did take place;
        !           532: .TP
        !           533: -1
        !           534: if there was an error in expansion;
        !           535: .TP
        !           536: 2
        !           537: if the returned line should be displayed, but not executed,
        !           538: as with the \fB:p\fP modifier.
        !           539: .PD
        !           540: .RE
        !           541: If an error ocurred in expansion, then \fIoutput\fP contains a descriptive
        !           542: error message.
        !           543: 
        !           544: .Fn3 "char *" get_history_event "const char *string" "int *cindex" "int qchar"
        !           545: Returns the text of the history event beginning at \fIstring\fP +
        !           546: \fI*cindex\fP.  \fI*cindex\fP is modified to point to after the event
        !           547: specifier.  At function entry, \fIcindex\fP points to the index into
        !           548: \fIstring\fP where the history event specification begins.  \fIqchar\fP
        !           549: is a character that is allowed to end the event specification in addition
        !           550: to the ``normal'' terminating characters.
        !           551: 
        !           552: .Fn1 "char **" history_tokenize "const char *string"
        !           553: Return an array of tokens parsed out of \fIstring\fP, much as the
        !           554: shell might.
        !           555: The tokens are split on the characters in the
        !           556: \fBhistory_word_delimiters\fP variable,
        !           557: and shell quoting conventions are obeyed.
        !           558: 
        !           559: .Fn3 "char *" history_arg_extract "int first" "int last" "const char *string"
        !           560: Extract a string segment consisting of the \fIfirst\fP through \fIlast\fP
        !           561: arguments present in \fIstring\fP.  Arguments are split using
        !           562: \fBhistory_tokenize()\fP.
        !           563: 
        !           564: .SS History Variables
        !           565: 
        !           566: This section describes the externally-visible variables exported by
        !           567: the GNU History Library.
        !           568: 
        !           569: .Vb int history_base
        !           570: The logical offset of the first entry in the history list.
        !           571: 
        !           572: .Vb int history_length
        !           573: The number of entries currently stored in the history list.
        !           574: 
        !           575: .Vb int history_max_entries
        !           576: The maximum number of history entries.  This must be changed using
        !           577: \fBstifle_history()\fP.
        !           578: 
        !           579: .Vb int history_wite_timestamps
        !           580: If non-zero, timestamps are written to the history file, so they can be
        !           581: preserved between sessions.  The default value is 0, meaning that
        !           582: timestamps are not saved.
        !           583: The current timestamp format uses the value of \fIhistory_comment_char\fP
        !           584: to delimit timestamp entries in the history file.  If that variable does
        !           585: not have a value (the default), timestamps will not be written.
        !           586: 
        !           587: .Vb char history_expansion_char
        !           588: The character that introduces a history event.  The default is \fB!\fP.
        !           589: Setting this to 0 inhibits history expansion.
        !           590: 
        !           591: .Vb char history_subst_char
        !           592: The character that invokes word substitution if found at the start of
        !           593: a line.  The default is \fB^\fP.
        !           594: 
        !           595: .Vb char history_comment_char
        !           596: During tokenization, if this character is seen as the first character
        !           597: of a word, then it and all subsequent characters up to a newline are
        !           598: ignored, suppressing history expansion for the remainder of the line.
        !           599: This is disabled by default.
        !           600: 
        !           601: .Vb "char *" history_word_delimiters
        !           602: The characters that separate tokens for \fBhistory_tokenize()\fP.
        !           603: The default value is \fB"\ \et\en()<>;&|"\fP.
        !           604: 
        !           605: .Vb "char *" history_no_expand_chars
        !           606: The list of characters which inhibit history expansion if found immediately
        !           607: following \fBhistory_expansion_char\fP.  The default is space, tab, newline,
        !           608: \fB\er\fP, and \fB=\fP.
        !           609: 
        !           610: .Vb "char *" history_search_delimiter_chars
        !           611: The list of additional characters which can delimit a history search
        !           612: string, in addition to space, tab, \fI:\fP and \fI?\fP in the case of
        !           613: a substring search.  The default is empty.
        !           614: 
        !           615: .Vb int history_quotes_inhibit_expansion
        !           616: If non-zero, single-quoted words are not scanned for the history expansion
        !           617: character.  The default value is 0.
        !           618: 
        !           619: .Vb "rl_linebuf_func_t *" history_inhibit_expansion_function
        !           620: This should be set to the address of a function that takes two arguments:
        !           621: a \fBchar *\fP (\fIstring\fP)
        !           622: and an \fBint\fP index into that string (\fIi\fP).
        !           623: It should return a non-zero value if the history expansion starting at
        !           624: \fIstring[i]\fP should not be performed; zero if the expansion should
        !           625: be done.
        !           626: It is intended for use by applications like \fBbash\fP that use the history
        !           627: expansion character for additional purposes.
        !           628: By default, this variable is set to \fBNULL\fP.
        !           629: .SH FILES
        !           630: .PD 0 
        !           631: .TP
        !           632: .FN ~/.history
        !           633: Default filename for reading and writing saved history
        !           634: .PD
        !           635: .SH "SEE ALSO"
        !           636: .PD 0
        !           637: .TP
        !           638: \fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
        !           639: .TP
        !           640: \fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
        !           641: .TP
        !           642: \fIbash\fP(1)
        !           643: .TP
        !           644: \fIreadline\fP(3)
        !           645: .PD
        !           646: .SH AUTHORS
        !           647: Brian Fox, Free Software Foundation
        !           648: .br
        !           649: bfox@gnu.org
        !           650: .PP
        !           651: Chet Ramey, Case Western Reserve University
        !           652: .br
        !           653: chet.ramey@case.edu
        !           654: .SH BUG REPORTS
        !           655: If you find a bug in the
        !           656: .B history
        !           657: library, you should report it.  But first, you should
        !           658: make sure that it really is a bug, and that it appears in the latest
        !           659: version of the
        !           660: .B history
        !           661: library that you have.
        !           662: .PP
        !           663: Once you have determined that a bug actually exists, mail a
        !           664: bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
        !           665: If you have a fix, you are welcome to mail that
        !           666: as well!  Suggestions and `philosophical' bug reports may be mailed
        !           667: to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
        !           668: newsgroup
        !           669: .BR gnu.bash.bug .
        !           670: .PP
        !           671: Comments and bug reports concerning
        !           672: this manual page should be directed to
        !           673: .IR chet.ramey@case.edu .

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