From a43e08df2deefa6b63dce66d57adad2c9a704eb7 Mon Sep 17 00:00:00 2001
From: Chet Ramey
Date: Mon, 5 Jan 2026 11:57:18 -0500
Subject: [PATCH] history builtin has a -H option to display history entries as
they would be written to the history file; history builtin now takes a
START-END range specifier for listing; fix stray semicolon when printing
shell functions containing a case command; changes to stdin redirection
detection in preparation for POSIX interp 1913
---
CWRU/CWRU.chlog | 35 +
MANIFEST | 2 +-
builtins/history.def | 197 +++--
doc/Makefile.in | 5 +-
doc/bash.0 | 61 +-
doc/bash.1 | 70 +-
doc/bash.html | 91 ++-
doc/bash.info | 116 +--
doc/bash.pdf | Bin 443436 -> 444427 bytes
doc/bashref.aux | 2 +-
doc/bashref.bt | 2 +-
doc/bashref.bts | 2 +-
doc/bashref.html | 78 +-
doc/bashref.info | 116 +--
doc/bashref.log | 31 +-
doc/bashref.pdf | Bin 810750 -> 811602 bytes
doc/builtins.0 | 1482 +++++++++++++++++-----------------
doc/builtins.pdf | Bin 144668 -> 145578 bytes
doc/version.texi | 5 +-
execute_cmd.c | 4 +-
lib/readline/doc/hsuser.texi | 62 +-
print_cmd.c | 1 +
redir.c | 15 +-
tests/builtins.right | 4 +-
tests/history.right | 119 ++-
tests/history.tests | 1 +
tests/history11.sub | 75 ++
27 files changed, 1510 insertions(+), 1066 deletions(-)
create mode 100644 tests/history11.sub
diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog
index 15553f70..9ec9fe60 100644
--- a/CWRU/CWRU.chlog
+++ b/CWRU/CWRU.chlog
@@ -12447,3 +12447,38 @@ builtins/evalstring.c
execute_cmd.c
- execute_command_internal: set currently_executing_command to NULL
in places where we return from this function
+
+ 12/26
+ -----
+builtins/history.def
+ - -H: new option, means to display history entries as they would be
+ written to the history file, with timestamp information and without
+ line numbers or `*'
+ - listing now takes a START-END range argument, so you can list a
+ subset of the history list from START to END, with the format
+ subject to the -H option. If START > END, list in reverse order.
+ This moves history and fc functionality closer to convergence
+ - parse_range: new function, encapsulates parsing START-END history
+ range specifiction; used by deletion and listing
+
+doc/bash.1,doc/bashref.texi
+ - history: update with a description of ranges, add description of -H;
+ listing and deletion now reference range description
+
+ 12/30
+ -----
+print_cmd.c
+ - print_case_clauses: reset was_heredoc to 0 after printing each case
+ clause, since any here-document must have been associated with the
+ command list following the pattern list and `)'
+ Report from "Stan Marsh" back in May, 2025
+
+ 12/31
+ -----
+doc/Makefile.in
+ - dvi: remove from default targets as per latest GNU coding standards
+
+redir.c
+ - stdin_redirection: now take the entire REDIRECT * as its argument,
+ so we can do additional posix-mandated checking on redirections
+ like 0<&0, to satisfy interp 1913
diff --git a/MANIFEST b/MANIFEST
index 3bf2fa24..f2cacc8b 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -697,7 +697,6 @@ doc/article.ps f
doc/rose94.ps f
#doc/bash.ps f
#doc/bashref.ps f
-doc/bashref.dvi f
doc/bash.0 f
doc/bashbug.0 f
doc/builtins.0 f
@@ -1301,6 +1300,7 @@ tests/history7.sub f
tests/history8.sub f
tests/history9.sub f
tests/history10.sub f
+tests/history11.sub f
tests/ifs.tests f
tests/ifs.right f
tests/ifs1.sub f
diff --git a/builtins/history.def b/builtins/history.def
index 4c36416c..478ae818 100644
--- a/builtins/history.def
+++ b/builtins/history.def
@@ -23,18 +23,32 @@ $PRODUCES history.c
$BUILTIN history
$FUNCTION history_builtin
$DEPENDS_ON HISTORY
-$SHORT_DOC history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
+$SHORT_DOC history [-c] [-H] [-d range] [range] or history -anrw [filename] or history -ps arg [arg...]
Display or manipulate the history list.
-Display the history list with line numbers, prefixing each modified
-entry with a `*'. An argument of N lists only the last N entries.
+Without options, or if -H is supplied, display the portion of the
+history list specified by RANGE, as described below. If -H is not
+supplied, the list displays line numbers, prefixing each modified
+entry with a `*'.
+
+When listing or deleting history entries, RANGE is an argument of
+the form of a number OFFSET or a range START-END. If OFFSET is supplied,
+it references the history entry at position OFFSET; when listing, this
+displays the last OFFSET entries. A negative OFFSET is interpreted
+relative to one greater than the last history position, so negative
+OFFSETs count back from the end of the history list. START and END, if
+supplied, reference the portion of the history list beginning at position
+START through position END. Negative START and END count back from the
+end of the history list. When listing, if START is greater than END,
+the history entries are displayed in reverse order from START to END.
Options:
-c clear the history list by deleting all of the entries
- -d offset delete the history entry at position OFFSET. Negative
- offsets count back from the end of the history list
- -d start-end delete the history entries beginning at position START
- through position END.
+ -d range delete the history entries specified by RANGE. RANGE is
+ described above.
+ -H display the selected history entries in the format that would
+ be written to the history file, including any timestamp,
+ without prefixing any line number or `*'.
-a append history lines from this session to the history file
-n read all history lines not already read from the history file
@@ -93,7 +107,8 @@ extern int errno;
#endif
static char *histtime (HIST_ENTRY *, const char *);
-static int display_history (WORD_LIST *);
+static int parse_range (char *, char *, int *, int *);
+static int display_history (WORD_LIST *, int);
static void push_history (WORD_LIST *);
static int expand_and_print_history (WORD_LIST *);
@@ -105,6 +120,7 @@ static int expand_and_print_history (WORD_LIST *);
#define PFLAG 0x20
#define CFLAG 0x40
#define DFLAG 0x80
+#define HFLAG 0x100
#ifndef TIMELEN_MAX
# define TIMELEN_MAX 128
@@ -119,7 +135,7 @@ history_builtin (WORD_LIST *list)
flags = 0;
reset_internal_getopt ();
- while ((opt = internal_getopt (list, "acd:npsrw")) != -1)
+ while ((opt = internal_getopt (list, "acd:npsrwH")) != -1)
{
switch (opt)
{
@@ -150,6 +166,9 @@ history_builtin (WORD_LIST *list)
flags |= PFLAG;
#endif
break;
+ case 'H':
+ flags |= HFLAG;
+ break;
CASE_HELPOPT;
default:
builtin_usage ();
@@ -189,37 +208,11 @@ history_builtin (WORD_LIST *list)
#endif
else if ((flags & DFLAG) && (range = strchr ((delete_arg[0] == '-') ? delete_arg + 1 : delete_arg, '-')))
{
- intmax_t delete_start, delete_end;
- *range++ = '\0';
- if (valid_number (delete_arg, &delete_start) == 0 || valid_number (range, &delete_end) == 0)
- {
- range[-1] = '-';
- sh_erange (delete_arg, _("history position"));
- return (EXECUTION_FAILURE);
- }
- if (delete_arg[0] == '-' && delete_start < 0)
- /* the_history[history_length] == 0x0, so this is correct */
- delete_start += history_length;
- /* numbers as displayed by display_history are offset by history_base */
- else if (delete_start > 0)
- delete_start -= history_base;
-
- if (delete_start < 0 || delete_start >= history_length)
- {
- sh_erange (delete_arg, _("history position"));
- return (EXECUTION_FAILURE);
- }
+ int delete_start, delete_end;
- if (range[0] == '-' && delete_end < 0)
- delete_end += history_length;
- else if (delete_end > 0)
- delete_end -= history_base;
+ if (parse_range (delete_arg, range, &delete_start, &delete_end) != 0)
+ return (EXECUTION_FAILURE);
- if (delete_end < 0 || delete_end >= history_length)
- {
- sh_erange (range, _("history position"));
- return (EXECUTION_FAILURE);
- }
/* XXX - print error if end < start? */
result = bash_delete_history_range (delete_start, delete_end);
if (where_history () > history_length)
@@ -266,7 +259,7 @@ history_builtin (WORD_LIST *list)
}
else if ((flags & (AFLAG|RFLAG|NFLAG|WFLAG|CFLAG)) == 0)
{
- result = display_history (list);
+ result = display_history (list, flags);
return (sh_chkwrite (result));
}
@@ -366,49 +359,123 @@ histtime (HIST_ENTRY *hlist, const char *histtimefmt)
return timestr;
}
+/* Parse a range START-END into two offsets into the history list (offset by
+ history_base), return in *STARTP and *ENDP. Return 0 on success, non-zero
+ on failure. Negative START and END are offsets from history_length. */
static int
-display_history (WORD_LIST *list)
+parse_range (char *arg, char *range, int *startp, int *endp)
{
- register int i;
+ intmax_t ls, le;
+
+ *range++ = '\0';
+ if (valid_number (arg, &ls) == 0 || valid_number (range, &le) == 0)
+ {
+ range[-1] = '-'; /* must point into ARG */
+ sh_erange (arg, _("history position"));
+ return (EXECUTION_FAILURE);
+ }
+ if (arg[0] == '-' && ls < 0)
+ ls += history_length;
+ else if (ls > 0)
+ ls -= history_base;
+ if (ls < 0 || ls >= history_length)
+ {
+ sh_erange (arg, _("history position"));
+ range[-1] = '-'; /* must point into ARG */
+ return (EXECUTION_FAILURE);
+ }
+ if (range[0] == '-' && le < 0)
+ le += history_length;
+ else if (le > 0)
+ le -= history_base;
+ if (le < 0 || le >= history_length)
+ {
+ sh_erange (range, _("history position"));
+ range[-1] = '-'; /* must point into ARG */
+ return (EXECUTION_FAILURE);
+ }
+
+ range[-1] = '-';
+ *startp = ls;
+ *endp = le;
+
+ return EXECUTION_SUCCESS;
+}
+
+static int
+display_history (WORD_LIST *list, int flags)
+{
+ int i, start, end, reverse;
intmax_t limit;
HIST_ENTRY **hlist;
- char *histtimefmt, *timestr;
+ char *histtimefmt, *timestr, *range, *list_arg;
- if (list)
+ reverse = 0;
+ if (list && list->word)
{
- if (get_numeric_arg (list, 0, &limit) == 0)
- return (EX_USAGE);
+ list_arg = list->word->word;
+ range = strchr ((list_arg[0] == '-') ? list_arg + 1 : list_arg, '-');
+ if (range)
+ {
+ if (parse_range (list_arg, range, &start, &end) != 0)
+ return (EXECUTION_FAILURE);
+ if (end < start) /* end < start means to print in reverse order */
+ {
+ int t;
+ t = end;
+ end = start;
+ start = t;
+ reverse = 1;
+ }
+ }
+ else
+ {
+ if (get_numeric_arg (list, 0, &limit) == 0)
+ return (EX_USAGE);
+ if (limit < 0)
+ limit = -limit;
- if (limit < 0)
- limit = -limit;
+ start = (0 <= limit && limit < history_length) ? history_length - limit : 0;
+ end = history_length - 1;
+ }
}
else
- limit = -1;
+ {
+ start = 0;
+ end = history_length - 1;
+ }
hlist = history_list ();
+ if (hlist == 0)
+ return (EXECUTION_SUCCESS);
+
+ histtimefmt = get_string_value ("HISTTIMEFORMAT");
- if (hlist)
+ for (i = reverse ? end : start; reverse ? i >= start : i <= end; reverse ? i-- : i++)
{
- for (i = 0; hlist[i]; i++)
- ;
+ QUIT;
- if (0 <= limit && limit < i)
- i -= limit;
+ if (flags & HFLAG)
+ {
+ if (history_write_timestamps && hlist[i]->timestamp && hlist[i]->timestamp[0])
+ printf ("%s\n", hlist[i]->timestamp);
+ if (printf ("%s\n", histline (i)) < 0)
+ {
+ sh_wrerror ();
+ break;
+ }
+ }
else
- i = 0;
-
- histtimefmt = get_string_value ("HISTTIMEFORMAT");
-
- while (hlist[i])
{
- QUIT;
-
timestr = (histtimefmt && *histtimefmt) ? histtime (hlist[i], histtimefmt) : (char *)NULL;
- printf ("%5d%c %s%s\n", i + history_base,
- histdata(i) ? '*' : ' ',
- ((timestr && *timestr) ? timestr : ""),
- histline(i));
- i++;
+ if (printf ("%5d%c %s%s\n", i + history_base,
+ histdata (i) ? '*' : ' ',
+ ((timestr && *timestr) ? timestr : ""),
+ histline (i)) < 0)
+ {
+ sh_wrerror ();
+ break;
+ }
}
}
diff --git a/doc/Makefile.in b/doc/Makefile.in
index e0e2a15b..1bb1483c 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -154,8 +154,9 @@ BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/fdl.texi $(srcdir)/version.texi
# $(RM) $@
# -${TEXI2PDF} $<
-all: info dvi text html pdf # $(MAN2HTML)
-nodvi: ps info text html
+all: info text html pdf # $(MAN2HTML)
+withdvi: pdf info text html dvi
+
everything: all ps
CREATED_PS = bash.ps bashref.ps
diff --git a/doc/bash.0 b/doc/bash.0
index 259d5bd2..f858b6b5 100644
--- a/doc/bash.0
+++ b/doc/bash.0
@@ -5841,8 +5841,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
ing is complete, ffcc reads the file containing the edited com-
mands and echoes and executes them. The --DD option, if supplied,
causes ffcc to remove the selected commands from the history list
- before executing the file of edited commands. --DD is only active
- when ffcc is invoked in this way.
+ before executing the file of edited commands. --DD is only effec-
+ tive when ffcc is invoked in this way.
In the second form, ffcc re-executes _c_o_m_m_a_n_d after replacing each
instance of _p_a_t with _r_e_p. _C_o_m_m_a_n_d is interpreted the same as
@@ -5973,21 +5973,36 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
The return status is 0 unless no command matches _p_a_t_t_e_r_n.
- hhiissttoorryy [[_n]]
+ hhiissttoorryy [[--HH]] [[_r_a_n_g_e]]
hhiissttoorryy --cc
- hhiissttoorryy --dd _o_f_f_s_e_t
- hhiissttoorryy --dd _s_t_a_r_t-_e_n_d
+ hhiissttoorryy --dd _r_a_n_g_e
hhiissttoorryy --aannrrww [_f_i_l_e_n_a_m_e]
hhiissttoorryy --pp _a_r_g [_a_r_g ...]
hhiissttoorryy --ss _a_r_g [_a_r_g ...]
- With no options, display the command history list with numbers.
- Entries prefixed with a ** have been modified. An argument of _n
- lists only the last _n entries. If the shell variable HHIISSTTTTIIMMEE--
- FFOORRMMAATT is set and not null, it is used as a format string for
- _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis-
- played history entry. If hhiissttoorryy uses HHIISSTTTTIIMMEEFFOORRMMAATT, it does
- not print an intervening space between the formatted time stamp
- and the history entry.
+ With no options, or with the --HH option, display the portion of
+ the command history list specified by _r_a_n_g_e, as described below.
+ If _r_a_n_g_e is not specified, display the entire history list.
+ Without --HH, display the list with command numbers, prefixing en-
+ tries that have been modified with a "*".
+
+ A _r_a_n_g_e argument is specified in the form of a number _o_f_f_s_e_t or
+ a range _s_t_a_r_t-_e_n_d. If _o_f_f_s_e_t is supplied, it references the
+ history entry at position _o_f_f_s_e_t in the history list; when list-
+ ing this displays the last _o_f_f_s_e_t entries. A negative _o_f_f_s_e_t
+ counts back from the end of the history list, relative to one
+ greater than the last history position. When listing, negative
+ and positive _o_f_f_s_e_t_s have identical results. _s_t_a_r_t and _e_n_d, if
+ supplied, reference the portion of the history list beginning at
+ position _s_t_a_r_t through position _e_n_d. If _s_t_a_r_t or _e_n_d are nega-
+ tive, they count back from the end of the history list. When
+ listing, if _s_t_a_r_t is greater than _e_n_d, the history entries are
+ displayed in reverse order from _e_n_d to _s_t_a_r_t.
+
+ If the shell variable HHIISSTTTTIIMMEEFFOORRMMAATT is set and not null, it is
+ used as a format string for _s_t_r_f_t_i_m_e(3) to display the time
+ stamp associated with each displayed history entry. If hhiissttoorryy
+ uses HHIISSTTTTIIMMEEFFOORRMMAATT, it does not print an intervening space be-
+ tween the formatted time stamp and the history entry.
If _f_i_l_e_n_a_m_e is supplied, hhiissttoorryy uses it as the name of the his-
tory file; if not, it uses the value of HHIISSTTFFIILLEE. If _f_i_l_e_n_a_m_e
@@ -5998,16 +6013,14 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
--cc Clear the history list by deleting all the entries. This
can be used with the other options to replace the history
list.
- --dd _o_f_f_s_e_t
- Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t
- is negative, it is interpreted as relative to one greater
- than the last history position, so negative indices count
- back from the end of the history, and an index of -1
- refers to the current hhiissttoorryy --dd command.
- --dd _s_t_a_r_t-_e_n_d
- Delete the range of history entries between positions
- _s_t_a_r_t and _e_n_d, inclusive. Positive and negative values
- for _s_t_a_r_t and _e_n_d are interpreted as described above.
+ --dd _r_a_n_g_e
+ Delete the history entries specified by _r_a_n_g_e, as de-
+ scribed above. An index of -1 refers to the current hhiiss--
+ ttoorryy --dd command.
+ --HH Display the selected history entries in the format that
+ would be written to the history file, including any time
+ stamp information as described below, without prefixing
+ the entry with any line number or "*".
--aa Append the "new" history lines to the history file.
These are history lines entered since the beginning of
the current bbaasshh session, but not already appended to the
@@ -7577,4 +7590,4 @@ BBUUGGSS
Array variables may not (yet) be exported.
-GNU Bash 5.3 2025 December 18 _B_A_S_H(1)
+GNU Bash 5.3 2025 December 26 _B_A_S_H(1)
diff --git a/doc/bash.1 b/doc/bash.1
index 145717cc..c605d04c 100644
--- a/doc/bash.1
+++ b/doc/bash.1
@@ -5,7 +5,7 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
-.\" Last Change: Thu Dec 18 17:18:21 EST 2025
+.\" Last Change: Fri Dec 26 18:21:22 EST 2025
.\"
.\" For bash_builtins, strip all but "SHELL BUILTIN COMMANDS" section
.\" For rbash, strip all but "RESTRICTED SHELL" section
@@ -22,7 +22,7 @@
.ds zX \" empty
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
-.TH BASH 1 "2025 December 18" "GNU Bash 5.3"
+.TH BASH 1 "2025 December 26" "GNU Bash 5.3"
.\"
.ie \n(.g \{\
.ds ' \(aq
@@ -10413,7 +10413,7 @@ option, if supplied,
causes \fBfc\fP to remove the selected commands from the history
list before executing the file of edited commands.
.B \-D
-is only active when \fBfc\fP is invoked in this way.
+is only effective when \fBfc\fP is invoked in this way.
.IP
In the second form, \fBfc\fP re-executes \fIcommand\fP
after replacing each instance of \fIpat\fP with \fIrep\fP.
@@ -10660,14 +10660,12 @@ prints the descriptions of all matching help topics.
The return status is 0 unless no command matches
.IR pattern .
.TP
-\fBhistory [\fIn\fP]
+\fBhistory [\fB\-H\fP] [\fIrange\fP]
.PD 0
.TP
\fBhistory\fP \fB\-c\fP
.TP
-\fBhistory \-d\fP \fIoffset\fP
-.TP
-\fBhistory \-d\fP \fIstart\fP-\fIend\fP
+\fBhistory \-d\fP \fIrange\fP
.TP
\fBhistory\fP \fB\-anrw\fP [\fIfilename\fP]
.TP
@@ -10675,15 +10673,33 @@ The return status is 0 unless no command matches
.TP
\fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg\fP .\|.\|.]
.PD
-With no options, display the command history list with numbers.
-Entries prefixed with a
-.B *
-have been modified.
-An argument of
-.I n
-lists only the last
-.I n
-entries.
+With no options,
+or with the \fB\-H\fP option,
+display the portion of the command history list
+specified by \fIrange\fP, as described below.
+If \fIrange\fP is not specified, display the entire history list.
+Without \fB\-H\fP, display the list with command numbers, prefixing
+entries that have been modified with a
+.Q "*" .
+.IP
+A
+.I range
+argument is specified in the form of a number \fIoffset\fP or
+a range \fIstart\fP\-\fIend\fP.
+If \fIoffset\fP is supplied, it references the history entry at
+position \fIoffset\fP in the history list;
+when listing this displays the last \fIoffset\fP entries.
+A negative \fIoffset\fP counts back from the end of the history list,
+relative to one greater than the last history position.
+When listing, negative and positive \fIoffsets\fP have identical results.
+\fIstart\fP and \fIend\fP, if supplied, reference the portion of
+the history list beginning at position \fIstart\fP through position
+\fIend\fP.
+If \fIstart\fP or \fIend\fP are negative, they count back from the
+end of the history list.
+When listing, if \fIstart\fP is greater than \fIend\fP, the history
+entries are displayed in reverse order from \fIend\fP to \fIstart\fP.
+.IP
If the shell variable
.SM
.B HISTTIMEFORMAT
@@ -10717,18 +10733,16 @@ Options, if supplied, have the following meanings:
Clear the history list by deleting all the entries.
This can be used with the other options to replace the history list.
.TP
-\fB\-d\fP \fIoffset\fP
-Delete the history entry at position \fIoffset\fP.
-If \fIoffset\fP is negative, it is interpreted as relative to one greater
-than the last history position, so negative indices count back from the
-end of the history, and an index of \-1 refers to the current
-\fBhistory \-d\fP command.
-.TP
-\fB\-d\fP \fIstart\fP\-\fIend\fP
-Delete the range of history entries between positions \fIstart\fP and
-\fIend\fP, inclusive.
-Positive and negative values for \fIstart\fP and \fIend\fP
-are interpreted as described above.
+\fB\-d\fP \fIrange\fP
+Delete the history entries specified by \fIrange\fP, as described above.
+An index of \-1 refers to the current \fBhistory \-d\fP command.
+.TP
+\fB\-H\fP
+Display the selected history entries in the format that would be written
+to the history file,
+including any time stamp information as described below,
+without prefixing the entry with any line number or
+.Q "*" .
.TP
.B \-a
Append the
diff --git a/doc/bash.html b/doc/bash.html
index 14e4e194..2f8fc02a 100644
--- a/doc/bash.html
+++ b/doc/bash.html
@@ -1,5 +1,5 @@
-
+
@@ -12232,8 +12232,8 @@ with a name that is not a function.
fc [−e
-ename] [−lnr] [first]
-[last]
+ename] [−D] [−lnr]
+[first] [last]
fc −s [pat=rep] [cmd]
The first form selects a range
@@ -12271,7 +12271,11 @@ variable, and the value of EDITOR if
FCEDIT is not set. If neither variable
is set, fc uses vi. When editing is complete,
fc reads the file containing the edited commands and
-echoes and executes them.
+echoes and executes them. The −D option, if
+supplied, causes fc to remove the selected commands
+from the history list before executing the file of edited
+commands. −D is only effective when fc
+is invoked in this way.
In the second
form, fc re-executes command after replacing
@@ -12486,23 +12490,44 @@ prints the descriptions of all matching help topics.
The return
status is 0 unless no command matches pattern.
-history [n]
-
+
history [−H]
+[range]
history −c
-history −d offset
-history −d start-end
+history −d range
history −anrw [filename]
history −p arg [arg ...]
history −s arg [arg ...]
-With no options, display the
-command history list with numbers. Entries prefixed with a
-* have been modified. An argument of n lists
-only the last n entries. If the shell variable
-HISTTIMEFORMAT is set and not null, it
-is used as a format string for strftime(3) to display
-the time stamp associated with each displayed history entry.
-If history uses
+
With no options, or with the
+−H option, display the portion of the command
+history list specified by range, as described below.
+If range is not specified, display the entire history
+list. Without −H, display the list with command
+numbers, prefixing entries that have been modified with a
+“*”.
+
+A range
+argument is specified in the form of a number offset
+or a range start−end. If offset
+is supplied, it references the history entry at position
+offset in the history list; when listing this
+displays the last offset entries. A negative
+offset counts back from the end of the history list,
+relative to one greater than the last history position. When
+listing, negative and positive offsets have identical
+results. start and end, if supplied, reference
+the portion of the history list beginning at position
+start through position end. If start or
+end are negative, they count back from the end of the
+history list. When listing, if start is greater than
+end, the history entries are displayed in reverse
+order from end to start.
+
+If the shell
+variable HISTTIMEFORMAT is set and not
+null, it is used as a format string for strftime(3)
+to display the time stamp associated with each displayed
+history entry. If history uses
HISTTIMEFORMAT, it does
not print an intervening space between the formatted time
stamp and the history entry.
@@ -12537,22 +12562,12 @@ list.
−d
-offset
-
-Delete the history entry at
-position offset. If offset is negative, it is
-interpreted as relative to one greater than the last history
-position, so negative indices count back from the end of the
-history, and an index of −1 refers to the current
-history −d command.
-
-−d
-start−end
+range
-Delete the range of history
-entries between positions start and end,
-inclusive. Positive and negative values for start and
-end are interpreted as described above.
+Delete the history entries
+specified by range, as described above. An index of
+−1 refers to the current history −d
+command.
@@ -12561,6 +12576,20 @@ inclusive. Positive and negative values for start and
|
+ −H |
+ |
+
+
+
+ Display the selected history entries in the format that
+would be written to the history file, including any time
+stamp information as described below, without prefixing the
+entry with any line number or “*”. |
+
+ |
+
+
+
−a |
|
diff --git a/doc/bash.info b/doc/bash.info
index b7665149..5ae297f2 100644
--- a/doc/bash.info
+++ b/doc/bash.info
@@ -1,9 +1,9 @@
This is bash.info, produced by makeinfo version 7.2 from bashref.texi.
This text is a brief description of the features that are present in the
-Bash shell (version 5.3, 18 December 2025).
+Bash shell (version 5.3, 26 December 2025).
- This is Edition 5.3, last updated 18 December 2025, of âThe GNU Bash
+ This is Edition 5.3, last updated 26 December 2025, of âThe GNU Bash
Reference Manualâ, for âBashâ, Version 5.3.
Copyright © 1988-2025 Free Software Foundation, Inc.
@@ -26,10 +26,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
-Bash shell (version 5.3, 18 December 2025). The Bash home page is
+Bash shell (version 5.3, 26 December 2025). The Bash home page is
.
- This is Edition 5.3, last updated 18 December 2025, of âThe GNU Bash
+ This is Edition 5.3, last updated 26 December 2025, of âThe GNU Bash
Reference Manualâ, for âBashâ, Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -10993,7 +10993,7 @@ history file.
âfcâ reads the file of edited commands and echoes and executes
them. The â-Dâ option, if supplied, causes âfcâ to remove the
selected commands from the history list before executing the file
- of edited commands. â-Dâ is only active when âfcâ is invoked in
+ of edited commands. â-Dâ is only effective when âfcâ is invoked in
this way. It could be used if you make a typo in a command and
want to fix it using an editor while removing the erroneous command
from the history to avoid clutter.
@@ -11016,21 +11016,36 @@ history file.
history entry, in which case âfcâ returns a non-zero status.
âhistoryâ
- history [N]
+ history [-H] [RANGE]
history -c
- history -d OFFSET
- history -d START-END
+ history -d RANGE
history [-anrw] [FILENAME]
- history -ps ARG
-
- With no options, display the history list with numbers. Entries
- prefixed with a â*â have been modified. An argument of N lists
- only the last N entries. If the shell variable âHISTTIMEFORMATâ is
- set and not null, it is used as a format string for âstrftimeâ(3)
- to display the time stamp associated with each displayed history
- entry. If âhistoryâ uses âHISTTIMEFORMATâ, it does not print an
- intervening space between the formatted time stamp and the history
- entry.
+ history -ps ARG [ARG...]
+
+ With no options, or with the â-Hâ option, display the portion of
+ the command history list specified by RANGE, as described below.
+ If RANGE is not specified, display the entire history list.
+ Without â-Hâ, display the list with command numbers, prefixing
+ entries that have been modified with a â*â.
+
+ A RANGE argument is specified in the form of a number OFFSET or a
+ range START-END. If OFFSET is supplied, it references the history
+ entry at position OFFSET in the history list; when listing this
+ displays the last OFFSET entries. A negative OFFSET counts back
+ from the end of the history list, relative to one greater than the
+ last history position. When listing, negative and positive OFFSETs
+ have identical results. START and END, if supplied, reference the
+ portion of the history list beginning at position START through
+ position END. If START or END are negative, they count back from
+ the end of the history list. When listing, if START is greater
+ than END, the history entries are displayed in reverse order from
+ END to START.
+
+ If the shell variable âHISTTIMEFORMATâ is set and not null, it is
+ used as a format string for âstrftimeâ(3) to display the time stamp
+ associated with each displayed history entry. If âhistoryâ uses
+ âHISTTIMEFORMATâ, it does not print an intervening space between
+ the formatted time stamp and the history entry.
Options, if supplied, have the following meanings:
@@ -11038,19 +11053,16 @@ history file.
Clear the history list. This may be combined with the other
options to replace the history list.
- â-d OFFSETâ
- Delete the history entry at position OFFSET. If OFFSET is
- positive, it should be specified as it appears when the
- history is displayed. If OFFSET is negative, it is
- interpreted as relative to one greater than the last history
- position, so negative indices count back from the end of the
- history, and an index of â-1â refers to the current âhistory
- -dâ command.
+ â-d RANGEâ
+ Delete the history entries specified by RANGE, as described
+ above. An offset of â-1â refers to the current âhistory -dâ
+ command.
- â-d START-ENDâ
- Delete the range of history entries between positions START
- and END, inclusive. Positive and negative values for START
- and END are interpreted as described above.
+ â-Hâ
+ Display the selected history entries in the format that would
+ be written to the history file, including any time stamp
+ information as described below, without prefixing the entry
+ with any line number or â*â.
â-aâ
Append the "new" history lines to the history file. These are
@@ -13791,28 +13803,28 @@ Node: A Programmable Completion Example485732
Node: Using History Interactively491077
Node: Bash History Facilities491758
Node: Bash History Builtins495493
-Node: History Interaction502365
-Node: Event Designators507315
-Node: Word Designators508893
-Node: Modifiers511285
-Node: Installing Bash513222
-Node: Basic Installation514338
-Node: Compilers and Options518214
-Node: Compiling For Multiple Architectures518964
-Node: Installation Names520717
-Node: Specifying the System Type522951
-Node: Sharing Defaults523697
-Node: Operation Controls524411
-Node: Optional Features525430
-Node: Reporting Bugs538153
-Node: Major Differences From The Bourne Shell539510
-Node: GNU Free Documentation License560937
-Node: Indexes586114
-Node: Builtin Index586565
-Node: Reserved Word Index593663
-Node: Variable Index596108
-Node: Function Index613521
-Node: Concept Index627516
+Node: History Interaction503088
+Node: Event Designators508038
+Node: Word Designators509616
+Node: Modifiers512008
+Node: Installing Bash513945
+Node: Basic Installation515061
+Node: Compilers and Options518937
+Node: Compiling For Multiple Architectures519687
+Node: Installation Names521440
+Node: Specifying the System Type523674
+Node: Sharing Defaults524420
+Node: Operation Controls525134
+Node: Optional Features526153
+Node: Reporting Bugs538876
+Node: Major Differences From The Bourne Shell540233
+Node: GNU Free Documentation License561660
+Node: Indexes586837
+Node: Builtin Index587288
+Node: Reserved Word Index594386
+Node: Variable Index596831
+Node: Function Index614244
+Node: Concept Index628239
End Tag Table
diff --git a/doc/bash.pdf b/doc/bash.pdf
index eb9f142ad0a23b2d1197c98ebd1469d205ae1be2..c861b55f4810ace55b2f2309219924d61b41a941 100644
GIT binary patch
delta 177673
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%0DRhDS=Snizf
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 |