mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-06-26 07:13:10 +02:00
commit bash-20171006 snapshot
This commit is contained in:
@@ -14328,3 +14328,48 @@ parse.y
|
||||
two tokens read are `FOR' and `WORD' make sure we decrement
|
||||
expecting_in_token. Fixes bug reported by Martijn Dekker
|
||||
<martijn@inlv.org>
|
||||
|
||||
10/4
|
||||
----
|
||||
subst.c
|
||||
- expand_string_for_rhs: now takes an additional PFLAGS argument from
|
||||
its caller (one so far); passes that through to call_expand_word_internal
|
||||
as W_ASSIGNRHS. Fixes bug reported by Martijn Dekker
|
||||
<martijn@inlv.org>
|
||||
- expand_string_for_rhs: expanding b in ${a[:]=b} is now done as if
|
||||
b were the rhs of an assignment statement. This means that splitting
|
||||
isn't done, but tilde expansion is performed as if the statement
|
||||
were `a=b'. Fixes splitting bug with $* reported by Martijn Dekker
|
||||
<martijn@inlv.org>
|
||||
|
||||
command.h
|
||||
- W_NOASSNTILDE: new word flag, means to not perform tilde expansion
|
||||
following a `:' even if the word has the W_ASSIGNRHS flag enabled
|
||||
|
||||
subst.c
|
||||
- expand_word_internal: if we see a `:' with the W_NOASSNTILDE flag
|
||||
set, just add the character and inhibit any subsequent tilde
|
||||
expansion. Currently not set anywhere, but it could be set in
|
||||
expand_string_for_rhs to satisfy its peculiar semantics
|
||||
|
||||
10/6
|
||||
----
|
||||
lib/sh/casemod.c
|
||||
- sh_modcase: convert even single-byte wide characters to wide upper
|
||||
or lowercase equivalents to accommodate locales where single-byte
|
||||
characters have multibyte upper and lower case conversions. Bug
|
||||
reported by Stephane Chazelas <stephane.chazelas@gmail.com>
|
||||
|
||||
10/7
|
||||
----
|
||||
doc/{bash.1,bashref.texi}
|
||||
- slight changes to the description of command_not_found_handle to
|
||||
clarify that it's executed in a separate execution environment,
|
||||
just like if the command was found. Reported by Martijn Dekker
|
||||
<martijn@inlv.org>
|
||||
|
||||
10/8
|
||||
----
|
||||
lib/readline/doc/{history.3,hstech.texi}
|
||||
- history_get: clarify the range of valid values for the OFFSET
|
||||
argument. From a report by Kevin Ryde <user42_kevin@yahoo.com.au>
|
||||
|
||||
@@ -102,6 +102,7 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,
|
||||
#define W_NOBRACE 0x4000000 /* Don't perform brace expansion */
|
||||
#define W_COMPLETE 0x8000000 /* word is being expanded for completion */
|
||||
#define W_CHKLOCAL 0x10000000 /* check for local vars on assignment */
|
||||
#define W_NOASSNTILDE 0x20000000 /* don't do tilde expansion like an assignment statement */
|
||||
|
||||
/* Flags for the `pflags' argument to param_expand() and various
|
||||
parameter_brace_expand_xxx functions; also used for string_list_dollar_at */
|
||||
|
||||
+956
-955
File diff suppressed because it is too large
Load Diff
+5
-4
@@ -5,12 +5,12 @@
|
||||
.\" Case Western Reserve University
|
||||
.\" chet.ramey@case.edu
|
||||
.\"
|
||||
.\" Last Change: Fri Jun 23 12:42:34 EDT 2017
|
||||
.\" Last Change: Sat Oct 7 17:30:18 EDT 2017
|
||||
.\"
|
||||
.\" bash_builtins, strip all but Built-Ins section
|
||||
.if \n(zZ=1 .ig zZ
|
||||
.if \n(zY=1 .ig zY
|
||||
.TH BASH 1 "2017 June 23" "GNU Bash 4.4"
|
||||
.TH BASH 1 "2017 October 7" "GNU Bash 4.4"
|
||||
.\"
|
||||
.\" There's some problem with having a `@'
|
||||
.\" in a tagged paragraph with the BSD man macros.
|
||||
@@ -4694,9 +4694,10 @@ A full search of the directories in
|
||||
is performed only if the command is not found in the hash table.
|
||||
If the search is unsuccessful, the shell searches for a defined shell
|
||||
function named \fBcommand_not_found_handle\fP.
|
||||
If that function exists, it is invoked with the original command and
|
||||
If that function exists, it is invoked in a separate execution environment
|
||||
with the original command and
|
||||
the original command's arguments as its arguments, and the function's
|
||||
exit status becomes the exit status of the shell.
|
||||
exit status becomes the exit status of that subshell.
|
||||
If that function is not defined, the shell prints an error
|
||||
message and returns an exit status of 127.
|
||||
.PP
|
||||
|
||||
+4
-2
@@ -8866,7 +8866,9 @@ fix errors in previous commands quickly.
|
||||
<P>
|
||||
|
||||
History expansion is performed immediately after a complete line
|
||||
is read, before the shell breaks it into words.
|
||||
is read, before the shell breaks it into words, and is performed
|
||||
on each line individually without taking quoting on previous lines into
|
||||
account.
|
||||
It takes place in two parts.
|
||||
The first is to determine which line from the history list
|
||||
to use during substitution.
|
||||
@@ -13857,6 +13859,6 @@ There may be only one active coprocess at a time.
|
||||
</DL>
|
||||
<HR>
|
||||
This document was created by man2html from bash.1.<BR>
|
||||
Time: 23 August 2017 16:02:54 EDT
|
||||
Time: 05 October 2017 14:35:31 EDT
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
+23
-22
@@ -9196,7 +9196,8 @@ a previous command into the current input line, or fix errors in
|
||||
previous commands quickly.
|
||||
|
||||
History expansion is performed immediately after a complete line is
|
||||
read, before the shell breaks it into words.
|
||||
read, before the shell breaks it into words, and is performed on each
|
||||
line individually without taking quoting on previous lines into account.
|
||||
|
||||
History expansion takes place in two parts. The first is to
|
||||
determine which line from the history list should be used during
|
||||
@@ -11611,26 +11612,26 @@ Node: Using History Interactively384286
|
||||
Node: Bash History Facilities384970
|
||||
Node: Bash History Builtins387971
|
||||
Node: History Interaction392263
|
||||
Node: Event Designators395227
|
||||
Node: Word Designators396446
|
||||
Node: Modifiers398083
|
||||
Node: Installing Bash399485
|
||||
Node: Basic Installation400622
|
||||
Node: Compilers and Options403313
|
||||
Node: Compiling For Multiple Architectures404054
|
||||
Node: Installation Names405717
|
||||
Node: Specifying the System Type406535
|
||||
Node: Sharing Defaults407251
|
||||
Node: Operation Controls407924
|
||||
Node: Optional Features408882
|
||||
Node: Reporting Bugs419408
|
||||
Node: Major Differences From The Bourne Shell420602
|
||||
Node: GNU Free Documentation License437454
|
||||
Node: Indexes462631
|
||||
Node: Builtin Index463085
|
||||
Node: Reserved Word Index469912
|
||||
Node: Variable Index472360
|
||||
Node: Function Index488038
|
||||
Node: Concept Index501341
|
||||
Node: Event Designators395325
|
||||
Node: Word Designators396544
|
||||
Node: Modifiers398181
|
||||
Node: Installing Bash399583
|
||||
Node: Basic Installation400720
|
||||
Node: Compilers and Options403411
|
||||
Node: Compiling For Multiple Architectures404152
|
||||
Node: Installation Names405815
|
||||
Node: Specifying the System Type406633
|
||||
Node: Sharing Defaults407349
|
||||
Node: Operation Controls408022
|
||||
Node: Optional Features408980
|
||||
Node: Reporting Bugs419506
|
||||
Node: Major Differences From The Bourne Shell420700
|
||||
Node: GNU Free Documentation License437552
|
||||
Node: Indexes462729
|
||||
Node: Builtin Index463183
|
||||
Node: Reserved Word Index470010
|
||||
Node: Variable Index472458
|
||||
Node: Function Index488136
|
||||
Node: Concept Index501439
|
||||
|
||||
End Tag Table
|
||||
|
||||
+2465
-2466
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+3
-1
@@ -12546,7 +12546,9 @@ arguments to a previous command into the current input line, or
|
||||
fix errors in previous commands quickly.
|
||||
</p>
|
||||
<p>History expansion is performed immediately after a complete line
|
||||
is read, before the shell breaks it into words.
|
||||
is read, before the shell breaks it into words, and is performed
|
||||
on each line individually without taking quoting on previous lines into
|
||||
account.
|
||||
</p>
|
||||
<p>History expansion takes place in two parts. The first is to determine
|
||||
which line from the history list should be used during substitution.
|
||||
|
||||
+23
-22
@@ -9196,7 +9196,8 @@ a previous command into the current input line, or fix errors in
|
||||
previous commands quickly.
|
||||
|
||||
History expansion is performed immediately after a complete line is
|
||||
read, before the shell breaks it into words.
|
||||
read, before the shell breaks it into words, and is performed on each
|
||||
line individually without taking quoting on previous lines into account.
|
||||
|
||||
History expansion takes place in two parts. The first is to
|
||||
determine which line from the history list should be used during
|
||||
@@ -11611,26 +11612,26 @@ Node: Using History Interactively384286
|
||||
Node: Bash History Facilities384970
|
||||
Node: Bash History Builtins387971
|
||||
Node: History Interaction392263
|
||||
Node: Event Designators395227
|
||||
Node: Word Designators396446
|
||||
Node: Modifiers398083
|
||||
Node: Installing Bash399485
|
||||
Node: Basic Installation400622
|
||||
Node: Compilers and Options403313
|
||||
Node: Compiling For Multiple Architectures404054
|
||||
Node: Installation Names405717
|
||||
Node: Specifying the System Type406535
|
||||
Node: Sharing Defaults407251
|
||||
Node: Operation Controls407924
|
||||
Node: Optional Features408882
|
||||
Node: Reporting Bugs419408
|
||||
Node: Major Differences From The Bourne Shell420602
|
||||
Node: GNU Free Documentation License437454
|
||||
Node: Indexes462631
|
||||
Node: Builtin Index463085
|
||||
Node: Reserved Word Index469912
|
||||
Node: Variable Index472360
|
||||
Node: Function Index488038
|
||||
Node: Concept Index501341
|
||||
Node: Event Designators395325
|
||||
Node: Word Designators396544
|
||||
Node: Modifiers398181
|
||||
Node: Installing Bash399583
|
||||
Node: Basic Installation400720
|
||||
Node: Compilers and Options403411
|
||||
Node: Compiling For Multiple Architectures404152
|
||||
Node: Installation Names405815
|
||||
Node: Specifying the System Type406633
|
||||
Node: Sharing Defaults407349
|
||||
Node: Operation Controls408022
|
||||
Node: Optional Features408980
|
||||
Node: Reporting Bugs419506
|
||||
Node: Major Differences From The Bourne Shell420700
|
||||
Node: GNU Free Documentation License437552
|
||||
Node: Indexes462729
|
||||
Node: Builtin Index463183
|
||||
Node: Reserved Word Index470010
|
||||
Node: Variable Index472458
|
||||
Node: Function Index488136
|
||||
Node: Concept Index501439
|
||||
|
||||
End Tag Table
|
||||
|
||||
+18
-43
@@ -1,11 +1,11 @@
|
||||
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/MacPorts 2017_0) (preloaded format=pdfetex 2017.7.5) 23 AUG 2017 16:02
|
||||
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/MacPorts 2017_0) (preloaded format=etex 2017.7.5) 5 OCT 2017 14:35
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
file:line:error style messages enabled.
|
||||
%&-line parsing enabled.
|
||||
**\input /usr/homes/chet/src/bash/src/doc/bashref.texi
|
||||
(/usr/homes/chet/src/bash/src/doc/bashref.texi
|
||||
(/Users/chet/src/bash/src/doc/texinfo.tex
|
||||
**\catcode126=12 \def\normaltilde{~}\catcode126=13 \let~\normaltilde \input /u
|
||||
sr/homes/chet/src/bash/src/doc/bashref.texi
|
||||
(/usr/homes/chet/src/bash/src/doc/bashref.texi (./texinfo.tex
|
||||
Loading texinfo [version 2015-11-22.14]:
|
||||
\outerhsize=\dimen16
|
||||
\outervsize=\dimen17
|
||||
@@ -161,22 +161,18 @@ This is `epsf.tex' v2.7.4 <14 February 2011>
|
||||
texinfo.tex: doing @include of version.texi
|
||||
|
||||
|
||||
(/Users/chet/src/bash/src/doc/version.texi) [1{/opt/local/var/db/texmf/fonts/ma
|
||||
p/pdftex/updmap/pdftex.map}] [2] (/Users/chet/src/bash/src/doc/bashref.toc
|
||||
[-1] [-2] [-3]) [-4] (/Users/chet/src/bash/src/doc/bashref.toc)
|
||||
(/Users/chet/src/bash/src/doc/bashref.toc) Chapter 1
|
||||
(./version.texi) [1] [2] (./bashref.toc [-1] [-2] [-3]) [-4] Chapter 1
|
||||
\openout0 = `bashref.toc'.
|
||||
|
||||
|
||||
(/Users/chet/src/bash/src/doc/bashref.aux)
|
||||
(./bashref.aux)
|
||||
\openout1 = `bashref.aux'.
|
||||
|
||||
Chapter 2 [1] [2]
|
||||
@cpindfile=@write2
|
||||
\openout2 = `bashref.cp'.
|
||||
|
||||
[3] Chapter 3
|
||||
[4] [5] [6]
|
||||
[3] Chapter 3 [4] [5] [6]
|
||||
@vrindfile=@write3
|
||||
\openout3 = `bashref.vr'.
|
||||
|
||||
@@ -184,7 +180,8 @@ p/pdftex/updmap/pdftex.map}] [2] (/Users/chet/src/bash/src/doc/bashref.toc
|
||||
@rwindfile=@write4
|
||||
\openout4 = `bashref.rw'.
|
||||
|
||||
[8] [9] [10]
|
||||
[8] [9]
|
||||
[10]
|
||||
Overfull \hbox (38.26587pt too wide) in paragraph at lines 879--879
|
||||
[]@texttt case @textttsl word @texttt in [ [(] @textttsl pat-tern @texttt [| @
|
||||
textttsl pattern@texttt ][]) @textttsl command-list @texttt ;;][] esac[]
|
||||
@@ -383,38 +380,16 @@ Chapter 9 [139] [140] [141] [142] [143]) Chapter 10 [144] [145] [146] [147]
|
||||
[157] [158] Appendix C [159]
|
||||
texinfo.tex: doing @include of fdl.texi
|
||||
|
||||
(/Users/chet/src/bash/src/doc/fdl.texi [160]
|
||||
[161] [162] [163] [164] [165] [166]) Appendix D [167] [168] [169] [170]
|
||||
[171] [172] [173] [174] [175] [176] )
|
||||
(./fdl.texi [160] [161] [162] [163] [164] [165]
|
||||
[166]) Appendix D [167] [168] [169] [170] [171] [172] [173] [174] [175]
|
||||
[176] )
|
||||
Here is how much of TeX's memory you used:
|
||||
4064 strings out of 497104
|
||||
47069 string characters out of 6206767
|
||||
136551 words of memory out of 5000000
|
||||
4846 multiletter control sequences out of 15000+600000
|
||||
3517 strings out of 497114
|
||||
39615 string characters out of 6207173
|
||||
86566 words of memory out of 5000000
|
||||
4681 multiletter control sequences out of 15000+600000
|
||||
34315 words of font info for 116 fonts, out of 8000000 for 9000
|
||||
51 hyphenation exceptions out of 8191
|
||||
16i,6n,16p,326b,968s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
{/opt/local/share/texmf-texlive/fonts/enc/
|
||||
dvips/cm-super/cm-super-t1.enc}</opt/local/share/texmf-texlive/fonts/type1/publ
|
||||
ic/amsfonts/cm/cmbx12.pfb></opt/local/share/texmf-texlive/fonts/type1/public/am
|
||||
sfonts/cm/cmcsc10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfon
|
||||
ts/cm/cmmi10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm
|
||||
/cmmi12.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmmi
|
||||
9.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmr10.pfb>
|
||||
</opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmr9.pfb></opt/l
|
||||
ocal/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsl10.pfb></opt/local/
|
||||
share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsltt10.pfb></opt/local/sha
|
||||
re/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsy10.pfb></opt/local/share/te
|
||||
xmf-texlive/fonts/type1/public/amsfonts/cm/cmti10.pfb></opt/local/share/texmf-t
|
||||
exlive/fonts/type1/public/amsfonts/cm/cmtt10.pfb></opt/local/share/texmf-texliv
|
||||
e/fonts/type1/public/amsfonts/cm/cmtt12.pfb></opt/local/share/texmf-texlive/fon
|
||||
ts/type1/public/amsfonts/cm/cmtt9.pfb></opt/local/share/texmf-texlive/fonts/typ
|
||||
e1/public/cm-super/sfrm1095.pfb></opt/local/share/texmf-texlive/fonts/type1/pub
|
||||
lic/cm-super/sfrm1440.pfb>
|
||||
Output written on bashref.pdf (182 pages, 743593 bytes).
|
||||
PDF statistics:
|
||||
2608 PDF objects out of 2984 (max. 8388607)
|
||||
2381 compressed objects within 24 object streams
|
||||
308 named destinations out of 1000 (max. 500000)
|
||||
1125 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
16i,6n,16p,394b,936s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
|
||||
Output written on bashref.dvi (182 pages, 756388 bytes).
|
||||
|
||||
+140
-139
@@ -1,7 +1,7 @@
|
||||
%!PS-Adobe-2.0
|
||||
%%Creator: dvips(k) 5.997 Copyright 2017 Radical Eye Software
|
||||
%%Title: bashref.dvi
|
||||
%%CreationDate: Wed Aug 23 20:02:50 2017
|
||||
%%CreationDate: Thu Oct 5 18:35:29 2017
|
||||
%%Pages: 182
|
||||
%%PageOrder: Ascend
|
||||
%%BoundingBox: 0 0 612 792
|
||||
@@ -12,7 +12,7 @@
|
||||
%DVIPSWebPage: (www.radicaleye.com)
|
||||
%DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi
|
||||
%DVIPSParameters: dpi=600
|
||||
%DVIPSSource: TeX output 2017.08.23:1602
|
||||
%DVIPSSource: TeX output 2017.10.05:1435
|
||||
%%BeginProcSet: tex.pro 0 0
|
||||
%!
|
||||
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
|
||||
@@ -18096,212 +18096,213 @@ b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(142)630
|
||||
408 y(lines)36 b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h
|
||||
(curren)m(t)f(Bash)h(session,)h(but)1110 518 y(not)31
|
||||
b(already)g(app)s(ended)d(to)j(the)g(history)f(\014le.)630
|
||||
674 y Ft(-n)384 b Fu(App)s(end)32 b(the)i(history)f(lines)h(not)g
|
||||
684 y Ft(-n)384 b Fu(App)s(end)32 b(the)i(history)f(lines)h(not)g
|
||||
(already)g(read)g(from)f(the)h(history)f(\014le)h(to)1110
|
||||
784 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25
|
||||
794 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25
|
||||
b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le)1110
|
||||
893 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h
|
||||
(session.)630 1049 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h
|
||||
903 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h
|
||||
(session.)630 1070 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h
|
||||
(and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f(list.)
|
||||
630 1205 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f
|
||||
(history)g(list)h(to)h(the)e(history)g(\014le.)630 1361
|
||||
630 1236 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f
|
||||
(history)g(list)h(to)h(the)e(history)g(\014le.)630 1402
|
||||
y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f(the)h
|
||||
Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110
|
||||
1470 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g
|
||||
(in)g(the)g(history)g(list.)630 1626 y Ft(-s)384 b Fu(The)30
|
||||
1512 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g
|
||||
(in)g(the)g(history)g(list.)630 1678 y Ft(-s)384 b Fu(The)30
|
||||
b Fr(arg)8 b Fu(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f
|
||||
(history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630
|
||||
1782 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p
|
||||
1844 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p
|
||||
Fu(,)g Ft(-a)p Fu(,)g(or)f Ft(-n)f Fu(options)i(is)f(used,)h(if)f
|
||||
Fr(\014lename)32 b Fu(is)26 b(giv)m(en,)i(then)e(it)h(is)630
|
||||
1892 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28
|
||||
1954 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28
|
||||
b(not,)i(then)e(the)g(v)-5 b(alue)29 b(of)g(the)g Ft(HISTFILE)d
|
||||
Fu(v)-5 b(ariable)29 b(is)f(used.)150 2129 y Fs(9.3)68
|
||||
b(History)46 b(Expansion)150 2288 y Fu(The)f(History)h(library)e(pro)m
|
||||
Fu(v)-5 b(ariable)29 b(is)f(used.)150 2204 y Fs(9.3)68
|
||||
b(History)46 b(Expansion)150 2364 y Fu(The)f(History)h(library)e(pro)m
|
||||
(vides)i(a)f(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g
|
||||
(the)f(history)150 2398 y(expansion)g(pro)m(vided)f(b)m(y)h
|
||||
(the)f(history)150 2473 y(expansion)g(pro)m(vided)f(b)m(y)h
|
||||
Ft(csh)p Fu(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h
|
||||
(used)e(to)i(manipulate)f(the)150 2508 y(history)30 b(information.)275
|
||||
2640 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
|
||||
(used)e(to)i(manipulate)f(the)150 2583 y(history)30 b(information.)275
|
||||
2724 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
|
||||
(history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150
|
||||
2750 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen)
|
||||
2834 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen)
|
||||
m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150
|
||||
2860 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
|
||||
(quic)m(kly)-8 b(.)275 2992 y(History)40 b(expansion)g(is)h(p)s
|
||||
(erformed)d(immediately)k(after)f(a)f(complete)i(line)f(is)f(read,)j(b)
|
||||
s(efore)d(the)150 3102 y(shell)31 b(breaks)f(it)h(in)m(to)g(w)m(ords.)
|
||||
275 3235 y(History)c(expansion)f(tak)m(es)i(place)f(in)f(t)m(w)m(o)i
|
||||
(parts.)39 b(The)26 b(\014rst)g(is)g(to)h(determine)g(whic)m(h)f(line)h
|
||||
(from)f(the)150 3344 y(history)i(list)g(should)f(b)s(e)g(used)g(during)
|
||||
g(substitution.)39 b(The)27 b(second)h(is)g(to)h(select)g(p)s(ortions)e
|
||||
(of)h(that)h(line)150 3454 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m
|
||||
(t)f(one.)40 b(The)25 b(line)h(selected)h(from)f(the)g(history)f(is)h
|
||||
(called)h(the)f Fr(ev)m(en)m(t)p Fu(,)j(and)150 3563
|
||||
y(the)21 b(p)s(ortions)g(of)g(that)h(line)f(that)h(are)g(acted)g(up)s
|
||||
(on)e(are)h(called)h Fr(w)m(ords)p Fu(.)38 b(V)-8 b(arious)21
|
||||
b Fr(mo)s(di\014ers)j Fu(are)e(a)m(v)-5 b(ailable)150
|
||||
3673 y(to)35 b(manipulate)f(the)g(selected)i(w)m(ords.)51
|
||||
2944 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
|
||||
(quic)m(kly)-8 b(.)275 3085 y(History)24 b(expansion)f(is)h(p)s
|
||||
(erformed)e(immediately)j(after)f(a)g(complete)h(line)f(is)g(read,)h(b)
|
||||
s(efore)e(the)h(shell)150 3194 y(breaks)30 b(it)h(in)m(to)h(w)m(ords,)e
|
||||
(and)g(is)g(p)s(erformed)f(on)i(eac)m(h)g(line)g(individually)f
|
||||
(without)h(taking)g(quoting)g(on)150 3304 y(previous)f(lines)g(in)m(to)
|
||||
i(accoun)m(t.)275 3445 y(History)27 b(expansion)f(tak)m(es)i(place)f
|
||||
(in)f(t)m(w)m(o)i(parts.)39 b(The)26 b(\014rst)g(is)g(to)h(determine)g
|
||||
(whic)m(h)f(line)h(from)f(the)150 3555 y(history)i(list)g(should)f(b)s
|
||||
(e)g(used)g(during)g(substitution.)39 b(The)27 b(second)h(is)g(to)h
|
||||
(select)g(p)s(ortions)e(of)h(that)h(line)150 3664 y(for)d(inclusion)f
|
||||
(in)m(to)i(the)f(curren)m(t)f(one.)40 b(The)25 b(line)h(selected)h
|
||||
(from)f(the)g(history)f(is)h(called)h(the)f Fr(ev)m(en)m(t)p
|
||||
Fu(,)j(and)150 3774 y(the)21 b(p)s(ortions)g(of)g(that)h(line)f(that)h
|
||||
(are)g(acted)g(up)s(on)e(are)h(called)h Fr(w)m(ords)p
|
||||
Fu(.)38 b(V)-8 b(arious)21 b Fr(mo)s(di\014ers)j Fu(are)e(a)m(v)-5
|
||||
b(ailable)150 3884 y(to)35 b(manipulate)f(the)g(selected)i(w)m(ords.)51
|
||||
b(The)33 b(line)h(is)g(brok)m(en)g(in)m(to)h(w)m(ords)e(in)h(the)g
|
||||
(same)h(fashion)e(that)150 3783 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m
|
||||
(same)h(fashion)e(that)150 3993 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m
|
||||
(eral)g(w)m(ords)e(surrounded)f(b)m(y)i(quotes)g(are)g(considered)g
|
||||
(one)g(w)m(ord.)54 b(History)150 3892 y(expansions)34
|
||||
(one)g(w)m(ord.)54 b(History)150 4103 y(expansions)34
|
||||
b(are)g(in)m(tro)s(duced)f(b)m(y)h(the)g(app)s(earance)g(of)g(the)g
|
||||
(history)g(expansion)g(c)m(haracter,)i(whic)m(h)e(is)150
|
||||
4002 y(`)p Ft(!)p Fu(')39 b(b)m(y)g(default.)66 b(Only)38
|
||||
4212 y(`)p Ft(!)p Fu(')39 b(b)m(y)g(default.)66 b(Only)38
|
||||
b(`)p Ft(\\)p Fu(')h(and)f(`)p Ft(')p Fu(')h(ma)m(y)h(b)s(e)e(used)g
|
||||
(to)h(escap)s(e)h(the)f(history)f(expansion)h(c)m(haracter,)150
|
||||
4111 y(but)27 b(the)i(history)f(expansion)g(c)m(haracter)i(is)e(also)h
|
||||
4322 y(but)27 b(the)i(history)f(expansion)g(c)m(haracter)i(is)e(also)h
|
||||
(treated)g(as)g(quoted)f(if)g(it)h(immediately)h(precedes)e(the)150
|
||||
4221 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275
|
||||
4354 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h
|
||||
4432 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275
|
||||
4573 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h
|
||||
Ft(shopt)e Fu(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)150
|
||||
4463 y(page)32 b(50\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s
|
||||
4682 y(page)32 b(50\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s
|
||||
(eha)m(vior)h(of)g(history)g(expansion.)44 b(If)31 b(the)h
|
||||
Ft(histverify)d Fu(shell)150 4573 y(option)39 b(is)f(enabled,)i(and)e
|
||||
Ft(histverify)d Fu(shell)150 4792 y(option)39 b(is)f(enabled,)i(and)e
|
||||
(Readline)g(is)h(b)s(eing)e(used,)j(history)e(substitutions)g(are)g
|
||||
(not)h(immediately)150 4682 y(passed)30 b(to)h(the)g(shell)g(parser.)40
|
||||
(not)h(immediately)150 4902 y(passed)30 b(to)h(the)g(shell)g(parser.)40
|
||||
b(Instead,)30 b(the)h(expanded)f(line)h(is)f(reloaded)h(in)m(to)h(the)e
|
||||
(Readline)h(editing)150 4792 y(bu\013er)e(for)i(further)e(mo)s
|
||||
(Readline)h(editing)150 5011 y(bu\013er)e(for)i(further)e(mo)s
|
||||
(di\014cation.)41 b(If)30 b(Readline)h(is)f(b)s(eing)g(used,)g(and)g
|
||||
(the)g Ft(histreedit)e Fu(shell)i(option)150 4902 y(is)k(enabled,)h(a)g
|
||||
(the)g Ft(histreedit)e Fu(shell)i(option)150 5121 y(is)k(enabled,)h(a)g
|
||||
(failed)g(history)f(expansion)g(will)g(b)s(e)g(reloaded)g(in)m(to)h
|
||||
(the)g(Readline)f(editing)h(bu\013er)e(for)150 5011 y(correction.)68
|
||||
(the)g(Readline)f(editing)h(bu\013er)e(for)150 5230 y(correction.)68
|
||||
b(The)38 b Ft(-p)h Fu(option)g(to)h(the)f Ft(history)e
|
||||
Fu(builtin)i(command)f(ma)m(y)i(b)s(e)e(used)g(to)i(see)g(what)f(a)150
|
||||
5121 y(history)f(expansion)f(will)h(do)g(b)s(efore)f(using)h(it.)63
|
||||
5340 y(history)f(expansion)f(will)h(do)g(b)s(efore)f(using)h(it.)63
|
||||
b(The)37 b Ft(-s)g Fu(option)i(to)f(the)g Ft(history)e
|
||||
Fu(builtin)h(ma)m(y)i(b)s(e)150 5230 y(used)21 b(to)i(add)f(commands)g
|
||||
(to)g(the)h(end)e(of)i(the)f(history)g(list)h(without)f(actually)i
|
||||
(executing)f(them,)h(so)e(that)150 5340 y(they)31 b(are)f(a)m(v)-5
|
||||
b(ailable)33 b(for)d(subsequen)m(t)g(recall.)42 b(This)29
|
||||
b(is)i(most)g(useful)e(in)h(conjunction)h(with)f(Readline.)p
|
||||
eop end
|
||||
Fu(builtin)h(ma)m(y)i(b)s(e)p eop end
|
||||
%%Page: 143 149
|
||||
TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(9:)41
|
||||
b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(143)275
|
||||
299 y(The)33 b(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g(v)-5
|
||||
b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g(expansion)
|
||||
g(mec)m(h-)150 408 y(anism)h(with)g(the)g Ft(histchars)d
|
||||
Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e)i(\(see)f
|
||||
(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 518 y(page)32
|
||||
b(72\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g(commen)m(t)i(c)m
|
||||
(haracter)f(to)g(mark)f(history)g(timestamps)h(when)150
|
||||
628 y(writing)e(the)h(history)f(\014le.)150 830 y Fk(9.3.1)63
|
||||
b(Ev)m(en)m(t)39 b(Designators)150 977 y Fu(An)32 b(ev)m(en)m(t)j
|
||||
(designator)e(is)g(a)g(reference)g(to)h(a)f(command)f(line)h(en)m(try)g
|
||||
(in)g(the)g(history)g(list.)48 b(Unless)33 b(the)150
|
||||
1087 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)f(are)g(relativ)m(e)i
|
||||
(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h(history)f(list.)150
|
||||
1251 y Ft(!)432 b Fu(Start)34 b(a)f(history)h(substitution,)g(except)g
|
||||
(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h(tab,)f(the)g(end)f(of)630
|
||||
1361 y(the)i(line,)g(`)p Ft(=)p Fu(')g(or)f(`)p Ft(\()p
|
||||
Fu(')h(\(when)e(the)i Ft(extglob)d Fu(shell)j(option)f(is)h(enabled)f
|
||||
(using)g(the)g Ft(shopt)630 1470 y Fu(builtin\).)150
|
||||
1633 y Ft(!)p Fj(n)384 b Fu(Refer)30 b(to)i(command)e(line)g
|
||||
Fr(n)p Fu(.)150 1796 y Ft(!-)p Fj(n)336 b Fu(Refer)30
|
||||
b(to)i(the)e(command)g Fr(n)g Fu(lines)h(bac)m(k.)150
|
||||
1958 y Ft(!!)384 b Fu(Refer)30 b(to)i(the)e(previous)g(command.)40
|
||||
b(This)30 b(is)g(a)h(synon)m(ym)f(for)g(`)p Ft(!-1)p
|
||||
Fu('.)150 2121 y Ft(!)p Fj(string)144 b Fu(Refer)25 b(to)h(the)f(most)h
|
||||
(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)g(p)s(osition)g(in)
|
||||
g(the)g(history)630 2231 y(list)31 b(starting)g(with)f
|
||||
Fr(string)p Fu(.)150 2394 y Ft(!?)p Fj(string)p Ft([?])630
|
||||
2503 y Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)
|
||||
g(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630
|
||||
2613 y(list)32 b(con)m(taining)i Fr(string)p Fu(.)45
|
||||
b(The)31 b(trailing)i(`)p Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f
|
||||
(the)g Fr(string)39 b Fu(is)32 b(follo)m(w)m(ed)630 2722
|
||||
y(immediately)g(b)m(y)e(a)h(newline.)150 2885 y Ft(^)p
|
||||
Fj(string1)p Ft(^)p Fj(string2)p Ft(^)630 2995 y Fu(Quic)m(k)h
|
||||
(Substitution.)44 b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g
|
||||
Fr(string1)40 b Fu(with)31 b Fr(string2)p Fu(.)630 3104
|
||||
y(Equiv)-5 b(alen)m(t)31 b(to)g Ft(!!:s/)p Fj(string1)p
|
||||
Ft(/)p Fj(string2)p Ft(/)p Fu(.)150 3267 y Ft(!#)384
|
||||
b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)150
|
||||
3469 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150
|
||||
3616 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h
|
||||
(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27
|
||||
b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150
|
||||
3726 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
|
||||
b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(143)150
|
||||
299 y(used)21 b(to)i(add)f(commands)g(to)g(the)h(end)e(of)i(the)f
|
||||
(history)g(list)h(without)f(actually)i(executing)f(them,)h(so)e(that)
|
||||
150 408 y(they)31 b(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g
|
||||
(recall.)42 b(This)29 b(is)i(most)g(useful)e(in)h(conjunction)h(with)f
|
||||
(Readline.)275 551 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g
|
||||
(v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g
|
||||
(expansion)g(mec)m(h-)150 661 y(anism)h(with)g(the)g
|
||||
Ft(histchars)d Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e)
|
||||
i(\(see)f(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150
|
||||
771 y(page)32 b(72\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g
|
||||
(commen)m(t)i(c)m(haracter)f(to)g(mark)f(history)g(timestamps)h(when)
|
||||
150 880 y(writing)e(the)h(history)f(\014le.)150 1088
|
||||
y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 1235
|
||||
y Fu(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h(a)f
|
||||
(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48
|
||||
b(Unless)33 b(the)150 1344 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)
|
||||
f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h
|
||||
(history)f(list.)150 1516 y Ft(!)432 b Fu(Start)34 b(a)f(history)h
|
||||
(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h
|
||||
(tab,)f(the)g(end)f(of)630 1626 y(the)i(line,)g(`)p Ft(=)p
|
||||
Fu(')g(or)f(`)p Ft(\()p Fu(')h(\(when)e(the)i Ft(extglob)d
|
||||
Fu(shell)j(option)f(is)h(enabled)f(using)g(the)g Ft(shopt)630
|
||||
1736 y Fu(builtin\).)150 1903 y Ft(!)p Fj(n)384 b Fu(Refer)30
|
||||
b(to)i(command)e(line)g Fr(n)p Fu(.)150 2071 y Ft(!-)p
|
||||
Fj(n)336 b Fu(Refer)30 b(to)i(the)e(command)g Fr(n)g
|
||||
Fu(lines)h(bac)m(k.)150 2239 y Ft(!!)384 b Fu(Refer)30
|
||||
b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f
|
||||
(for)g(`)p Ft(!-1)p Fu('.)150 2407 y Ft(!)p Fj(string)144
|
||||
b Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g
|
||||
(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630
|
||||
2516 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150
|
||||
2684 y Ft(!?)p Fj(string)p Ft([?])630 2794 y Fu(Refer)25
|
||||
b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)
|
||||
g(p)s(osition)g(in)g(the)g(history)630 2903 y(list)32
|
||||
b(con)m(taining)i Fr(string)p Fu(.)45 b(The)31 b(trailing)i(`)p
|
||||
Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fr(string)39
|
||||
b Fu(is)32 b(follo)m(w)m(ed)630 3013 y(immediately)g(b)m(y)e(a)h
|
||||
(newline.)150 3181 y Ft(^)p Fj(string1)p Ft(^)p Fj(string2)p
|
||||
Ft(^)630 3290 y Fu(Quic)m(k)h(Substitution.)44 b(Rep)s(eat)32
|
||||
b(the)g(last)h(command,)f(replacing)g Fr(string1)40 b
|
||||
Fu(with)31 b Fr(string2)p Fu(.)630 3400 y(Equiv)-5 b(alen)m(t)31
|
||||
b(to)g Ft(!!:s/)p Fj(string1)p Ft(/)p Fj(string2)p Ft(/)p
|
||||
Fu(.)150 3568 y Ft(!#)384 b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)
|
||||
m(yp)s(ed)f(so)h(far.)150 3775 y Fk(9.3.2)63 b(W)-10
|
||||
b(ord)41 b(Designators)150 3922 y Fu(W)-8 b(ord)27 b(designators)h(are)
|
||||
g(used)e(to)i(select)h(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)
|
||||
41 b(A)27 b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150
|
||||
4032 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
|
||||
b(It)37 b(ma)m(y)h(b)s(e)e(omitted)i(if)e(the)h(w)m(ord)g(designator)g
|
||||
(b)s(egins)150 3836 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p
|
||||
(b)s(egins)150 4142 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p
|
||||
Ft($)p Fu(',)g(`)p Ft(*)p Fu(',)h(`)p Ft(-)p Fu(',)f(or)g(`)p
|
||||
Ft(\045)p Fu('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i
|
||||
(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150
|
||||
3945 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)
|
||||
4251 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)
|
||||
41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f
|
||||
(line)g(separated)h(b)m(y)150 4055 y(single)h(spaces.)275
|
||||
4193 y(F)-8 b(or)31 b(example,)150 4357 y Ft(!!)384 b
|
||||
(line)g(separated)h(b)m(y)150 4361 y(single)h(spaces.)275
|
||||
4504 y(F)-8 b(or)31 b(example,)150 4676 y Ft(!!)384 b
|
||||
Fu(designates)37 b(the)f(preceding)g(command.)57 b(When)35
|
||||
b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630
|
||||
4467 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 4629
|
||||
4785 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 4953
|
||||
y Ft(!!:$)288 b Fu(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the)
|
||||
h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630
|
||||
4739 y(to)31 b Ft(!$)p Fu(.)150 4902 y Ft(!fi:2)240 b
|
||||
5063 y(to)31 b Ft(!$)p Fu(.)150 5230 y Ft(!fi:2)240 b
|
||||
Fu(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f
|
||||
(recen)m(t)i(command)e(starting)h(with)f(the)630 5011
|
||||
y(letters)j Ft(fi)p Fu(.)275 5176 y(Here)e(are)h(the)g(w)m(ord)f
|
||||
(designators:)150 5340 y Ft(0)g(\(zero\))114 b Fu(The)30
|
||||
b Ft(0)p Fu(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h
|
||||
(this)e(is)g(the)h(command)f(w)m(ord.)p eop end
|
||||
(recen)m(t)i(command)e(starting)h(with)f(the)630 5340
|
||||
y(letters)j Ft(fi)p Fu(.)p eop end
|
||||
%%Page: 144 150
|
||||
TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(9:)41
|
||||
b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(144)150
|
||||
299 y Fj(n)432 b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150
|
||||
458 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m
|
||||
(ord)g(1.)150 618 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150
|
||||
777 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h
|
||||
b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(144)275
|
||||
299 y(Here)30 b(are)h(the)g(w)m(ord)f(designators:)150
|
||||
458 y Ft(0)g(\(zero\))114 b Fu(The)30 b Ft(0)p Fu(th)g(w)m(ord.)40
|
||||
b(F)-8 b(or)31 b(man)m(y)g(applications,)h(this)e(is)g(the)h(command)f
|
||||
(w)m(ord.)150 617 y Fj(n)432 b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150
|
||||
776 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m
|
||||
(ord)g(1.)150 935 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150
|
||||
1094 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h
|
||||
(most)g(recen)m(t)g(`)p Ft(?)p Fj(string)p Ft(?)p Fu(')e(searc)m(h.)150
|
||||
936 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p
|
||||
1253 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p
|
||||
Ft(-)p Fj(y)p Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p
|
||||
Fu('.)150 1096 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h
|
||||
Fu('.)150 1412 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h
|
||||
(the)e Ft(0)p Fu(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p
|
||||
Ft(1-$)p Fu('.)39 b(It)28 b(is)g(not)g(an)f(error)630
|
||||
1205 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m
|
||||
1521 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m
|
||||
(ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h
|
||||
(returned)e(in)630 1315 y(that)j(case.)150 1474 y Fj(x)p
|
||||
(returned)e(in)630 1631 y(that)j(case.)150 1790 y Fj(x)p
|
||||
Ft(*)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')150
|
||||
1634 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p
|
||||
1949 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p
|
||||
Ft(-$)p Fu(')f(lik)m(e)h(`)p Fj(x)p Ft(*)p Fu(',)g(but)f(omits)h(the)f
|
||||
(last)h(w)m(ord.)275 1793 y(If)i(a)h(w)m(ord)g(designator)g(is)g
|
||||
(last)h(w)m(ord.)275 2108 y(If)i(a)h(w)m(ord)g(designator)g(is)g
|
||||
(supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h(the)e
|
||||
(previous)f(command)150 1903 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150
|
||||
2102 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 2249 y Fu(After)29
|
||||
(previous)f(command)150 2217 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150
|
||||
2416 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 2563 y Fu(After)29
|
||||
b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g(add)f(a)h
|
||||
(sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing)150
|
||||
2359 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p
|
||||
Ft(:)p Fu('.)150 2518 y Ft(h)432 b Fu(Remo)m(v)m(e)32
|
||||
2672 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p
|
||||
Ft(:)p Fu('.)150 2831 y Ft(h)432 b Fu(Remo)m(v)m(e)32
|
||||
b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the)
|
||||
h(head.)150 2677 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h
|
||||
h(head.)150 2990 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h
|
||||
(pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150
|
||||
2837 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g
|
||||
3149 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g
|
||||
(the)h(form)f(`)p Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f
|
||||
(basename.)150 2996 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h
|
||||
(trailing)g(su\016x.)150 3156 y Ft(p)432 b Fu(Prin)m(t)30
|
||||
(basename.)150 3308 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h
|
||||
(trailing)g(su\016x.)150 3467 y Ft(p)432 b Fu(Prin)m(t)30
|
||||
b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i(it.)150
|
||||
3315 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g
|
||||
(escaping)h(further)e(substitutions.)150 3474 y Ft(x)432
|
||||
3626 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g
|
||||
(escaping)h(further)e(substitutions.)150 3785 y Ft(x)432
|
||||
b Fu(Quote)32 b(the)f(substituted)g(w)m(ords)f(as)i(with)f(`)p
|
||||
Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m(ords)d(at)i(spaces,)h(tabs,)
|
||||
630 3584 y(and)d(newlines.)150 3743 y Ft(s/)p Fj(old)p
|
||||
Ft(/)p Fj(new)p Ft(/)630 3853 y Fu(Substitute)i Fr(new)40
|
||||
630 3895 y(and)d(newlines.)150 4054 y Ft(s/)p Fj(old)p
|
||||
Ft(/)p Fj(new)p Ft(/)630 4163 y Fu(Substitute)i Fr(new)40
|
||||
b Fu(for)32 b(the)h(\014rst)f(o)s(ccurrence)h(of)f Fr(old)37
|
||||
b Fu(in)32 b(the)h(ev)m(en)m(t)h(line.)48 b(An)m(y)32
|
||||
b(delimiter)630 3963 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p
|
||||
b(delimiter)630 4273 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p
|
||||
Ft(/)p Fu('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s(e)e(quoted)h(in)f
|
||||
Fr(old)29 b Fu(and)24 b Fr(new)32 b Fu(with)25 b(a)630
|
||||
4072 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Ft(&)p
|
||||
4382 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Ft(&)p
|
||||
Fu(')g(app)s(ears)g(in)f Fr(new)p Fu(,)i(it)f(is)h(replaced)f(b)m(y)g
|
||||
Fr(old)p Fu(.)40 b(A)28 b(single)h(bac)m(kslash)630 4182
|
||||
Fr(old)p Fu(.)40 b(A)28 b(single)h(bac)m(kslash)630 4492
|
||||
y(will)35 b(quote)g(the)g(`)p Ft(&)p Fu('.)54 b(The)34
|
||||
b(\014nal)g(delimiter)i(is)e(optional)i(if)f(it)g(is)f(the)h(last)h(c)m
|
||||
(haracter)g(on)630 4291 y(the)31 b(input)e(line.)150
|
||||
4451 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150
|
||||
4610 y Ft(g)150 4720 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f
|
||||
(haracter)g(on)630 4602 y(the)31 b(input)e(line.)150
|
||||
4761 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150
|
||||
4919 y Ft(g)150 5029 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f
|
||||
(applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66
|
||||
b(Used)39 b(in)f(conjunction)630 4829 y(with)30 b(`)p
|
||||
b(Used)39 b(in)f(conjunction)630 5139 y(with)30 b(`)p
|
||||
Ft(s)p Fu(',)h(as)f(in)h Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p
|
||||
Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 4989 y
|
||||
Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 5298 y
|
||||
Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i(`)p Ft(s)p
|
||||
Fu(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g(the)g(ev)m
|
||||
(en)m(t.)p eop end
|
||||
|
||||
+3
-2
@@ -3003,9 +3003,10 @@ A full search of the directories in @env{$PATH}
|
||||
is performed only if the command is not found in the hash table.
|
||||
If the search is unsuccessful, the shell searches for a defined shell
|
||||
function named @code{command_not_found_handle}.
|
||||
If that function exists, it is invoked with the original command and
|
||||
If that function exists, it is invoked in a separate execution environment
|
||||
with the original command and
|
||||
the original command's arguments as its arguments, and the function's
|
||||
exit status becomes the exit status of the shell.
|
||||
exit status becomes the exit status of that subshell.
|
||||
If that function is not defined, the shell prints an error
|
||||
message and returns an exit status of 127.
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%!PS-Adobe-3.0
|
||||
%%Creator: groff version 1.22.3
|
||||
%%CreationDate: Wed Aug 23 16:02:43 2017
|
||||
%%CreationDate: Thu Oct 5 14:35:22 2017
|
||||
%%DocumentNeededResources: font Times-Roman
|
||||
%%+ font Times-Bold
|
||||
%%+ font Times-Italic
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%!PS-Adobe-3.0
|
||||
%%Creator: groff version 1.22.3
|
||||
%%CreationDate: Wed Aug 23 16:02:43 2017
|
||||
%%CreationDate: Thu Oct 5 14:35:23 2017
|
||||
%%DocumentNeededResources: font Times-Roman
|
||||
%%+ font Times-Bold
|
||||
%%DocumentSuppliedResources: procset grops 1.22 3
|
||||
|
||||
+3
-3
@@ -2,10 +2,10 @@
|
||||
Copyright (C) 1988-2017 Free Software Foundation, Inc.
|
||||
@end ignore
|
||||
|
||||
@set LASTCHANGE Fri Jun 23 12:42:54 EDT 2017
|
||||
@set LASTCHANGE Sat Oct 7 17:29:58 EDT 2017
|
||||
|
||||
@set EDITION 4.4
|
||||
@set VERSION 4.4
|
||||
|
||||
@set UPDATED 23 June 2017
|
||||
@set UPDATED-MONTH June 2017
|
||||
@set UPDATED 7 October 2017
|
||||
@set UPDATED-MONTH October 2017
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
.\" Case Western Reserve University
|
||||
.\" chet.ramey@case.edu
|
||||
.\"
|
||||
.\" Last Change: Sun May 24 18:01:17 EDT 2015
|
||||
.\" Last Change: Sun Oct 8 11:43:43 EDT 2017
|
||||
.\"
|
||||
.TH HISTORY 3 "2015 May 24" "GNU History 6.3"
|
||||
.TH HISTORY 3 "2017 October 8" "GNU History 6.3"
|
||||
.\"
|
||||
.\" File Name macro. This used to be `.PN', for Path Name,
|
||||
.\" but Sun doesn't seem to like that very much.
|
||||
@@ -40,8 +40,8 @@
|
||||
.SH NAME
|
||||
history \- GNU History Library
|
||||
.SH COPYRIGHT
|
||||
.if t The GNU History Library is Copyright \(co 1989-2014 by the Free Software Foundation, Inc.
|
||||
.if n The GNU History Library is Copyright (C) 1989-2014 by the Free Software Foundation, Inc.
|
||||
.if t The GNU History Library is Copyright \(co 1989-2017 by the Free Software Foundation, Inc.
|
||||
.if n The GNU History Library is Copyright (C) 1989-2017 by the Free Software Foundation, Inc.
|
||||
.SH DESCRIPTION
|
||||
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
|
||||
@@ -411,10 +411,11 @@ Return the history entry at the current position, as determined by
|
||||
pointer.
|
||||
|
||||
.Fn1 "HIST_ENTRY *" history_get "int offset"
|
||||
Return the history entry at position \fIoffset\fP, starting from
|
||||
\fBhistory_base\fP.
|
||||
If there is no entry there, or if \fIoffset\fP
|
||||
is greater than the history length, return a \fBNULL\fP pointer.
|
||||
Return the history entry at position \fIoffset\fP.
|
||||
The range of valid values of \fIoffset\fP starts at \fBhistory_base\fP
|
||||
and ends at \fBhistory_length\fP \- 1.
|
||||
If there is no entry there, or if \fIoffset\fP is outside the valid
|
||||
range, return a \fBNULL\fP pointer.
|
||||
|
||||
.Fn1 "time_t" history_get_time "HIST_ENTRY *"
|
||||
Return the time stamp associated with the history entry passed as the argument.
|
||||
|
||||
@@ -234,10 +234,12 @@ pointer.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun {HIST_ENTRY *} history_get (int offset)
|
||||
Return the history entry at position @var{offset}, starting from
|
||||
@code{history_base} (@pxref{History Variables}).
|
||||
If there is no entry there, or if @var{offset}
|
||||
is greater than the history length, return a @code{NULL} pointer.
|
||||
Return the history entry at position @var{offset}.
|
||||
The range of valid
|
||||
values of @var{offset} starts at @code{history_base} and ends at
|
||||
@var{history_length} - 1 (@pxref{History Variables}).
|
||||
If there is no entry there, or if @var{offset} is outside the valid
|
||||
range, return a @code{NULL} pointer.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun time_t history_get_time (HIST_ENTRY *entry)
|
||||
|
||||
@@ -4,7 +4,7 @@ Copyright (C) 1988-2017 Free Software Foundation, Inc.
|
||||
|
||||
@set EDITION 7.0
|
||||
@set VERSION 7.0
|
||||
@set UPDATED 4 July 2017
|
||||
@set UPDATED-MONTH July 2017
|
||||
@set UPDATED 8 October 2017
|
||||
@set UPDATED-MONTH October 2017
|
||||
|
||||
@set LASTCHANGE Tue Jul 4 16:32:48 EDT 2017
|
||||
@set LASTCHANGE Sun Oct 8 11:44:33 EDT 2017
|
||||
|
||||
+4
-1
@@ -229,7 +229,10 @@ singlebyte:
|
||||
else
|
||||
{
|
||||
m = mbrtowc (&wc, string + start, end - start, &state);
|
||||
if (MB_INVALIDCH (m) || m == 1)
|
||||
/* Have to go through case conversion even for single-byte chars, to
|
||||
accommodate single-byte characters where the corresponding upper
|
||||
or lower case equivalent is multibyte. */
|
||||
if (MB_INVALIDCH (m))
|
||||
{
|
||||
wc = (unsigned char)string[start];
|
||||
goto singlebyte;
|
||||
|
||||
@@ -236,7 +236,7 @@ static inline char *expand_string_to_string_internal __P((char *, int, EXPFUNC *
|
||||
static WORD_LIST *call_expand_word_internal __P((WORD_DESC *, int, int, int *, int *));
|
||||
static WORD_LIST *expand_string_internal __P((char *, int));
|
||||
static WORD_LIST *expand_string_leave_quoted __P((char *, int));
|
||||
static WORD_LIST *expand_string_for_rhs __P((char *, int, int, int *, int *));
|
||||
static WORD_LIST *expand_string_for_rhs __P((char *, int, int, int, int *, int *));
|
||||
static WORD_LIST *expand_string_for_pat __P((char *, int, int *, int *));
|
||||
|
||||
static WORD_LIST *list_quote_escapes __P((WORD_LIST *));
|
||||
@@ -447,6 +447,11 @@ dump_word_flags (flags)
|
||||
f &= ~W_ASSIGNRHS;
|
||||
fprintf (stderr, "W_ASSIGNRHS%s", f ? "|" : "");
|
||||
}
|
||||
if (f & W_NOASSNTILDE)
|
||||
{
|
||||
f &= ~W_NOASSNTILDE;
|
||||
fprintf (stderr, "W_NOASSNTILDE%s", f ? "|" : "");
|
||||
}
|
||||
if (f & W_NOCOMSUB)
|
||||
{
|
||||
f &= ~W_NOCOMSUB;
|
||||
@@ -3833,13 +3838,14 @@ expand_string_leave_quoted (string, quoted)
|
||||
/* This does not perform word splitting or dequote the WORD_LIST
|
||||
it returns. */
|
||||
static WORD_LIST *
|
||||
expand_string_for_rhs (string, quoted, op, dollar_at_p, expanded_p)
|
||||
expand_string_for_rhs (string, quoted, op, pflags, dollar_at_p, expanded_p)
|
||||
char *string;
|
||||
int quoted, op;
|
||||
int quoted, op, pflags;
|
||||
int *dollar_at_p, *expanded_p;
|
||||
{
|
||||
WORD_DESC td;
|
||||
WORD_LIST *tresult;
|
||||
int old_nosplit;
|
||||
|
||||
if (string == 0 || *string == '\0')
|
||||
return (WORD_LIST *)NULL;
|
||||
@@ -3849,20 +3855,23 @@ expand_string_for_rhs (string, quoted, op, dollar_at_p, expanded_p)
|
||||
we expand here. However, the expansion of $* is determined by whether we
|
||||
are going to eventually perform word splitting, so we want to set this
|
||||
depending on whether or not are are going to be splitting: if the expansion
|
||||
is quoted, if the OP is `=', or if IFS is set to the empty string, we
|
||||
is quoted, if the OP is `=', or if IFS is set to the empty string, we
|
||||
are not going to be splitting, so we set expand_no_split_dollar_star to
|
||||
1. This may need additional changes depending on whether or not this is
|
||||
on the RHS of an assignment statement. */
|
||||
We pass through PF_ASSIGNRHS as W_ASSIGNRHS if this is on the RHS of an
|
||||
assignment statement. */
|
||||
/* The updated treatment of $* is the result of Posix interp 888 */
|
||||
/* This was further clarified on the austin-group list in March, 2017 and
|
||||
in Posix bug 1129 */
|
||||
old_nosplit = expand_no_split_dollar_star;
|
||||
expand_no_split_dollar_star = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || op == '=' || ifs_is_null == 0; /* XXX - was 1 */
|
||||
/* You'd think Posix specifies W_ASSIGNRHS, but it results in tilde expansion
|
||||
after `=' and `:' the rhs of ${param=word} */
|
||||
td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */
|
||||
if (pflags & PF_ASSIGNRHS) /* pass through */
|
||||
td.flags |= W_ASSIGNRHS;
|
||||
if (op == '=')
|
||||
td.flags |= W_ASSIGNRHS; /* expand b in ${a=b} like assignment */
|
||||
td.word = string;
|
||||
tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p);
|
||||
expand_no_split_dollar_star = 0;
|
||||
expand_no_split_dollar_star = old_nosplit;
|
||||
|
||||
return (tresult);
|
||||
}
|
||||
@@ -6633,7 +6642,7 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll
|
||||
|
||||
w = alloc_word_desc ();
|
||||
l_hasdollat = 0;
|
||||
l = *temp ? expand_string_for_rhs (temp, quoted, op, &l_hasdollat, (int *)NULL)
|
||||
l = *temp ? expand_string_for_rhs (temp, quoted, op, pflags, &l_hasdollat, (int *)NULL)
|
||||
: (WORD_LIST *)0;
|
||||
if (hasdollarat)
|
||||
*hasdollarat = l_hasdollat || (l && l->next);
|
||||
@@ -9573,7 +9582,7 @@ add_string:
|
||||
goto add_character;
|
||||
|
||||
case ':':
|
||||
if (word->flags & W_NOTILDE)
|
||||
if (word->flags & (W_NOTILDE|W_NOASSNTILDE))
|
||||
{
|
||||
if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c))
|
||||
goto add_ifs_character;
|
||||
|
||||
Reference in New Issue
Block a user