aboutsummaryrefslogtreecommitdiff
path: root/readline/doc/history.0
blob: 324c363a66e516bd6d13bc4c0f2bea49a0953e59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660



HISTORY(3)                                             HISTORY(3)


NNAAMMEE
       history - GNU History Library

CCOOPPYYRRIIGGHHTT
       The  GNU History Library is Copyright (C) 1989-2002 by the
       Free Software Foundation, Inc.

DDEESSCCRRIIPPTTIIOONN
       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  uti-
       lize  information  from  previous  lines  in composing new
       ones.


HHIISSTTOORRYY EEXXPPAANNSSIIOONN
       The history library supports a history  expansion  feature
       that  is identical to the history expansion in bbaasshh..  This
       section describes what syntax features are available.

       History expansions introduce words from the  history  list
       into  the input stream, making it easy to repeat commands,
       insert the arguments to a previous command into  the  cur-
       rent  input  line,  or  fix  errors  in  previous commands
       quickly.

       History expansion is usually performed immediately after a
       complete  line is read.  It takes place in two parts.  The
       first is to determine which line from the history list  to
       use during substitution.  The second is to select portions
       of that line for inclusion into the current one.  The line
       selected  from  the history is the _e_v_e_n_t, and the portions
       of that line that are acted upon are _w_o_r_d_s.  Various _m_o_d_i_-
       _f_i_e_r_s are available to manipulate the selected words.  The
       line is broken into words in the same fashion as bbaasshh does
       when  reading input, so that several words that would oth-
       erwise be separated are  considered  one  word  when  sur-
       rounded  by  quotes  (see  the description of hhiissttoorryy__ttookk--
       eenniizzee(()) below).  History expansions are introduced by  the
       appearance  of the history expansion character, which is !!
       by default.  Only backslash  (\\)  and  single  quotes  can
       quote the history expansion character.

   EEvveenntt DDeessiiggnnaattoorrss
       An event designator is a reference to a command line entry
       in the history list.

       !!      Start a history substitution, except when  followed
              by a bbllaannkk, newline, = or (.
       !!_n     Refer to command line _n.
       !!--_n    Refer to the current command line minus _n.
       !!!!     Refer  to  the previous command.  This is a synonym
              for `!-1'.




GNU History 4.3          2002 January 31                        1





HISTORY(3)                                             HISTORY(3)


       !!_s_t_r_i_n_g
              Refer to the  most  recent  command  starting  with
              _s_t_r_i_n_g.
       !!??_s_t_r_i_n_g[[??]]
              Refer to the most recent command containing _s_t_r_i_n_g.
              The trailing ?? may be omitted if _s_t_r_i_n_g is followed
              immediately by a newline.
       ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^
              Quick   substitution.   Repeat  the  last  command,
              replacing  _s_t_r_i_n_g_1  with  _s_t_r_i_n_g_2.   Equivalent  to
              ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' (see MMooddiiffiieerrss below).
       !!##     The entire command line typed so far.

   WWoorrdd DDeessiiggnnaattoorrss
       Word designators are used to select desired words from the
       event.  A :: separates the  event  specification  from  the
       word designator.  It may be omitted if the word designator
       begins with a ^^, $$, **, --, or %%.  Words are  numbered  from
       the  beginning  of  the  line,  with  the first word being
       denoted by 0 (zero).  Words are inserted into the  current
       line separated by single spaces.

       00 ((zzeerroo))
              The  zeroth  word.  For the shell, this is the com-
              mand word.
       _n      The _nth word.
       ^^      The first argument.  That is, word 1.
       $$      The last argument.
       %%      The word matched  by  the  most  recent  `?_s_t_r_i_n_g?'
              search.
       _x--_y    A range of words; `-_y' abbreviates `0-_y'.
       **      All of the words but the zeroth.  This is a synonym
              for `_1_-_$'.  It is not an error to use ** if there is
              just  one  word  in  the event; the empty string is
              returned in that case.
       xx**     Abbreviates _x_-_$.
       xx--     Abbreviates _x_-_$ like xx**, but omits the last word.

       If a word designator is supplied without an event specifi-
       cation, the previous command is used as the event.

   MMooddiiffiieerrss
       After  the  optional  word  designator, there may appear a
       sequence of one or more of the following  modifiers,  each
       preceded by a `:'.

       hh      Remove a trailing file name component, leaving only
              the head.
       tt      Remove all leading file  name  components,  leaving
              the tail.
       rr      Remove  a trailing suffix of the form _._x_x_x, leaving
              the basename.
       ee      Remove all but the trailing suffix.
       pp      Print the new command but do not execute it.



GNU History 4.3          2002 January 31                        2





HISTORY(3)                                             HISTORY(3)


       qq      Quote the substituted words, escaping further  sub-
              stitutions.
       xx      Quote  the  substituted  words as with qq, but break
              into words at bbllaannkkss and newlines.
       ss//_o_l_d//_n_e_w//
              Substitute _n_e_w for the first occurrence of  _o_l_d  in
              the event line.  Any delimiter can be used in place
              of /.  The final delimiter is optional if it is the
              last  character  of  the event line.  The delimiter
              may be quoted in _o_l_d and _n_e_w with  a  single  back-
              slash.  If & appears in _n_e_w, it is replaced by _o_l_d.
              A single backslash will quote the  &.   If  _o_l_d  is
              null, it is set to the last _o_l_d substituted, or, if
              no previous history substitutions took  place,  the
              last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]]  search.
       &&      Repeat the previous substitution.
       gg      Cause  changes  to be applied over the entire event
              line.  This is used in conjunction with `::ss' (e.g.,
              `::ggss//_o_l_d//_n_e_w//')  or  `::&&'.   If used with `::ss', any
              delimiter can be used in place of /, and the  final
              delimiter  is  optional if it is the last character
              of the event line.

PPRROOGGRRAAMMMMIINNGG WWIITTHH HHIISSTTOORRYY FFUUNNCCTTIIOONNSS
       This section describes how to use the History  library  in
       other programs.

   IInnttrroodduuccttiioonn ttoo HHiissttoorryy
       The  programmer  using  the  History library has available
       functions for remembering lines on a history list, associ-
       ating  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 _e_x_p_a_n_s_i_o_n  function
       is  available  which provides for a consistent user inter-
       face 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 previ-
       ous  lines and using that text in new commands.  The basic
       history manipulation commands are identical to the history
       substitution provided by bbaasshh.

       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 edit-
       ing.

       Before declaring any functions using any functionality the
       History  library  provides  in  other code, an application
       writer should include the file _<_r_e_a_d_l_i_n_e_/_h_i_s_t_o_r_y_._h_> in any
       file  that  uses  the History library's features.  It sup-
       plies extern declarations for all of the library's  public



GNU History 4.3          2002 January 31                        3





HISTORY(3)                                             HISTORY(3)


       functions  and  variables,  and declares all of the public
       data structures.


   HHiissttoorryy SSttoorraaggee
       The history list is an array of history entries.   A  his-
       tory entry is declared as follows:

       _t_y_p_e_d_e_f _v_o_i_d _* hhiissttddaattaa__tt;;

       typedef struct _hist_entry {
         char *line;
         histdata_t data;
       } HIST_ENTRY;

       The history list itself might therefore be declared as

       _H_I_S_T___E_N_T_R_Y _*_* tthhee__hhiissttoorryy__lliisstt;;

       The  state  of  the History library is encapsulated into a
       single structure:

       /*
        * A structure used to pass around the current state of the history.
        */
       typedef struct _hist_state {
         HIST_ENTRY **entries; /* Pointer to the entries themselves. */
         int offset;           /* The location pointer within this array. */
         int length;           /* Number of elements within this array. */
         int size;             /* Number of slots allocated to this array. */
         int flags;
       } HISTORY_STATE;

       If the flags member includes HHSS__SSTTIIFFLLEEDD, the  history  has
       been stifled.

HHiissttoorryy FFuunnccttiioonnss
       This  section describes the calling sequence for the vari-
       ous functions exported by the GNU History library.

   IInniittiiaalliizziinngg HHiissttoorryy aanndd SSttaattee MMaannaaggeemmeenntt
       This section describes functions used  to  initialize  and
       manage  the  state of the History library when you want to
       use the history functions in your program.

       _v_o_i_d uussiinngg__hhiissttoorryy (_v_o_i_d)
       Begin a session in which the history  functions  might  be
       used.  This initializes the interactive variables.

       _H_I_S_T_O_R_Y___S_T_A_T_E _* hhiissttoorryy__ggeett__hhiissttoorryy__ssttaattee (_v_o_i_d)
       Return  a  structure  describing  the current state of the
       input history.

       _v_o_i_d hhiissttoorryy__sseett__hhiissttoorryy__ssttaattee (_H_I_S_T_O_R_Y___S_T_A_T_E _*_s_t_a_t_e)



GNU History 4.3          2002 January 31                        4





HISTORY(3)                                             HISTORY(3)


       Set the state of the history list according to _s_t_a_t_e.


   HHiissttoorryy LLiisstt MMaannaaggeemmeenntt
       These functions manage individual entries on  the  history
       list, or set parameters managing the list itself.

       _v_o_i_d aadddd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g)
       Place  _s_t_r_i_n_g at the end of the history list.  The associ-
       ated data field (if any) is set to NNUULLLL.

       _H_I_S_T___E_N_T_R_Y _* rreemmoovvee__hhiissttoorryy (_i_n_t _w_h_i_c_h)
       Remove history entry at offset  _w_h_i_c_h  from  the  history.
       The  removed element is returned so you can free the line,
       data, and containing structure.

       _H_I_S_T___E_N_T_R_Y _* rreeppllaaccee__hhiissttoorryy__eennttrryy (_i_n_t _w_h_i_c_h_, _c_o_n_s_t  _c_h_a_r
       _*_l_i_n_e_, _h_i_s_t_d_a_t_a___t _d_a_t_a)
       Make the history entry at offset _w_h_i_c_h have _l_i_n_e and _d_a_t_a.
       This returns the old entry so you can dispose of the data.
       In  the  case  of  an  invalid  _w_h_i_c_h,  a  NNUULLLL pointer is
       returned.

       _v_o_i_d cclleeaarr__hhiissttoorryy (_v_o_i_d)
       Clear the history list by deleting all the entries.

       _v_o_i_d ssttiiffllee__hhiissttoorryy (_i_n_t _m_a_x)
       Stifle the history list, remembering  only  the  last  _m_a_x
       entries.

       _i_n_t uunnssttiiffllee__hhiissttoorryy (_v_o_i_d)
       Stop  stifling  the history.  This returns the previously-
       set maximum number of history  entries  (as  set  by  ssttii--
       ffllee__hhiissttoorryy(())).   history was stifled.  The value is posi-
       tive if the history was stifled, negative if it wasn't.

       _i_n_t hhiissttoorryy__iiss__ssttiifflleedd (_v_o_i_d)
       Returns non-zero if the history is stifled, zero if it  is
       not.


   IInnffoorrmmaattiioonn AAbboouutt tthhee HHiissttoorryy LLiisstt
       These  functions  return information about the entire his-
       tory list or individual list entries.

       _H_I_S_T___E_N_T_R_Y _*_* hhiissttoorryy__lliisstt (_v_o_i_d)
       Return a NNUULLLL terminated array of _H_I_S_T___E_N_T_R_Y  _*  which  is
       the  current input history.  Element 0 of this list is the
       beginning of time.  If there is no history, return NNUULLLL.

       _i_n_t wwhheerree__hhiissttoorryy (_v_o_i_d)
       Returns the offset of the current history element.

       _H_I_S_T___E_N_T_R_Y _* ccuurrrreenntt__hhiissttoorryy (_v_o_i_d)



GNU History 4.3          2002 January 31                        5





HISTORY(3)                                             HISTORY(3)


       Return the history  entry  at  the  current  position,  as
       determined  by  wwhheerree__hhiissttoorryy(()).   If  there  is  no entry
       there, return a NNUULLLL pointer.

       _H_I_S_T___E_N_T_R_Y _* hhiissttoorryy__ggeett (_i_n_t _o_f_f_s_e_t)
       Return the history entry at position _o_f_f_s_e_t, starting from
       hhiissttoorryy__bbaassee.  If there is no entry there, or if _o_f_f_s_e_t is
       greater than the history length, return a NNUULLLL pointer.

       _i_n_t hhiissttoorryy__ttoottaall__bbyytteess (_v_o_i_d)
       Return the  number  of  bytes  that  the  primary  history
       entries  are  using.  This function returns the sum of the
       lengths of all the lines in the history.


   MMoovviinngg AArroouunndd tthhee HHiissttoorryy LLiisstt
       These functions allow the current index into  the  history
       list to be set or changed.

       _i_n_t hhiissttoorryy__sseett__ppooss (_i_n_t _p_o_s)
       Set  the  current history offset to _p_o_s, an absolute index
       into the list.  Returns 1 on success, 0  if  _p_o_s  is  less
       than zero or greater than the number of history entries.

       _H_I_S_T___E_N_T_R_Y _* pprreevviioouuss__hhiissttoorryy (_v_o_i_d)
       Back up the current history offset to the previous history
       entry, and return a pointer to that entry.  If there is no
       previous entry, return a NNUULLLL pointer.

       _H_I_S_T___E_N_T_R_Y _* nneexxtt__hhiissttoorryy (_v_o_i_d)
       Move  the  current history offset forward to the next his-
       tory entry, and return the a pointer to  that  entry.   If
       there is no next entry, return a NNUULLLL pointer.


   SSeeaarrcchhiinngg tthhee HHiissttoorryy LLiisstt
       These  functions  allow  searching of the history list for
       entries containing a specific string.   Searching  may  be
       performed  both forward and backward from the current his-
       tory position.  The search may be _a_n_c_h_o_r_e_d,  meaning  that
       the  string  must  match  at  the beginning of the history
       entry.

       _i_n_t hhiissttoorryy__sseeaarrcchh (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n)
       Search the history for _s_t_r_i_n_g,  starting  at  the  current
       history  offset.   If  _d_i_r_e_c_t_i_o_n  is less than 0, then the
       search is through previous entries, otherwise through sub-
       sequent  entries.   If  _s_t_r_i_n_g  is found, then the current
       history index is set to that history entry, and the  value
       returned  is  the  offset  in  the line of the entry where
       _s_t_r_i_n_g was found.  Otherwise, nothing is changed, and a -1
       is returned.

       _i_n_t   hhiissttoorryy__sseeaarrcchh__pprreeffiixx   (_c_o_n_s_t   _c_h_a_r  _*_s_t_r_i_n_g_,  _i_n_t



GNU History 4.3          2002 January 31                        6





HISTORY(3)                                             HISTORY(3)


       _d_i_r_e_c_t_i_o_n)
       Search the history for _s_t_r_i_n_g,  starting  at  the  current
       history  offset.   The  search is anchored: matching lines
       must begin with _s_t_r_i_n_g.  If _d_i_r_e_c_t_i_o_n is less than 0, then
       the  search is through previous entries, otherwise through
       subsequent entries.  If _s_t_r_i_n_g is found, then the  current
       history  index  is set to that entry, and the return value
       is  0.   Otherwise,  nothing  is  changed,  and  a  -1  is
       returned.

       _i_n_t hhiissttoorryy__sseeaarrcchh__ppooss (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n_,
       _i_n_t _p_o_s)
       Search for _s_t_r_i_n_g in the history list, starting at _p_o_s, an
       absolute  index  into the list.  If _d_i_r_e_c_t_i_o_n is negative,
       the search proceeds backward from _p_o_s, otherwise  forward.
       Returns  the  absolute  index of the history element where
       _s_t_r_i_n_g was found, or -1 otherwise.


   MMaannaaggiinngg tthhee HHiissttoorryy FFiillee
       The History library can read the history from and write it
       to  a file.  This section documents the functions for man-
       aging a history file.

       _i_n_t rreeaadd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
       Add the contents of _f_i_l_e_n_a_m_e to the history list,  a  line
       at  a  time.   If _f_i_l_e_n_a_m_e is NNUULLLL, then read from _~_/_._h_i_s_-
       _t_o_r_y.  Returns 0 if successful, or eerrrrnnoo if not.

       _i_n_t rreeaadd__hhiissttoorryy__rraannggee (_c_o_n_s_t _c_h_a_r  _*_f_i_l_e_n_a_m_e_,  _i_n_t  _f_r_o_m_,
       _i_n_t _t_o)
       Read  a  range  of lines from _f_i_l_e_n_a_m_e, adding them to the
       history list.  Start reading at line _f_r_o_m and end  at  _t_o.
       If  _f_r_o_m  is  zero, start at the beginning.  If _t_o is less
       than _f_r_o_m, then read until the end of the file.  If  _f_i_l_e_-
       _n_a_m_e  is  NNUULLLL,  then  read from _~_/_._h_i_s_t_o_r_y.  Returns 0 if
       successful, or eerrrrnnoo if not.

       _i_n_t wwrriittee__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
       Write the current history to _f_i_l_e_n_a_m_e,  overwriting  _f_i_l_e_-
       _n_a_m_e  if  necessary.   If _f_i_l_e_n_a_m_e is NNUULLLL, then write the
       history list to _~_/_._h_i_s_t_o_r_y.   Returns  0  on  success,  or
       eerrrrnnoo on a read or write error.


       _i_n_t aappppeenndd__hhiissttoorryy (_i_n_t _n_e_l_e_m_e_n_t_s_, _c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
       Append the last _n_e_l_e_m_e_n_t_s of the history list to _f_i_l_e_n_a_m_e.
       If _f_i_l_e_n_a_m_e is NNUULLLL, then append to _~_/_._h_i_s_t_o_r_y.  Returns 0
       on success, or eerrrrnnoo on a read or write error.

       _i_n_t   hhiissttoorryy__ttrruunnccaattee__ffiillee  (_c_o_n_s_t  _c_h_a_r  _*_f_i_l_e_n_a_m_e_,  _i_n_t
       _n_l_i_n_e_s)
       Truncate the history file _f_i_l_e_n_a_m_e, leaving only the  last
       _n_l_i_n_e_s  lines.   If  _f_i_l_e_n_a_m_e  is NNUULLLL, then _~_/_._h_i_s_t_o_r_y is



GNU History 4.3          2002 January 31                        7





HISTORY(3)                                             HISTORY(3)


       truncated.  Returns 0 on success, or eerrrrnnoo on failure.


   HHiissttoorryy EExxppaannssiioonn
       These functions implement history expansion.

       _i_n_t hhiissttoorryy__eexxppaanndd (_c_h_a_r _*_s_t_r_i_n_g_, _c_h_a_r _*_*_o_u_t_p_u_t)
       Expand _s_t_r_i_n_g, placing the result into _o_u_t_p_u_t,  a  pointer
       to a string.  Returns:
              0      If no expansions took place (or, if the only
                     change in the text was the removal of escape
                     characters  preceding  the history expansion
                     character);
              1      if expansions did take place;
              -1     if there was an error in expansion;
              2      if the returned line  should  be  displayed,
                     but not executed, as with the ::pp modifier.
       If  an  error ocurred in expansion, then _o_u_t_p_u_t contains a
       descriptive error message.

       _c_h_a_r _* ggeett__hhiissttoorryy__eevveenntt (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _*_c_i_n_d_e_x_,
       _i_n_t _q_c_h_a_r)
       Returns  the text of the history event beginning at _s_t_r_i_n_g
       + _*_c_i_n_d_e_x.  _*_c_i_n_d_e_x is modified  to  point  to  after  the
       event  specifier.  At function entry, _c_i_n_d_e_x points to the
       index into _s_t_r_i_n_g where the  history  event  specification
       begins.   _q_c_h_a_r  is a character that is allowed to end the
       event specification in addition to the  ``normal''  termi-
       nating characters.

       _c_h_a_r _*_* hhiissttoorryy__ttookkeenniizzee (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g)
       Return  an  array  of tokens parsed out of _s_t_r_i_n_g, much as
       the shell might.  The tokens are split on  the  characters
       in the hhiissttoorryy__wwoorrdd__ddeelliimmiitteerrss variable, and shell quoting
       conventions are obeyed.

       _c_h_a_r _* hhiissttoorryy__aarrgg__eexxttrraacctt (_i_n_t  _f_i_r_s_t_,  _i_n_t  _l_a_s_t_,  _c_o_n_s_t
       _c_h_a_r _*_s_t_r_i_n_g)
       Extract  a  string segment consisting of the _f_i_r_s_t through
       _l_a_s_t arguments present in  _s_t_r_i_n_g.   Arguments  are  split
       using hhiissttoorryy__ttookkeenniizzee(()).


   HHiissttoorryy VVaarriiaabblleess
       This  section  describes  the externally-visible variables
       exported by the GNU History Library.

       _i_n_t hhiissttoorryy__bbaassee
       The logical offset of the first entry in the history list.

       _i_n_t hhiissttoorryy__lleennggtthh
       The  number  of  entries  currently  stored in the history
       list.




GNU History 4.3          2002 January 31                        8





HISTORY(3)                                             HISTORY(3)


       _i_n_t hhiissttoorryy__mmaaxx__eennttrriieess
       The maximum number  of  history  entries.   This  must  be
       changed using ssttiiffllee__hhiissttoorryy(()).

       _c_h_a_r hhiissttoorryy__eexxppaannssiioonn__cchhaarr
       The  character  that  introduces  a  history  event.   The
       default is !!.  Setting this to 0 inhibits  history  expan-
       sion.

       _c_h_a_r hhiissttoorryy__ssuubbsstt__cchhaarr
       The  character  that invokes word substitution if found at
       the start of a line.  The default is ^^.

       _c_h_a_r hhiissttoorryy__ccoommmmeenntt__cchhaarr
       During tokenization, if this  character  is  seen  as  the
       first  character  of  a  word,  then it and all subsequent
       characters up to a newline are ignored,  suppressing  his-
       tory  expansion  for  the  remainder of the line.  This is
       disabled by default.

       _c_h_a_r _* hhiissttoorryy__wwoorrdd__ddeelliimmiitteerrss
       The  characters  that  separate  tokens  for  hhiissttoorryy__ttookk--
       eenniizzee(()).  The default value is "" \\tt\\nn(())<<>>;;&&||"".

       _c_h_a_r _* hhiissttoorryy__nnoo__eexxppaanndd__cchhaarrss
       The  list of characters which inhibit history expansion if
       found immediately following  hhiissttoorryy__eexxppaannssiioonn__cchhaarr.   The
       default is space, tab, newline, \\rr, and ==.

       _c_h_a_r _* hhiissttoorryy__sseeaarrcchh__ddeelliimmiitteerr__cchhaarrss
       The list of additional characters which can delimit a his-
       tory search string, in addition to space, tab, _: and _?  in
       the case of a substring search.  The default is empty.

       _i_n_t hhiissttoorryy__qquuootteess__iinnhhiibbiitt__eexxppaannssiioonn
       If  non-zero,  single-quoted words are not scanned for the
       history expansion character.  The default value is 0.

       _r_l___l_i_n_e_b_u_f___f_u_n_c___t _* hhiissttoorryy__iinnhhiibbiitt__eexxppaannssiioonn__ffuunnccttiioonn
       This should be set to the address of a function that takes
       two  arguments:  a  cchhaarr  ** (_s_t_r_i_n_g) and an iinntt index into
       that string (_i).  It should return a non-zero value if the
       history expansion starting at _s_t_r_i_n_g_[_i_] should not be per-
       formed; zero if the  expansion  should  be  done.   It  is
       intended  for  use  by applications like bbaasshh that use the
       history expansion character for additional  purposes.   By
       default, this variable is set to NNUULLLL.

FFIILLEESS
       _~_/_._h_i_s_t_o_r_y
              Default filename for reading and writing saved his-
              tory





GNU History 4.3          2002 January 31                        9





HISTORY(3)                                             HISTORY(3)


SSEEEE AALLSSOO
       _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
       _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
       _b_a_s_h(1)
       _r_e_a_d_l_i_n_e(3)

AAUUTTHHOORRSS
       Brian Fox, Free Software Foundation
       bfox@gnu.org

       Chet Ramey, Case Western Reserve University
       chet@ins.CWRU.Edu

BBUUGG RREEPPOORRTTSS
       If you find a bug  in  the  hhiissttoorryy  library,  you  should
       report it.  But first, you should make sure that it really
       is a bug, and that it appears in the latest version of the
       hhiissttoorryy library that you have.

       Once  you have determined that a bug actually exists, mail
       a bug report to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g.  If you have a  fix,
       you  are  welcome  to  mail that as well!  Suggestions and
       `philosophical' bug reports may  be  mailed  to  _b_u_g_-_r_e_a_d_-
       _l_i_n_e@_g_n_u_._o_r_g   or   posted   to   the   Usenet   newsgroup
       ggnnuu..bbaasshh..bbuugg.

       Comments and  bug  reports  concerning  this  manual  page
       should be directed to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u.





























GNU History 4.3          2002 January 31                       10