history: Introduction to History

 
 2.1 Introduction to History
 ===========================
 
 Many programs read input from the user a line at a time.  The GNU
 History library is able to keep track of those lines, associate
 arbitrary data with each line, and utilize information from previous
 lines in composing new ones.
 
    The programmer using the History library has available functions for
 remembering lines on a history list, associating arbitrary data with a
 line, removing lines from the list, searching through the list for a
 line containing an arbitrary text string, and referencing any line in
 the list directly.  In addition, a history "expansion" function is
 available which provides for a consistent user interface across
 different programs.
 
    The user using programs written with the History library has the
 benefit of a consistent user interface with a set of well-known commands
 for manipulating the text of previous lines and using that text in new
 commands.  The basic history manipulation commands are similar to the
 history substitution provided by 'csh'.
 
    If the programmer desires, he can use the Readline library, which
 includes some history manipulation by default, and has the added
 advantage of command line editing.
 
    Before declaring any functions using any functionality the History
 library provides in other code, an application writer should include the
 file '<readline/history.h>' in any file that uses the History library's
 features.  It supplies extern declarations for all of the library's
 public functions and variables, and declares all of the public data
 structures.