commit bash-20090319 snapshot

This commit is contained in:
Chet Ramey
2011-12-08 20:06:56 -05:00
parent 1231ac4798
commit c302751c7b
99 changed files with 43003 additions and 25662 deletions
+1 -1
View File
@@ -601,7 +601,7 @@ bb. The command assigned to a key sequence with `bind -x' now sets two new
and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
respectively.
cc. There is a new >>& redirection operator, which appends the standard output
cc. There is a new &>> redirection operator, which appends the standard output
and standard error to the named file.
dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects
+60
View File
@@ -7710,6 +7710,14 @@ parse.y
{.,lib/readline}/doc/fdl.texi
- updated to FDL version 1.3
3/11
----
parse.y
- when using the |& construct with a simple command preceding it, add
the implicit redirection to the simple command's redirection list,
since the redirections associated with the command struct are never
executed. Fixes bug reported by Matt Zyzik <Matt@ice.filescope.com>
3/14
----
execute_cmd.c
@@ -7770,3 +7778,55 @@ subst.c
expand_word_internal if $IFS is NULL, just like expand_word_unsplit.
It is now virtually identical to expand_word_unsplit. Rest of fix for
problems reported by Stephane Chazleas <stephane_chazelas@yahoo.fr>
3/20
----
trap.c
- in _run_trap_internal, don't pass SEVAL_RESETLINE as flag to
parse_and_execute if running the ERR trap (further modification
of change from 1/12)
execute_cmd.c
- in execute_simple_command, set line_number to line_number_for_err_trap
before calling run_error_trap. Part of fix for bug reported by
Brian J. Murrell <brian@interlinx.bc.ca>
- change other places calling run_error_trap() to set and use
line_number_for_err_trap
3/21
----
builtins/fc.def
- Even though command substitution through parse_and_execute turns
off remember_on_history, command substitution in a shell when
set -o history has been enabled (interactive or not) should use it
in the last_hist calculation as if it were on. Same calculation
in fc_gethnum and fc_builtin. Fixes bug reported by
<smallnow@gmail.com>
sig.c
- change termsig_sighandler to terminate immediately if it gets called
twice with the same signal before termsig_handler gets called. This
fixes the `looping on SIGSEGV' phenomenon reported by Linux users.
parse.y
- in read_secondary_line, don't try to add NULL lines to the history
list. Report and patch from Lubomir Rintel <lkundrak@v3.sk>
3/22
----
sig.c
- Augment change from 3/21 with explicit check for signals we *don't*
want this to happen for. Patch from Lubomir Rintel <lkundrak@v3.sk>
3/28
----
array.c
- in array_reference, return NULL immediately if the desired index
is larger than the maximum
- add cache of last array referenced and last array element referenced;
use in array_reference to optimize case of sequential access;
invalidated where necessary in other functions
- array_rshift needs to set max_index to 0 if the array was empty
before shifting in the new element 0
- array_shift needs to use element_index(a->head->prev) to set the
max_index, not a simple decrement, to deal with sparse arrays
+61 -3
View File
@@ -7710,6 +7710,14 @@ parse.y
{.,lib/readline}/doc/fdl.texi
- updated to FDL version 1.3
3/11
----
parse.y
- when using the |& construct with a simple command preceding it, add
the implicit redirection to the simple command's redirection list,
since the redirections associated with the command struct are never
executed. Fixes bug reported by Matt Zyzik <Matt@ice.filescope.com>
3/14
----
execute_cmd.c
@@ -7764,9 +7772,59 @@ subst.c
- param_expand now checks for Q_PATQUOTE and treats it identically
to Q_DOUBLE_QUOTES when expanding $*
- expand_word_unsplit now sets W_NOSPLIT in the flags of the word it
passes to expand_word_internal
passes to expand_word_internal if $IFS is NULL
- expand_word_leave_quoted now sets expand_no_split_dollar_start and
the W_NOSPLIT bit in the word flags before calling
expand_word_internal, just like expand_word_unsplit. It is now
virtually identical to expand_word_unsplit. Rest of fix for
expand_word_internal if $IFS is NULL, just like expand_word_unsplit.
It is now virtually identical to expand_word_unsplit. Rest of fix for
problems reported by Stephane Chazleas <stephane_chazelas@yahoo.fr>
3/20
----
trap.c
- in _run_trap_internal, don't pass SEVAL_RESETLINE as flag to
parse_and_execute if running the ERR trap (further modification
of change from 1/12)
execute_cmd.c
- in execute_simple_command, set line_number to line_number_for_err_trap
before calling run_error_trap. Part of fix for bug reported by
Brian J. Murrell <brian@interlinx.bc.ca>
- change other places calling run_error_trap() to set and use
line_number_for_err_trap
3/21
----
builtins/fc.def
- Even though command substitution through parse_and_execute turns
off remember_on_history, command substitution in a shell when
set -o history has been enabled (interactive or not) should use it
in the last_hist calculation as if it were on. Same calculation
in fc_gethnum and fc_builtin. Fixes bug reported by
<smallnow@gmail.com>
sig.c
- change termsig_sighandler to terminate immediately if it gets called
twice with the same signal before termsig_handler gets called. This
fixes the `looping on SIGSEGV' phenomenon reported by Linux users.
parse.y
- in read_secondary_line, don't try to add NULL lines to the history
list. Report and patch from Lubomir Rintel <lkundrak@v3.sk>
3/22
----
sig.c
- Augment change from 3/21 with explicit check for signals we *don't*
want this to happen for. Patch from Lubomir Rintel <lkundrak@v3.sk>
3/28
----
array.c
- in array_reference, return NULL immediately if the desired index
is larger than the maximum
- add cache of last array referenced and last array element referenced;
use in array_reference to optimize case of sequential access;
invalidated where necessary in other functions
- array_rshift needs to set max_index to 0 if the array was empty
before shifting in the new element 0
+2
View File
@@ -859,6 +859,7 @@ tests/history.tests f
tests/history.right f
tests/history.list f 444
tests/history1.sub f
tests/history2.sub f
tests/ifs.tests f
tests/ifs.right f
tests/ifs-posix.tests f
@@ -1035,6 +1036,7 @@ tests/trap.right f
tests/trap1.sub f 755
tests/trap2.sub f 755
tests/trap2a.sub f 755
tests/trap3.sub f
tests/type.tests f
tests/type.right f
tests/type1.sub f
+3
View File
@@ -798,9 +798,11 @@ tests/dbg-support3.sub f
tests/dollar-at-star f
tests/dollar-at1.sub f
tests/dollar-at2.sub f
tests/dollar-at3.sub f
tests/dollar-star1.sub f
tests/dollar-star2.sub f
tests/dollar-star3.sub f
tests/dollar-star4.sub f
tests/dollar.right f
tests/dstack.tests f
tests/dstack.right f
@@ -857,6 +859,7 @@ tests/history.tests f
tests/history.right f
tests/history.list f 444
tests/history1.sub f
tests/history2.sub f
tests/ifs.tests f
tests/ifs.right f
tests/ifs-posix.tests f
+49 -4
View File
@@ -55,6 +55,31 @@
static char *array_to_string_internal __P((ARRAY_ELEMENT *, ARRAY_ELEMENT *, char *, int));
static ARRAY *lastarray = 0;
static ARRAY_ELEMENT *lastref = 0;
#define IS_LASTREF(a) ((a) == lastarray)
#define INVALIDATE_LASTREF(a) \
do { \
if ((a) == lastarray) { \
lastarray = 0; \
lastref = 0; \
} \
} while (0)
#define SET_LASTREF(a, e) \
do { \
lastarray = (a); \
lastref = (e); \
} while (0)
#define UNSET_LASTREF() \
do { \
lastarray = 0; \
lastref = 0; \
} while (0)
ARRAY *
array_create()
{
@@ -87,6 +112,7 @@ ARRAY *a;
a->head->next = a->head->prev = a->head;
a->max_index = -1;
a->num_elements = 0;
INVALIDATE_LASTREF(a);
}
void
@@ -185,6 +211,7 @@ int n, flags;
if (a == 0 || array_empty(a) || n <= 0)
return ((ARRAY_ELEMENT *)NULL);
INVALIDATE_LASTREF(a);
for (i = 0, ret = ae = element_forw(a->head); ae != a->head && i < n; ae = element_forw(ae), i++)
;
if (ae == a->head) {
@@ -214,7 +241,7 @@ int n, flags;
element_index(ae) -= n; /* renumber retained indices */
a->num_elements -= n; /* modify bookkeeping information */
a->max_index -= n;
a->max_index = element_index(a->head->prev);
if (flags & AS_DISPOSE) {
for (ae = ret; ae; ) {
@@ -251,8 +278,10 @@ char *s;
new = array_create_element(0, s);
ADD_BEFORE(ae, new);
a->num_elements++;
if (array_num_elements(a) == 1) /* array was empty */
if (array_num_elements(a) == 1) { /* array was empty */
a->max_index = 0;
return 1;
}
}
/*
@@ -263,6 +292,7 @@ char *s;
a->max_index = element_index(a->head->prev);
INVALIDATE_LASTREF(a);
return (a->num_elements);
}
@@ -594,6 +624,7 @@ char *v;
ADD_BEFORE(a->head, new);
a->max_index = i;
a->num_elements++;
SET_LASTREF(a, new);
return(0);
}
/*
@@ -607,13 +638,16 @@ char *v;
array_dispose_element(new);
free(element_value(ae));
ae->value = v ? savestring(v) : (char *)NULL;
SET_LASTREF(a, ae);
return(0);
} else if (element_index(ae) > i) {
ADD_BEFORE(ae, new);
a->num_elements++;
SET_LASTREF(a, new);
return(0);
}
}
INVALIDATE_LASTREF(a);
return (-1); /* problem */
}
@@ -637,6 +671,7 @@ arrayind_t i;
a->num_elements--;
if (i == array_max_index(a))
a->max_index = element_index(ae->prev);
INVALIDATE_LASTREF(a);
return(ae);
}
return((ARRAY_ELEMENT *) NULL);
@@ -654,9 +689,19 @@ arrayind_t i;
if (a == 0 || array_empty(a))
return((char *) NULL);
for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae))
if (element_index(ae) == i)
if (i > array_max_index(a))
return((char *)NULL);
/* Keep roving pointer into array to optimize sequential access */
if (lastref && IS_LASTREF(a))
ae = (i >= element_index(lastref)) ? lastref : element_forw(a->head);
else
ae = element_forw(a->head);
for ( ; ae != a->head; ae = element_forw(ae))
if (element_index(ae) == i) {
SET_LASTREF(a, ae);
return(element_value(ae));
}
UNSET_LASTREF();
return((char *) NULL);
}
+1130
View File
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -31,7 +31,8 @@ enum atype {array_indexed, array_assoc};
typedef struct array {
enum atype type;
arrayind_t max_index, num_elements;
arrayind_t max_index;
int num_elements;
struct array_element *head;
} ARRAY;
+118
View File
@@ -0,0 +1,118 @@
/* array.h -- definitions for the interface exported by array.c that allows
the rest of the shell to manipulate array variables. */
/* Copyright (C) 1997-2009 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _ARRAY_H_
#define _ARRAY_H_
#include "stdc.h"
typedef intmax_t arrayind_t;
enum atype {array_indexed, array_assoc};
typedef struct array {
enum atype type;
arrayind_t max_index, num_elements;
struct array_element *head;
} ARRAY;
typedef struct array_element {
arrayind_t ind;
char *value;
struct array_element *next, *prev;
} ARRAY_ELEMENT;
typedef int sh_ae_map_func_t __P((ARRAY_ELEMENT *, void *));
/* Basic operations on entire arrays */
extern ARRAY *array_create __P((void));
extern void array_flush __P((ARRAY *));
extern void array_dispose __P((ARRAY *));
extern ARRAY *array_copy __P((ARRAY *));
extern ARRAY *array_slice __P((ARRAY *, ARRAY_ELEMENT *, ARRAY_ELEMENT *));
extern void array_walk __P((ARRAY *, sh_ae_map_func_t *, void *));
extern ARRAY_ELEMENT *array_shift __P((ARRAY *, int, int));
extern int array_rshift __P((ARRAY *, int, char *));
extern ARRAY_ELEMENT *array_unshift_element __P((ARRAY *));
extern int array_shift_element __P((ARRAY *, char *));
extern ARRAY *array_quote __P((ARRAY *));
extern ARRAY *array_quote_escapes __P((ARRAY *));
extern ARRAY *array_dequote __P((ARRAY *));
extern ARRAY *array_dequote_escapes __P((ARRAY *));
extern ARRAY *array_remove_quoted_nulls __P((ARRAY *));
extern char *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int, int));
extern char *array_patsub __P((ARRAY *, char *, char *, int));
extern char *array_modcase __P((ARRAY *, char *, int, int));
/* Basic operations on array elements. */
extern ARRAY_ELEMENT *array_create_element __P((arrayind_t, char *));
extern ARRAY_ELEMENT *array_copy_element __P((ARRAY_ELEMENT *));
extern void array_dispose_element __P((ARRAY_ELEMENT *));
extern int array_insert __P((ARRAY *, arrayind_t, char *));
extern ARRAY_ELEMENT *array_remove __P((ARRAY *, arrayind_t));
extern char *array_reference __P((ARRAY *, arrayind_t));
/* Converting to and from arrays */
extern WORD_LIST *array_to_word_list __P((ARRAY *));
extern ARRAY *array_from_word_list __P((WORD_LIST *));
extern WORD_LIST *array_keys_to_word_list __P((ARRAY *));
extern ARRAY *array_assign_list __P((ARRAY *, WORD_LIST *));
extern char **array_to_argv __P((ARRAY *));
extern char *array_to_assign __P((ARRAY *, int));
extern char *array_to_string __P((ARRAY *, char *, int));
extern ARRAY *array_from_string __P((char *, char *));
/* Flags for array_shift */
#define AS_DISPOSE 0x01
#define array_num_elements(a) ((a)->num_elements)
#define array_max_index(a) ((a)->max_index)
#define array_head(a) ((a)->head)
#define array_empty(a) ((a)->num_elements == 0)
#define element_value(ae) ((ae)->value)
#define element_index(ae) ((ae)->ind)
#define element_forw(ae) ((ae)->next)
#define element_back(ae) ((ae)->prev)
/* Convenience */
#define array_push(a,v) \
do { array_rshift ((a), 1, (v)); } while (0)
#define array_pop(a) \
do { array_dispose_element (array_shift ((a), 1, 0)); } while (0)
#define GET_ARRAY_FROM_VAR(n, v, a) \
do { \
(v) = find_variable (n); \
(a) = ((v) && array_p ((v))) ? array_cell (v) : (ARRAY *)0; \
} while (0)
#define ALL_ELEMENT_SUB(c) ((c) == '@' || (c) == '*')
#endif /* _ARRAY_H_ */
+17 -4
View File
@@ -88,6 +88,7 @@ extern int errno;
extern int current_command_line_count;
extern int literal_history;
extern int posixly_correct;
extern int subshell_environment, interactive_shell;
extern int unlink __P((const char *));
@@ -172,7 +173,7 @@ fc_builtin (list)
register int i;
register char *sep;
int numbering, reverse, listing, execute;
int histbeg, histend, last_hist, retval, opt;
int histbeg, histend, last_hist, retval, opt, rh;
FILE *stream;
REPL *rlist, *rl;
char *ename, *command, *newcom, *fcedit;
@@ -275,6 +276,8 @@ fc_builtin (list)
fprintf (stderr, "%s\n", command);
fc_replhist (command); /* replace `fc -s' with command */
/* Posix says that the re-executed commands should be entered into the
history. */
return (parse_and_execute (command, "fc", SEVAL_NOHIST));
}
@@ -293,7 +296,12 @@ fc_builtin (list)
line was actually added (HISTIGNORE may have caused it to not be),
so we check hist_last_line_added. */
last_hist = i - remember_on_history - hist_last_line_added;
/* Even though command substitution through parse_and_execute turns off
remember_on_history, command substitution in a shell when set -o history
has been enabled (interactive or not) should use it in the last_hist
calculation as if it were on. */
rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
last_hist = i - rh - hist_last_line_added;
if (list)
{
@@ -456,7 +464,7 @@ fc_gethnum (command, hlist)
char *command;
HIST_ENTRY **hlist;
{
int sign, n, clen;
int sign, n, clen, rh;
register int i, j;
register char *s;
@@ -472,7 +480,12 @@ fc_gethnum (command, hlist)
line was actually added (HISTIGNORE may have caused it to not be),
so we check hist_last_line_added. This needs to agree with the
calculation of last_hist in fc_builtin above. */
i -= remember_on_history + hist_last_line_added;
/* Even though command substitution through parse_and_execute turns off
remember_on_history, command substitution in a shell when set -o history
has been enabled (interactive or not) should use it in the last_hist
calculation as if it were on. */
rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
i -= rh + hist_last_line_added;
/* No specification defaults to most recent command. */
if (command == NULL)
+669
View File
@@ -0,0 +1,669 @@
This file is fc.def, from which is created fc.c.
It implements the builtin "fc" in Bash.
Copyright (C) 1987-2009 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
$PRODUCES fc.c
$BUILTIN fc
$FUNCTION fc_builtin
$DEPENDS_ON HISTORY
$SHORT_DOC fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]
Display or execute commands from the history list.
fc is used to list or edit and re-execute commands from the history list.
FIRST and LAST can be numbers specifying the range, or FIRST can be a
string, which means the most recent command beginning with that
string.
Options:
-e ENAME select which editor to use. Default is FCEDIT, then EDITOR,
then vi
-l list lines instead of editing
-n omit line numbers when listing
-r reverse the order of the lines (newest listed first)
With the `fc -s [pat=rep ...] [command]' format, COMMAND is
re-executed after the substitution OLD=NEW is performed.
A useful alias to use with this is r='fc -s', so that typing `r cc'
runs the last command beginning with `cc' and typing `r' re-executes
the last command.
Exit Status:
Returns success or status of executed command; non-zero if an error occurs.
$END
#include <config.h>
#if defined (HISTORY)
#ifndef _MINIX
# include <sys/param.h>
#endif
#include "../bashtypes.h"
#include "posixstat.h"
#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H)
# include <sys/file.h>
#endif
#if defined (HAVE_UNISTD_H)
# include <unistd.h>
#endif
#include <stdio.h>
#include <chartypes.h>
#include "../bashansi.h"
#include "../bashintl.h"
#include <errno.h>
#include "../shell.h"
#include "../builtins.h"
#include "../flags.h"
#include "../bashhist.h"
#include "maxpath.h"
#include <readline/history.h>
#include "bashgetopt.h"
#include "common.h"
#if !defined (errno)
extern int errno;
#endif /* !errno */
extern int current_command_line_count;
extern int literal_history;
extern int posixly_correct;
extern int subshell_environment, interactive_shell;
extern int unlink __P((const char *));
extern FILE *sh_mktmpfp __P((char *, int, char **));
/* **************************************************************** */
/* */
/* The K*rn shell style fc command (Fix Command) */
/* */
/* **************************************************************** */
/* fc builtin command (fix command) for Bash for those who
like K*rn-style history better than csh-style.
fc [-e ename] [-nlr] [first] [last]
FIRST and LAST can be numbers specifying the range, or FIRST can be
a string, which means the most recent command beginning with that
string.
-e ENAME selects which editor to use. Default is FCEDIT, then EDITOR,
then the editor which corresponds to the current readline editing
mode, then vi.
-l means list lines instead of editing.
-n means no line numbers listed.
-r means reverse the order of the lines (making it newest listed first).
fc -e - [pat=rep ...] [command]
fc -s [pat=rep ...] [command]
Equivalent to !command:sg/pat/rep execpt there can be multiple PAT=REP's.
*/
/* Data structure describing a list of global replacements to perform. */
typedef struct repl {
struct repl *next;
char *pat;
char *rep;
} REPL;
/* Accessors for HIST_ENTRY lists that are called HLIST. */
#define histline(i) (hlist[(i)]->line)
#define histdata(i) (hlist[(i)]->data)
#define FREE_RLIST() \
do { \
for (rl = rlist; rl; ) { \
REPL *r; \
r = rl->next; \
if (rl->pat) \
free (rl->pat); \
if (rl->rep) \
free (rl->rep); \
free (rl); \
rl = r; \
} \
} while (0)
static char *fc_dosubs __P((char *, REPL *));
static char *fc_gethist __P((char *, HIST_ENTRY **));
static int fc_gethnum __P((char *, HIST_ENTRY **));
static int fc_number __P((WORD_LIST *));
static void fc_replhist __P((char *));
#ifdef INCLUDE_UNUSED
static char *fc_readline __P((FILE *));
static void fc_addhist __P((char *));
#endif
/* String to execute on a file that we want to edit. */
#define FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-vi}}"
#if defined (STRICT_POSIX)
# define POSIX_FC_EDIT_COMMAND "${FCEDIT:-ed}"
#else
# define POSIX_FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-ed}}"
#endif
int
fc_builtin (list)
WORD_LIST *list;
{
register int i;
register char *sep;
int numbering, reverse, listing, execute;
int histbeg, histend, last_hist, retval, opt, rh;
FILE *stream;
REPL *rlist, *rl;
char *ename, *command, *newcom, *fcedit;
HIST_ENTRY **hlist;
char *fn;
numbering = 1;
reverse = listing = execute = 0;
ename = (char *)NULL;
/* Parse out the options and set which of the two forms we're in. */
reset_internal_getopt ();
lcurrent = list; /* XXX */
while (fc_number (loptend = lcurrent) == 0 &&
(opt = internal_getopt (list, ":e:lnrs")) != -1)
{
switch (opt)
{
case 'n':
numbering = 0;
break;
case 'l':
listing = 1;
break;
case 'r':
reverse = 1;
break;
case 's':
execute = 1;
break;
case 'e':
ename = list_optarg;
break;
default:
builtin_usage ();
return (EX_USAGE);
}
}
list = loptend;
if (ename && (*ename == '-') && (ename[1] == '\0'))
execute = 1;
/* The "execute" form of the command (re-run, with possible string
substitutions). */
if (execute)
{
rlist = (REPL *)NULL;
while (list && ((sep = (char *)strchr (list->word->word, '=')) != NULL))
{
*sep++ = '\0';
rl = (REPL *)xmalloc (sizeof (REPL));
rl->next = (REPL *)NULL;
rl->pat = savestring (list->word->word);
rl->rep = savestring (sep);
if (rlist == NULL)
rlist = rl;
else
{
rl->next = rlist;
rlist = rl;
}
list = list->next;
}
/* If we have a list of substitutions to do, then reverse it
to get the replacements in the proper order. */
rlist = REVERSE_LIST (rlist, REPL *);
hlist = history_list ();
/* If we still have something in list, it is a command spec.
Otherwise, we use the most recent command in time. */
command = fc_gethist (list ? list->word->word : (char *)NULL, hlist);
if (command == NULL)
{
builtin_error (_("no command found"));
if (rlist)
FREE_RLIST ();
return (EXECUTION_FAILURE);
}
if (rlist)
{
newcom = fc_dosubs (command, rlist);
free (command);
FREE_RLIST ();
command = newcom;
}
fprintf (stderr, "%s\n", command);
fc_replhist (command); /* replace `fc -s' with command */
/* Posix says that the re-executed commands should be entered into the
history. */
return (parse_and_execute (command, "fc", SEVAL_NOHIST));
}
/* This is the second form of the command (the list-or-edit-and-rerun
form). */
hlist = history_list ();
if (hlist == 0)
return (EXECUTION_SUCCESS);
for (i = 0; hlist[i]; i++);
/* With the Bash implementation of history, the current command line
("fc blah..." and so on) is already part of the history list by
the time we get to this point. This just skips over that command
and makes the last command that this deals with be the last command
the user entered before the fc. We need to check whether the
line was actually added (HISTIGNORE may have caused it to not be),
so we check hist_last_line_added. */
/* Even though command substitution through parse_and_execute turns off
remember_on_history, command substitution in a shell when set -o history
has been enabled (interactive or not) should use it in the last_hist
calculation as if it were. */
rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
last_hist = i - rh - hist_last_line_added;
itrace("fc: last_hist = %d i = %d rh = %d hist_last_line_added = %d", last_hist, i, rh, hist_last_line_added);
itrace("fc: enable_history_list = %d subshell_environment = %d interactive_shell = %d", enable_history_list, subshell_environment, interactive_shell);
if (list)
{
histbeg = fc_gethnum (list->word->word, hlist);
list = list->next;
if (list)
histend = fc_gethnum (list->word->word, hlist);
else
histend = listing ? last_hist : histbeg;
}
else
{
/* The default for listing is the last 16 history items. */
if (listing)
{
histend = last_hist;
histbeg = histend - 16 + 1; /* +1 because loop below uses >= */
if (histbeg < 0)
histbeg = 0;
}
else
/* For editing, it is the last history command. */
histbeg = histend = last_hist;
}
itrace("fc: histbeg = %d histend = %d", histbeg, histend);
/* "When not listing, the fc command that caused the editing shall not be
entered into the history list." */
if (listing == 0 && hist_last_line_added)
{
bash_delete_last_history ();
/* If we're editing a single command -- the last command in the
history -- and we just removed the dummy command added by
edit_and_execute_command (), we need to check whether or not we
just removed the last command in the history and need to back
the pointer up. remember_on_history is off because we're running
in parse_and_execute(). */
if (histbeg == histend && histend == last_hist && hlist[last_hist] == 0)
last_hist = histbeg = --histend;
}
/* We print error messages for line specifications out of range. */
if ((histbeg < 0) || (histend < 0))
{
sh_erange ((char *)NULL, _("history specification"));
return (EXECUTION_FAILURE);
}
if (histend < histbeg)
{
i = histend;
histend = histbeg;
histbeg = i;
reverse = 1;
}
if (listing)
stream = stdout;
else
{
numbering = 0;
stream = sh_mktmpfp ("bash-fc", MT_USERANDOM|MT_USETMPDIR, &fn);
if (stream == 0)
{
builtin_error (_("%s: cannot open temp file: %s"), fn ? fn : "", strerror (errno));
FREE (fn);
return (EXECUTION_FAILURE);
}
}
for (i = reverse ? histend : histbeg; reverse ? i >= histbeg : i <= histend; reverse ? i-- : i++)
{
QUIT;
if (numbering)
fprintf (stream, "%d", i + history_base);
if (listing)
{
if (posixly_correct)
fputs ("\t", stream);
else
fprintf (stream, "\t%c", histdata (i) ? '*' : ' ');
}
fprintf (stream, "%s\n", histline (i));
}
if (listing)
return (sh_chkwrite (EXECUTION_SUCCESS));
fflush (stream);
if (ferror (stream))
{
sh_wrerror ();
fclose (stream);
return (EXECUTION_FAILURE);
}
fclose (stream);
/* Now edit the file of commands. */
if (ename)
{
command = (char *)xmalloc (strlen (ename) + strlen (fn) + 2);
sprintf (command, "%s %s", ename, fn);
}
else
{
fcedit = posixly_correct ? POSIX_FC_EDIT_COMMAND : FC_EDIT_COMMAND;
command = (char *)xmalloc (3 + strlen (fcedit) + strlen (fn));
sprintf (command, "%s %s", fcedit, fn);
}
retval = parse_and_execute (command, "fc", SEVAL_NOHIST);
if (retval != EXECUTION_SUCCESS)
{
unlink (fn);
free (fn);
return (EXECUTION_FAILURE);
}
/* Make sure parse_and_execute doesn't turn this off, even though a
call to parse_and_execute farther up the function call stack (e.g.,
if this is called by vi_edit_and_execute_command) may have already
called bash_history_disable. */
remember_on_history = 1;
/* Turn on the `v' flag while fc_execute_file runs so the commands
will be echoed as they are read by the parser. */
begin_unwind_frame ("fc builtin");
add_unwind_protect ((Function *)xfree, fn);
add_unwind_protect (unlink, fn);
unwind_protect_int (echo_input_at_read);
echo_input_at_read = 1;
retval = fc_execute_file (fn);
run_unwind_frame ("fc builtin");
return (retval);
}
/* Return 1 if LIST->word->word is a legal number for fc's use. */
static int
fc_number (list)
WORD_LIST *list;
{
char *s;
if (list == 0)
return 0;
s = list->word->word;
if (*s == '-')
s++;
return (legal_number (s, (intmax_t *)NULL));
}
/* Return an absolute index into HLIST which corresponds to COMMAND. If
COMMAND is a number, then it was specified in relative terms. If it
is a string, then it is the start of a command line present in HLIST. */
static int
fc_gethnum (command, hlist)
char *command;
HIST_ENTRY **hlist;
{
int sign, n, clen, rh;
register int i, j;
register char *s;
sign = 1;
/* Count history elements. */
for (i = 0; hlist[i]; i++);
/* With the Bash implementation of history, the current command line
("fc blah..." and so on) is already part of the history list by
the time we get to this point. This just skips over that command
and makes the last command that this deals with be the last command
the user entered before the fc. We need to check whether the
line was actually added (HISTIGNORE may have caused it to not be),
so we check hist_last_line_added. This needs to agree with the
calculation of last_hist in fc_builtin above. */
/* Even though command substitution through parse_and_execute turns off
remember_on_history, command substitution in a shell when set -o history
has been enabled (interactive or not) should use it in the last_hist
calculation as if it were. */
rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
i -= rh + hist_last_line_added;
/* No specification defaults to most recent command. */
if (command == NULL)
return (i);
/* Otherwise, there is a specification. It can be a number relative to
the current position, or an absolute history number. */
s = command;
/* Handle possible leading minus sign. */
if (s && (*s == '-'))
{
sign = -1;
s++;
}
if (s && DIGIT(*s))
{
n = atoi (s);
n *= sign;
/* If the value is negative or zero, then it is an offset from
the current history item. */
if (n < 0)
{
n += i + 1;
return (n < 0 ? 0 : n);
}
else if (n == 0)
return (i);
else
{
n -= history_base;
return (i < n ? i : n);
}
}
clen = strlen (command);
for (j = i; j >= 0; j--)
{
if (STREQN (command, histline (j), clen))
return (j);
}
return (-1);
}
/* Locate the most recent history line which begins with
COMMAND in HLIST, and return a malloc()'ed copy of it. */
static char *
fc_gethist (command, hlist)
char *command;
HIST_ENTRY **hlist;
{
int i;
if (hlist == 0)
return ((char *)NULL);
i = fc_gethnum (command, hlist);
if (i >= 0)
return (savestring (histline (i)));
else
return ((char *)NULL);
}
#ifdef INCLUDE_UNUSED
/* Read the edited history lines from STREAM and return them
one at a time. This can read unlimited length lines. The
caller should free the storage. */
static char *
fc_readline (stream)
FILE *stream;
{
register int c;
int line_len = 0, lindex = 0;
char *line = (char *)NULL;
while ((c = getc (stream)) != EOF)
{
if ((lindex + 2) >= line_len)
line = (char *)xrealloc (line, (line_len += 128));
if (c == '\n')
{
line[lindex++] = '\n';
line[lindex++] = '\0';
return (line);
}
else
line[lindex++] = c;
}
if (!lindex)
{
if (line)
free (line);
return ((char *)NULL);
}
if (lindex + 2 >= line_len)
line = (char *)xrealloc (line, lindex + 3);
line[lindex++] = '\n'; /* Finish with newline if none in file */
line[lindex++] = '\0';
return (line);
}
#endif
/* Perform the SUBS on COMMAND.
SUBS is a list of substitutions, and COMMAND is a simple string.
Return a pointer to a malloc'ed string which contains the substituted
command. */
static char *
fc_dosubs (command, subs)
char *command;
REPL *subs;
{
register char *new, *t;
register REPL *r;
for (new = savestring (command), r = subs; r; r = r->next)
{
t = strsub (new, r->pat, r->rep, 1);
free (new);
new = t;
}
return (new);
}
/* Use `command' to replace the last entry in the history list, which,
by this time, is `fc blah...'. The intent is that the new command
become the history entry, and that `fc' should never appear in the
history list. This way you can do `r' to your heart's content. */
static void
fc_replhist (command)
char *command;
{
int n;
if (command == 0 || *command == '\0')
return;
n = strlen (command);
if (command[n - 1] == '\n')
command[n - 1] = '\0';
if (command && *command)
{
bash_delete_last_history ();
maybe_add_history (command); /* Obeys HISTCONTROL setting. */
}
}
#ifdef INCLUDE_UNUSED
/* Add LINE to the history, after removing a single trailing newline. */
static void
fc_addhist (line)
char *line;
{
register int n;
if (line == 0 || *line == 0)
return;
n = strlen (line);
if (line[n - 1] == '\n')
line[n - 1] = '\0';
if (line && *line)
maybe_add_history (line); /* Obeys HISTCONTROL setting. */
}
#endif
#endif /* HISTORY */
+665
View File
@@ -0,0 +1,665 @@
This file is fc.def, from which is created fc.c.
It implements the builtin "fc" in Bash.
Copyright (C) 1987-2009 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
$PRODUCES fc.c
$BUILTIN fc
$FUNCTION fc_builtin
$DEPENDS_ON HISTORY
$SHORT_DOC fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]
Display or execute commands from the history list.
fc is used to list or edit and re-execute commands from the history list.
FIRST and LAST can be numbers specifying the range, or FIRST can be a
string, which means the most recent command beginning with that
string.
Options:
-e ENAME select which editor to use. Default is FCEDIT, then EDITOR,
then vi
-l list lines instead of editing
-n omit line numbers when listing
-r reverse the order of the lines (newest listed first)
With the `fc -s [pat=rep ...] [command]' format, COMMAND is
re-executed after the substitution OLD=NEW is performed.
A useful alias to use with this is r='fc -s', so that typing `r cc'
runs the last command beginning with `cc' and typing `r' re-executes
the last command.
Exit Status:
Returns success or status of executed command; non-zero if an error occurs.
$END
#include <config.h>
#if defined (HISTORY)
#ifndef _MINIX
# include <sys/param.h>
#endif
#include "../bashtypes.h"
#include "posixstat.h"
#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H)
# include <sys/file.h>
#endif
#if defined (HAVE_UNISTD_H)
# include <unistd.h>
#endif
#include <stdio.h>
#include <chartypes.h>
#include "../bashansi.h"
#include "../bashintl.h"
#include <errno.h>
#include "../shell.h"
#include "../builtins.h"
#include "../flags.h"
#include "../bashhist.h"
#include "maxpath.h"
#include <readline/history.h>
#include "bashgetopt.h"
#include "common.h"
#if !defined (errno)
extern int errno;
#endif /* !errno */
extern int current_command_line_count;
extern int literal_history;
extern int posixly_correct;
extern int subshell_environment, interactive_shell;
extern int unlink __P((const char *));
extern FILE *sh_mktmpfp __P((char *, int, char **));
/* **************************************************************** */
/* */
/* The K*rn shell style fc command (Fix Command) */
/* */
/* **************************************************************** */
/* fc builtin command (fix command) for Bash for those who
like K*rn-style history better than csh-style.
fc [-e ename] [-nlr] [first] [last]
FIRST and LAST can be numbers specifying the range, or FIRST can be
a string, which means the most recent command beginning with that
string.
-e ENAME selects which editor to use. Default is FCEDIT, then EDITOR,
then the editor which corresponds to the current readline editing
mode, then vi.
-l means list lines instead of editing.
-n means no line numbers listed.
-r means reverse the order of the lines (making it newest listed first).
fc -e - [pat=rep ...] [command]
fc -s [pat=rep ...] [command]
Equivalent to !command:sg/pat/rep execpt there can be multiple PAT=REP's.
*/
/* Data structure describing a list of global replacements to perform. */
typedef struct repl {
struct repl *next;
char *pat;
char *rep;
} REPL;
/* Accessors for HIST_ENTRY lists that are called HLIST. */
#define histline(i) (hlist[(i)]->line)
#define histdata(i) (hlist[(i)]->data)
#define FREE_RLIST() \
do { \
for (rl = rlist; rl; ) { \
REPL *r; \
r = rl->next; \
if (rl->pat) \
free (rl->pat); \
if (rl->rep) \
free (rl->rep); \
free (rl); \
rl = r; \
} \
} while (0)
static char *fc_dosubs __P((char *, REPL *));
static char *fc_gethist __P((char *, HIST_ENTRY **));
static int fc_gethnum __P((char *, HIST_ENTRY **));
static int fc_number __P((WORD_LIST *));
static void fc_replhist __P((char *));
#ifdef INCLUDE_UNUSED
static char *fc_readline __P((FILE *));
static void fc_addhist __P((char *));
#endif
/* String to execute on a file that we want to edit. */
#define FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-vi}}"
#if defined (STRICT_POSIX)
# define POSIX_FC_EDIT_COMMAND "${FCEDIT:-ed}"
#else
# define POSIX_FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-ed}}"
#endif
int
fc_builtin (list)
WORD_LIST *list;
{
register int i;
register char *sep;
int numbering, reverse, listing, execute;
int histbeg, histend, last_hist, retval, opt, rh;
FILE *stream;
REPL *rlist, *rl;
char *ename, *command, *newcom, *fcedit;
HIST_ENTRY **hlist;
char *fn;
numbering = 1;
reverse = listing = execute = 0;
ename = (char *)NULL;
/* Parse out the options and set which of the two forms we're in. */
reset_internal_getopt ();
lcurrent = list; /* XXX */
while (fc_number (loptend = lcurrent) == 0 &&
(opt = internal_getopt (list, ":e:lnrs")) != -1)
{
switch (opt)
{
case 'n':
numbering = 0;
break;
case 'l':
listing = 1;
break;
case 'r':
reverse = 1;
break;
case 's':
execute = 1;
break;
case 'e':
ename = list_optarg;
break;
default:
builtin_usage ();
return (EX_USAGE);
}
}
list = loptend;
if (ename && (*ename == '-') && (ename[1] == '\0'))
execute = 1;
/* The "execute" form of the command (re-run, with possible string
substitutions). */
if (execute)
{
rlist = (REPL *)NULL;
while (list && ((sep = (char *)strchr (list->word->word, '=')) != NULL))
{
*sep++ = '\0';
rl = (REPL *)xmalloc (sizeof (REPL));
rl->next = (REPL *)NULL;
rl->pat = savestring (list->word->word);
rl->rep = savestring (sep);
if (rlist == NULL)
rlist = rl;
else
{
rl->next = rlist;
rlist = rl;
}
list = list->next;
}
/* If we have a list of substitutions to do, then reverse it
to get the replacements in the proper order. */
rlist = REVERSE_LIST (rlist, REPL *);
hlist = history_list ();
/* If we still have something in list, it is a command spec.
Otherwise, we use the most recent command in time. */
command = fc_gethist (list ? list->word->word : (char *)NULL, hlist);
if (command == NULL)
{
builtin_error (_("no command found"));
if (rlist)
FREE_RLIST ();
return (EXECUTION_FAILURE);
}
if (rlist)
{
newcom = fc_dosubs (command, rlist);
free (command);
FREE_RLIST ();
command = newcom;
}
fprintf (stderr, "%s\n", command);
fc_replhist (command); /* replace `fc -s' with command */
/* Posix says that the re-executed commands should be entered into the
history. */
return (parse_and_execute (command, "fc", SEVAL_NOHIST));
}
/* This is the second form of the command (the list-or-edit-and-rerun
form). */
hlist = history_list ();
if (hlist == 0)
return (EXECUTION_SUCCESS);
for (i = 0; hlist[i]; i++);
/* With the Bash implementation of history, the current command line
("fc blah..." and so on) is already part of the history list by
the time we get to this point. This just skips over that command
and makes the last command that this deals with be the last command
the user entered before the fc. We need to check whether the
line was actually added (HISTIGNORE may have caused it to not be),
so we check hist_last_line_added. */
/* Even though command substitution through parse_and_execute turns off
remember_on_history, command substitution in a shell when set -o history
has been enabled (interactive or not) should use it in the last_hist
calculation as if it were. */
rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
last_hist = i - rh - hist_last_line_added;
if (list)
{
histbeg = fc_gethnum (list->word->word, hlist);
list = list->next;
if (list)
histend = fc_gethnum (list->word->word, hlist);
else
histend = listing ? last_hist : histbeg;
}
else
{
/* The default for listing is the last 16 history items. */
if (listing)
{
histend = last_hist;
histbeg = histend - 16 + 1; /* +1 because loop below uses >= */
if (histbeg < 0)
histbeg = 0;
}
else
/* For editing, it is the last history command. */
histbeg = histend = last_hist;
}
/* "When not listing, the fc command that caused the editing shall not be
entered into the history list." */
if (listing == 0 && hist_last_line_added)
{
bash_delete_last_history ();
/* If we're editing a single command -- the last command in the
history -- and we just removed the dummy command added by
edit_and_execute_command (), we need to check whether or not we
just removed the last command in the history and need to back
the pointer up. remember_on_history is off because we're running
in parse_and_execute(). */
if (histbeg == histend && histend == last_hist && hlist[last_hist] == 0)
last_hist = histbeg = --histend;
}
/* We print error messages for line specifications out of range. */
if ((histbeg < 0) || (histend < 0))
{
sh_erange ((char *)NULL, _("history specification"));
return (EXECUTION_FAILURE);
}
if (histend < histbeg)
{
i = histend;
histend = histbeg;
histbeg = i;
reverse = 1;
}
if (listing)
stream = stdout;
else
{
numbering = 0;
stream = sh_mktmpfp ("bash-fc", MT_USERANDOM|MT_USETMPDIR, &fn);
if (stream == 0)
{
builtin_error (_("%s: cannot open temp file: %s"), fn ? fn : "", strerror (errno));
FREE (fn);
return (EXECUTION_FAILURE);
}
}
for (i = reverse ? histend : histbeg; reverse ? i >= histbeg : i <= histend; reverse ? i-- : i++)
{
QUIT;
if (numbering)
fprintf (stream, "%d", i + history_base);
if (listing)
{
if (posixly_correct)
fputs ("\t", stream);
else
fprintf (stream, "\t%c", histdata (i) ? '*' : ' ');
}
fprintf (stream, "%s\n", histline (i));
}
if (listing)
return (sh_chkwrite (EXECUTION_SUCCESS));
fflush (stream);
if (ferror (stream))
{
sh_wrerror ();
fclose (stream);
return (EXECUTION_FAILURE);
}
fclose (stream);
/* Now edit the file of commands. */
if (ename)
{
command = (char *)xmalloc (strlen (ename) + strlen (fn) + 2);
sprintf (command, "%s %s", ename, fn);
}
else
{
fcedit = posixly_correct ? POSIX_FC_EDIT_COMMAND : FC_EDIT_COMMAND;
command = (char *)xmalloc (3 + strlen (fcedit) + strlen (fn));
sprintf (command, "%s %s", fcedit, fn);
}
retval = parse_and_execute (command, "fc", SEVAL_NOHIST);
if (retval != EXECUTION_SUCCESS)
{
unlink (fn);
free (fn);
return (EXECUTION_FAILURE);
}
/* Make sure parse_and_execute doesn't turn this off, even though a
call to parse_and_execute farther up the function call stack (e.g.,
if this is called by vi_edit_and_execute_command) may have already
called bash_history_disable. */
remember_on_history = 1;
/* Turn on the `v' flag while fc_execute_file runs so the commands
will be echoed as they are read by the parser. */
begin_unwind_frame ("fc builtin");
add_unwind_protect ((Function *)xfree, fn);
add_unwind_protect (unlink, fn);
unwind_protect_int (echo_input_at_read);
echo_input_at_read = 1;
retval = fc_execute_file (fn);
run_unwind_frame ("fc builtin");
return (retval);
}
/* Return 1 if LIST->word->word is a legal number for fc's use. */
static int
fc_number (list)
WORD_LIST *list;
{
char *s;
if (list == 0)
return 0;
s = list->word->word;
if (*s == '-')
s++;
return (legal_number (s, (intmax_t *)NULL));
}
/* Return an absolute index into HLIST which corresponds to COMMAND. If
COMMAND is a number, then it was specified in relative terms. If it
is a string, then it is the start of a command line present in HLIST. */
static int
fc_gethnum (command, hlist)
char *command;
HIST_ENTRY **hlist;
{
int sign, n, clen, rh;
register int i, j;
register char *s;
sign = 1;
/* Count history elements. */
for (i = 0; hlist[i]; i++);
/* With the Bash implementation of history, the current command line
("fc blah..." and so on) is already part of the history list by
the time we get to this point. This just skips over that command
and makes the last command that this deals with be the last command
the user entered before the fc. We need to check whether the
line was actually added (HISTIGNORE may have caused it to not be),
so we check hist_last_line_added. This needs to agree with the
calculation of last_hist in fc_builtin above. */
/* Even though command substitution through parse_and_execute turns off
remember_on_history, command substitution in a shell when set -o history
has been enabled (interactive or not) should use it in the last_hist
calculation as if it were. */
rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list);
i -= rh + hist_last_line_added;
/* No specification defaults to most recent command. */
if (command == NULL)
return (i);
/* Otherwise, there is a specification. It can be a number relative to
the current position, or an absolute history number. */
s = command;
/* Handle possible leading minus sign. */
if (s && (*s == '-'))
{
sign = -1;
s++;
}
if (s && DIGIT(*s))
{
n = atoi (s);
n *= sign;
/* If the value is negative or zero, then it is an offset from
the current history item. */
if (n < 0)
{
n += i + 1;
return (n < 0 ? 0 : n);
}
else if (n == 0)
return (i);
else
{
n -= history_base;
return (i < n ? i : n);
}
}
clen = strlen (command);
for (j = i; j >= 0; j--)
{
if (STREQN (command, histline (j), clen))
return (j);
}
return (-1);
}
/* Locate the most recent history line which begins with
COMMAND in HLIST, and return a malloc()'ed copy of it. */
static char *
fc_gethist (command, hlist)
char *command;
HIST_ENTRY **hlist;
{
int i;
if (hlist == 0)
return ((char *)NULL);
i = fc_gethnum (command, hlist);
if (i >= 0)
return (savestring (histline (i)));
else
return ((char *)NULL);
}
#ifdef INCLUDE_UNUSED
/* Read the edited history lines from STREAM and return them
one at a time. This can read unlimited length lines. The
caller should free the storage. */
static char *
fc_readline (stream)
FILE *stream;
{
register int c;
int line_len = 0, lindex = 0;
char *line = (char *)NULL;
while ((c = getc (stream)) != EOF)
{
if ((lindex + 2) >= line_len)
line = (char *)xrealloc (line, (line_len += 128));
if (c == '\n')
{
line[lindex++] = '\n';
line[lindex++] = '\0';
return (line);
}
else
line[lindex++] = c;
}
if (!lindex)
{
if (line)
free (line);
return ((char *)NULL);
}
if (lindex + 2 >= line_len)
line = (char *)xrealloc (line, lindex + 3);
line[lindex++] = '\n'; /* Finish with newline if none in file */
line[lindex++] = '\0';
return (line);
}
#endif
/* Perform the SUBS on COMMAND.
SUBS is a list of substitutions, and COMMAND is a simple string.
Return a pointer to a malloc'ed string which contains the substituted
command. */
static char *
fc_dosubs (command, subs)
char *command;
REPL *subs;
{
register char *new, *t;
register REPL *r;
for (new = savestring (command), r = subs; r; r = r->next)
{
t = strsub (new, r->pat, r->rep, 1);
free (new);
new = t;
}
return (new);
}
/* Use `command' to replace the last entry in the history list, which,
by this time, is `fc blah...'. The intent is that the new command
become the history entry, and that `fc' should never appear in the
history list. This way you can do `r' to your heart's content. */
static void
fc_replhist (command)
char *command;
{
int n;
if (command == 0 || *command == '\0')
return;
n = strlen (command);
if (command[n - 1] == '\n')
command[n - 1] = '\0';
if (command && *command)
{
bash_delete_last_history ();
maybe_add_history (command); /* Obeys HISTCONTROL setting. */
}
}
#ifdef INCLUDE_UNUSED
/* Add LINE to the history, after removing a single trailing newline. */
static void
fc_addhist (line)
char *line;
{
register int n;
if (line == 0 || *line == 0)
return;
n = strlen (line);
if (line[n - 1] == '\n')
line[n - 1] = '\0';
if (line && *line)
maybe_add_history (line); /* Obeys HISTCONTROL setting. */
}
#endif
#endif /* HISTORY */
+104 -191
View File
@@ -1,205 +1,118 @@
*** ../bash-4.0-patched/parse.y 2009-03-08 21:24:47.000000000 -0400
--- parse.y 2009-03-14 20:24:51.000000000 -0400
*** array.c 2009-03-29 17:21:09.000000000 -0400
--- array.c.save3 2009-03-28 18:16:49.000000000 -0400
***************
*** 260,263 ****
--- 260,266 ----
int current_token;
*** 56,59 ****
--- 56,84 ----
static char *array_to_string_internal __P((ARRAY_ELEMENT *, ARRAY_ELEMENT *, char *, int));
+ /* The current parser state. */
+ int parser_state;
+ static ARRAY *lastarray = 0;
+ static ARRAY_ELEMENT *lastref = 0;
+
/* Variables to manage the task of reading here documents, because we need to
defer the reading until after a complete command has been collected. */
***************
*** 284,290 ****
static int arith_for_lineno;
- /* The current parser state. */
- static int parser_state;
-
/* The last read token, or NULL. read_token () uses this for context
checking. */
--- 287,290 ----
***************
*** 1123,1127 ****
REDIRECT *r;
! tc = $1;
rd.dest = 1;
r = make_redirection (2, r_duplicating_output, rd);
--- 1123,1127 ----
REDIRECT *r;
! tc = $1->type == cm_simple ? (COMMAND *)$1->value.Simple : $1;
rd.dest = 1;
r = make_redirection (2, r_duplicating_output, rd);
***************
*** 2397,2401 ****
#define command_token_position(token) \
! (((token) == ASSIGNMENT_WORD) || \
((token) != SEMI_SEMI && (token) != SEMI_AND && (token) != SEMI_SEMI_AND && reserved_word_acceptable(token)))
--- 2397,2401 ----
#define command_token_position(token) \
! (((token) == ASSIGNMENT_WORD) || (parser_state&PST_REDIRLIST) || \
((token) != SEMI_SEMI && (token) != SEMI_AND && (token) != SEMI_SEMI_AND && reserved_word_acceptable(token)))
***************
*** 2968,2972 ****
int retind, retsize, rflags;
! /* itrace("parse_matched_pair: open = %c close = %c flags = %d", open, close, flags); */
count = 1;
tflags = 0;
--- 2968,2972 ----
int retind, retsize, rflags;
! /*itrace("parse_matched_pair: open = %c close = %c flags = %d", open, close, flags); */
count = 1;
tflags = 0;
***************
*** 3263,3266 ****
--- 3263,3283 ----
prompt_again ();
+ /* XXX -- possibly allow here doc to be delimited by ending right
+ paren. */
+ if ((tflags & LEX_INHEREDOC) && ch == close && count == 1)
+ {
+ int tind;
+ /*itrace("parse_comsub: in here doc, ch == close, retind - firstind = %d hdlen = %d retind = %d", retind-lex_firstind, hdlen, retind);*/
+ tind = lex_firstind;
+ while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t')
+ tind++;
+ if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen))
+ {
+ tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC);
+ /*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/
+ lex_firstind = -1;
+ }
+ }
+ #define IS_LASTREF(a) ((a) == lastarray)
+
/* Don't bother counting parens or doing anything else if in a comment */
if (tflags & (LEX_INCOMMENT|LEX_INHEREDOC))
+ #define INVALIDATE_LASTREF(a) \
+ do { \
+ if ((a) == lastarray) { \
+ lastarray = 0; \
+ lastref = 0; \
+ } \
+ } while (0)
+
+ #define SET_LASTREF(a, e) \
+ do { \
+ lastarray = (a); \
+ lastref = (e); \
+ } while (0)
+
+ #define UNSET_LASTREF() \
+ do { \
+ lastarray = 0; \
+ lastref = 0; \
+ } while (0)
+
ARRAY *
array_create()
***************
*** 3271,3275 ****
--- 3288,3295 ----
if ((tflags & LEX_INCOMMENT) && ch == '\n')
+ {
+ /*itrace("parse_comsub:%d: lex_incomment -> 0 ch = `%c'", line_number, ch);*/
tflags &= ~LEX_INCOMMENT;
+ }
continue;
***************
*** 3365,3369 ****
RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
ret[retind++] = peekc;
! /*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch); */
tflags |= LEX_RESWDOK;
lex_rwlen = 0;
--- 3385,3389 ----
RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
ret[retind++] = peekc;
! /*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/
tflags |= LEX_RESWDOK;
lex_rwlen = 0;
***************
*** 3373,3378 ****
{
shell_ungetc (peekc);
- tflags |= LEX_RESWDOK;
/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/
lex_rwlen = 0;
continue;
--- 3393,3398 ----
{
shell_ungetc (peekc);
/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/
+ tflags |= LEX_RESWDOK;
lex_rwlen = 0;
continue;
***************
*** 3404,3413 ****
{
tflags |= LEX_INCASE;
! /*itrace("parse_comsub:%d: found `case', lex_incase -> 1", line_number);*/
*** 88,91 ****
--- 113,117 ----
a->max_index = -1;
a->num_elements = 0;
+ INVALIDATE_LASTREF(a);
}
else if (STREQN (ret + retind - 4, "esac", 4))
{
tflags &= ~LEX_INCASE;
! /*itrace("parse_comsub:%d: found `esac', lex_incase -> 0", line_number);*/
}
tflags &= ~LEX_RESWDOK;
--- 3424,3433 ----
{
tflags |= LEX_INCASE;
! /*itrace("parse_comsub:%d: found `case', lex_incase -> 1 lex_reswdok -> 0", line_number);*/
}
else if (STREQN (ret + retind - 4, "esac", 4))
{
tflags &= ~LEX_INCASE;
! /*itrace("parse_comsub:%d: found `esac', lex_incase -> 0 lex_reswdok -> 0", line_number);*/
}
tflags &= ~LEX_RESWDOK;
***************
*** 3432,3435 ****
--- 3452,3456 ----
*** 186,189 ****
--- 212,216 ----
return ((ARRAY_ELEMENT *)NULL);
+ INVALIDATE_LASTREF(a);
for (i = 0, ret = ae = element_forw(a->head); ae != a->head && i < n; ae = element_forw(ae), i++)
;
***************
*** 264,267 ****
--- 291,295 ----
a->max_index = element_index(a->head->prev);
+ INVALIDATE_LASTREF(a);
return (a->num_elements);
}
***************
*** 595,598 ****
--- 623,627 ----
a->max_index = i;
a->num_elements++;
+ SET_LASTREF(a, new);
return(0);
}
+ /* Might be the start of a here-doc delimiter */
if MBTEST((tflags & LEX_INCOMMENT) == 0 && (tflags & LEX_CKCASE) && ch == '<')
{
***************
*** 3488,3492 ****
--- 3509,3516 ----
*** 608,618 ****
--- 637,650 ----
free(element_value(ae));
ae->value = v ? savestring(v) : (char *)NULL;
+ SET_LASTREF(a, ae);
return(0);
} else if (element_index(ae) > i) {
ADD_BEFORE(ae, new);
a->num_elements++;
+ SET_LASTREF(a, new);
return(0);
}
}
+ INVALIDATE_LASTREF(a);
return (-1); /* problem */
}
else if MBTEST(((flags & P_FIRSTCLOSE) == 0) && (tflags & LEX_INCASE) == 0 && ch == open) /* nested begin */
+ {
count++;
+ /*itrace("parse_comsub:%d: found open: count = %d", line_number, count);*/
+ }
/* Add this character. */
***************
*** 5232,5236 ****
if (interactive && EOF_Reached)
EOF_Reached = 0;
! last_command_exit_value = EX_USAGE;
return;
}
--- 5256,5260 ----
if (interactive && EOF_Reached)
EOF_Reached = 0;
! last_command_exit_value = EX_BADUSAGE;
return;
}
*** 638,641 ****
--- 670,674 ----
if (i == array_max_index(a))
a->max_index = element_index(ae->prev);
+ INVALIDATE_LASTREF(a);
return(ae);
}
***************
*** 5247,5251 ****
print_offending_line ();
! last_command_exit_value = EX_USAGE;
return;
}
--- 5271,5275 ----
print_offending_line ();
! last_command_exit_value = EX_BADUSAGE;
return;
}
***************
*** 5278,5282 ****
}
! last_command_exit_value = EX_USAGE;
*** 655,661 ****
if (a == 0 || array_empty(a))
return((char *) NULL);
! for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae))
! if (element_index(ae) == i)
return(element_value(ae));
return((char *) NULL);
}
--- 5302,5306 ----
}
! last_command_exit_value = EX_BADUSAGE;
--- 688,704 ----
if (a == 0 || array_empty(a))
return((char *) NULL);
! if (i > array_max_index(a))
! return ((char *)NULL);
! /* Keep roving pointer into array to optimize sequential access */
! if (lastref && IS_LASTREF(a))
! ae = (i >= element_index(lastref)) ? lastref : element_forw(a->head);
! else
! ae = element_forw(a->head);
! for ( ; ae != a->head; ae = element_forw(ae))
! if (element_index(ae) == i) {
! SET_LASTREF(a, ae);
return(element_value(ae));
+ }
+ UNSET_LASTREF();
return((char *) NULL);
}
BIN
View File
Binary file not shown.
+126 -126
View File
@@ -1,378 +1,378 @@
@xrdef{Introduction-title}{Introduction}
@xrdef{Introduction-pg}{1}
@xrdef{Introduction-snt}{Chapter@tie 1}
@xrdef{What is Bash?-title}{What is Bash?}
@xrdef{What is Bash?-pg}{1}
@xrdef{What is Bash?-snt}{Section@tie 1.1}
@xrdef{What is a shell?-title}{What is a shell?}
@xrdef{What is a shell?-pg}{1}
@xrdef{What is a shell?-snt}{Section@tie 1.2}
@xrdef{Introduction-pg}{1}
@xrdef{What is Bash?-pg}{1}
@xrdef{What is a shell?-pg}{1}
@xrdef{Definitions-title}{Definitions}
@xrdef{Definitions-pg}{3}
@xrdef{Definitions-snt}{Chapter@tie 2}
@xrdef{Definitions-pg}{3}
@xrdef{Basic Shell Features-title}{Basic Shell Features}
@xrdef{Basic Shell Features-pg}{5}
@xrdef{Basic Shell Features-snt}{Chapter@tie 3}
@xrdef{Shell Syntax-title}{Shell Syntax}
@xrdef{Shell Syntax-pg}{5}
@xrdef{Shell Syntax-snt}{Section@tie 3.1}
@xrdef{Shell Operation-title}{Shell Operation}
@xrdef{Shell Operation-pg}{5}
@xrdef{Shell Operation-snt}{Section@tie 3.1.1}
@xrdef{Quoting-title}{Quoting}
@xrdef{Quoting-pg}{6}
@xrdef{Quoting-snt}{Section@tie 3.1.2}
@xrdef{Basic Shell Features-pg}{5}
@xrdef{Shell Syntax-pg}{5}
@xrdef{Shell Operation-pg}{5}
@xrdef{Escape Character-title}{Escape Character}
@xrdef{Escape Character-pg}{6}
@xrdef{Escape Character-snt}{Section@tie 3.1.2.1}
@xrdef{Single Quotes-title}{Single Quotes}
@xrdef{Single Quotes-pg}{6}
@xrdef{Single Quotes-snt}{Section@tie 3.1.2.2}
@xrdef{Double Quotes-title}{Double Quotes}
@xrdef{Double Quotes-pg}{6}
@xrdef{Double Quotes-snt}{Section@tie 3.1.2.3}
@xrdef{ANSI-C Quoting-title}{ANSI-C Quoting}
@xrdef{ANSI-C Quoting-pg}{6}
@xrdef{ANSI-C Quoting-snt}{Section@tie 3.1.2.4}
@xrdef{Quoting-pg}{6}
@xrdef{Escape Character-pg}{6}
@xrdef{Single Quotes-pg}{6}
@xrdef{Double Quotes-pg}{6}
@xrdef{ANSI-C Quoting-pg}{6}
@xrdef{Locale Translation-title}{Locale-Specific Translation}
@xrdef{Locale Translation-pg}{7}
@xrdef{Locale Translation-snt}{Section@tie 3.1.2.5}
@xrdef{Comments-title}{Comments}
@xrdef{Comments-pg}{7}
@xrdef{Comments-snt}{Section@tie 3.1.3}
@xrdef{Shell Commands-title}{Shell Commands}
@xrdef{Shell Commands-pg}{8}
@xrdef{Shell Commands-snt}{Section@tie 3.2}
@xrdef{Simple Commands-title}{Simple Commands}
@xrdef{Simple Commands-pg}{8}
@xrdef{Simple Commands-snt}{Section@tie 3.2.1}
@xrdef{Locale Translation-pg}{7}
@xrdef{Comments-pg}{7}
@xrdef{Shell Commands-pg}{7}
@xrdef{Pipelines-title}{Pipelines}
@xrdef{Pipelines-pg}{8}
@xrdef{Pipelines-snt}{Section@tie 3.2.2}
@xrdef{Lists-title}{Lists of Commands}
@xrdef{Lists-pg}{9}
@xrdef{Lists-snt}{Section@tie 3.2.3}
@xrdef{Simple Commands-pg}{8}
@xrdef{Pipelines-pg}{8}
@xrdef{Lists-pg}{8}
@xrdef{Compound Commands-title}{Compound Commands}
@xrdef{Compound Commands-pg}{9}
@xrdef{Compound Commands-snt}{Section@tie 3.2.4}
@xrdef{Looping Constructs-title}{Looping Constructs}
@xrdef{Looping Constructs-pg}{10}
@xrdef{Looping Constructs-snt}{Section@tie 3.2.4.1}
@xrdef{Compound Commands-pg}{9}
@xrdef{Looping Constructs-pg}{9}
@xrdef{Conditional Constructs-title}{Conditional Constructs}
@xrdef{Conditional Constructs-pg}{10}
@xrdef{Conditional Constructs-snt}{Section@tie 3.2.4.2}
@xrdef{Conditional Constructs-pg}{10}
@xrdef{Command Grouping-title}{Grouping Commands}
@xrdef{Command Grouping-pg}{13}
@xrdef{Command Grouping-snt}{Section@tie 3.2.4.3}
@xrdef{Coprocesses-title}{Coprocesses}
@xrdef{Coprocesses-pg}{14}
@xrdef{Coprocesses-snt}{Section@tie 3.2.5}
@xrdef{Command Grouping-pg}{13}
@xrdef{Coprocesses-pg}{13}
@xrdef{Shell Functions-title}{Shell Functions}
@xrdef{Shell Functions-pg}{14}
@xrdef{Shell Functions-snt}{Section@tie 3.3}
@xrdef{Shell Functions-pg}{14}
@xrdef{Shell Parameters-title}{Shell Parameters}
@xrdef{Shell Parameters-pg}{16}
@xrdef{Shell Parameters-snt}{Section@tie 3.4}
@xrdef{Shell Parameters-pg}{15}
@xrdef{Positional Parameters-title}{Positional Parameters}
@xrdef{Positional Parameters-pg}{16}
@xrdef{Positional Parameters-snt}{Section@tie 3.4.1}
@xrdef{Special Parameters-title}{Special Parameters}
@xrdef{Special Parameters-pg}{17}
@xrdef{Special Parameters-snt}{Section@tie 3.4.2}
@xrdef{Positional Parameters-pg}{16}
@xrdef{Special Parameters-pg}{16}
@xrdef{Shell Expansions-title}{Shell Expansions}
@xrdef{Shell Expansions-pg}{17}
@xrdef{Shell Expansions-snt}{Section@tie 3.5}
@xrdef{Brace Expansion-title}{Brace Expansion}
@xrdef{Brace Expansion-pg}{18}
@xrdef{Brace Expansion-snt}{Section@tie 3.5.1}
@xrdef{Shell Expansions-pg}{17}
@xrdef{Tilde Expansion-title}{Tilde Expansion}
@xrdef{Tilde Expansion-pg}{19}
@xrdef{Tilde Expansion-snt}{Section@tie 3.5.2}
@xrdef{Brace Expansion-pg}{18}
@xrdef{Tilde Expansion-pg}{18}
@xrdef{Shell Parameter Expansion-title}{Shell Parameter Expansion}
@xrdef{Shell Parameter Expansion-pg}{20}
@xrdef{Shell Parameter Expansion-snt}{Section@tie 3.5.3}
@xrdef{Shell Parameter Expansion-pg}{19}
@xrdef{Command Substitution-title}{Command Substitution}
@xrdef{Command Substitution-pg}{23}
@xrdef{Command Substitution-snt}{Section@tie 3.5.4}
@xrdef{Arithmetic Expansion-title}{Arithmetic Expansion}
@xrdef{Arithmetic Expansion-pg}{23}
@xrdef{Arithmetic Expansion-snt}{Section@tie 3.5.5}
@xrdef{Command Substitution-pg}{22}
@xrdef{Process Substitution-title}{Process Substitution}
@xrdef{Process Substitution-pg}{23}
@xrdef{Process Substitution-snt}{Section@tie 3.5.6}
@xrdef{Word Splitting-title}{Word Splitting}
@xrdef{Word Splitting-pg}{24}
@xrdef{Word Splitting-snt}{Section@tie 3.5.7}
@xrdef{Filename Expansion-title}{Filename Expansion}
@xrdef{Filename Expansion-pg}{24}
@xrdef{Filename Expansion-snt}{Section@tie 3.5.8}
@xrdef{Arithmetic Expansion-pg}{23}
@xrdef{Process Substitution-pg}{23}
@xrdef{Word Splitting-pg}{23}
@xrdef{Pattern Matching-title}{Pattern Matching}
@xrdef{Pattern Matching-pg}{25}
@xrdef{Pattern Matching-snt}{Section@tie 3.5.8.1}
@xrdef{Filename Expansion-pg}{24}
@xrdef{Pattern Matching-pg}{24}
@xrdef{Quote Removal-title}{Quote Removal}
@xrdef{Quote Removal-pg}{26}
@xrdef{Quote Removal-snt}{Section@tie 3.5.9}
@xrdef{Redirections-title}{Redirections}
@xrdef{Redirections-pg}{26}
@xrdef{Redirections-snt}{Section@tie 3.6}
@xrdef{Quote Removal-pg}{25}
@xrdef{Redirections-pg}{25}
@xrdef{Executing Commands-title}{Executing Commands}
@xrdef{Executing Commands-pg}{30}
@xrdef{Executing Commands-snt}{Section@tie 3.7}
@xrdef{Simple Command Expansion-title}{Simple Command Expansion}
@xrdef{Simple Command Expansion-pg}{30}
@xrdef{Simple Command Expansion-snt}{Section@tie 3.7.1}
@xrdef{Command Search and Execution-title}{Command Search and Execution}
@xrdef{Command Search and Execution-pg}{30}
@xrdef{Command Search and Execution-snt}{Section@tie 3.7.2}
@xrdef{Executing Commands-pg}{29}
@xrdef{Simple Command Expansion-pg}{29}
@xrdef{Command Search and Execution-pg}{29}
@xrdef{Command Execution Environment-title}{Command Execution Environment}
@xrdef{Command Execution Environment-pg}{31}
@xrdef{Command Execution Environment-snt}{Section@tie 3.7.3}
@xrdef{Command Execution Environment-pg}{30}
@xrdef{Environment-title}{Environment}
@xrdef{Environment-pg}{32}
@xrdef{Environment-snt}{Section@tie 3.7.4}
@xrdef{Exit Status-title}{Exit Status}
@xrdef{Exit Status-pg}{33}
@xrdef{Exit Status-snt}{Section@tie 3.7.5}
@xrdef{Environment-pg}{31}
@xrdef{Exit Status-pg}{31}
@xrdef{Signals-title}{Signals}
@xrdef{Signals-pg}{33}
@xrdef{Signals-snt}{Section@tie 3.7.6}
@xrdef{Shell Scripts-title}{Shell Scripts}
@xrdef{Shell Scripts-pg}{34}
@xrdef{Shell Scripts-snt}{Section@tie 3.8}
@xrdef{Signals-pg}{32}
@xrdef{Shell Scripts-pg}{33}
@xrdef{Shell Builtin Commands-title}{Shell Builtin Commands}
@xrdef{Shell Builtin Commands-pg}{35}
@xrdef{Shell Builtin Commands-snt}{Chapter@tie 4}
@xrdef{Bourne Shell Builtins-title}{Bourne Shell Builtins}
@xrdef{Bourne Shell Builtins-pg}{35}
@xrdef{Bourne Shell Builtins-snt}{Section@tie 4.1}
@xrdef{Shell Builtin Commands-pg}{35}
@xrdef{Bourne Shell Builtins-pg}{35}
@xrdef{Bash Builtins-title}{Bash Builtin Commands}
@xrdef{Bash Builtins-pg}{41}
@xrdef{Bash Builtins-snt}{Section@tie 4.2}
@xrdef{Bash Builtins-pg}{41}
@xrdef{Modifying Shell Behavior-title}{Modifying Shell Behavior}
@xrdef{Modifying Shell Behavior-pg}{51}
@xrdef{Modifying Shell Behavior-snt}{Section@tie 4.3}
@xrdef{The Set Builtin-title}{The Set Builtin}
@xrdef{The Set Builtin-pg}{51}
@xrdef{The Set Builtin-snt}{Section@tie 4.3.1}
@xrdef{Modifying Shell Behavior-pg}{51}
@xrdef{The Set Builtin-pg}{51}
@xrdef{The Shopt Builtin-title}{The Shopt Builtin}
@xrdef{The Shopt Builtin-pg}{55}
@xrdef{The Shopt Builtin-snt}{Section@tie 4.3.2}
@xrdef{The Shopt Builtin-pg}{55}
@xrdef{Special Builtins-title}{Special Builtins}
@xrdef{Special Builtins-pg}{59}
@xrdef{Special Builtins-snt}{Section@tie 4.4}
@xrdef{Special Builtins-pg}{59}
@xrdef{Shell Variables-title}{Shell Variables}
@xrdef{Shell Variables-pg}{61}
@xrdef{Shell Variables-snt}{Chapter@tie 5}
@xrdef{Bourne Shell Variables-title}{Bourne Shell Variables}
@xrdef{Bourne Shell Variables-pg}{61}
@xrdef{Bourne Shell Variables-snt}{Section@tie 5.1}
@xrdef{Bash Variables-title}{Bash Variables}
@xrdef{Bash Variables-pg}{61}
@xrdef{Bash Variables-snt}{Section@tie 5.2}
@xrdef{Shell Variables-pg}{61}
@xrdef{Bourne Shell Variables-pg}{61}
@xrdef{Bash Variables-pg}{61}
@xrdef{Bash Features-title}{Bash Features}
@xrdef{Bash Features-pg}{71}
@xrdef{Bash Features-snt}{Chapter@tie 6}
@xrdef{Invoking Bash-title}{Invoking Bash}
@xrdef{Invoking Bash-pg}{71}
@xrdef{Invoking Bash-snt}{Section@tie 6.1}
@xrdef{Bash Features-pg}{71}
@xrdef{Invoking Bash-pg}{71}
@xrdef{Bash Startup Files-title}{Bash Startup Files}
@xrdef{Bash Startup Files-pg}{73}
@xrdef{Bash Startup Files-snt}{Section@tie 6.2}
@xrdef{Bash Startup Files-pg}{73}
@xrdef{Interactive Shells-title}{Interactive Shells}
@xrdef{Interactive Shells-pg}{75}
@xrdef{Interactive Shells-snt}{Section@tie 6.3}
@xrdef{What is an Interactive Shell?-title}{What is an Interactive Shell?}
@xrdef{What is an Interactive Shell?-pg}{75}
@xrdef{What is an Interactive Shell?-snt}{Section@tie 6.3.1}
@xrdef{Interactive Shells-pg}{74}
@xrdef{Is this Shell Interactive?-title}{Is this Shell Interactive?}
@xrdef{Is this Shell Interactive?-pg}{75}
@xrdef{Is this Shell Interactive?-snt}{Section@tie 6.3.2}
@xrdef{Interactive Shell Behavior-title}{Interactive Shell Behavior}
@xrdef{Interactive Shell Behavior-pg}{75}
@xrdef{Interactive Shell Behavior-snt}{Section@tie 6.3.3}
@xrdef{What is an Interactive Shell?-pg}{75}
@xrdef{Is this Shell Interactive?-pg}{75}
@xrdef{Interactive Shell Behavior-pg}{75}
@xrdef{Bash Conditional Expressions-title}{Bash Conditional Expressions}
@xrdef{Bash Conditional Expressions-pg}{77}
@xrdef{Bash Conditional Expressions-snt}{Section@tie 6.4}
@xrdef{Bash Conditional Expressions-pg}{76}
@xrdef{Shell Arithmetic-title}{Shell Arithmetic}
@xrdef{Shell Arithmetic-pg}{78}
@xrdef{Shell Arithmetic-snt}{Section@tie 6.5}
@xrdef{Shell Arithmetic-pg}{78}
@xrdef{Aliases-title}{Aliases}
@xrdef{Aliases-pg}{79}
@xrdef{Aliases-snt}{Section@tie 6.6}
@xrdef{Aliases-pg}{79}
@xrdef{Arrays-title}{Arrays}
@xrdef{Arrays-pg}{80}
@xrdef{Arrays-snt}{Section@tie 6.7}
@xrdef{Arrays-pg}{80}
@xrdef{The Directory Stack-title}{The Directory Stack}
@xrdef{The Directory Stack-pg}{81}
@xrdef{The Directory Stack-snt}{Section@tie 6.8}
@xrdef{Directory Stack Builtins-title}{Directory Stack Builtins}
@xrdef{Directory Stack Builtins-pg}{82}
@xrdef{Directory Stack Builtins-snt}{Section@tie 6.8.1}
@xrdef{The Directory Stack-pg}{81}
@xrdef{Directory Stack Builtins-pg}{81}
@xrdef{Printing a Prompt-title}{Controlling the Prompt}
@xrdef{Printing a Prompt-pg}{83}
@xrdef{Printing a Prompt-snt}{Section@tie 6.9}
@xrdef{Printing a Prompt-pg}{82}
@xrdef{The Restricted Shell-title}{The Restricted Shell}
@xrdef{The Restricted Shell-pg}{84}
@xrdef{The Restricted Shell-snt}{Section@tie 6.10}
@xrdef{Bash POSIX Mode-title}{Bash POSIX Mode}
@xrdef{Bash POSIX Mode-pg}{85}
@xrdef{Bash POSIX Mode-snt}{Section@tie 6.11}
@xrdef{The Restricted Shell-pg}{84}
@xrdef{Bash POSIX Mode-pg}{84}
@xrdef{Job Control-title}{Job Control}
@xrdef{Job Control-pg}{89}
@xrdef{Job Control-snt}{Chapter@tie 7}
@xrdef{Job Control Basics-title}{Job Control Basics}
@xrdef{Job Control Basics-pg}{89}
@xrdef{Job Control Basics-snt}{Section@tie 7.1}
@xrdef{Job Control-pg}{87}
@xrdef{Job Control Basics-pg}{87}
@xrdef{Job Control Builtins-title}{Job Control Builtins}
@xrdef{Job Control Builtins-pg}{90}
@xrdef{Job Control Builtins-snt}{Section@tie 7.2}
@xrdef{Job Control Builtins-pg}{88}
@xrdef{Job Control Variables-title}{Job Control Variables}
@xrdef{Job Control Variables-pg}{92}
@xrdef{Job Control Variables-snt}{Section@tie 7.3}
@xrdef{Job Control Variables-pg}{90}
@xrdef{Command Line Editing-title}{Command Line Editing}
@xrdef{Command Line Editing-pg}{93}
@xrdef{Command Line Editing-snt}{Chapter@tie 8}
@xrdef{Introduction and Notation-title}{Introduction to Line Editing}
@xrdef{Introduction and Notation-pg}{93}
@xrdef{Introduction and Notation-snt}{Section@tie 8.1}
@xrdef{Readline Interaction-title}{Readline Interaction}
@xrdef{Readline Interaction-pg}{93}
@xrdef{Readline Interaction-snt}{Section@tie 8.2}
@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials}
@xrdef{Readline Bare Essentials-pg}{94}
@xrdef{Readline Bare Essentials-snt}{Section@tie 8.2.1}
@xrdef{Command Line Editing-pg}{91}
@xrdef{Introduction and Notation-pg}{91}
@xrdef{Readline Interaction-pg}{91}
@xrdef{Readline Movement Commands-title}{Readline Movement Commands}
@xrdef{Readline Movement Commands-pg}{94}
@xrdef{Readline Movement Commands-snt}{Section@tie 8.2.2}
@xrdef{Readline Killing Commands-title}{Readline Killing Commands}
@xrdef{Readline Killing Commands-pg}{95}
@xrdef{Readline Killing Commands-snt}{Section@tie 8.2.3}
@xrdef{Readline Bare Essentials-pg}{92}
@xrdef{Readline Movement Commands-pg}{92}
@xrdef{Readline Arguments-title}{Readline Arguments}
@xrdef{Readline Arguments-pg}{95}
@xrdef{Readline Arguments-snt}{Section@tie 8.2.4}
@xrdef{Searching-title}{Searching for Commands in the History}
@xrdef{Searching-pg}{96}
@xrdef{Searching-snt}{Section@tie 8.2.5}
@xrdef{Readline Killing Commands-pg}{93}
@xrdef{Readline Arguments-pg}{93}
@xrdef{Searching-pg}{93}
@xrdef{Readline Init File-title}{Readline Init File}
@xrdef{Readline Init File-pg}{96}
@xrdef{Readline Init File-snt}{Section@tie 8.3}
@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax}
@xrdef{Readline Init File Syntax-pg}{96}
@xrdef{Readline Init File Syntax-snt}{Section@tie 8.3.1}
@xrdef{Readline Init File-pg}{94}
@xrdef{Readline Init File Syntax-pg}{94}
@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs}
@xrdef{Conditional Init Constructs-pg}{102}
@xrdef{Conditional Init Constructs-snt}{Section@tie 8.3.2}
@xrdef{Sample Init File-title}{Sample Init File}
@xrdef{Sample Init File-pg}{103}
@xrdef{Sample Init File-snt}{Section@tie 8.3.3}
@xrdef{Conditional Init Constructs-pg}{100}
@xrdef{Sample Init File-pg}{100}
@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
@xrdef{Bindable Readline Commands-pg}{106}
@xrdef{Bindable Readline Commands-snt}{Section@tie 8.4}
@xrdef{Commands For Moving-title}{Commands For Moving}
@xrdef{Commands For Moving-pg}{106}
@xrdef{Commands For Moving-snt}{Section@tie 8.4.1}
@xrdef{Commands For History-title}{Commands For Manipulating The History}
@xrdef{Commands For History-pg}{107}
@xrdef{Commands For History-snt}{Section@tie 8.4.2}
@xrdef{Bindable Readline Commands-pg}{103}
@xrdef{Commands For Moving-pg}{103}
@xrdef{Commands For History-pg}{104}
@xrdef{Commands For Text-title}{Commands For Changing Text}
@xrdef{Commands For Text-pg}{108}
@xrdef{Commands For Text-snt}{Section@tie 8.4.3}
@xrdef{Commands For Text-pg}{105}
@xrdef{Commands For Killing-title}{Killing And Yanking}
@xrdef{Commands For Killing-pg}{109}
@xrdef{Commands For Killing-snt}{Section@tie 8.4.4}
@xrdef{Commands For Killing-pg}{106}
@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
@xrdef{Numeric Arguments-pg}{110}
@xrdef{Numeric Arguments-snt}{Section@tie 8.4.5}
@xrdef{Commands For Completion-title}{Letting Readline Type For You}
@xrdef{Commands For Completion-pg}{110}
@xrdef{Commands For Completion-snt}{Section@tie 8.4.6}
@xrdef{Numeric Arguments-pg}{107}
@xrdef{Commands For Completion-pg}{107}
@xrdef{Keyboard Macros-title}{Keyboard Macros}
@xrdef{Keyboard Macros-pg}{112}
@xrdef{Keyboard Macros-snt}{Section@tie 8.4.7}
@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
@xrdef{Miscellaneous Commands-pg}{112}
@xrdef{Miscellaneous Commands-snt}{Section@tie 8.4.8}
@xrdef{Keyboard Macros-pg}{109}
@xrdef{Miscellaneous Commands-pg}{109}
@xrdef{Readline vi Mode-title}{Readline vi Mode}
@xrdef{Readline vi Mode-pg}{114}
@xrdef{Readline vi Mode-snt}{Section@tie 8.5}
@xrdef{Programmable Completion-title}{Programmable Completion}
@xrdef{Programmable Completion-pg}{115}
@xrdef{Programmable Completion-snt}{Section@tie 8.6}
@xrdef{Readline vi Mode-pg}{111}
@xrdef{Programmable Completion-pg}{112}
@xrdef{Programmable Completion Builtins-title}{Programmable Completion Builtins}
@xrdef{Programmable Completion Builtins-pg}{116}
@xrdef{Programmable Completion Builtins-snt}{Section@tie 8.7}
@xrdef{Programmable Completion Builtins-pg}{113}
@xrdef{Using History Interactively-title}{Using History Interactively}
@xrdef{Using History Interactively-pg}{121}
@xrdef{Using History Interactively-snt}{Chapter@tie 9}
@xrdef{Bash History Facilities-title}{Bash History Facilities}
@xrdef{Bash History Facilities-pg}{121}
@xrdef{Bash History Facilities-snt}{Section@tie 9.1}
@xrdef{Bash History Builtins-title}{Bash History Builtins}
@xrdef{Bash History Builtins-pg}{121}
@xrdef{Bash History Builtins-snt}{Section@tie 9.2}
@xrdef{Using History Interactively-pg}{119}
@xrdef{Bash History Facilities-pg}{119}
@xrdef{Bash History Builtins-pg}{119}
@xrdef{History Interaction-title}{History Expansion}
@xrdef{History Interaction-pg}{123}
@xrdef{History Interaction-snt}{Section@tie 9.3}
@xrdef{Event Designators-title}{Event Designators}
@xrdef{Event Designators-pg}{124}
@xrdef{Event Designators-snt}{Section@tie 9.3.1}
@xrdef{History Interaction-pg}{121}
@xrdef{Event Designators-pg}{121}
@xrdef{Word Designators-title}{Word Designators}
@xrdef{Word Designators-pg}{124}
@xrdef{Word Designators-snt}{Section@tie 9.3.2}
@xrdef{Word Designators-pg}{122}
@xrdef{Modifiers-title}{Modifiers}
@xrdef{Modifiers-pg}{125}
@xrdef{Modifiers-snt}{Section@tie 9.3.3}
@xrdef{Modifiers-pg}{123}
@xrdef{Installing Bash-title}{Installing Bash}
@xrdef{Installing Bash-pg}{127}
@xrdef{Installing Bash-snt}{Chapter@tie 10}
@xrdef{Basic Installation-title}{Basic Installation}
@xrdef{Basic Installation-pg}{127}
@xrdef{Basic Installation-snt}{Section@tie 10.1}
@xrdef{Compilers and Options-title}{Compilers and Options}
@xrdef{Compilers and Options-pg}{128}
@xrdef{Compilers and Options-snt}{Section@tie 10.2}
@xrdef{Installing Bash-pg}{125}
@xrdef{Basic Installation-pg}{125}
@xrdef{Compiling For Multiple Architectures-title}{Compiling For Multiple Architectures}
@xrdef{Compiling For Multiple Architectures-pg}{128}
@xrdef{Compiling For Multiple Architectures-snt}{Section@tie 10.3}
@xrdef{Installation Names-title}{Installation Names}
@xrdef{Installation Names-pg}{128}
@xrdef{Installation Names-snt}{Section@tie 10.4}
@xrdef{Specifying the System Type-title}{Specifying the System Type}
@xrdef{Specifying the System Type-pg}{129}
@xrdef{Specifying the System Type-snt}{Section@tie 10.5}
@xrdef{Compilers and Options-pg}{126}
@xrdef{Compiling For Multiple Architectures-pg}{126}
@xrdef{Installation Names-pg}{126}
@xrdef{Specifying the System Type-pg}{126}
@xrdef{Sharing Defaults-title}{Sharing Defaults}
@xrdef{Sharing Defaults-pg}{129}
@xrdef{Sharing Defaults-snt}{Section@tie 10.6}
@xrdef{Operation Controls-title}{Operation Controls}
@xrdef{Operation Controls-pg}{129}
@xrdef{Operation Controls-snt}{Section@tie 10.7}
@xrdef{Optional Features-title}{Optional Features}
@xrdef{Optional Features-pg}{129}
@xrdef{Optional Features-snt}{Section@tie 10.8}
@xrdef{Sharing Defaults-pg}{127}
@xrdef{Operation Controls-pg}{127}
@xrdef{Optional Features-pg}{127}
@xrdef{Reporting Bugs-title}{Reporting Bugs}
@xrdef{Reporting Bugs-pg}{135}
@xrdef{Reporting Bugs-snt}{Appendix@tie @char65{}}
@xrdef{Reporting Bugs-pg}{133}
@xrdef{Major Differences From The Bourne Shell-title}{Major Differences From The Bourne Shell}
@xrdef{Major Differences From The Bourne Shell-pg}{137}
@xrdef{Major Differences From The Bourne Shell-snt}{Appendix@tie @char66{}}
@xrdef{Major Differences From The Bourne Shell-pg}{135}
@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
@xrdef{GNU Free Documentation License-pg}{143}
@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char67{}}
@xrdef{GNU Free Documentation License-pg}{141}
@xrdef{Indexes-title}{Indexes}
@xrdef{Indexes-pg}{151}
@xrdef{Indexes-snt}{Appendix@tie @char68{}}
@xrdef{Builtin Index-title}{Index of Shell Builtin Commands}
@xrdef{Builtin Index-pg}{151}
@xrdef{Builtin Index-snt}{Section@tie @char68.1}
@xrdef{Indexes-pg}{149}
@xrdef{Builtin Index-pg}{149}
@xrdef{Reserved Word Index-title}{Index of Shell Reserved Words}
@xrdef{Reserved Word Index-pg}{152}
@xrdef{Reserved Word Index-snt}{Section@tie @char68.2}
@xrdef{Variable Index-title}{Parameter and Variable Index}
@xrdef{Variable Index-pg}{152}
@xrdef{Variable Index-snt}{Section@tie @char68.3}
@xrdef{Reserved Word Index-pg}{150}
@xrdef{Variable Index-pg}{150}
@xrdef{Function Index-title}{Function Index}
@xrdef{Function Index-pg}{154}
@xrdef{Function Index-snt}{Section@tie @char68.4}
@xrdef{Function Index-pg}{152}
@xrdef{Concept Index-title}{Concept Index}
@xrdef{Concept Index-pg}{156}
@xrdef{Concept Index-snt}{Section@tie @char68.5}
@xrdef{Concept Index-pg}{154}
+14 -14
View File
@@ -6,7 +6,7 @@
\entry{eval}{36}{\code {eval}}
\entry{exec}{36}{\code {exec}}
\entry{exit}{36}{\code {exit}}
\entry{export}{37}{\code {export}}
\entry{export}{36}{\code {export}}
\entry{getopts}{37}{\code {getopts}}
\entry{hash}{37}{\code {hash}}
\entry{pwd}{38}{\code {pwd}}
@@ -42,18 +42,18 @@
\entry{unalias}{50}{\code {unalias}}
\entry{set}{51}{\code {set}}
\entry{shopt}{55}{\code {shopt}}
\entry{dirs}{82}{\code {dirs}}
\entry{dirs}{81}{\code {dirs}}
\entry{popd}{82}{\code {popd}}
\entry{pushd}{82}{\code {pushd}}
\entry{bg}{90}{\code {bg}}
\entry{fg}{90}{\code {fg}}
\entry{jobs}{90}{\code {jobs}}
\entry{kill}{91}{\code {kill}}
\entry{wait}{91}{\code {wait}}
\entry{disown}{91}{\code {disown}}
\entry{suspend}{91}{\code {suspend}}
\entry{compgen}{116}{\code {compgen}}
\entry{complete}{117}{\code {complete}}
\entry{compopt}{120}{\code {compopt}}
\entry{fc}{122}{\code {fc}}
\entry{history}{122}{\code {history}}
\entry{bg}{88}{\code {bg}}
\entry{fg}{88}{\code {fg}}
\entry{jobs}{88}{\code {jobs}}
\entry{kill}{89}{\code {kill}}
\entry{wait}{89}{\code {wait}}
\entry{disown}{89}{\code {disown}}
\entry{suspend}{89}{\code {suspend}}
\entry{compgen}{113}{\code {compgen}}
\entry{complete}{114}{\code {complete}}
\entry{compopt}{116}{\code {compopt}}
\entry{fc}{119}{\code {fc}}
\entry{history}{120}{\code {history}}
+14 -14
View File
@@ -7,7 +7,7 @@
\initial {A}
\entry {\code {alias}}{41}
\initial {B}
\entry {\code {bg}}{90}
\entry {\code {bg}}{88}
\entry {\code {bind}}{41}
\entry {\code {break}}{35}
\entry {\code {builtin}}{43}
@@ -15,34 +15,34 @@
\entry {\code {caller}}{43}
\entry {\code {cd}}{36}
\entry {\code {command}}{43}
\entry {\code {compgen}}{116}
\entry {\code {complete}}{117}
\entry {\code {compopt}}{120}
\entry {\code {compgen}}{113}
\entry {\code {complete}}{114}
\entry {\code {compopt}}{116}
\entry {\code {continue}}{36}
\initial {D}
\entry {\code {declare}}{43}
\entry {\code {dirs}}{82}
\entry {\code {disown}}{91}
\entry {\code {dirs}}{81}
\entry {\code {disown}}{89}
\initial {E}
\entry {\code {echo}}{44}
\entry {\code {enable}}{45}
\entry {\code {eval}}{36}
\entry {\code {exec}}{36}
\entry {\code {exit}}{36}
\entry {\code {export}}{37}
\entry {\code {export}}{36}
\initial {F}
\entry {\code {fc}}{122}
\entry {\code {fg}}{90}
\entry {\code {fc}}{119}
\entry {\code {fg}}{88}
\initial {G}
\entry {\code {getopts}}{37}
\initial {H}
\entry {\code {hash}}{37}
\entry {\code {help}}{46}
\entry {\code {history}}{122}
\entry {\code {history}}{120}
\initial {J}
\entry {\code {jobs}}{90}
\entry {\code {jobs}}{88}
\initial {K}
\entry {\code {kill}}{91}
\entry {\code {kill}}{89}
\initial {L}
\entry {\code {let}}{46}
\entry {\code {local}}{46}
@@ -64,7 +64,7 @@
\entry {\code {shift}}{38}
\entry {\code {shopt}}{55}
\entry {\code {source}}{49}
\entry {\code {suspend}}{91}
\entry {\code {suspend}}{89}
\initial {T}
\entry {\code {test}}{39}
\entry {\code {times}}{40}
@@ -77,4 +77,4 @@
\entry {\code {unalias}}{50}
\entry {\code {unset}}{41}
\initial {W}
\entry {\code {wait}}{91}
\entry {\code {wait}}{89}
+57 -57
View File
@@ -26,58 +26,58 @@
\entry{native languages}{7}{native languages}
\entry{translation, native languages}{7}{translation, native languages}
\entry{comments, shell}{7}{comments, shell}
\entry{commands, shell}{8}{commands, shell}
\entry{commands, shell}{7}{commands, shell}
\entry{commands, simple}{8}{commands, simple}
\entry{pipeline}{8}{pipeline}
\entry{commands, pipelines}{8}{commands, pipelines}
\entry{command timing}{8}{command timing}
\entry{commands, lists}{9}{commands, lists}
\entry{commands, lists}{8}{commands, lists}
\entry{commands, compound}{9}{commands, compound}
\entry{commands, looping}{10}{commands, looping}
\entry{commands, looping}{9}{commands, looping}
\entry{commands, conditional}{10}{commands, conditional}
\entry{commands, grouping}{13}{commands, grouping}
\entry{coprocess}{14}{coprocess}
\entry{coprocess}{13}{coprocess}
\entry{shell function}{14}{shell function}
\entry{functions, shell}{14}{functions, shell}
\entry{parameters}{16}{parameters}
\entry{variable, shell}{16}{variable, shell}
\entry{shell variable}{16}{shell variable}
\entry{parameters}{15}{parameters}
\entry{variable, shell}{15}{variable, shell}
\entry{shell variable}{15}{shell variable}
\entry{parameters, positional}{16}{parameters, positional}
\entry{parameters, special}{17}{parameters, special}
\entry{parameters, special}{16}{parameters, special}
\entry{expansion}{17}{expansion}
\entry{brace expansion}{18}{brace expansion}
\entry{expansion, brace}{18}{expansion, brace}
\entry{tilde expansion}{19}{tilde expansion}
\entry{expansion, tilde}{19}{expansion, tilde}
\entry{parameter expansion}{20}{parameter expansion}
\entry{expansion, parameter}{20}{expansion, parameter}
\entry{command substitution}{23}{command substitution}
\entry{tilde expansion}{18}{tilde expansion}
\entry{expansion, tilde}{18}{expansion, tilde}
\entry{parameter expansion}{19}{parameter expansion}
\entry{expansion, parameter}{19}{expansion, parameter}
\entry{command substitution}{22}{command substitution}
\entry{expansion, arithmetic}{23}{expansion, arithmetic}
\entry{arithmetic expansion}{23}{arithmetic expansion}
\entry{process substitution}{23}{process substitution}
\entry{word splitting}{24}{word splitting}
\entry{word splitting}{23}{word splitting}
\entry{expansion, filename}{24}{expansion, filename}
\entry{expansion, pathname}{24}{expansion, pathname}
\entry{filename expansion}{24}{filename expansion}
\entry{pathname expansion}{24}{pathname expansion}
\entry{pattern matching}{25}{pattern matching}
\entry{matching, pattern}{25}{matching, pattern}
\entry{redirection}{26}{redirection}
\entry{command expansion}{30}{command expansion}
\entry{command execution}{30}{command execution}
\entry{command search}{30}{command search}
\entry{execution environment}{31}{execution environment}
\entry{environment}{32}{environment}
\entry{exit status}{33}{exit status}
\entry{signal handling}{33}{signal handling}
\entry{shell script}{34}{shell script}
\entry{pattern matching}{24}{pattern matching}
\entry{matching, pattern}{24}{matching, pattern}
\entry{redirection}{25}{redirection}
\entry{command expansion}{29}{command expansion}
\entry{command execution}{29}{command execution}
\entry{command search}{29}{command search}
\entry{execution environment}{30}{execution environment}
\entry{environment}{31}{environment}
\entry{exit status}{31}{exit status}
\entry{signal handling}{32}{signal handling}
\entry{shell script}{33}{shell script}
\entry{special builtin}{59}{special builtin}
\entry{login shell}{73}{login shell}
\entry{interactive shell}{73}{interactive shell}
\entry{startup files}{73}{startup files}
\entry{interactive shell}{75}{interactive shell}
\entry{shell, interactive}{75}{shell, interactive}
\entry{expressions, conditional}{77}{expressions, conditional}
\entry{interactive shell}{74}{interactive shell}
\entry{shell, interactive}{74}{shell, interactive}
\entry{expressions, conditional}{76}{expressions, conditional}
\entry{arithmetic, shell}{78}{arithmetic, shell}
\entry{shell arithmetic}{78}{shell arithmetic}
\entry{expressions, arithmetic}{78}{expressions, arithmetic}
@@ -86,33 +86,33 @@
\entry{alias expansion}{79}{alias expansion}
\entry{arrays}{80}{arrays}
\entry{directory stack}{81}{directory stack}
\entry{prompting}{83}{prompting}
\entry{prompting}{82}{prompting}
\entry{restricted shell}{84}{restricted shell}
\entry{POSIX Mode}{85}{POSIX Mode}
\entry{job control}{89}{job control}
\entry{foreground}{89}{foreground}
\entry{background}{89}{background}
\entry{suspending jobs}{89}{suspending jobs}
\entry{Readline, how to use}{92}{Readline, how to use}
\entry{interaction, readline}{93}{interaction, readline}
\entry{notation, readline}{94}{notation, readline}
\entry{command editing}{94}{command editing}
\entry{editing command lines}{94}{editing command lines}
\entry{killing text}{95}{killing text}
\entry{yanking text}{95}{yanking text}
\entry{kill ring}{95}{kill ring}
\entry{initialization file, readline}{96}{initialization file, readline}
\entry{variables, readline}{97}{variables, readline}
\entry{programmable completion}{115}{programmable completion}
\entry{completion builtins}{116}{completion builtins}
\entry{History, how to use}{120}{History, how to use}
\entry{command history}{121}{command history}
\entry{history list}{121}{history list}
\entry{history builtins}{121}{history builtins}
\entry{history expansion}{123}{history expansion}
\entry{event designators}{124}{event designators}
\entry{history events}{124}{history events}
\entry{installation}{127}{installation}
\entry{configuration}{127}{configuration}
\entry{Bash installation}{127}{Bash installation}
\entry{Bash configuration}{127}{Bash configuration}
\entry{POSIX Mode}{84}{POSIX Mode}
\entry{job control}{87}{job control}
\entry{foreground}{87}{foreground}
\entry{background}{87}{background}
\entry{suspending jobs}{87}{suspending jobs}
\entry{Readline, how to use}{90}{Readline, how to use}
\entry{interaction, readline}{91}{interaction, readline}
\entry{notation, readline}{92}{notation, readline}
\entry{command editing}{92}{command editing}
\entry{editing command lines}{92}{editing command lines}
\entry{killing text}{93}{killing text}
\entry{yanking text}{93}{yanking text}
\entry{kill ring}{93}{kill ring}
\entry{initialization file, readline}{94}{initialization file, readline}
\entry{variables, readline}{95}{variables, readline}
\entry{programmable completion}{112}{programmable completion}
\entry{completion builtins}{113}{completion builtins}
\entry{History, how to use}{117}{History, how to use}
\entry{command history}{119}{command history}
\entry{history list}{119}{history list}
\entry{history builtins}{119}{history builtins}
\entry{history expansion}{121}{history expansion}
\entry{event designators}{121}{event designators}
\entry{history events}{121}{history events}
\entry{installation}{125}{installation}
\entry{configuration}{125}{configuration}
\entry{Bash installation}{125}{Bash installation}
\entry{Bash configuration}{125}{Bash configuration}
+57 -57
View File
@@ -5,132 +5,132 @@
\entry {arithmetic, shell}{78}
\entry {arrays}{80}
\initial {B}
\entry {background}{89}
\entry {Bash configuration}{127}
\entry {Bash installation}{127}
\entry {background}{87}
\entry {Bash configuration}{125}
\entry {Bash installation}{125}
\entry {Bourne shell}{5}
\entry {brace expansion}{18}
\entry {builtin}{3}
\initial {C}
\entry {command editing}{94}
\entry {command execution}{30}
\entry {command expansion}{30}
\entry {command history}{121}
\entry {command search}{30}
\entry {command substitution}{23}
\entry {command editing}{92}
\entry {command execution}{29}
\entry {command expansion}{29}
\entry {command history}{119}
\entry {command search}{29}
\entry {command substitution}{22}
\entry {command timing}{8}
\entry {commands, compound}{9}
\entry {commands, conditional}{10}
\entry {commands, grouping}{13}
\entry {commands, lists}{9}
\entry {commands, looping}{10}
\entry {commands, lists}{8}
\entry {commands, looping}{9}
\entry {commands, pipelines}{8}
\entry {commands, shell}{8}
\entry {commands, shell}{7}
\entry {commands, simple}{8}
\entry {comments, shell}{7}
\entry {completion builtins}{116}
\entry {configuration}{127}
\entry {completion builtins}{113}
\entry {configuration}{125}
\entry {control operator}{3}
\entry {coprocess}{14}
\entry {coprocess}{13}
\initial {D}
\entry {directory stack}{81}
\initial {E}
\entry {editing command lines}{94}
\entry {environment}{32}
\entry {editing command lines}{92}
\entry {environment}{31}
\entry {evaluation, arithmetic}{78}
\entry {event designators}{124}
\entry {execution environment}{31}
\entry {exit status}{3, 33}
\entry {event designators}{121}
\entry {execution environment}{30}
\entry {exit status}{3, 31}
\entry {expansion}{17}
\entry {expansion, arithmetic}{23}
\entry {expansion, brace}{18}
\entry {expansion, filename}{24}
\entry {expansion, parameter}{20}
\entry {expansion, parameter}{19}
\entry {expansion, pathname}{24}
\entry {expansion, tilde}{19}
\entry {expansion, tilde}{18}
\entry {expressions, arithmetic}{78}
\entry {expressions, conditional}{77}
\entry {expressions, conditional}{76}
\initial {F}
\entry {field}{3}
\entry {filename}{3}
\entry {filename expansion}{24}
\entry {foreground}{89}
\entry {foreground}{87}
\entry {functions, shell}{14}
\initial {H}
\entry {history builtins}{121}
\entry {history events}{124}
\entry {history expansion}{123}
\entry {history list}{121}
\entry {History, how to use}{120}
\entry {history builtins}{119}
\entry {history events}{121}
\entry {history expansion}{121}
\entry {history list}{119}
\entry {History, how to use}{117}
\initial {I}
\entry {identifier}{3}
\entry {initialization file, readline}{96}
\entry {installation}{127}
\entry {interaction, readline}{93}
\entry {interactive shell}{73, 75}
\entry {initialization file, readline}{94}
\entry {installation}{125}
\entry {interaction, readline}{91}
\entry {interactive shell}{73, 74}
\entry {internationalization}{7}
\initial {J}
\entry {job}{3}
\entry {job control}{3, 89}
\entry {job control}{3, 87}
\initial {K}
\entry {kill ring}{95}
\entry {killing text}{95}
\entry {kill ring}{93}
\entry {killing text}{93}
\initial {L}
\entry {localization}{7}
\entry {login shell}{73}
\initial {M}
\entry {matching, pattern}{25}
\entry {matching, pattern}{24}
\entry {metacharacter}{3}
\initial {N}
\entry {name}{3}
\entry {native languages}{7}
\entry {notation, readline}{94}
\entry {notation, readline}{92}
\initial {O}
\entry {operator, shell}{3}
\initial {P}
\entry {parameter expansion}{20}
\entry {parameters}{16}
\entry {parameter expansion}{19}
\entry {parameters}{15}
\entry {parameters, positional}{16}
\entry {parameters, special}{17}
\entry {parameters, special}{16}
\entry {pathname expansion}{24}
\entry {pattern matching}{25}
\entry {pattern matching}{24}
\entry {pipeline}{8}
\entry {POSIX}{3}
\entry {POSIX Mode}{85}
\entry {POSIX Mode}{84}
\entry {process group}{3}
\entry {process group ID}{3}
\entry {process substitution}{23}
\entry {programmable completion}{115}
\entry {prompting}{83}
\entry {programmable completion}{112}
\entry {prompting}{82}
\initial {Q}
\entry {quoting}{6}
\entry {quoting, ANSI}{6}
\initial {R}
\entry {Readline, how to use}{92}
\entry {redirection}{26}
\entry {Readline, how to use}{90}
\entry {redirection}{25}
\entry {reserved word}{3}
\entry {restricted shell}{84}
\entry {return status}{4}
\initial {S}
\entry {shell arithmetic}{78}
\entry {shell function}{14}
\entry {shell script}{34}
\entry {shell variable}{16}
\entry {shell, interactive}{75}
\entry {shell script}{33}
\entry {shell variable}{15}
\entry {shell, interactive}{74}
\entry {signal}{4}
\entry {signal handling}{33}
\entry {signal handling}{32}
\entry {special builtin}{4, 59}
\entry {startup files}{73}
\entry {suspending jobs}{89}
\entry {suspending jobs}{87}
\initial {T}
\entry {tilde expansion}{19}
\entry {tilde expansion}{18}
\entry {token}{4}
\entry {translation, native languages}{7}
\initial {V}
\entry {variable, shell}{16}
\entry {variables, readline}{97}
\entry {variable, shell}{15}
\entry {variables, readline}{95}
\initial {W}
\entry {word}{4}
\entry {word splitting}{24}
\entry {word splitting}{23}
\initial {Y}
\entry {yanking text}{95}
\entry {yanking text}{93}
BIN
View File
Binary file not shown.
+101 -101
View File
@@ -1,101 +1,101 @@
\entry{beginning-of-line (C-a)}{106}{\code {beginning-of-line (C-a)}}
\entry{end-of-line (C-e)}{106}{\code {end-of-line (C-e)}}
\entry{forward-char (C-f)}{106}{\code {forward-char (C-f)}}
\entry{backward-char (C-b)}{106}{\code {backward-char (C-b)}}
\entry{forward-word (M-f)}{106}{\code {forward-word (M-f)}}
\entry{backward-word (M-b)}{106}{\code {backward-word (M-b)}}
\entry{shell-forward-word ()}{106}{\code {shell-forward-word ()}}
\entry{shell-backward-word ()}{106}{\code {shell-backward-word ()}}
\entry{clear-screen (C-l)}{106}{\code {clear-screen (C-l)}}
\entry{redraw-current-line ()}{107}{\code {redraw-current-line ()}}
\entry{accept-line (Newline or Return)}{107}{\code {accept-line (Newline or Return)}}
\entry{previous-history (C-p)}{107}{\code {previous-history (C-p)}}
\entry{next-history (C-n)}{107}{\code {next-history (C-n)}}
\entry{beginning-of-history (M-<)}{107}{\code {beginning-of-history (M-<)}}
\entry{end-of-history (M->)}{107}{\code {end-of-history (M->)}}
\entry{reverse-search-history (C-r)}{107}{\code {reverse-search-history (C-r)}}
\entry{forward-search-history (C-s)}{107}{\code {forward-search-history (C-s)}}
\entry{non-incremental-reverse-search-history (M-p)}{107}{\code {non-incremental-reverse-search-history (M-p)}}
\entry{non-incremental-forward-search-history (M-n)}{107}{\code {non-incremental-forward-search-history (M-n)}}
\entry{history-search-forward ()}{107}{\code {history-search-forward ()}}
\entry{history-search-backward ()}{107}{\code {history-search-backward ()}}
\entry{yank-nth-arg (M-C-y)}{107}{\code {yank-nth-arg (M-C-y)}}
\entry{yank-last-arg (M-. or M-_)}{108}{\code {yank-last-arg (M-. or M-_)}}
\entry{delete-char (C-d)}{108}{\code {delete-char (C-d)}}
\entry{backward-delete-char (Rubout)}{108}{\code {backward-delete-char (Rubout)}}
\entry{forward-backward-delete-char ()}{108}{\code {forward-backward-delete-char ()}}
\entry{quoted-insert (C-q or C-v)}{108}{\code {quoted-insert (C-q or C-v)}}
\entry{self-insert (a, b, A, 1, !, ...{})}{108}{\code {self-insert (a, b, A, 1, !, \dots {})}}
\entry{transpose-chars (C-t)}{108}{\code {transpose-chars (C-t)}}
\entry{transpose-words (M-t)}{108}{\code {transpose-words (M-t)}}
\entry{upcase-word (M-u)}{108}{\code {upcase-word (M-u)}}
\entry{downcase-word (M-l)}{108}{\code {downcase-word (M-l)}}
\entry{capitalize-word (M-c)}{109}{\code {capitalize-word (M-c)}}
\entry{overwrite-mode ()}{109}{\code {overwrite-mode ()}}
\entry{kill-line (C-k)}{109}{\code {kill-line (C-k)}}
\entry{backward-kill-line (C-x Rubout)}{109}{\code {backward-kill-line (C-x Rubout)}}
\entry{unix-line-discard (C-u)}{109}{\code {unix-line-discard (C-u)}}
\entry{kill-whole-line ()}{109}{\code {kill-whole-line ()}}
\entry{kill-word (M-d)}{109}{\code {kill-word (M-d)}}
\entry{backward-kill-word (M-DEL)}{109}{\code {backward-kill-word (M-\key {DEL})}}
\entry{shell-kill-word ()}{109}{\code {shell-kill-word ()}}
\entry{backward-kill-word ()}{109}{\code {backward-kill-word ()}}
\entry{unix-word-rubout (C-w)}{109}{\code {unix-word-rubout (C-w)}}
\entry{unix-filename-rubout ()}{109}{\code {unix-filename-rubout ()}}
\entry{delete-horizontal-space ()}{110}{\code {delete-horizontal-space ()}}
\entry{kill-region ()}{110}{\code {kill-region ()}}
\entry{copy-region-as-kill ()}{110}{\code {copy-region-as-kill ()}}
\entry{copy-backward-word ()}{110}{\code {copy-backward-word ()}}
\entry{copy-forward-word ()}{110}{\code {copy-forward-word ()}}
\entry{yank (C-y)}{110}{\code {yank (C-y)}}
\entry{yank-pop (M-y)}{110}{\code {yank-pop (M-y)}}
\entry{digit-argument (M-0, M-1, ...{} M--)}{110}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
\entry{universal-argument ()}{110}{\code {universal-argument ()}}
\entry{complete (TAB)}{110}{\code {complete (\key {TAB})}}
\entry{possible-completions (M-?)}{111}{\code {possible-completions (M-?)}}
\entry{insert-completions (M-*)}{111}{\code {insert-completions (M-*)}}
\entry{menu-complete ()}{111}{\code {menu-complete ()}}
\entry{delete-char-or-list ()}{111}{\code {delete-char-or-list ()}}
\entry{complete-filename (M-/)}{111}{\code {complete-filename (M-/)}}
\entry{possible-filename-completions (C-x /)}{111}{\code {possible-filename-completions (C-x /)}}
\entry{complete-username (M-~)}{111}{\code {complete-username (M-~)}}
\entry{possible-username-completions (C-x ~)}{111}{\code {possible-username-completions (C-x ~)}}
\entry{complete-variable (M-$)}{111}{\code {complete-variable (M-$)}}
\entry{possible-variable-completions (C-x $)}{111}{\code {possible-variable-completions (C-x $)}}
\entry{complete-hostname (M-@)}{111}{\code {complete-hostname (M-@)}}
\entry{possible-hostname-completions (C-x @)}{111}{\code {possible-hostname-completions (C-x @)}}
\entry{complete-command (M-!)}{111}{\code {complete-command (M-!)}}
\entry{possible-command-completions (C-x !)}{112}{\code {possible-command-completions (C-x !)}}
\entry{dynamic-complete-history (M-TAB)}{112}{\code {dynamic-complete-history (M-\key {TAB})}}
\entry{dabbrev-expand ()}{112}{\code {dabbrev-expand ()}}
\entry{complete-into-braces (M-{\tt \char 123})}{112}{\code {complete-into-braces (M-{\tt \char 123})}}
\entry{start-kbd-macro (C-x ()}{112}{\code {start-kbd-macro (C-x ()}}
\entry{end-kbd-macro (C-x ))}{112}{\code {end-kbd-macro (C-x ))}}
\entry{call-last-kbd-macro (C-x e)}{112}{\code {call-last-kbd-macro (C-x e)}}
\entry{re-read-init-file (C-x C-r)}{112}{\code {re-read-init-file (C-x C-r)}}
\entry{abort (C-g)}{112}{\code {abort (C-g)}}
\entry{do-uppercase-version (M-a, M-b, M-x, ...{})}{112}{\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}
\entry{prefix-meta (ESC)}{112}{\code {prefix-meta (\key {ESC})}}
\entry{undo (C-_ or C-x C-u)}{112}{\code {undo (C-_ or C-x C-u)}}
\entry{revert-line (M-r)}{113}{\code {revert-line (M-r)}}
\entry{tilde-expand (M-&)}{113}{\code {tilde-expand (M-&)}}
\entry{set-mark (C-@)}{113}{\code {set-mark (C-@)}}
\entry{exchange-point-and-mark (C-x C-x)}{113}{\code {exchange-point-and-mark (C-x C-x)}}
\entry{character-search (C-])}{113}{\code {character-search (C-])}}
\entry{character-search-backward (M-C-])}{113}{\code {character-search-backward (M-C-])}}
\entry{insert-comment (M-#)}{113}{\code {insert-comment (M-#)}}
\entry{dump-functions ()}{113}{\code {dump-functions ()}}
\entry{dump-variables ()}{113}{\code {dump-variables ()}}
\entry{dump-macros ()}{113}{\code {dump-macros ()}}
\entry{glob-complete-word (M-g)}{113}{\code {glob-complete-word (M-g)}}
\entry{glob-expand-word (C-x *)}{114}{\code {glob-expand-word (C-x *)}}
\entry{glob-list-expansions (C-x g)}{114}{\code {glob-list-expansions (C-x g)}}
\entry{display-shell-version (C-x C-v)}{114}{\code {display-shell-version (C-x C-v)}}
\entry{shell-expand-line (M-C-e)}{114}{\code {shell-expand-line (M-C-e)}}
\entry{history-expand-line (M-^)}{114}{\code {history-expand-line (M-^)}}
\entry{magic-space ()}{114}{\code {magic-space ()}}
\entry{alias-expand-line ()}{114}{\code {alias-expand-line ()}}
\entry{history-and-alias-expand-line ()}{114}{\code {history-and-alias-expand-line ()}}
\entry{insert-last-argument (M-. or M-_)}{114}{\code {insert-last-argument (M-. or M-_)}}
\entry{operate-and-get-next (C-o)}{114}{\code {operate-and-get-next (C-o)}}
\entry{edit-and-execute-command (C-xC-e)}{114}{\code {edit-and-execute-command (C-xC-e)}}
\entry{beginning-of-line (C-a)}{103}{\code {beginning-of-line (C-a)}}
\entry{end-of-line (C-e)}{103}{\code {end-of-line (C-e)}}
\entry{forward-char (C-f)}{103}{\code {forward-char (C-f)}}
\entry{backward-char (C-b)}{103}{\code {backward-char (C-b)}}
\entry{forward-word (M-f)}{103}{\code {forward-word (M-f)}}
\entry{backward-word (M-b)}{103}{\code {backward-word (M-b)}}
\entry{shell-forward-word ()}{103}{\code {shell-forward-word ()}}
\entry{shell-backward-word ()}{103}{\code {shell-backward-word ()}}
\entry{clear-screen (C-l)}{103}{\code {clear-screen (C-l)}}
\entry{redraw-current-line ()}{103}{\code {redraw-current-line ()}}
\entry{accept-line (Newline or Return)}{104}{\code {accept-line (Newline or Return)}}
\entry{previous-history (C-p)}{104}{\code {previous-history (C-p)}}
\entry{next-history (C-n)}{104}{\code {next-history (C-n)}}
\entry{beginning-of-history (M-<)}{104}{\code {beginning-of-history (M-<)}}
\entry{end-of-history (M->)}{104}{\code {end-of-history (M->)}}
\entry{reverse-search-history (C-r)}{104}{\code {reverse-search-history (C-r)}}
\entry{forward-search-history (C-s)}{104}{\code {forward-search-history (C-s)}}
\entry{non-incremental-reverse-search-history (M-p)}{104}{\code {non-incremental-reverse-search-history (M-p)}}
\entry{non-incremental-forward-search-history (M-n)}{104}{\code {non-incremental-forward-search-history (M-n)}}
\entry{history-search-forward ()}{104}{\code {history-search-forward ()}}
\entry{history-search-backward ()}{104}{\code {history-search-backward ()}}
\entry{yank-nth-arg (M-C-y)}{104}{\code {yank-nth-arg (M-C-y)}}
\entry{yank-last-arg (M-. or M-_)}{105}{\code {yank-last-arg (M-. or M-_)}}
\entry{delete-char (C-d)}{105}{\code {delete-char (C-d)}}
\entry{backward-delete-char (Rubout)}{105}{\code {backward-delete-char (Rubout)}}
\entry{forward-backward-delete-char ()}{105}{\code {forward-backward-delete-char ()}}
\entry{quoted-insert (C-q or C-v)}{105}{\code {quoted-insert (C-q or C-v)}}
\entry{self-insert (a, b, A, 1, !, ...{})}{105}{\code {self-insert (a, b, A, 1, !, \dots {})}}
\entry{transpose-chars (C-t)}{105}{\code {transpose-chars (C-t)}}
\entry{transpose-words (M-t)}{105}{\code {transpose-words (M-t)}}
\entry{upcase-word (M-u)}{105}{\code {upcase-word (M-u)}}
\entry{downcase-word (M-l)}{105}{\code {downcase-word (M-l)}}
\entry{capitalize-word (M-c)}{106}{\code {capitalize-word (M-c)}}
\entry{overwrite-mode ()}{106}{\code {overwrite-mode ()}}
\entry{kill-line (C-k)}{106}{\code {kill-line (C-k)}}
\entry{backward-kill-line (C-x Rubout)}{106}{\code {backward-kill-line (C-x Rubout)}}
\entry{unix-line-discard (C-u)}{106}{\code {unix-line-discard (C-u)}}
\entry{kill-whole-line ()}{106}{\code {kill-whole-line ()}}
\entry{kill-word (M-d)}{106}{\code {kill-word (M-d)}}
\entry{backward-kill-word (M-DEL)}{106}{\code {backward-kill-word (M-\key {DEL})}}
\entry{shell-kill-word ()}{106}{\code {shell-kill-word ()}}
\entry{backward-kill-word ()}{106}{\code {backward-kill-word ()}}
\entry{unix-word-rubout (C-w)}{106}{\code {unix-word-rubout (C-w)}}
\entry{unix-filename-rubout ()}{106}{\code {unix-filename-rubout ()}}
\entry{delete-horizontal-space ()}{106}{\code {delete-horizontal-space ()}}
\entry{kill-region ()}{107}{\code {kill-region ()}}
\entry{copy-region-as-kill ()}{107}{\code {copy-region-as-kill ()}}
\entry{copy-backward-word ()}{107}{\code {copy-backward-word ()}}
\entry{copy-forward-word ()}{107}{\code {copy-forward-word ()}}
\entry{yank (C-y)}{107}{\code {yank (C-y)}}
\entry{yank-pop (M-y)}{107}{\code {yank-pop (M-y)}}
\entry{digit-argument (M-0, M-1, ...{} M--)}{107}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
\entry{universal-argument ()}{107}{\code {universal-argument ()}}
\entry{complete (TAB)}{107}{\code {complete (\key {TAB})}}
\entry{possible-completions (M-?)}{107}{\code {possible-completions (M-?)}}
\entry{insert-completions (M-*)}{108}{\code {insert-completions (M-*)}}
\entry{menu-complete ()}{108}{\code {menu-complete ()}}
\entry{delete-char-or-list ()}{108}{\code {delete-char-or-list ()}}
\entry{complete-filename (M-/)}{108}{\code {complete-filename (M-/)}}
\entry{possible-filename-completions (C-x /)}{108}{\code {possible-filename-completions (C-x /)}}
\entry{complete-username (M-~)}{108}{\code {complete-username (M-~)}}
\entry{possible-username-completions (C-x ~)}{108}{\code {possible-username-completions (C-x ~)}}
\entry{complete-variable (M-$)}{108}{\code {complete-variable (M-$)}}
\entry{possible-variable-completions (C-x $)}{108}{\code {possible-variable-completions (C-x $)}}
\entry{complete-hostname (M-@)}{108}{\code {complete-hostname (M-@)}}
\entry{possible-hostname-completions (C-x @)}{108}{\code {possible-hostname-completions (C-x @)}}
\entry{complete-command (M-!)}{108}{\code {complete-command (M-!)}}
\entry{possible-command-completions (C-x !)}{108}{\code {possible-command-completions (C-x !)}}
\entry{dynamic-complete-history (M-TAB)}{109}{\code {dynamic-complete-history (M-\key {TAB})}}
\entry{dabbrev-expand ()}{109}{\code {dabbrev-expand ()}}
\entry{complete-into-braces (M-{\tt \char 123})}{109}{\code {complete-into-braces (M-{\tt \char 123})}}
\entry{start-kbd-macro (C-x ()}{109}{\code {start-kbd-macro (C-x ()}}
\entry{end-kbd-macro (C-x ))}{109}{\code {end-kbd-macro (C-x ))}}
\entry{call-last-kbd-macro (C-x e)}{109}{\code {call-last-kbd-macro (C-x e)}}
\entry{re-read-init-file (C-x C-r)}{109}{\code {re-read-init-file (C-x C-r)}}
\entry{abort (C-g)}{109}{\code {abort (C-g)}}
\entry{do-uppercase-version (M-a, M-b, M-x, ...{})}{109}{\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}
\entry{prefix-meta (ESC)}{109}{\code {prefix-meta (\key {ESC})}}
\entry{undo (C-_ or C-x C-u)}{109}{\code {undo (C-_ or C-x C-u)}}
\entry{revert-line (M-r)}{109}{\code {revert-line (M-r)}}
\entry{tilde-expand (M-&)}{109}{\code {tilde-expand (M-&)}}
\entry{set-mark (C-@)}{110}{\code {set-mark (C-@)}}
\entry{exchange-point-and-mark (C-x C-x)}{110}{\code {exchange-point-and-mark (C-x C-x)}}
\entry{character-search (C-])}{110}{\code {character-search (C-])}}
\entry{character-search-backward (M-C-])}{110}{\code {character-search-backward (M-C-])}}
\entry{insert-comment (M-#)}{110}{\code {insert-comment (M-#)}}
\entry{dump-functions ()}{110}{\code {dump-functions ()}}
\entry{dump-variables ()}{110}{\code {dump-variables ()}}
\entry{dump-macros ()}{110}{\code {dump-macros ()}}
\entry{glob-complete-word (M-g)}{110}{\code {glob-complete-word (M-g)}}
\entry{glob-expand-word (C-x *)}{110}{\code {glob-expand-word (C-x *)}}
\entry{glob-list-expansions (C-x g)}{111}{\code {glob-list-expansions (C-x g)}}
\entry{display-shell-version (C-x C-v)}{111}{\code {display-shell-version (C-x C-v)}}
\entry{shell-expand-line (M-C-e)}{111}{\code {shell-expand-line (M-C-e)}}
\entry{history-expand-line (M-^)}{111}{\code {history-expand-line (M-^)}}
\entry{magic-space ()}{111}{\code {magic-space ()}}
\entry{alias-expand-line ()}{111}{\code {alias-expand-line ()}}
\entry{history-and-alias-expand-line ()}{111}{\code {history-and-alias-expand-line ()}}
\entry{insert-last-argument (M-. or M-_)}{111}{\code {insert-last-argument (M-. or M-_)}}
\entry{operate-and-get-next (C-o)}{111}{\code {operate-and-get-next (C-o)}}
\entry{edit-and-execute-command (C-xC-e)}{111}{\code {edit-and-execute-command (C-xC-e)}}
+101 -101
View File
@@ -1,121 +1,121 @@
\initial {A}
\entry {\code {abort (C-g)}}{112}
\entry {\code {accept-line (Newline or Return)}}{107}
\entry {\code {alias-expand-line ()}}{114}
\entry {\code {abort (C-g)}}{109}
\entry {\code {accept-line (Newline or Return)}}{104}
\entry {\code {alias-expand-line ()}}{111}
\initial {B}
\entry {\code {backward-char (C-b)}}{106}
\entry {\code {backward-delete-char (Rubout)}}{108}
\entry {\code {backward-kill-line (C-x Rubout)}}{109}
\entry {\code {backward-kill-word ()}}{109}
\entry {\code {backward-kill-word (M-\key {DEL})}}{109}
\entry {\code {backward-word (M-b)}}{106}
\entry {\code {beginning-of-history (M-<)}}{107}
\entry {\code {beginning-of-line (C-a)}}{106}
\entry {\code {backward-char (C-b)}}{103}
\entry {\code {backward-delete-char (Rubout)}}{105}
\entry {\code {backward-kill-line (C-x Rubout)}}{106}
\entry {\code {backward-kill-word ()}}{106}
\entry {\code {backward-kill-word (M-\key {DEL})}}{106}
\entry {\code {backward-word (M-b)}}{103}
\entry {\code {beginning-of-history (M-<)}}{104}
\entry {\code {beginning-of-line (C-a)}}{103}
\initial {C}
\entry {\code {call-last-kbd-macro (C-x e)}}{112}
\entry {\code {capitalize-word (M-c)}}{109}
\entry {\code {character-search (C-])}}{113}
\entry {\code {character-search-backward (M-C-])}}{113}
\entry {\code {clear-screen (C-l)}}{106}
\entry {\code {complete (\key {TAB})}}{110}
\entry {\code {complete-command (M-!)}}{111}
\entry {\code {complete-filename (M-/)}}{111}
\entry {\code {complete-hostname (M-@)}}{111}
\entry {\code {complete-into-braces (M-{\tt \char 123})}}{112}
\entry {\code {complete-username (M-~)}}{111}
\entry {\code {complete-variable (M-$)}}{111}
\entry {\code {copy-backward-word ()}}{110}
\entry {\code {copy-forward-word ()}}{110}
\entry {\code {copy-region-as-kill ()}}{110}
\entry {\code {call-last-kbd-macro (C-x e)}}{109}
\entry {\code {capitalize-word (M-c)}}{106}
\entry {\code {character-search (C-])}}{110}
\entry {\code {character-search-backward (M-C-])}}{110}
\entry {\code {clear-screen (C-l)}}{103}
\entry {\code {complete (\key {TAB})}}{107}
\entry {\code {complete-command (M-!)}}{108}
\entry {\code {complete-filename (M-/)}}{108}
\entry {\code {complete-hostname (M-@)}}{108}
\entry {\code {complete-into-braces (M-{\tt \char 123})}}{109}
\entry {\code {complete-username (M-~)}}{108}
\entry {\code {complete-variable (M-$)}}{108}
\entry {\code {copy-backward-word ()}}{107}
\entry {\code {copy-forward-word ()}}{107}
\entry {\code {copy-region-as-kill ()}}{107}
\initial {D}
\entry {\code {dabbrev-expand ()}}{112}
\entry {\code {delete-char (C-d)}}{108}
\entry {\code {delete-char-or-list ()}}{111}
\entry {\code {delete-horizontal-space ()}}{110}
\entry {\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{110}
\entry {\code {display-shell-version (C-x C-v)}}{114}
\entry {\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}{112}
\entry {\code {downcase-word (M-l)}}{108}
\entry {\code {dump-functions ()}}{113}
\entry {\code {dump-macros ()}}{113}
\entry {\code {dump-variables ()}}{113}
\entry {\code {dynamic-complete-history (M-\key {TAB})}}{112}
\entry {\code {dabbrev-expand ()}}{109}
\entry {\code {delete-char (C-d)}}{105}
\entry {\code {delete-char-or-list ()}}{108}
\entry {\code {delete-horizontal-space ()}}{106}
\entry {\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{107}
\entry {\code {display-shell-version (C-x C-v)}}{111}
\entry {\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}{109}
\entry {\code {downcase-word (M-l)}}{105}
\entry {\code {dump-functions ()}}{110}
\entry {\code {dump-macros ()}}{110}
\entry {\code {dump-variables ()}}{110}
\entry {\code {dynamic-complete-history (M-\key {TAB})}}{109}
\initial {E}
\entry {\code {edit-and-execute-command (C-xC-e)}}{114}
\entry {\code {end-kbd-macro (C-x ))}}{112}
\entry {\code {end-of-history (M->)}}{107}
\entry {\code {end-of-line (C-e)}}{106}
\entry {\code {exchange-point-and-mark (C-x C-x)}}{113}
\entry {\code {edit-and-execute-command (C-xC-e)}}{111}
\entry {\code {end-kbd-macro (C-x ))}}{109}
\entry {\code {end-of-history (M->)}}{104}
\entry {\code {end-of-line (C-e)}}{103}
\entry {\code {exchange-point-and-mark (C-x C-x)}}{110}
\initial {F}
\entry {\code {forward-backward-delete-char ()}}{108}
\entry {\code {forward-char (C-f)}}{106}
\entry {\code {forward-search-history (C-s)}}{107}
\entry {\code {forward-word (M-f)}}{106}
\entry {\code {forward-backward-delete-char ()}}{105}
\entry {\code {forward-char (C-f)}}{103}
\entry {\code {forward-search-history (C-s)}}{104}
\entry {\code {forward-word (M-f)}}{103}
\initial {G}
\entry {\code {glob-complete-word (M-g)}}{113}
\entry {\code {glob-expand-word (C-x *)}}{114}
\entry {\code {glob-list-expansions (C-x g)}}{114}
\entry {\code {glob-complete-word (M-g)}}{110}
\entry {\code {glob-expand-word (C-x *)}}{110}
\entry {\code {glob-list-expansions (C-x g)}}{111}
\initial {H}
\entry {\code {history-and-alias-expand-line ()}}{114}
\entry {\code {history-expand-line (M-^)}}{114}
\entry {\code {history-search-backward ()}}{107}
\entry {\code {history-search-forward ()}}{107}
\entry {\code {history-and-alias-expand-line ()}}{111}
\entry {\code {history-expand-line (M-^)}}{111}
\entry {\code {history-search-backward ()}}{104}
\entry {\code {history-search-forward ()}}{104}
\initial {I}
\entry {\code {insert-comment (M-#)}}{113}
\entry {\code {insert-completions (M-*)}}{111}
\entry {\code {insert-last-argument (M-. or M-_)}}{114}
\entry {\code {insert-comment (M-#)}}{110}
\entry {\code {insert-completions (M-*)}}{108}
\entry {\code {insert-last-argument (M-. or M-_)}}{111}
\initial {K}
\entry {\code {kill-line (C-k)}}{109}
\entry {\code {kill-region ()}}{110}
\entry {\code {kill-whole-line ()}}{109}
\entry {\code {kill-word (M-d)}}{109}
\entry {\code {kill-line (C-k)}}{106}
\entry {\code {kill-region ()}}{107}
\entry {\code {kill-whole-line ()}}{106}
\entry {\code {kill-word (M-d)}}{106}
\initial {M}
\entry {\code {magic-space ()}}{114}
\entry {\code {menu-complete ()}}{111}
\entry {\code {magic-space ()}}{111}
\entry {\code {menu-complete ()}}{108}
\initial {N}
\entry {\code {next-history (C-n)}}{107}
\entry {\code {non-incremental-forward-search-history (M-n)}}{107}
\entry {\code {non-incremental-reverse-search-history (M-p)}}{107}
\entry {\code {next-history (C-n)}}{104}
\entry {\code {non-incremental-forward-search-history (M-n)}}{104}
\entry {\code {non-incremental-reverse-search-history (M-p)}}{104}
\initial {O}
\entry {\code {operate-and-get-next (C-o)}}{114}
\entry {\code {overwrite-mode ()}}{109}
\entry {\code {operate-and-get-next (C-o)}}{111}
\entry {\code {overwrite-mode ()}}{106}
\initial {P}
\entry {\code {possible-command-completions (C-x !)}}{112}
\entry {\code {possible-completions (M-?)}}{111}
\entry {\code {possible-filename-completions (C-x /)}}{111}
\entry {\code {possible-hostname-completions (C-x @)}}{111}
\entry {\code {possible-username-completions (C-x ~)}}{111}
\entry {\code {possible-variable-completions (C-x $)}}{111}
\entry {\code {prefix-meta (\key {ESC})}}{112}
\entry {\code {previous-history (C-p)}}{107}
\entry {\code {possible-command-completions (C-x !)}}{108}
\entry {\code {possible-completions (M-?)}}{107}
\entry {\code {possible-filename-completions (C-x /)}}{108}
\entry {\code {possible-hostname-completions (C-x @)}}{108}
\entry {\code {possible-username-completions (C-x ~)}}{108}
\entry {\code {possible-variable-completions (C-x $)}}{108}
\entry {\code {prefix-meta (\key {ESC})}}{109}
\entry {\code {previous-history (C-p)}}{104}
\initial {Q}
\entry {\code {quoted-insert (C-q or C-v)}}{108}
\entry {\code {quoted-insert (C-q or C-v)}}{105}
\initial {R}
\entry {\code {re-read-init-file (C-x C-r)}}{112}
\entry {\code {redraw-current-line ()}}{107}
\entry {\code {reverse-search-history (C-r)}}{107}
\entry {\code {revert-line (M-r)}}{113}
\entry {\code {re-read-init-file (C-x C-r)}}{109}
\entry {\code {redraw-current-line ()}}{103}
\entry {\code {reverse-search-history (C-r)}}{104}
\entry {\code {revert-line (M-r)}}{109}
\initial {S}
\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{108}
\entry {\code {set-mark (C-@)}}{113}
\entry {\code {shell-backward-word ()}}{106}
\entry {\code {shell-expand-line (M-C-e)}}{114}
\entry {\code {shell-forward-word ()}}{106}
\entry {\code {shell-kill-word ()}}{109}
\entry {\code {start-kbd-macro (C-x ()}}{112}
\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{105}
\entry {\code {set-mark (C-@)}}{110}
\entry {\code {shell-backward-word ()}}{103}
\entry {\code {shell-expand-line (M-C-e)}}{111}
\entry {\code {shell-forward-word ()}}{103}
\entry {\code {shell-kill-word ()}}{106}
\entry {\code {start-kbd-macro (C-x ()}}{109}
\initial {T}
\entry {\code {tilde-expand (M-&)}}{113}
\entry {\code {transpose-chars (C-t)}}{108}
\entry {\code {transpose-words (M-t)}}{108}
\entry {\code {tilde-expand (M-&)}}{109}
\entry {\code {transpose-chars (C-t)}}{105}
\entry {\code {transpose-words (M-t)}}{105}
\initial {U}
\entry {\code {undo (C-_ or C-x C-u)}}{112}
\entry {\code {universal-argument ()}}{110}
\entry {\code {unix-filename-rubout ()}}{109}
\entry {\code {unix-line-discard (C-u)}}{109}
\entry {\code {unix-word-rubout (C-w)}}{109}
\entry {\code {upcase-word (M-u)}}{108}
\entry {\code {undo (C-_ or C-x C-u)}}{109}
\entry {\code {universal-argument ()}}{107}
\entry {\code {unix-filename-rubout ()}}{106}
\entry {\code {unix-line-discard (C-u)}}{106}
\entry {\code {unix-word-rubout (C-w)}}{106}
\entry {\code {upcase-word (M-u)}}{105}
\initial {Y}
\entry {\code {yank (C-y)}}{110}
\entry {\code {yank-last-arg (M-. or M-_)}}{108}
\entry {\code {yank-nth-arg (M-C-y)}}{107}
\entry {\code {yank-pop (M-y)}}{110}
\entry {\code {yank (C-y)}}{107}
\entry {\code {yank-last-arg (M-. or M-_)}}{105}
\entry {\code {yank-nth-arg (M-C-y)}}{104}
\entry {\code {yank-pop (M-y)}}{107}
+4 -4
View File
@@ -1,6 +1,6 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on March, 10 2009 by texi2html 1.64 -->
<!-- Created on March, 18 2009 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
@@ -1202,7 +1202,7 @@ A list of patterns and an associated command-list is known
as a <VAR>clause</VAR>.
</P><P>
Each clause must be terminated with <SAMP>`;;'</SAMP>, <SAMP>`,&#38;'</SAMP>, or <SAMP>`;;&#38;'</SAMP>.
Each clause must be terminated with <SAMP>`;;'</SAMP>, <SAMP>`;&#38;'</SAMP>, or <SAMP>`;;&#38;'</SAMP>.
The <VAR>word</VAR> undergoes tilde expansion, parameter expansion, command
substitution, arithmetic expansion, and quote removal before matching is
attempted. Each <VAR>pattern</VAR> undergoes tilde expansion, parameter
@@ -15868,7 +15868,7 @@ to permit their use in free software.
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
This document was generated by <I>Chet Ramey</I> on <I>March, 10 2009</I>
This document was generated by <I>Chet Ramey</I> on <I>March, 18 2009</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
@@ -16030,7 +16030,7 @@ the following structure:
<BR>
<FONT SIZE="-1">
This document was generated
by <I>Chet Ramey</I> on <I>March, 10 2009</I>
by <I>Chet Ramey</I> on <I>March, 18 2009</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
+2 -2
View File
@@ -15,7 +15,7 @@ preserved on all copies.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with the Front-Cover texts
being "A GNU Manual", and with the Back-Cover Texts as in (a)
below. A copy of the license is included in the section entitled
@@ -767,7 +767,7 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre
A list of patterns and an associated command-list is known as a
CLAUSE.
Each clause must be terminated with `;;', `,&', or `;;&'. The
Each clause must be terminated with `;;', `;&', or `;;&'. The
WORD undergoes tilde expansion, parameter expansion, command
substitution, arithmetic expansion, and quote removal before
matching is attempted. Each PATTERN undergoes tilde expansion,
+118 -120
View File
@@ -1,7 +1,7 @@
This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 10 MAR 2009 11:44
This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 18 MAR 2009 08:21
**/Users/chet/src/bash/src/doc/bashref.texi
(/Users/chet/src/bash/src/doc/bashref.texi (./texinfo.tex
Loading texinfo [version 2003-02-03.16]: Basics,
Loading texinfo [version 2009-01-18.17]:
\bindingoffset=\dimen16
\normaloffset=\dimen17
\pagewidth=\dimen18
@@ -32,81 +32,94 @@ Loading texinfo [version 2003-02-03.16]: Basics,
\toksD=\toks18
\boxA=\box19
\countA=\count30
\nopdfimagehelp=\toks19
fonts,
\sffam=\fam8
\textleading=\dimen26
\mainmagstep=\count31
\fontdepth=\count32
page headings,
markup,
\fontdepth=\count31
glyphs,
\errorbox=\box20
page headings,
\titlepagetopglue=\skip20
\titlepagebottomglue=\skip21
\evenheadline=\toks19
\oddheadline=\toks20
\evenfootline=\toks21
\oddfootline=\toks22
tables,
\evenheadline=\toks20
\oddheadline=\toks21
\evenfootline=\toks22
\oddfootline=\toks23
tables,
\tableindent=\dimen27
\itemindent=\dimen28
\itemmargin=\dimen29
\itemmax=\dimen30
\itemno=\count33
\itemno=\count32
\multitableparskip=\skip22
\multitableparindent=\skip23
\multitablecolspace=\dimen31
\multitablelinespace=\skip24
\colcount=\count34
\savedfootnotes=\box20
conditionals, indexing,
\secondaryindent=\skip25
\colcount=\count33
\everytab=\toks24
conditionals,
\doignorecount=\count34
indexing,
\whatsitskip=\skip25
\whatsitpenalty=\count35
\secondaryindent=\skip26
\partialpage=\box21
\doublecolumnhsize=\dimen32
sectioning,
\chapno=\count35
\secno=\count36
\subsecno=\count37
\subsubsecno=\count38
\appendixno=\count39
\absseclevel=\count40
\secbase=\count41
\chapheadingskip=\skip26
\secheadingskip=\skip27
\subsecheadingskip=\skip28
\unnumberedno=\count36
\chapno=\count37
\secno=\count38
\subsecno=\count39
\subsubsecno=\count40
\appendixno=\count41
\absseclevel=\count42
\secbase=\count43
\chapheadingskip=\skip27
\secheadingskip=\skip28
\subsecheadingskip=\skip29
toc,
\tocfile=\write0
\contentsrightmargin=\skip29
\savepageno=\count42
\lastnegativepageno=\count43
\shortappendixwidth=\dimen33
\tocindent=\dimen34
\contentsrightmargin=\skip30
\savepageno=\count44
\lastnegativepageno=\count45
\tocindent=\dimen33
environments,
\errorbox=\box22
\lispnarrowing=\skip30
\envskipamount=\skip31
\circthick=\dimen35
\cartouter=\dimen36
\cartinner=\dimen37
\normbskip=\skip32
\normpskip=\skip33
\normlskip=\skip34
\lskip=\skip35
\rskip=\skip36
\lispnarrowing=\skip31
\envskipamount=\skip32
\circthick=\dimen34
\cartouter=\dimen35
\cartinner=\dimen36
\normbskip=\skip33
\normpskip=\skip34
\normlskip=\skip35
\lskip=\skip36
\rskip=\skip37
\nonfillparindent=\dimen37
\tabw=\dimen38
defuns,
\defbodyindent=\skip37
\defargsindent=\skip38
\deflastargmargin=\skip39
\parencount=\count44
defuns,
\defbodyindent=\skip38
\defargsindent=\skip39
\deflastargmargin=\skip40
\defunpenalty=\count46
\parencount=\count47
\brackcount=\count48
macros,
\macscribble=\write1
\paramno=\count45
\macname=\toks23
cross references,
\paramno=\count49
\macname=\toks25
cross references,
\auxfile=\write2
\savesfregister=\count46
\footnoteno=\count47
(/sw/share/texmf-dist/tex/generic/epsf/epsf.tex
\savesfregister=\count50
insertions,
\footnoteno=\count51
\SAVEfootins=\box22
\SAVEmargin=\box23
(/sw/share/texmf-dist/tex/generic/epsf/epsf.tex
\epsffilein=\read0
\epsfframemargin=\dimen39
\epsfframethickness=\dimen40
@@ -116,27 +129,30 @@ cross references,
\epsfxsize=\dimen44
\epsfysize=\dimen45
\pspoints=\dimen46
\epsfnoopenhelp=\toks24
\epsfnoopenhelp=\toks26
)
\noepsfhelp=\toks25
localization,
\nolanghelp=\toks26
\noepsfhelp=\toks27
localization,
\nolanghelp=\toks28
\countUTFx=\count52
\countUTFy=\count53
\countUTFz=\count54
formatting,
\defaultparindent=\dimen47
and turning on texinfo input format.) (./bashref.aux)
and turning on texinfo input format.) (./bashref.aux)
\openout2 = `bashref.aux'.
@cpindfile=@write3
@fnindfile=@write4
@vrindfile=@write5
@tpindfile=@write6
@kyindfile=@write7
@pgindfile=@write8
(./version.texi)
(./version.texi)
@btindfile=@write9
@rwindfile=@write10
[1
\openout2 = `bashref.aux'.
\openout3 = `bashref.cp'.
\openout4 = `bashref.fn'.
@@ -153,11 +169,15 @@ localization,
\openout10 = `bashref.rw'.
] [2] (./bashref.toc [-1] [-2] [-3]) [-4] Chapter 1
]
\openout1 = `bashref.tmp'.
(./bashref.tmp) [2] (./bashref.toc [-1] [-2] [-3]) [-4] Chapter 1
\openout0 = `bashref.toc'.
[1]
Chapter 2 [2] [3] Chapter 3 [4] [5] [6] [7] [8] [9] [10]
Chapter 2
[1] [2] [3] Chapter 3 [4] [5] [6] [7] [8] [9]
Overfull \hbox (43.33539pt too wide) in paragraph at lines 853--853
[]@texttt case @textttsl word @texttt in [ [(] @textttsl pat-tern @texttt [| @
textttsl pat-tern@texttt ][]) @textttsl command-list @texttt ;;][] esac[][]
@@ -170,9 +190,9 @@ textttsl pat-tern@texttt ][]) @textttsl command-list @texttt ;;][] esac[][]
.@texttt s
.etc.
[11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25]
[26] [27] [28] [29] [30] [31] [32] [33] Chapter 4 [34] [35] [36] [37] [38]
[39] [40] [41]
[10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24]
[25] [26] [27] [28] [29] [30] [31] [32] Chapter 4 [33] [34] [35] [36] [37]
[38] [39] [40] [41]
Underfull \hbox (badness 5231) in paragraph at lines 3280--3293
@texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr
m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and
@@ -201,18 +221,18 @@ pt@texttt ] [-t @textttsl time-
[47] [48] [49] [50] [51] [52] [53] [54] [55]
Underfull \hbox (badness 2573) in paragraph at lines 4383--4387
[] []@textrm Error trac-ing is en-abled: com-mand sub-sti-tu-tion, shell
[]@textrm Error trac-ing is en-abled: com-mand sub-sti-tu-tion, shell
@hbox(7.60416+2.12917)x433.62, glue set 2.95305
.@glue(@leftskip) 137.31363
.@hbox(0.0+0.0)x0.0
.@glue 0.0
.@hbox(7.05666+0.0)x0.0, glue set - 15.74411fil
..@glue 0.0 plus 1.0fil minus 1.0fil
..@textrm 6
..@textrm .
..@glue 7.22743
..@kern 7.22743
.@textrm E
.@textrm r
.@textrm r
.etc.
[56] [57] [58] Chapter 5 [59] [60] [61] [62] [63] [64] [65] [66] [67] [68]
@@ -224,9 +244,9 @@ exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
@hbox(7.60416+2.43333)x433.62
.@glue(@leftskip) 28.90755
.@hbox(0.0+0.0)x0.0
.@kern 0.0
.@texttt b
.@texttt a
.@texttt s
.etc.
@@ -269,7 +289,7 @@ the file
.@textrm n
.etc.
[73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]
[73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85]
Underfull \hbox (badness 2521) in paragraph at lines 6539--6542
@textrm `@texttt --enable-strict-posix-default[]@textrm '[] to @texttt configur
e[] @textrm when build-ing (see Sec-tion 10.8
@@ -282,9 +302,9 @@ e[] @textrm when build-ing (see Sec-tion 10.8
.@texttt n
.etc.
Chapter 7 [87] [88] [89] [90] [91]
(/Users/chet/src/bash/src/lib/readline/doc/rluser.texi Chapter 8 [92] [93]
[94] [95] [96] [97] [98]
Chapter 7 [86] [87] [88] [89]
(/Users/chet/src/bash/src/lib/readline/doc/rluser.texi Chapter 8 [90] [91]
[92] [93] [94] [95] [96]
Underfull \hbox (badness 5231) in paragraph at lines 524--540
@texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr
m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and
@@ -297,7 +317,7 @@ m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and
.@texttt c
.etc.
[99] [100] [101] [102] [103]
[97] [98] [99] [100]
Overfull \hbox (26.43913pt too wide) in paragraph at lines 846--846
[]@texttt Meta-Control-h: backward-kill-word Text after the function name is i
gnored[]
@@ -310,8 +330,8 @@ gnored[]
.@texttt t
.etc.
[104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115]
[116] [117]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112]
[113] [114]
Underfull \hbox (badness 2753) in paragraph at lines 1827--1830
@texttt hostname[]@textrm Hostnames, as taken from the file spec-i-fied by
@@ -323,8 +343,9 @@ Underfull \hbox (badness 2753) in paragraph at lines 1827--1830
.@texttt o
.etc.
[118] [119]) (/Users/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9
[120] [121] [122] [123] [124]) Chapter 10 [125] [126] [127] [128] [129]
[115] [116]) (/Users/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9
[117] [118] [119] [120] [121] [122]) Chapter 10 [123] [124] [125] [126]
[127]
Underfull \hbox (badness 2772) in paragraph at lines 7140--7144
[]@textrm Enable sup-port for large files (@texttt http://www.sas.com/standard
s/large_
@@ -337,41 +358,18 @@ s/large_
.@textrm a
.etc.
[130] [131] [132] Appendix A [133] [134] Appendix B [135] [136] [137] [138]
[139] [140] [141] Appendix C [142] (./fdl.texi [143] [144] [145] [146] [147]
[148] [149]) Appendix D [150] (./bashref.bts [151]) (./bashref.rws)
(./bashref.vrs [152] [153]) (./bashref.fns [154] [155]) (./bashref.cps [156])
Overfull \vbox (40.58205pt too high) has occurred while \output is active
\vbox(643.19986+0.0)x433.62
.\glue(\topskip) 0.0
.\hbox(682.0319+1.75)x433.62, glue set 18.01016fil
..\vbox(682.0319+1.75)x207.80492, glue set 1.42673
...\glue(\topskip) 29.75
...\hbox(6.25+0.0)x207.80492, glue set 157.43721fill []
...\glue 0.0 plus 1.0
...\glue(\parskip) 0.0
...\glue(\baselineskip) 4.25
...etc.
..\glue 0.0 plus 1.0fil
..\vbox(682.0319+1.75)x207.80492, glue set 0.0064
...\glue(\splittopskip) 26.12001
...\hbox(9.87999+0.0)x207.80492, glue set 196.73825fil []
...\glue 3.46501 plus 1.05006
...\penalty 10000
...\glue 0.0 plus 1.0
...etc.
.\penalty 10000
.\glue 0.0 plus 1.0fill
[157] [158] )
[128] [129] [130] Appendix A [131] [132] Appendix B [133] [134] [135] [136]
[137] [138] [139] Appendix C [140] (./fdl.texi [141] [142] [143] [144] [145]
[146] [147]) Appendix D [148] (./bashref.bts) [149] (./bashref.rws)
(./bashref.vrs [150] [151]) (./bashref.fns [152] [153]) (./bashref.cps [154])
[155] [156] )
Here is how much of TeX's memory you used:
1735 strings out of 97980
23684 string characters out of 1221004
52957 words of memory out of 1500000
2586 multiletter control sequences out of 10000+50000
31953 words of font info for 111 fonts, out of 1200000 for 2000
19 hyphenation exceptions out of 8191
15i,8n,11p,269b,474s stack positions out of 5000i,500n,6000p,200000b,5000s
2078 strings out of 97980
28503 string characters out of 1221004
64631 words of memory out of 1500000
2894 multiletter control sequences out of 10000+50000
32127 words of font info for 112 fonts, out of 1200000 for 2000
51 hyphenation exceptions out of 8191
16i,6n,14p,315b,699s stack positions out of 5000i,500n,6000p,200000b,5000s
Output written on bashref.dvi (164 pages, 642324 bytes).
Output written on bashref.dvi (162 pages, 653260 bytes).
BIN
View File
Binary file not shown.
+8399 -8603
View File
File diff suppressed because it is too large Load Diff
+11 -11
View File
@@ -1,21 +1,21 @@
\entry{time}{8}{\code {time}}
\entry{!}{8}{\code {!}}
\entry{until}{10}{\code {until}}
\entry{do}{10}{\code {do}}
\entry{done}{10}{\code {done}}
\entry{while}{10}{\code {while}}
\entry{until}{9}{\code {until}}
\entry{do}{9}{\code {do}}
\entry{done}{9}{\code {done}}
\entry{while}{9}{\code {while}}
\entry{for}{10}{\code {for}}
\entry{if}{10}{\code {if}}
\entry{then}{10}{\code {then}}
\entry{else}{10}{\code {else}}
\entry{elif}{10}{\code {elif}}
\entry{fi}{10}{\code {fi}}
\entry{case}{11}{\code {case}}
\entry{in}{11}{\code {in}}
\entry{esac}{11}{\code {esac}}
\entry{select}{12}{\code {select}}
\entry{case}{10}{\code {case}}
\entry{in}{10}{\code {in}}
\entry{esac}{10}{\code {esac}}
\entry{select}{11}{\code {select}}
\entry{[[}{12}{\code {[[}}
\entry{]]}{12}{\code {]]}}
\entry{{\tt \char 123}}{14}{\code {{\tt \char 123}}}
\entry{{\tt \char 125}}{14}{\code {{\tt \char 125}}}
\entry{function}{15}{\code {function}}
\entry{{\tt \char 123}}{13}{\code {{\tt \char 123}}}
\entry{{\tt \char 125}}{13}{\code {{\tt \char 125}}}
\entry{function}{14}{\code {function}}
+11 -11
View File
@@ -5,31 +5,31 @@
\initial {]}
\entry {\code {]]}}{12}
\initial {{\tt \char 123}}
\entry {\code {{\tt \char 123}}}{14}
\entry {\code {{\tt \char 123}}}{13}
\initial {{\tt \char 125}}
\entry {\code {{\tt \char 125}}}{14}
\entry {\code {{\tt \char 125}}}{13}
\initial {C}
\entry {\code {case}}{11}
\entry {\code {case}}{10}
\initial {D}
\entry {\code {do}}{10}
\entry {\code {done}}{10}
\entry {\code {do}}{9}
\entry {\code {done}}{9}
\initial {E}
\entry {\code {elif}}{10}
\entry {\code {else}}{10}
\entry {\code {esac}}{11}
\entry {\code {esac}}{10}
\initial {F}
\entry {\code {fi}}{10}
\entry {\code {for}}{10}
\entry {\code {function}}{15}
\entry {\code {function}}{14}
\initial {I}
\entry {\code {if}}{10}
\entry {\code {in}}{11}
\entry {\code {in}}{10}
\initial {S}
\entry {\code {select}}{12}
\entry {\code {select}}{11}
\initial {T}
\entry {\code {then}}{10}
\entry {\code {time}}{8}
\initial {U}
\entry {\code {until}}{10}
\entry {\code {until}}{9}
\initial {W}
\entry {\code {while}}{10}
\entry {\code {while}}{9}
+1 -1
View File
@@ -24,7 +24,7 @@ are preserved on all copies.
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
and with the Back-Cover Texts as in (a) below. A copy of the license is
+28
View File
@@ -0,0 +1,28 @@
This text is a brief description of the features that are present in
the Bash shell (version @value{VERSION}, @value{UPDATED}).
This is Edition @value{EDITION}, last updated @value{UPDATED},
of @cite{The GNU Bash Reference Manual},
for @code{Bash}, Version @value{VERSION}.
Copyright @copyright{} 1988--2009 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
and with the Back-Cover Texts as in (a) below. A copy of the license is
included in the section entitled ``GNU Free Documentation License''.
(a) The FSF's Back-Cover Text is: You are free to copy and modify
this GNU manual. Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''
@end quotation
@endinput
+137 -137
View File
@@ -1,137 +1,137 @@
\chapentry{Introduction}{1}{1}
\secentry{What is Bash?}{1}{1}{1}
\secentry{What is a shell?}{1}{2}{1}
\chapentry{Definitions}{2}{3}
\chapentry{Basic Shell Features}{3}{5}
\secentry{Shell Syntax}{3}{1}{5}
\subsecentry{Shell Operation}{3}{1}{1}{5}
\subsecentry{Quoting}{3}{1}{2}{5}
\subsubsecentry{Escape Character}{3}{1}{2}{1}{6}
\subsubsecentry{Single Quotes}{3}{1}{2}{2}{6}
\subsubsecentry{Double Quotes}{3}{1}{2}{3}{6}
\subsubsecentry{ANSI-C Quoting}{3}{1}{2}{4}{6}
\subsubsecentry{Locale-Specific Translation}{3}{1}{2}{5}{7}
\subsecentry{Comments}{3}{1}{3}{7}
\secentry{Shell Commands}{3}{2}{7}
\subsecentry{Simple Commands}{3}{2}{1}{8}
\subsecentry{Pipelines}{3}{2}{2}{8}
\subsecentry{Lists of Commands}{3}{2}{3}{9}
\subsecentry{Compound Commands}{3}{2}{4}{9}
\subsubsecentry{Looping Constructs}{3}{2}{4}{1}{9}
\subsubsecentry{Conditional Constructs}{3}{2}{4}{2}{10}
\subsubsecentry{Grouping Commands}{3}{2}{4}{3}{13}
\subsecentry{Coprocesses}{3}{2}{5}{14}
\secentry{Shell Functions}{3}{3}{14}
\secentry{Shell Parameters}{3}{4}{16}
\subsecentry{Positional Parameters}{3}{4}{1}{16}
\subsecentry{Special Parameters}{3}{4}{2}{16}
\secentry{Shell Expansions}{3}{5}{17}
\subsecentry{Brace Expansion}{3}{5}{1}{18}
\subsecentry{Tilde Expansion}{3}{5}{2}{19}
\subsecentry{Shell Parameter Expansion}{3}{5}{3}{20}
\subsecentry{Command Substitution}{3}{5}{4}{22}
\subsecentry{Arithmetic Expansion}{3}{5}{5}{23}
\subsecentry{Process Substitution}{3}{5}{6}{23}
\subsecentry{Word Splitting}{3}{5}{7}{24}
\subsecentry{Filename Expansion}{3}{5}{8}{24}
\subsubsecentry{Pattern Matching}{3}{5}{8}{1}{25}
\subsecentry{Quote Removal}{3}{5}{9}{26}
\secentry{Redirections}{3}{6}{26}
\subsecentry{Redirecting Input}{3}{6}{1}{27}
\subsecentry{Redirecting Output}{3}{6}{2}{27}
\subsecentry{Appending Redirected Output}{3}{6}{3}{27}
\subsecentry{Redirecting Standard Output and Standard Error}{3}{6}{4}{28}
\subsecentry{Appending Standard Output and Standard Error}{3}{6}{5}{28}
\subsecentry{Here Documents}{3}{6}{6}{28}
\subsecentry{Here Strings}{3}{6}{7}{29}
\subsecentry{Duplicating File Descriptors}{3}{6}{8}{29}
\subsecentry{Moving File Descriptors}{3}{6}{9}{29}
\subsecentry{Opening File Descriptors for Reading and Writing}{3}{6}{10}{29}
\secentry{Executing Commands}{3}{7}{30}
\subsecentry{Simple Command Expansion}{3}{7}{1}{30}
\subsecentry{Command Search and Execution}{3}{7}{2}{30}
\subsecentry{Command Execution Environment}{3}{7}{3}{31}
\subsecentry{Environment}{3}{7}{4}{32}
\subsecentry{Exit Status}{3}{7}{5}{32}
\subsecentry{Signals}{3}{7}{6}{33}
\secentry{Shell Scripts}{3}{8}{34}
\chapentry{Shell Builtin Commands}{4}{35}
\secentry{Bourne Shell Builtins}{4}{1}{35}
\secentry{Bash Builtin Commands}{4}{2}{41}
\secentry{Modifying Shell Behavior}{4}{3}{50}
\subsecentry{The Set Builtin}{4}{3}{1}{50}
\subsecentry{The Shopt Builtin}{4}{3}{2}{54}
\secentry{Special Builtins}{4}{4}{59}
\chapentry{Shell Variables}{5}{61}
\secentry{Bourne Shell Variables}{5}{1}{61}
\secentry{Bash Variables}{5}{2}{61}
\chapentry{Bash Features}{6}{71}
\secentry{Invoking Bash}{6}{1}{71}
\secentry{Bash Startup Files}{6}{2}{73}
\secentry{Interactive Shells}{6}{3}{75}
\subsecentry{What is an Interactive Shell?}{6}{3}{1}{75}
\subsecentry{Is this Shell Interactive?}{6}{3}{2}{75}
\subsecentry{Interactive Shell Behavior}{6}{3}{3}{75}
\secentry{Bash Conditional Expressions}{6}{4}{76}
\secentry{Shell Arithmetic}{6}{5}{78}
\secentry{Aliases}{6}{6}{79}
\secentry{Arrays}{6}{7}{80}
\secentry{The Directory Stack}{6}{8}{81}
\subsecentry{Directory Stack Builtins}{6}{8}{1}{82}
\secentry{Controlling the Prompt}{6}{9}{83}
\secentry{The Restricted Shell}{6}{10}{84}
\secentry{Bash POSIX Mode}{6}{11}{85}
\chapentry{Job Control}{7}{89}
\secentry{Job Control Basics}{7}{1}{89}
\secentry{Job Control Builtins}{7}{2}{90}
\secentry{Job Control Variables}{7}{3}{92}
\chapentry{Command Line Editing}{8}{93}
\secentry{Introduction to Line Editing}{8}{1}{93}
\secentry{Readline Interaction}{8}{2}{93}
\subsecentry{Readline Bare Essentials}{8}{2}{1}{93}
\subsecentry{Readline Movement Commands}{8}{2}{2}{94}
\subsecentry{Readline Killing Commands}{8}{2}{3}{94}
\subsecentry{Readline Arguments}{8}{2}{4}{95}
\subsecentry{Searching for Commands in the History}{8}{2}{5}{95}
\secentry{Readline Init File}{8}{3}{96}
\subsecentry{Readline Init File Syntax}{8}{3}{1}{96}
\subsecentry{Conditional Init Constructs}{8}{3}{2}{102}
\subsecentry{Sample Init File}{8}{3}{3}{103}
\secentry{Bindable Readline Commands}{8}{4}{106}
\subsecentry{Commands For Moving}{8}{4}{1}{106}
\subsecentry{Commands For Manipulating The History}{8}{4}{2}{107}
\subsecentry{Commands For Changing Text}{8}{4}{3}{108}
\subsecentry{Killing And Yanking}{8}{4}{4}{109}
\subsecentry{Specifying Numeric Arguments}{8}{4}{5}{110}
\subsecentry{Letting Readline Type For You}{8}{4}{6}{110}
\subsecentry{Keyboard Macros}{8}{4}{7}{112}
\subsecentry{Some Miscellaneous Commands}{8}{4}{8}{112}
\secentry{Readline vi Mode}{8}{5}{114}
\secentry{Programmable Completion}{8}{6}{115}
\secentry{Programmable Completion Builtins}{8}{7}{116}
\chapentry{Using History Interactively}{9}{121}
\secentry{Bash History Facilities}{9}{1}{121}
\secentry{Bash History Builtins}{9}{2}{121}
\secentry{History Expansion}{9}{3}{123}
\subsecentry{Event Designators}{9}{3}{1}{123}
\subsecentry{Word Designators}{9}{3}{2}{124}
\subsecentry{Modifiers}{9}{3}{3}{125}
\chapentry{Installing Bash}{10}{127}
\secentry{Basic Installation}{10}{1}{127}
\secentry{Compilers and Options}{10}{2}{127}
\secentry{Compiling For Multiple Architectures}{10}{3}{128}
\secentry{Installation Names}{10}{4}{128}
\secentry{Specifying the System Type}{10}{5}{128}
\secentry{Sharing Defaults}{10}{6}{129}
\secentry{Operation Controls}{10}{7}{129}
\secentry{Optional Features}{10}{8}{129}
\appendixentry{Reporting Bugs}{A}{135}
\appendixentry{Major Differences From The Bourne Shell}{B}{137}
\secentry{Implementation Differences From The SVR4.2 Shell}{B}{1}{141}
\appendixentry{GNU Free Documentation License}{C}{143}
\appendixentry{Indexes}{D}{151}
\secentry{Index of Shell Builtin Commands}{D}{1}{151}
\secentry{Index of Shell Reserved Words}{D}{2}{152}
\secentry{Parameter and Variable Index}{D}{3}{152}
\secentry{Function Index}{D}{4}{154}
\secentry{Concept Index}{D}{5}{156}
@numchapentry{Introduction}{1}{Introduction}{1}
@numsecentry{What is Bash?}{1.1}{What is Bash?}{1}
@numsecentry{What is a shell?}{1.2}{What is a shell?}{1}
@numchapentry{Definitions}{2}{Definitions}{3}
@numchapentry{Basic Shell Features}{3}{Basic Shell Features}{5}
@numsecentry{Shell Syntax}{3.1}{Shell Syntax}{5}
@numsubsecentry{Shell Operation}{3.1.1}{Shell Operation}{5}
@numsubsecentry{Quoting}{3.1.2}{Quoting}{6}
@numsubsubsecentry{Escape Character}{3.1.2.1}{Escape Character}{6}
@numsubsubsecentry{Single Quotes}{3.1.2.2}{Single Quotes}{6}
@numsubsubsecentry{Double Quotes}{3.1.2.3}{Double Quotes}{6}
@numsubsubsecentry{ANSI-C Quoting}{3.1.2.4}{ANSI-C Quoting}{6}
@numsubsubsecentry{Locale-Specific Translation}{3.1.2.5}{Locale Translation}{7}
@numsubsecentry{Comments}{3.1.3}{Comments}{7}
@numsecentry{Shell Commands}{3.2}{Shell Commands}{7}
@numsubsecentry{Simple Commands}{3.2.1}{Simple Commands}{8}
@numsubsecentry{Pipelines}{3.2.2}{Pipelines}{8}
@numsubsecentry{Lists of Commands}{3.2.3}{Lists}{8}
@numsubsecentry{Compound Commands}{3.2.4}{Compound Commands}{9}
@numsubsubsecentry{Looping Constructs}{3.2.4.1}{Looping Constructs}{9}
@numsubsubsecentry{Conditional Constructs}{3.2.4.2}{Conditional Constructs}{10}
@numsubsubsecentry{Grouping Commands}{3.2.4.3}{Command Grouping}{13}
@numsubsecentry{Coprocesses}{3.2.5}{Coprocesses}{13}
@numsecentry{Shell Functions}{3.3}{Shell Functions}{14}
@numsecentry{Shell Parameters}{3.4}{Shell Parameters}{15}
@numsubsecentry{Positional Parameters}{3.4.1}{Positional Parameters}{16}
@numsubsecentry{Special Parameters}{3.4.2}{Special Parameters}{16}
@numsecentry{Shell Expansions}{3.5}{Shell Expansions}{17}
@numsubsecentry{Brace Expansion}{3.5.1}{Brace Expansion}{18}
@numsubsecentry{Tilde Expansion}{3.5.2}{Tilde Expansion}{18}
@numsubsecentry{Shell Parameter Expansion}{3.5.3}{Shell Parameter Expansion}{19}
@numsubsecentry{Command Substitution}{3.5.4}{Command Substitution}{22}
@numsubsecentry{Arithmetic Expansion}{3.5.5}{Arithmetic Expansion}{23}
@numsubsecentry{Process Substitution}{3.5.6}{Process Substitution}{23}
@numsubsecentry{Word Splitting}{3.5.7}{Word Splitting}{23}
@numsubsecentry{Filename Expansion}{3.5.8}{Filename Expansion}{24}
@numsubsubsecentry{Pattern Matching}{3.5.8.1}{Pattern Matching}{24}
@numsubsecentry{Quote Removal}{3.5.9}{Quote Removal}{25}
@numsecentry{Redirections}{3.6}{Redirections}{25}
@numsubsecentry{Redirecting Input}{3.6.1}{}{26}
@numsubsecentry{Redirecting Output}{3.6.2}{}{27}
@numsubsecentry{Appending Redirected Output}{3.6.3}{}{27}
@numsubsecentry{Redirecting Standard Output and Standard Error}{3.6.4}{}{27}
@numsubsecentry{Appending Standard Output and Standard Error}{3.6.5}{}{27}
@numsubsecentry{Here Documents}{3.6.6}{}{27}
@numsubsecentry{Here Strings}{3.6.7}{}{28}
@numsubsecentry{Duplicating File Descriptors}{3.6.8}{}{28}
@numsubsecentry{Moving File Descriptors}{3.6.9}{}{28}
@numsubsecentry{Opening File Descriptors for Reading and Writing}{3.6.10}{}{29}
@numsecentry{Executing Commands}{3.7}{Executing Commands}{29}
@numsubsecentry{Simple Command Expansion}{3.7.1}{Simple Command Expansion}{29}
@numsubsecentry{Command Search and Execution}{3.7.2}{Command Search and Execution}{29}
@numsubsecentry{Command Execution Environment}{3.7.3}{Command Execution Environment}{30}
@numsubsecentry{Environment}{3.7.4}{Environment}{31}
@numsubsecentry{Exit Status}{3.7.5}{Exit Status}{31}
@numsubsecentry{Signals}{3.7.6}{Signals}{32}
@numsecentry{Shell Scripts}{3.8}{Shell Scripts}{33}
@numchapentry{Shell Builtin Commands}{4}{Shell Builtin Commands}{35}
@numsecentry{Bourne Shell Builtins}{4.1}{Bourne Shell Builtins}{35}
@numsecentry{Bash Builtin Commands}{4.2}{Bash Builtins}{41}
@numsecentry{Modifying Shell Behavior}{4.3}{Modifying Shell Behavior}{51}
@numsubsecentry{The Set Builtin}{4.3.1}{The Set Builtin}{51}
@numsubsecentry{The Shopt Builtin}{4.3.2}{The Shopt Builtin}{55}
@numsecentry{Special Builtins}{4.4}{Special Builtins}{59}
@numchapentry{Shell Variables}{5}{Shell Variables}{61}
@numsecentry{Bourne Shell Variables}{5.1}{Bourne Shell Variables}{61}
@numsecentry{Bash Variables}{5.2}{Bash Variables}{61}
@numchapentry{Bash Features}{6}{Bash Features}{71}
@numsecentry{Invoking Bash}{6.1}{Invoking Bash}{71}
@numsecentry{Bash Startup Files}{6.2}{Bash Startup Files}{73}
@numsecentry{Interactive Shells}{6.3}{Interactive Shells}{74}
@numsubsecentry{What is an Interactive Shell?}{6.3.1}{What is an Interactive Shell?}{75}
@numsubsecentry{Is this Shell Interactive?}{6.3.2}{Is this Shell Interactive?}{75}
@numsubsecentry{Interactive Shell Behavior}{6.3.3}{Interactive Shell Behavior}{75}
@numsecentry{Bash Conditional Expressions}{6.4}{Bash Conditional Expressions}{76}
@numsecentry{Shell Arithmetic}{6.5}{Shell Arithmetic}{78}
@numsecentry{Aliases}{6.6}{Aliases}{79}
@numsecentry{Arrays}{6.7}{Arrays}{80}
@numsecentry{The Directory Stack}{6.8}{The Directory Stack}{81}
@numsubsecentry{Directory Stack Builtins}{6.8.1}{Directory Stack Builtins}{81}
@numsecentry{Controlling the Prompt}{6.9}{Printing a Prompt}{82}
@numsecentry{The Restricted Shell}{6.10}{The Restricted Shell}{84}
@numsecentry{Bash POSIX Mode}{6.11}{Bash POSIX Mode}{84}
@numchapentry{Job Control}{7}{Job Control}{87}
@numsecentry{Job Control Basics}{7.1}{Job Control Basics}{87}
@numsecentry{Job Control Builtins}{7.2}{Job Control Builtins}{88}
@numsecentry{Job Control Variables}{7.3}{Job Control Variables}{90}
@numchapentry{Command Line Editing}{8}{Command Line Editing}{91}
@numsecentry{Introduction to Line Editing}{8.1}{Introduction and Notation}{91}
@numsecentry{Readline Interaction}{8.2}{Readline Interaction}{91}
@numsubsecentry{Readline Bare Essentials}{8.2.1}{Readline Bare Essentials}{92}
@numsubsecentry{Readline Movement Commands}{8.2.2}{Readline Movement Commands}{92}
@numsubsecentry{Readline Killing Commands}{8.2.3}{Readline Killing Commands}{93}
@numsubsecentry{Readline Arguments}{8.2.4}{Readline Arguments}{93}
@numsubsecentry{Searching for Commands in the History}{8.2.5}{Searching}{93}
@numsecentry{Readline Init File}{8.3}{Readline Init File}{94}
@numsubsecentry{Readline Init File Syntax}{8.3.1}{Readline Init File Syntax}{94}
@numsubsecentry{Conditional Init Constructs}{8.3.2}{Conditional Init Constructs}{100}
@numsubsecentry{Sample Init File}{8.3.3}{Sample Init File}{100}
@numsecentry{Bindable Readline Commands}{8.4}{Bindable Readline Commands}{103}
@numsubsecentry{Commands For Moving}{8.4.1}{Commands For Moving}{103}
@numsubsecentry{Commands For Manipulating The History}{8.4.2}{Commands For History}{104}
@numsubsecentry{Commands For Changing Text}{8.4.3}{Commands For Text}{105}
@numsubsecentry{Killing And Yanking}{8.4.4}{Commands For Killing}{106}
@numsubsecentry{Specifying Numeric Arguments}{8.4.5}{Numeric Arguments}{107}
@numsubsecentry{Letting Readline Type For You}{8.4.6}{Commands For Completion}{107}
@numsubsecentry{Keyboard Macros}{8.4.7}{Keyboard Macros}{109}
@numsubsecentry{Some Miscellaneous Commands}{8.4.8}{Miscellaneous Commands}{109}
@numsecentry{Readline vi Mode}{8.5}{Readline vi Mode}{111}
@numsecentry{Programmable Completion}{8.6}{Programmable Completion}{112}
@numsecentry{Programmable Completion Builtins}{8.7}{Programmable Completion Builtins}{113}
@numchapentry{Using History Interactively}{9}{Using History Interactively}{119}
@numsecentry{Bash History Facilities}{9.1}{Bash History Facilities}{119}
@numsecentry{Bash History Builtins}{9.2}{Bash History Builtins}{119}
@numsecentry{History Expansion}{9.3}{History Interaction}{121}
@numsubsecentry{Event Designators}{9.3.1}{Event Designators}{121}
@numsubsecentry{Word Designators}{9.3.2}{Word Designators}{122}
@numsubsecentry{Modifiers}{9.3.3}{Modifiers}{123}
@numchapentry{Installing Bash}{10}{Installing Bash}{125}
@numsecentry{Basic Installation}{10.1}{Basic Installation}{125}
@numsecentry{Compilers and Options}{10.2}{Compilers and Options}{126}
@numsecentry{Compiling For Multiple Architectures}{10.3}{Compiling For Multiple Architectures}{126}
@numsecentry{Installation Names}{10.4}{Installation Names}{126}
@numsecentry{Specifying the System Type}{10.5}{Specifying the System Type}{126}
@numsecentry{Sharing Defaults}{10.6}{Sharing Defaults}{127}
@numsecentry{Operation Controls}{10.7}{Operation Controls}{127}
@numsecentry{Optional Features}{10.8}{Optional Features}{127}
@appentry{Reporting Bugs}{A}{Reporting Bugs}{133}
@appentry{Major Differences From The Bourne Shell}{B}{Major Differences From The Bourne Shell}{135}
@appsecentry{Implementation Differences From The SVR4.2 Shell}{B.1}{}{139}
@appentry{GNU Free Documentation License}{C}{GNU Free Documentation License}{141}
@appentry{Indexes}{D}{Indexes}{149}
@appsecentry{Index of Shell Builtin Commands}{D.1}{Builtin Index}{149}
@appsecentry{Index of Shell Reserved Words}{D.2}{Reserved Word Index}{150}
@appsecentry{Parameter and Variable Index}{D.3}{Variable Index}{150}
@appsecentry{Function Index}{D.4}{Function Index}{152}
@appsecentry{Concept Index}{D.5}{Concept Index}{154}
+31 -31
View File
@@ -1,9 +1,9 @@
\entry{LC_MESSAGES}{7}{\code {LC_MESSAGES}}
\entry{TEXTDOMAIN}{7}{\code {TEXTDOMAIN}}
\entry{TEXTDOMAINDIR}{7}{\code {TEXTDOMAINDIR}}
\entry{*}{17}{\code {*}}
\entry{@}{17}{\code {@}}
\entry{#}{17}{\code {#}}
\entry{*}{16}{\code {*}}
\entry{@}{16}{\code {@}}
\entry{#}{16}{\code {#}}
\entry{?}{17}{\code {?}}
\entry{-}{17}{\code {-}}
\entry{$}{17}{\code {$}}
@@ -37,7 +37,7 @@
\entry{BASH_VERSION}{63}{\code {BASH_VERSION}}
\entry{COLUMNS}{63}{\code {COLUMNS}}
\entry{COMP_CWORD}{63}{\code {COMP_CWORD}}
\entry{COMP_LINE}{63}{\code {COMP_LINE}}
\entry{COMP_LINE}{64}{\code {COMP_LINE}}
\entry{COMP_POINT}{64}{\code {COMP_POINT}}
\entry{COMP_TYPE}{64}{\code {COMP_TYPE}}
\entry{COMP_KEY}{64}{\code {COMP_KEY}}
@@ -96,30 +96,30 @@
\entry{TMOUT}{69}{\code {TMOUT}}
\entry{TMPDIR}{69}{\code {TMPDIR}}
\entry{UID}{69}{\code {UID}}
\entry{auto_resume}{92}{\code {auto_resume}}
\entry{bell-style}{97}{\code {bell-style}}
\entry{bind-tty-special-chars}{97}{\code {bind-tty-special-chars}}
\entry{comment-begin}{97}{\code {comment-begin}}
\entry{completion-prefix-display-length}{97}{\code {completion-prefix-display-length}}
\entry{completion-query-items}{97}{\code {completion-query-items}}
\entry{convert-meta}{98}{\code {convert-meta}}
\entry{disable-completion}{98}{\code {disable-completion}}
\entry{editing-mode}{98}{\code {editing-mode}}
\entry{enable-keypad}{98}{\code {enable-keypad}}
\entry{expand-tilde}{98}{\code {expand-tilde}}
\entry{history-preserve-point}{98}{\code {history-preserve-point}}
\entry{history-size}{98}{\code {history-size}}
\entry{horizontal-scroll-mode}{98}{\code {horizontal-scroll-mode}}
\entry{input-meta}{98}{\code {input-meta}}
\entry{meta-flag}{98}{\code {meta-flag}}
\entry{isearch-terminators}{99}{\code {isearch-terminators}}
\entry{keymap}{99}{\code {keymap}}
\entry{mark-modified-lines}{99}{\code {mark-modified-lines}}
\entry{mark-symlinked-directories}{99}{\code {mark-symlinked-directories}}
\entry{match-hidden-files}{99}{\code {match-hidden-files}}
\entry{output-meta}{99}{\code {output-meta}}
\entry{page-completions}{99}{\code {page-completions}}
\entry{revert-all-at-newline}{100}{\code {revert-all-at-newline}}
\entry{show-all-if-ambiguous}{100}{\code {show-all-if-ambiguous}}
\entry{show-all-if-unmodified}{100}{\code {show-all-if-unmodified}}
\entry{visible-stats}{100}{\code {visible-stats}}
\entry{auto_resume}{90}{\code {auto_resume}}
\entry{bell-style}{95}{\code {bell-style}}
\entry{bind-tty-special-chars}{95}{\code {bind-tty-special-chars}}
\entry{comment-begin}{95}{\code {comment-begin}}
\entry{completion-prefix-display-length}{95}{\code {completion-prefix-display-length}}
\entry{completion-query-items}{95}{\code {completion-query-items}}
\entry{convert-meta}{96}{\code {convert-meta}}
\entry{disable-completion}{96}{\code {disable-completion}}
\entry{editing-mode}{96}{\code {editing-mode}}
\entry{enable-keypad}{96}{\code {enable-keypad}}
\entry{expand-tilde}{96}{\code {expand-tilde}}
\entry{history-preserve-point}{96}{\code {history-preserve-point}}
\entry{history-size}{96}{\code {history-size}}
\entry{horizontal-scroll-mode}{96}{\code {horizontal-scroll-mode}}
\entry{input-meta}{96}{\code {input-meta}}
\entry{meta-flag}{96}{\code {meta-flag}}
\entry{isearch-terminators}{96}{\code {isearch-terminators}}
\entry{keymap}{97}{\code {keymap}}
\entry{mark-modified-lines}{97}{\code {mark-modified-lines}}
\entry{mark-symlinked-directories}{97}{\code {mark-symlinked-directories}}
\entry{match-hidden-files}{97}{\code {match-hidden-files}}
\entry{output-meta}{97}{\code {output-meta}}
\entry{page-completions}{97}{\code {page-completions}}
\entry{revert-all-at-newline}{97}{\code {revert-all-at-newline}}
\entry{show-all-if-ambiguous}{98}{\code {show-all-if-ambiguous}}
\entry{show-all-if-unmodified}{98}{\code {show-all-if-unmodified}}
\entry{visible-stats}{98}{\code {visible-stats}}
+31 -31
View File
@@ -1,23 +1,23 @@
\initial {!}
\entry {\code {!}}{17}
\initial {#}
\entry {\code {#}}{17}
\entry {\code {#}}{16}
\initial {$}
\entry {\code {$}}{17}
\initial {*}
\entry {\code {*}}{17}
\entry {\code {*}}{16}
\initial {-}
\entry {\code {-}}{17}
\initial {?}
\entry {\code {?}}{17}
\initial {@}
\entry {\code {@}}{17}
\entry {\code {@}}{16}
\initial {_}
\entry {\code {_}}{17}
\initial {0}
\entry {\code {0}}{17}
\initial {A}
\entry {\code {auto_resume}}{92}
\entry {\code {auto_resume}}{90}
\initial {B}
\entry {\code {BASH}}{61}
\entry {\code {BASH_ALIASES}}{62}
@@ -34,32 +34,32 @@
\entry {\code {BASH_VERSINFO}}{63}
\entry {\code {BASH_VERSION}}{63}
\entry {\code {BASHPID}}{62}
\entry {\code {bell-style}}{97}
\entry {\code {bind-tty-special-chars}}{97}
\entry {\code {bell-style}}{95}
\entry {\code {bind-tty-special-chars}}{95}
\initial {C}
\entry {\code {CDPATH}}{61}
\entry {\code {COLUMNS}}{63}
\entry {\code {comment-begin}}{97}
\entry {\code {comment-begin}}{95}
\entry {\code {COMP_CWORD}}{63}
\entry {\code {COMP_KEY}}{64}
\entry {\code {COMP_LINE}}{63}
\entry {\code {COMP_LINE}}{64}
\entry {\code {COMP_POINT}}{64}
\entry {\code {COMP_TYPE}}{64}
\entry {\code {COMP_WORDBREAKS}}{64}
\entry {\code {COMP_WORDS}}{64}
\entry {\code {completion-prefix-display-length}}{97}
\entry {\code {completion-query-items}}{97}
\entry {\code {completion-prefix-display-length}}{95}
\entry {\code {completion-query-items}}{95}
\entry {\code {COMPREPLY}}{64}
\entry {\code {convert-meta}}{98}
\entry {\code {convert-meta}}{96}
\initial {D}
\entry {\code {DIRSTACK}}{64}
\entry {\code {disable-completion}}{98}
\entry {\code {disable-completion}}{96}
\initial {E}
\entry {\code {editing-mode}}{98}
\entry {\code {editing-mode}}{96}
\entry {\code {EMACS}}{64}
\entry {\code {enable-keypad}}{98}
\entry {\code {enable-keypad}}{96}
\entry {\code {EUID}}{65}
\entry {\code {expand-tilde}}{98}
\entry {\code {expand-tilde}}{96}
\initial {F}
\entry {\code {FCEDIT}}{65}
\entry {\code {FIGNORE}}{65}
@@ -74,23 +74,23 @@
\entry {\code {HISTFILE}}{66}
\entry {\code {HISTFILESIZE}}{66}
\entry {\code {HISTIGNORE}}{66}
\entry {\code {history-preserve-point}}{98}
\entry {\code {history-size}}{98}
\entry {\code {history-preserve-point}}{96}
\entry {\code {history-size}}{96}
\entry {\code {HISTSIZE}}{66}
\entry {\code {HISTTIMEFORMAT}}{66}
\entry {\code {HOME}}{61}
\entry {\code {horizontal-scroll-mode}}{98}
\entry {\code {horizontal-scroll-mode}}{96}
\entry {\code {HOSTFILE}}{66}
\entry {\code {HOSTNAME}}{66}
\entry {\code {HOSTTYPE}}{66}
\initial {I}
\entry {\code {IFS}}{61}
\entry {\code {IGNOREEOF}}{66}
\entry {\code {input-meta}}{98}
\entry {\code {input-meta}}{96}
\entry {\code {INPUTRC}}{67}
\entry {\code {isearch-terminators}}{99}
\entry {\code {isearch-terminators}}{96}
\initial {K}
\entry {\code {keymap}}{99}
\entry {\code {keymap}}{97}
\initial {L}
\entry {\code {LANG}}{67}
\entry {\code {LC_ALL}}{67}
@@ -105,19 +105,19 @@
\entry {\code {MAIL}}{61}
\entry {\code {MAILCHECK}}{67}
\entry {\code {MAILPATH}}{61}
\entry {\code {mark-modified-lines}}{99}
\entry {\code {mark-symlinked-directories}}{99}
\entry {\code {match-hidden-files}}{99}
\entry {\code {meta-flag}}{98}
\entry {\code {mark-modified-lines}}{97}
\entry {\code {mark-symlinked-directories}}{97}
\entry {\code {match-hidden-files}}{97}
\entry {\code {meta-flag}}{96}
\initial {O}
\entry {\code {OLDPWD}}{67}
\entry {\code {OPTARG}}{61}
\entry {\code {OPTERR}}{67}
\entry {\code {OPTIND}}{61}
\entry {\code {OSTYPE}}{67}
\entry {\code {output-meta}}{99}
\entry {\code {output-meta}}{97}
\initial {P}
\entry {\code {page-completions}}{99}
\entry {\code {page-completions}}{97}
\entry {\code {PATH}}{61}
\entry {\code {PIPESTATUS}}{67}
\entry {\code {POSIXLY_CORRECT}}{68}
@@ -132,14 +132,14 @@
\initial {R}
\entry {\code {RANDOM}}{68}
\entry {\code {REPLY}}{68}
\entry {\code {revert-all-at-newline}}{100}
\entry {\code {revert-all-at-newline}}{97}
\initial {S}
\entry {\code {SECONDS}}{68}
\entry {\code {SHELL}}{68}
\entry {\code {SHELLOPTS}}{68}
\entry {\code {SHLVL}}{69}
\entry {\code {show-all-if-ambiguous}}{100}
\entry {\code {show-all-if-unmodified}}{100}
\entry {\code {show-all-if-ambiguous}}{98}
\entry {\code {show-all-if-unmodified}}{98}
\initial {T}
\entry {\code {TEXTDOMAIN}}{7}
\entry {\code {TEXTDOMAINDIR}}{7}
@@ -149,4 +149,4 @@
\initial {U}
\entry {\code {UID}}{69}
\initial {V}
\entry {\code {visible-stats}}{100}
\entry {\code {visible-stats}}{98}
-1
View File
@@ -1 +0,0 @@
texinfo.tex.20030205
+9250
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,7 +1,7 @@
shcat()
{
while read -r ; do
echo "$REPLY"
printf "%s\n" "$REPLY"
done
}
+11
View File
@@ -568,6 +568,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
/* Fork a subshell, turn off the subshell bit, turn off job
control and call execute_command () on the command again. */
line_number_for_err_trap = line_number;
paren_pid = make_child (savestring (make_command_string (command)),
asynchronous);
if (paren_pid == 0)
@@ -610,7 +611,10 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
if (user_subshell && was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
{
last_command_exit_value = exec_result;
save_line_number = line_number;
line_number = line_number_for_err_trap;
run_error_trap ();
line_number = save_line_number;
}
if (user_subshell && ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS)
@@ -766,7 +770,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
if (was_error_trap && ignore_return == 0 && invert == 0 && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS)
{
last_command_exit_value = exec_result;
line_number = line_number_for_err_trap;
run_error_trap ();
line_number = save_line_number;
}
if (ignore_return == 0 && invert == 0 &&
@@ -2105,6 +2111,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
REDIRECT *rp;
COMMAND *tc, *second;
int ignore_return, exec_result, was_error_trap, invert;
volatile int save_line_number;
ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
@@ -2174,12 +2181,16 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
invert = (command->flags & CMD_INVERT_RETURN) != 0;
ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
line_number_for_err_trap = line_number;
exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close);
if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
{
last_command_exit_value = exec_result;
save_line_number = line_number;
line_number = line_number_for_err_trap;
run_error_trap ();
line_number = save_line_number;
}
if (ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS)
+13 -1
View File
@@ -568,6 +568,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
/* Fork a subshell, turn off the subshell bit, turn off job
control and call execute_command () on the command again. */
line_number_for_err_trap = line_number;
paren_pid = make_child (savestring (make_command_string (command)),
asynchronous);
if (paren_pid == 0)
@@ -610,7 +611,10 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
if (user_subshell && was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
{
last_command_exit_value = exec_result;
save_line_number = line_number;
line_number = line_number_for_err_trap;
run_error_trap ();
line_number = save_line_number;
}
if (user_subshell && ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS)
@@ -766,7 +770,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
if (was_error_trap && ignore_return == 0 && invert == 0 && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS)
{
last_command_exit_value = exec_result;
line_number = line_number_for_err_trap;
run_error_trap ();
line_number = save_line_number;
}
if (ignore_return == 0 && invert == 0 &&
@@ -2105,6 +2111,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
REDIRECT *rp;
COMMAND *tc, *second;
int ignore_return, exec_result, was_error_trap, invert;
volatile int save_line_number;
ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
@@ -2174,12 +2181,16 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
invert = (command->flags & CMD_INVERT_RETURN) != 0;
ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
line_number_for_err_trap = line_number;
exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close);
if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
{
last_command_exit_value = exec_result;
save_line_number = line_number;
line_number = line_number_for_err_trap;
run_error_trap ();
line_number = save_line_number;
}
if (ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS)
@@ -2930,7 +2941,7 @@ execute_case_command (case_command)
retval = execute_command (clauses->action);
}
while ((clauses->flags & CASEPAT_FALLTHROUGH) && (clauses = clauses->next));
if (clauses && (clauses->flags & CASEPAT_TESTNEXT) == 0)
if (clauses == 0 || (clauses->flags & CASEPAT_TESTNEXT) == 0)
EXIT_CASE ();
else
break;
@@ -3994,6 +4005,7 @@ execute_function (var, words, flags, fds_to_close, async, subshell)
array_push (bash_source_a, sfile);
t = itos (executing_line_number ());
itrace("execute_function (%s): pushing %s %s", this_shell_function->name, sfile, t);
array_push (bash_lineno_a, t);
free (t);
#endif
+21 -21
View File
@@ -1,63 +1,63 @@
@xrdef{Using History Interactively-title}{Using History Interactively}
@xrdef{Using History Interactively-pg}{1}
@xrdef{Using History Interactively-snt}{Chapter@tie 1}
@xrdef{History Interaction-title}{History Expansion}
@xrdef{History Interaction-pg}{1}
@xrdef{History Interaction-snt}{Section@tie 1.1}
@xrdef{Event Designators-title}{Event Designators}
@xrdef{Event Designators-pg}{1}
@xrdef{Event Designators-snt}{Section@tie 1.1.1}
@xrdef{Word Designators-title}{Word Designators}
@xrdef{Word Designators-pg}{2}
@xrdef{Word Designators-snt}{Section@tie 1.1.2}
@xrdef{Using History Interactively-pg}{1}
@xrdef{History Interaction-pg}{1}
@xrdef{Event Designators-pg}{1}
@xrdef{Modifiers-title}{Modifiers}
@xrdef{Modifiers-pg}{2}
@xrdef{Modifiers-snt}{Section@tie 1.1.3}
@xrdef{Word Designators-pg}{2}
@xrdef{Modifiers-pg}{2}
@xrdef{Programming with GNU History-title}{Programming with GNU History}
@xrdef{Programming with GNU History-pg}{4}
@xrdef{Programming with GNU History-snt}{Chapter@tie 2}
@xrdef{Introduction to History-title}{Introduction to History}
@xrdef{Introduction to History-pg}{4}
@xrdef{Introduction to History-snt}{Section@tie 2.1}
@xrdef{History Storage-title}{History Storage}
@xrdef{History Storage-pg}{4}
@xrdef{History Storage-snt}{Section@tie 2.2}
@xrdef{Programming with GNU History-pg}{4}
@xrdef{Introduction to History-pg}{4}
@xrdef{History Storage-pg}{4}
@xrdef{History Functions-title}{History Functions}
@xrdef{History Functions-pg}{5}
@xrdef{History Functions-snt}{Section@tie 2.3}
@xrdef{Initializing History and State Management-title}{Initializing History and State Management}
@xrdef{Initializing History and State Management-pg}{5}
@xrdef{Initializing History and State Management-snt}{Section@tie 2.3.1}
@xrdef{History List Management-title}{History List Management}
@xrdef{History List Management-pg}{5}
@xrdef{History List Management-snt}{Section@tie 2.3.2}
@xrdef{History Functions-pg}{5}
@xrdef{Initializing History and State Management-pg}{5}
@xrdef{History List Management-pg}{5}
@xrdef{Information About the History List-title}{Information About the History List}
@xrdef{Information About the History List-pg}{6}
@xrdef{Information About the History List-snt}{Section@tie 2.3.3}
@xrdef{Moving Around the History List-title}{Moving Around the History List}
@xrdef{Moving Around the History List-pg}{7}
@xrdef{Moving Around the History List-snt}{Section@tie 2.3.4}
@xrdef{Information About the History List-pg}{6}
@xrdef{Moving Around the History List-pg}{6}
@xrdef{Searching the History List-title}{Searching the History List}
@xrdef{Searching the History List-pg}{7}
@xrdef{Searching the History List-snt}{Section@tie 2.3.5}
@xrdef{Managing the History File-title}{Managing the History File}
@xrdef{Managing the History File-pg}{7}
@xrdef{Managing the History File-snt}{Section@tie 2.3.6}
@xrdef{Searching the History List-pg}{7}
@xrdef{Managing the History File-pg}{7}
@xrdef{History Expansion-title}{History Expansion}
@xrdef{History Expansion-pg}{8}
@xrdef{History Expansion-snt}{Section@tie 2.3.7}
@xrdef{History Variables-title}{History Variables}
@xrdef{History Variables-pg}{9}
@xrdef{History Variables-snt}{Section@tie 2.4}
@xrdef{History Expansion-pg}{8}
@xrdef{History Variables-pg}{8}
@xrdef{History Programming Example-title}{History Programming Example}
@xrdef{History Programming Example-pg}{10}
@xrdef{History Programming Example-snt}{Section@tie 2.5}
@xrdef{History Programming Example-pg}{9}
@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
@xrdef{GNU Free Documentation License-pg}{12}
@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char65{}}
@xrdef{GNU Free Documentation License-pg}{12}
@xrdef{Concept Index-title}{Concept Index}
@xrdef{Concept Index-pg}{19}
@xrdef{Concept Index-snt}{Appendix@tie @char66{}}
@xrdef{Concept Index-pg}{20}
@xrdef{Function and Variable Index-title}{Function and Variable Index}
@xrdef{Function and Variable Index-pg}{20}
@xrdef{Function and Variable Index-snt}{Appendix@tie @char67{}}
@xrdef{Function and Variable Index-pg}{21}
Binary file not shown.
+81 -15
View File
@@ -1,6 +1,6 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on January, 6 2009 by texi2html 1.64 -->
<!-- Created on March, 18 2009 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
@@ -1273,12 +1273,12 @@ main (argc, argv)
<P>
<center>
Version 1.2, November 2002
Version 1.3, 3 November 2008
</center>
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
<A HREF="http://fsf.org/">http://fsf.org/</A>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -1396,6 +1396,10 @@ the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
</P><P>
The "publisher" means any person or entity that distributes copies
of the Document to the public.
</P><P>
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
@@ -1709,13 +1713,33 @@ title.
TERMINATION
<P>
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, or distribute it is void, and
will automatically terminate your rights under this License.
</P><P>
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
</P><P>
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
</P><P>
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.
</P><P>
<LI>
@@ -1736,7 +1760,49 @@ following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
as a draft) by the Free Software Foundation. If the Document
specifies that a proxy can decide which future versions of this
License can be used, that proxy's public statement of acceptance of a
version permanently authorizes you to choose that version for the
Document.
</P><P>
<LI>
RELICENSING
<P>
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server. A
"Massive Multiauthor Collaboration" (or "MMC") contained in the
site means any set of copyrightable works thus published on the MMC
site.
</P><P>
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
</P><P>
"Incorporate" means to publish or republish a Document, in whole or
in part, as part of another Document.
</P><P>
An MMC is "eligible for relicensing" if it is licensed under this
License, and if all works that were first published under this License
somewhere other than this MMC, and subsequently incorporated in whole
or in part into the MMC, (1) had no cover texts or invariant sections,
and (2) were thus incorporated prior to November 1, 2008.
</P><P>
The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.
</P><P>
</OL>
<P>
@@ -1752,7 +1818,7 @@ license notices just after the title page:
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ``GNU
@@ -2049,7 +2115,7 @@ to permit their use in free software.
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
This document was generated by <I>Chet Ramey</I> on <I>January, 6 2009</I>
This document was generated by <I>Chet Ramey</I> on <I>March, 18 2009</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
@@ -2211,7 +2277,7 @@ the following structure:
<BR>
<FONT SIZE="-1">
This document was generated
by <I>Chet Ramey</I> on <I>January, 6 2009</I>
by <I>Chet Ramey</I> on <I>March, 18 2009</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
+68 -14
View File
@@ -13,7 +13,7 @@ preserved on all copies.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with the Front-Cover texts
being "A GNU Manual", and with the Back-Cover Texts as in (a)
below. A copy of the license is included in the section entitled
@@ -784,10 +784,10 @@ File: history.info, Node: GNU Free Documentation License, Next: Concept Index,
Appendix A GNU Free Documentation License
*****************************************
Version 1.2, November 2002
Version 1.3, 3 November 2008
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
`http://fsf.org/'
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -889,6 +889,9 @@ Appendix A GNU Free Documentation License
Page" means the text near the most prominent appearance of the
work's title, preceding the beginning of the body of the text.
The "publisher" means any person or entity that distributes copies
of the Document to the public.
A section "Entitled XYZ" means a named subunit of the Document
whose title either is precisely XYZ or contains XYZ in parentheses
following text that translates XYZ in another language. (Here XYZ
@@ -1154,12 +1157,29 @@ Appendix A GNU Free Documentation License
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided for under this License. Any other
attempt to copy, modify, sublicense or distribute the Document is
void, and will automatically terminate your rights under this
License. However, parties who have received copies, or rights,
from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, or distribute it is void,
and will automatically terminate your rights under this License.
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly
and finally terminates your license, and (b) permanently, if the
copyright holder fails to notify you of the violation by some
reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from
that copyright holder, and you cure the violation prior to 30 days
after your receipt of the notice.
Termination of your rights under this section does not terminate
the licenses of parties who have received copies or rights from
you under this License. If your rights have been terminated and
not permanently reinstated, receipt of a copy of some or all of
the same material does not give you any rights to use it.
10. FUTURE REVISIONS OF THIS LICENSE
@@ -1177,7 +1197,41 @@ Appendix A GNU Free Documentation License
published (not as a draft) by the Free Software Foundation. If
the Document does not specify a version number of this License,
you may choose any version ever published (not as a draft) by the
Free Software Foundation.
Free Software Foundation. If the Document specifies that a proxy
can decide which future versions of this License can be used, that
proxy's public statement of acceptance of a version permanently
authorizes you to choose that version for the Document.
11. RELICENSING
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server.
A "Massive Multiauthor Collaboration" (or "MMC") contained in the
site means any set of copyrightable works thus published on the MMC
site.
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
"Incorporate" means to publish or republish a Document, in whole or
in part, as part of another Document.
An MMC is "eligible for relicensing" if it is licensed under this
License, and if all works that were first published under this
License somewhere other than this MMC, and subsequently
incorporated in whole or in part into the MMC, (1) had no cover
texts or invariant sections, and (2) were thus incorporated prior
to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the
site under CC-BY-SA on the same site at any time before August 1,
2009, provided the MMC is eligible for relicensing.
ADDENDUM: How to use this License for your documents
====================================================
@@ -1188,7 +1242,7 @@ notices just after the title page:
Copyright (C) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ``GNU
@@ -1334,7 +1388,7 @@ Node: History Expansion21296
Node: History Variables23204
Node: History Programming Example26010
Node: GNU Free Documentation License28687
Node: Concept Index51143
Node: Function and Variable Index51848
Node: Concept Index53878
Node: Function and Variable Index54583

End Tag Table
+99 -79
View File
@@ -1,7 +1,7 @@
This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 6 JAN 2009 11:52
**/usr/homes/chet/src/bash/src/lib/readline/doc/history.texi
(/usr/homes/chet/src/bash/src/lib/readline/doc/history.texi (./texinfo.tex
Loading texinfo [version 2003-02-03.16]: Basics,
This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 18 MAR 2009 08:22
**/Users/chet/src/bash/src/lib/readline/doc/history.texi
(/Users/chet/src/bash/src/lib/readline/doc/history.texi (./texinfo.tex
Loading texinfo [version 2009-01-18.17]:
\bindingoffset=\dimen16
\normaloffset=\dimen17
\pagewidth=\dimen18
@@ -32,81 +32,94 @@ Loading texinfo [version 2003-02-03.16]: Basics,
\toksD=\toks18
\boxA=\box19
\countA=\count30
\nopdfimagehelp=\toks19
fonts,
\sffam=\fam8
\textleading=\dimen26
\mainmagstep=\count31
\fontdepth=\count32
page headings,
markup,
\fontdepth=\count31
glyphs,
\errorbox=\box20
page headings,
\titlepagetopglue=\skip20
\titlepagebottomglue=\skip21
\evenheadline=\toks19
\oddheadline=\toks20
\evenfootline=\toks21
\oddfootline=\toks22
tables,
\evenheadline=\toks20
\oddheadline=\toks21
\evenfootline=\toks22
\oddfootline=\toks23
tables,
\tableindent=\dimen27
\itemindent=\dimen28
\itemmargin=\dimen29
\itemmax=\dimen30
\itemno=\count33
\itemno=\count32
\multitableparskip=\skip22
\multitableparindent=\skip23
\multitablecolspace=\dimen31
\multitablelinespace=\skip24
\colcount=\count34
\savedfootnotes=\box20
conditionals, indexing,
\secondaryindent=\skip25
\colcount=\count33
\everytab=\toks24
conditionals,
\doignorecount=\count34
indexing,
\whatsitskip=\skip25
\whatsitpenalty=\count35
\secondaryindent=\skip26
\partialpage=\box21
\doublecolumnhsize=\dimen32
sectioning,
\chapno=\count35
\secno=\count36
\subsecno=\count37
\subsubsecno=\count38
\appendixno=\count39
\absseclevel=\count40
\secbase=\count41
\chapheadingskip=\skip26
\secheadingskip=\skip27
\subsecheadingskip=\skip28
\unnumberedno=\count36
\chapno=\count37
\secno=\count38
\subsecno=\count39
\subsubsecno=\count40
\appendixno=\count41
\absseclevel=\count42
\secbase=\count43
\chapheadingskip=\skip27
\secheadingskip=\skip28
\subsecheadingskip=\skip29
toc,
\tocfile=\write0
\contentsrightmargin=\skip29
\savepageno=\count42
\lastnegativepageno=\count43
\shortappendixwidth=\dimen33
\tocindent=\dimen34
\contentsrightmargin=\skip30
\savepageno=\count44
\lastnegativepageno=\count45
\tocindent=\dimen33
environments,
\errorbox=\box22
\lispnarrowing=\skip30
\envskipamount=\skip31
\circthick=\dimen35
\cartouter=\dimen36
\cartinner=\dimen37
\normbskip=\skip32
\normpskip=\skip33
\normlskip=\skip34
\lskip=\skip35
\rskip=\skip36
\lispnarrowing=\skip31
\envskipamount=\skip32
\circthick=\dimen34
\cartouter=\dimen35
\cartinner=\dimen36
\normbskip=\skip33
\normpskip=\skip34
\normlskip=\skip35
\lskip=\skip36
\rskip=\skip37
\nonfillparindent=\dimen37
\tabw=\dimen38
defuns,
\defbodyindent=\skip37
\defargsindent=\skip38
\deflastargmargin=\skip39
\parencount=\count44
defuns,
\defbodyindent=\skip38
\defargsindent=\skip39
\deflastargmargin=\skip40
\defunpenalty=\count46
\parencount=\count47
\brackcount=\count48
macros,
\macscribble=\write1
\paramno=\count45
\macname=\toks23
cross references,
\paramno=\count49
\macname=\toks25
cross references,
\auxfile=\write2
\savesfregister=\count46
\footnoteno=\count47
(/sw/share/texmf-dist/tex/generic/epsf/epsf.tex
\savesfregister=\count50
insertions,
\footnoteno=\count51
\SAVEfootins=\box22
\SAVEmargin=\box23
(/sw/share/texmf-dist/tex/generic/epsf/epsf.tex
\epsffilein=\read0
\epsfframemargin=\dimen39
\epsfframethickness=\dimen40
@@ -116,24 +129,27 @@ cross references,
\epsfxsize=\dimen44
\epsfysize=\dimen45
\pspoints=\dimen46
\epsfnoopenhelp=\toks24
\epsfnoopenhelp=\toks26
)
\noepsfhelp=\toks25
localization,
\nolanghelp=\toks26
\noepsfhelp=\toks27
localization,
\nolanghelp=\toks28
\countUTFx=\count52
\countUTFy=\count53
\countUTFz=\count54
formatting,
\defaultparindent=\dimen47
and turning on texinfo input format.) (./history.aux)
and turning on texinfo input format.) (./history.aux)
\openout2 = `history.aux'.
@cpindfile=@write3
@fnindfile=@write4
@vrindfile=@write5
@tpindfile=@write6
@kyindfile=@write7
@pgindfile=@write8
(./version.texi) [1
\openout2 = `history.aux'.
(./version.texi) [1
\openout3 = `history.cp'.
\openout4 = `history.fn'.
@@ -146,24 +162,28 @@ localization,
\openout8 = `history.pg'.
] [2] (./history.toc) [-1] (./hsuser.texi Chapter 1
]
\openout1 = `history.tmp'.
(./history.tmp) [2] (./history.toc) [-1] (./hsuser.texi Chapter 1
\openout0 = `history.toc'.
@btindfile=@write9
[1
\openout9 = `history.bt'.
]
[2]) (./hstech.texi Chapter 2 [3] [4] [5] [6] [7] [8] [9] [10]) Appendix A
[11] (./fdl.texi [12] [13] [14] [15] [16] [17]) Appendix B [18] (./history.cps)
Appendix C [19] (./history.vrs) [20] )
] [2])
(./hstech.texi Chapter 2 [3] [4] [5] [6] [7] [8] [9] [10]) Appendix A [11]
(./fdl.texi [12] [13] [14] [15] [16] [17] [18]) Appendix B [19] (./history.cps)
Appendix C [20] (./history.vrs) [21] )
Here is how much of TeX's memory you used:
1406 strings out of 97980
16393 string characters out of 1221004
45471 words of memory out of 1500000
2268 multiletter control sequences out of 10000+50000
31953 words of font info for 111 fonts, out of 1200000 for 2000
19 hyphenation exceptions out of 8191
14i,6n,17p,283b,649s stack positions out of 5000i,500n,6000p,200000b,5000s
1745 strings out of 97980
20831 string characters out of 1221004
66068 words of memory out of 1500000
2572 multiletter control sequences out of 10000+50000
32127 words of font info for 112 fonts, out of 1200000 for 2000
51 hyphenation exceptions out of 8191
15i,6n,14p,325b,490s stack positions out of 5000i,500n,6000p,200000b,5000s
Output written on history.dvi (23 pages, 81092 bytes).
Output written on history.dvi (24 pages, 85440 bytes).
+3311 -3503
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -20,7 +20,7 @@ are preserved on all copies.
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
and with the Back-Cover Texts as in (a) below. A copy of the license is
+26
View File
@@ -0,0 +1,26 @@
This document describes the GNU History library
(version @value{VERSION}, @value{UPDATED}),
a programming tool that provides a consistent user interface for
recalling lines of previously typed input.
Copyright @copyright{} 1988--2009 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
and with the Back-Cover Texts as in (a) below. A copy of the license is
included in the section entitled ``GNU Free Documentation License''.
(a) The FSF's Back-Cover Text is: You are free to copy and modify
this GNU manual. Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''
@end quotation
@endinput
+21 -21
View File
@@ -1,21 +1,21 @@
\chapentry{Using History Interactively}{1}{1}
\secentry{History Expansion}{1}{1}{1}
\subsecentry{Event Designators}{1}{1}{1}{1}
\subsecentry{Word Designators}{1}{1}{2}{1}
\subsecentry{Modifiers}{1}{1}{3}{2}
\chapentry{Programming with GNU History}{2}{4}
\secentry{Introduction to History}{2}{1}{4}
\secentry{History Storage}{2}{2}{4}
\secentry{History Functions}{2}{3}{5}
\subsecentry{Initializing History and State Management}{2}{3}{1}{5}
\subsecentry{History List Management}{2}{3}{2}{5}
\subsecentry{Information About the History List}{2}{3}{3}{6}
\subsecentry{Moving Around the History List}{2}{3}{4}{6}
\subsecentry{Searching the History List}{2}{3}{5}{7}
\subsecentry{Managing the History File}{2}{3}{6}{7}
\subsecentry{History Expansion}{2}{3}{7}{8}
\secentry{History Variables}{2}{4}{9}
\secentry{History Programming Example}{2}{5}{10}
\appendixentry{GNU Free Documentation License}{A}{12}
\appendixentry{Concept Index}{B}{19}
\appendixentry{Function and Variable Index}{C}{20}
@numchapentry{Using History Interactively}{1}{Using History Interactively}{1}
@numsecentry{History Expansion}{1.1}{History Interaction}{1}
@numsubsecentry{Event Designators}{1.1.1}{Event Designators}{1}
@numsubsecentry{Word Designators}{1.1.2}{Word Designators}{2}
@numsubsecentry{Modifiers}{1.1.3}{Modifiers}{2}
@numchapentry{Programming with GNU History}{2}{Programming with GNU History}{4}
@numsecentry{Introduction to History}{2.1}{Introduction to History}{4}
@numsecentry{History Storage}{2.2}{History Storage}{4}
@numsecentry{History Functions}{2.3}{History Functions}{5}
@numsubsecentry{Initializing History and State Management}{2.3.1}{Initializing History and State Management}{5}
@numsubsecentry{History List Management}{2.3.2}{History List Management}{5}
@numsubsecentry{Information About the History List}{2.3.3}{Information About the History List}{6}
@numsubsecentry{Moving Around the History List}{2.3.4}{Moving Around the History List}{6}
@numsubsecentry{Searching the History List}{2.3.5}{Searching the History List}{7}
@numsubsecentry{Managing the History File}{2.3.6}{Managing the History File}{7}
@numsubsecentry{History Expansion}{2.3.7}{History Expansion}{8}
@numsecentry{History Variables}{2.4}{History Variables}{8}
@numsecentry{History Programming Example}{2.5}{History Programming Example}{9}
@appentry{GNU Free Documentation License}{A}{GNU Free Documentation License}{12}
@appentry{Concept Index}{B}{Concept Index}{20}
@appentry{Function and Variable Index}{C}{Function and Variable Index}{21}
+13 -13
View File
@@ -5,7 +5,7 @@
\entry{add_history_time}{5}{\code {add_history_time}}
\entry{remove_history}{5}{\code {remove_history}}
\entry{free_history_entry}{5}{\code {free_history_entry}}
\entry{replace_history_entry}{6}{\code {replace_history_entry}}
\entry{replace_history_entry}{5}{\code {replace_history_entry}}
\entry{clear_history}{6}{\code {clear_history}}
\entry{stifle_history}{6}{\code {stifle_history}}
\entry{unstifle_history}{6}{\code {unstifle_history}}
@@ -16,23 +16,23 @@
\entry{history_get}{6}{\code {history_get}}
\entry{history_get_time}{6}{\code {history_get_time}}
\entry{history_total_bytes}{6}{\code {history_total_bytes}}
\entry{history_set_pos}{7}{\code {history_set_pos}}
\entry{previous_history}{7}{\code {previous_history}}
\entry{history_set_pos}{6}{\code {history_set_pos}}
\entry{previous_history}{6}{\code {previous_history}}
\entry{next_history}{7}{\code {next_history}}
\entry{history_search}{7}{\code {history_search}}
\entry{history_search_prefix}{7}{\code {history_search_prefix}}
\entry{history_search_pos}{7}{\code {history_search_pos}}
\entry{read_history}{8}{\code {read_history}}
\entry{read_history_range}{8}{\code {read_history_range}}
\entry{write_history}{8}{\code {write_history}}
\entry{read_history}{7}{\code {read_history}}
\entry{read_history_range}{7}{\code {read_history_range}}
\entry{write_history}{7}{\code {write_history}}
\entry{append_history}{8}{\code {append_history}}
\entry{history_truncate_file}{8}{\code {history_truncate_file}}
\entry{history_expand}{8}{\code {history_expand}}
\entry{get_history_event}{8}{\code {get_history_event}}
\entry{history_tokenize}{9}{\code {history_tokenize}}
\entry{history_arg_extract}{9}{\code {history_arg_extract}}
\entry{history_base}{9}{\code {history_base}}
\entry{history_length}{9}{\code {history_length}}
\entry{history_tokenize}{8}{\code {history_tokenize}}
\entry{history_arg_extract}{8}{\code {history_arg_extract}}
\entry{history_base}{8}{\code {history_base}}
\entry{history_length}{8}{\code {history_length}}
\entry{history_max_entries}{9}{\code {history_max_entries}}
\entry{history_write_timestamps}{9}{\code {history_write_timestamps}}
\entry{history_expansion_char}{9}{\code {history_expansion_char}}
@@ -40,6 +40,6 @@
\entry{history_comment_char}{9}{\code {history_comment_char}}
\entry{history_word_delimiters}{9}{\code {history_word_delimiters}}
\entry{history_search_delimiter_chars}{9}{\code {history_search_delimiter_chars}}
\entry{history_no_expand_chars}{10}{\code {history_no_expand_chars}}
\entry{history_quotes_inhibit_expansion}{10}{\code {history_quotes_inhibit_expansion}}
\entry{history_inhibit_expansion_function}{10}{\code {history_inhibit_expansion_function}}
\entry{history_no_expand_chars}{9}{\code {history_no_expand_chars}}
\entry{history_quotes_inhibit_expansion}{9}{\code {history_quotes_inhibit_expansion}}
\entry{history_inhibit_expansion_function}{9}{\code {history_inhibit_expansion_function}}
+13 -13
View File
@@ -10,29 +10,29 @@
\initial {G}
\entry {\code {get_history_event}}{8}
\initial {H}
\entry {\code {history_arg_extract}}{9}
\entry {\code {history_base}}{9}
\entry {\code {history_arg_extract}}{8}
\entry {\code {history_base}}{8}
\entry {\code {history_comment_char}}{9}
\entry {\code {history_expand}}{8}
\entry {\code {history_expansion_char}}{9}
\entry {\code {history_get}}{6}
\entry {\code {history_get_history_state}}{5}
\entry {\code {history_get_time}}{6}
\entry {\code {history_inhibit_expansion_function}}{10}
\entry {\code {history_inhibit_expansion_function}}{9}
\entry {\code {history_is_stifled}}{6}
\entry {\code {history_length}}{9}
\entry {\code {history_length}}{8}
\entry {\code {history_list}}{6}
\entry {\code {history_max_entries}}{9}
\entry {\code {history_no_expand_chars}}{10}
\entry {\code {history_quotes_inhibit_expansion}}{10}
\entry {\code {history_no_expand_chars}}{9}
\entry {\code {history_quotes_inhibit_expansion}}{9}
\entry {\code {history_search}}{7}
\entry {\code {history_search_delimiter_chars}}{9}
\entry {\code {history_search_pos}}{7}
\entry {\code {history_search_prefix}}{7}
\entry {\code {history_set_history_state}}{5}
\entry {\code {history_set_pos}}{7}
\entry {\code {history_set_pos}}{6}
\entry {\code {history_subst_char}}{9}
\entry {\code {history_tokenize}}{9}
\entry {\code {history_tokenize}}{8}
\entry {\code {history_total_bytes}}{6}
\entry {\code {history_truncate_file}}{8}
\entry {\code {history_word_delimiters}}{9}
@@ -40,12 +40,12 @@
\initial {N}
\entry {\code {next_history}}{7}
\initial {P}
\entry {\code {previous_history}}{7}
\entry {\code {previous_history}}{6}
\initial {R}
\entry {\code {read_history}}{8}
\entry {\code {read_history_range}}{8}
\entry {\code {read_history}}{7}
\entry {\code {read_history_range}}{7}
\entry {\code {remove_history}}{5}
\entry {\code {replace_history_entry}}{6}
\entry {\code {replace_history_entry}}{5}
\initial {S}
\entry {\code {stifle_history}}{6}
\initial {U}
@@ -53,4 +53,4 @@
\entry {\code {using_history}}{5}
\initial {W}
\entry {\code {where_history}}{6}
\entry {\code {write_history}}{8}
\entry {\code {write_history}}{7}
Binary file not shown.
+81 -15
View File
@@ -1,6 +1,6 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on January, 6 2009 by texi2html 1.64 -->
<!-- Created on March, 18 2009 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
@@ -5386,12 +5386,12 @@ valid_argument (caller, arg)
<P>
<center>
Version 1.2, November 2002
Version 1.3, 3 November 2008
</center>
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
<A HREF="http://fsf.org/">http://fsf.org/</A>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -5509,6 +5509,10 @@ the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
</P><P>
The "publisher" means any person or entity that distributes copies
of the Document to the public.
</P><P>
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
@@ -5822,13 +5826,33 @@ title.
TERMINATION
<P>
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, or distribute it is void, and
will automatically terminate your rights under this License.
</P><P>
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
</P><P>
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
</P><P>
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.
</P><P>
<LI>
@@ -5849,7 +5873,49 @@ following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
as a draft) by the Free Software Foundation. If the Document
specifies that a proxy can decide which future versions of this
License can be used, that proxy's public statement of acceptance of a
version permanently authorizes you to choose that version for the
Document.
</P><P>
<LI>
RELICENSING
<P>
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server. A
"Massive Multiauthor Collaboration" (or "MMC") contained in the
site means any set of copyrightable works thus published on the MMC
site.
</P><P>
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
</P><P>
"Incorporate" means to publish or republish a Document, in whole or
in part, as part of another Document.
</P><P>
An MMC is "eligible for relicensing" if it is licensed under this
License, and if all works that were first published under this License
somewhere other than this MMC, and subsequently incorporated in whole
or in part into the MMC, (1) had no cover texts or invariant sections,
and (2) were thus incorporated prior to November 1, 2008.
</P><P>
The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.
</P><P>
</OL>
<P>
@@ -5865,7 +5931,7 @@ license notices just after the title page:
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ``GNU
@@ -6646,7 +6712,7 @@ to permit their use in free software.
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
This document was generated by <I>Chet Ramey</I> on <I>January, 6 2009</I>
This document was generated by <I>Chet Ramey</I> on <I>March, 18 2009</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
@@ -6808,7 +6874,7 @@ the following structure:
<BR>
<FONT SIZE="-1">
This document was generated
by <I>Chet Ramey</I> on <I>January, 6 2009</I>
by <I>Chet Ramey</I> on <I>March, 18 2009</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
+68 -14
View File
@@ -13,7 +13,7 @@ preserved on all copies.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with the Front-Cover texts
being "A GNU Manual", and with the Back-Cover Texts as in (a)
below. A copy of the license is included in the section entitled
@@ -3574,10 +3574,10 @@ File: readline.info, Node: GNU Free Documentation License, Next: Concept Index
Appendix A GNU Free Documentation License
*****************************************
Version 1.2, November 2002
Version 1.3, 3 November 2008
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
`http://fsf.org/'
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -3679,6 +3679,9 @@ Appendix A GNU Free Documentation License
Page" means the text near the most prominent appearance of the
work's title, preceding the beginning of the body of the text.
The "publisher" means any person or entity that distributes copies
of the Document to the public.
A section "Entitled XYZ" means a named subunit of the Document
whose title either is precisely XYZ or contains XYZ in parentheses
following text that translates XYZ in another language. (Here XYZ
@@ -3944,12 +3947,29 @@ Appendix A GNU Free Documentation License
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided for under this License. Any other
attempt to copy, modify, sublicense or distribute the Document is
void, and will automatically terminate your rights under this
License. However, parties who have received copies, or rights,
from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, or distribute it is void,
and will automatically terminate your rights under this License.
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly
and finally terminates your license, and (b) permanently, if the
copyright holder fails to notify you of the violation by some
reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from
that copyright holder, and you cure the violation prior to 30 days
after your receipt of the notice.
Termination of your rights under this section does not terminate
the licenses of parties who have received copies or rights from
you under this License. If your rights have been terminated and
not permanently reinstated, receipt of a copy of some or all of
the same material does not give you any rights to use it.
10. FUTURE REVISIONS OF THIS LICENSE
@@ -3967,7 +3987,41 @@ Appendix A GNU Free Documentation License
published (not as a draft) by the Free Software Foundation. If
the Document does not specify a version number of this License,
you may choose any version ever published (not as a draft) by the
Free Software Foundation.
Free Software Foundation. If the Document specifies that a proxy
can decide which future versions of this License can be used, that
proxy's public statement of acceptance of a version permanently
authorizes you to choose that version for the Document.
11. RELICENSING
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server.
A "Massive Multiauthor Collaboration" (or "MMC") contained in the
site means any set of copyrightable works thus published on the MMC
site.
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
"Incorporate" means to publish or republish a Document, in whole or
in part, as part of another Document.
An MMC is "eligible for relicensing" if it is licensed under this
License, and if all works that were first published under this
License somewhere other than this MMC, and subsequently
incorporated in whole or in part into the MMC, (1) had no cover
texts or invariant sections, and (2) were thus incorporated prior
to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the
site under CC-BY-SA on the same site at any time before August 1,
2009, provided the MMC is eligible for relicensing.
ADDENDUM: How to use this License for your documents
====================================================
@@ -3978,7 +4032,7 @@ notices just after the title page:
Copyright (C) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ``GNU
@@ -4510,7 +4564,7 @@ Node: Completion Functions112457
Node: Completion Variables116029
Node: A Short Completion Example129134
Node: GNU Free Documentation License141913
Node: Concept Index164371
Node: Function and Variable Index165892
Node: Concept Index167106
Node: Function and Variable Index168627

End Tag Table
+5752 -6355
View File
File diff suppressed because it is too large Load Diff
+51 -51
View File
@@ -1,153 +1,153 @@
@xrdef{Command Line Editing-title}{Command Line Editing}
@xrdef{Command Line Editing-pg}{1}
@xrdef{Command Line Editing-snt}{Chapter@tie 1}
@xrdef{Introduction and Notation-title}{Introduction to Line Editing}
@xrdef{Introduction and Notation-pg}{1}
@xrdef{Introduction and Notation-snt}{Section@tie 1.1}
@xrdef{Readline Interaction-title}{Readline Interaction}
@xrdef{Readline Interaction-pg}{1}
@xrdef{Readline Interaction-snt}{Section@tie 1.2}
@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials}
@xrdef{Readline Bare Essentials-pg}{1}
@xrdef{Readline Bare Essentials-snt}{Section@tie 1.2.1}
@xrdef{Command Line Editing-pg}{1}
@xrdef{Introduction and Notation-pg}{1}
@xrdef{Readline Interaction-pg}{1}
@xrdef{Readline Bare Essentials-pg}{1}
@xrdef{Readline Movement Commands-title}{Readline Movement Commands}
@xrdef{Readline Movement Commands-pg}{2}
@xrdef{Readline Movement Commands-snt}{Section@tie 1.2.2}
@xrdef{Readline Killing Commands-title}{Readline Killing Commands}
@xrdef{Readline Killing Commands-pg}{2}
@xrdef{Readline Killing Commands-snt}{Section@tie 1.2.3}
@xrdef{Readline Movement Commands-pg}{2}
@xrdef{Readline Killing Commands-pg}{2}
@xrdef{Readline Arguments-title}{Readline Arguments}
@xrdef{Readline Arguments-pg}{3}
@xrdef{Readline Arguments-snt}{Section@tie 1.2.4}
@xrdef{Searching-title}{Searching for Commands in the History}
@xrdef{Searching-pg}{3}
@xrdef{Searching-snt}{Section@tie 1.2.5}
@xrdef{Readline Arguments-pg}{3}
@xrdef{Searching-pg}{3}
@xrdef{Readline Init File-title}{Readline Init File}
@xrdef{Readline Init File-pg}{4}
@xrdef{Readline Init File-snt}{Section@tie 1.3}
@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax}
@xrdef{Readline Init File Syntax-pg}{4}
@xrdef{Readline Init File Syntax-snt}{Section@tie 1.3.1}
@xrdef{Readline Init File-pg}{4}
@xrdef{Readline Init File Syntax-pg}{4}
@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs}
@xrdef{Conditional Init Constructs-pg}{9}
@xrdef{Conditional Init Constructs-snt}{Section@tie 1.3.2}
@xrdef{Conditional Init Constructs-pg}{9}
@xrdef{Sample Init File-title}{Sample Init File}
@xrdef{Sample Init File-pg}{10}
@xrdef{Sample Init File-snt}{Section@tie 1.3.3}
@xrdef{Sample Init File-pg}{10}
@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
@xrdef{Bindable Readline Commands-pg}{13}
@xrdef{Bindable Readline Commands-snt}{Section@tie 1.4}
@xrdef{Commands For Moving-title}{Commands For Moving}
@xrdef{Commands For Moving-pg}{13}
@xrdef{Commands For Moving-snt}{Section@tie 1.4.1}
@xrdef{Commands For History-title}{Commands For Manipulating The History}
@xrdef{Commands For History-pg}{13}
@xrdef{Commands For History-snt}{Section@tie 1.4.2}
@xrdef{Bindable Readline Commands-pg}{13}
@xrdef{Commands For Moving-pg}{13}
@xrdef{Commands For History-pg}{13}
@xrdef{Commands For Text-title}{Commands For Changing Text}
@xrdef{Commands For Text-pg}{15}
@xrdef{Commands For Text-snt}{Section@tie 1.4.3}
@xrdef{Commands For Text-pg}{15}
@xrdef{Commands For Killing-title}{Killing And Yanking}
@xrdef{Commands For Killing-pg}{16}
@xrdef{Commands For Killing-snt}{Section@tie 1.4.4}
@xrdef{Commands For Killing-pg}{16}
@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
@xrdef{Numeric Arguments-pg}{17}
@xrdef{Numeric Arguments-snt}{Section@tie 1.4.5}
@xrdef{Commands For Completion-title}{Letting Readline Type For You}
@xrdef{Commands For Completion-pg}{17}
@xrdef{Commands For Completion-snt}{Section@tie 1.4.6}
@xrdef{Keyboard Macros-title}{Keyboard Macros}
@xrdef{Keyboard Macros-pg}{18}
@xrdef{Keyboard Macros-snt}{Section@tie 1.4.7}
@xrdef{Numeric Arguments-pg}{17}
@xrdef{Commands For Completion-pg}{17}
@xrdef{Keyboard Macros-pg}{17}
@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
@xrdef{Miscellaneous Commands-pg}{18}
@xrdef{Miscellaneous Commands-snt}{Section@tie 1.4.8}
@xrdef{Miscellaneous Commands-pg}{18}
@xrdef{Readline vi Mode-title}{Readline vi Mode}
@xrdef{Readline vi Mode-pg}{19}
@xrdef{Readline vi Mode-snt}{Section@tie 1.5}
@xrdef{Readline vi Mode-pg}{19}
@xrdef{Programming with GNU Readline-title}{Programming with GNU Readline}
@xrdef{Programming with GNU Readline-pg}{20}
@xrdef{Programming with GNU Readline-snt}{Chapter@tie 2}
@xrdef{Basic Behavior-title}{Basic Behavior}
@xrdef{Basic Behavior-pg}{20}
@xrdef{Basic Behavior-snt}{Section@tie 2.1}
@xrdef{Programming with GNU Readline-pg}{20}
@xrdef{Basic Behavior-pg}{20}
@xrdef{Custom Functions-title}{Custom Functions}
@xrdef{Custom Functions-pg}{21}
@xrdef{Custom Functions-snt}{Section@tie 2.2}
@xrdef{Readline Typedefs-title}{Readline Typedefs}
@xrdef{Readline Typedefs-pg}{22}
@xrdef{Readline Typedefs-snt}{Section@tie 2.2.1}
@xrdef{Custom Functions-pg}{21}
@xrdef{Function Writing-title}{Writing a New Function}
@xrdef{Function Writing-pg}{22}
@xrdef{Function Writing-snt}{Section@tie 2.2.2}
@xrdef{Readline Typedefs-pg}{22}
@xrdef{Function Writing-pg}{22}
@xrdef{Readline Variables-title}{Readline Variables}
@xrdef{Readline Variables-pg}{23}
@xrdef{Readline Variables-snt}{Section@tie 2.3}
@xrdef{Readline Variables-pg}{23}
@xrdef{Readline Convenience Functions-title}{Readline Convenience Functions}
@xrdef{Readline Convenience Functions-pg}{27}
@xrdef{Readline Convenience Functions-snt}{Section@tie 2.4}
@xrdef{Function Naming-title}{Naming a Function}
@xrdef{Function Naming-pg}{27}
@xrdef{Function Naming-snt}{Section@tie 2.4.1}
@xrdef{Readline Convenience Functions-pg}{27}
@xrdef{Function Naming-pg}{27}
@xrdef{Keymaps-title}{Selecting a Keymap}
@xrdef{Keymaps-pg}{28}
@xrdef{Keymaps-snt}{Section@tie 2.4.2}
@xrdef{Binding Keys-title}{Binding Keys}
@xrdef{Binding Keys-pg}{29}
@xrdef{Binding Keys-snt}{Section@tie 2.4.3}
@xrdef{Keymaps-pg}{28}
@xrdef{Binding Keys-pg}{29}
@xrdef{Associating Function Names and Bindings-title}{Associating Function Names and Bindings}
@xrdef{Associating Function Names and Bindings-pg}{30}
@xrdef{Associating Function Names and Bindings-snt}{Section@tie 2.4.4}
@xrdef{Associating Function Names and Bindings-pg}{30}
@xrdef{Allowing Undoing-title}{Allowing Undoing}
@xrdef{Allowing Undoing-pg}{31}
@xrdef{Allowing Undoing-snt}{Section@tie 2.4.5}
@xrdef{Allowing Undoing-pg}{31}
@xrdef{Redisplay-title}{Redisplay}
@xrdef{Redisplay-pg}{32}
@xrdef{Redisplay-snt}{Section@tie 2.4.6}
@xrdef{Redisplay-pg}{32}
@xrdef{Modifying Text-title}{Modifying Text}
@xrdef{Modifying Text-pg}{33}
@xrdef{Modifying Text-snt}{Section@tie 2.4.7}
@xrdef{Modifying Text-pg}{33}
@xrdef{Character Input-title}{Character Input}
@xrdef{Character Input-pg}{34}
@xrdef{Character Input-snt}{Section@tie 2.4.8}
@xrdef{Terminal Management-title}{Terminal Management}
@xrdef{Terminal Management-pg}{35}
@xrdef{Terminal Management-snt}{Section@tie 2.4.9}
@xrdef{Character Input-pg}{34}
@xrdef{Terminal Management-pg}{34}
@xrdef{Utility Functions-title}{Utility Functions}
@xrdef{Utility Functions-pg}{35}
@xrdef{Utility Functions-snt}{Section@tie 2.4.10}
@xrdef{Utility Functions-pg}{35}
@xrdef{Miscellaneous Functions-title}{Miscellaneous Functions}
@xrdef{Miscellaneous Functions-pg}{36}
@xrdef{Miscellaneous Functions-snt}{Section@tie 2.4.11}
@xrdef{Miscellaneous Functions-pg}{36}
@xrdef{Alternate Interface-title}{Alternate Interface}
@xrdef{Alternate Interface-pg}{37}
@xrdef{Alternate Interface-snt}{Section@tie 2.4.12}
@xrdef{A Readline Example-title}{A Readline Example}
@xrdef{A Readline Example-pg}{38}
@xrdef{A Readline Example-snt}{Section@tie 2.4.13}
@xrdef{Alternate Interface-pg}{37}
@xrdef{A Readline Example-pg}{37}
@xrdef{Readline Signal Handling-title}{Readline Signal Handling}
@xrdef{Readline Signal Handling-pg}{39}
@xrdef{Readline Signal Handling-snt}{Section@tie 2.5}
@xrdef{Readline Signal Handling-pg}{39}
@xrdef{Custom Completers-title}{Custom Completers}
@xrdef{Custom Completers-pg}{41}
@xrdef{Custom Completers-snt}{Section@tie 2.6}
@xrdef{How Completing Works-title}{How Completing Works}
@xrdef{How Completing Works-pg}{41}
@xrdef{How Completing Works-snt}{Section@tie 2.6.1}
@xrdef{Custom Completers-pg}{41}
@xrdef{How Completing Works-pg}{41}
@xrdef{Completion Functions-title}{Completion Functions}
@xrdef{Completion Functions-pg}{42}
@xrdef{Completion Functions-snt}{Section@tie 2.6.2}
@xrdef{Completion Functions-pg}{42}
@xrdef{Completion Variables-title}{Completion Variables}
@xrdef{Completion Variables-pg}{43}
@xrdef{Completion Variables-snt}{Section@tie 2.6.3}
@xrdef{Completion Variables-pg}{43}
@xrdef{A Short Completion Example-title}{A Short Completion Example}
@xrdef{A Short Completion Example-pg}{47}
@xrdef{A Short Completion Example-snt}{Section@tie 2.6.4}
@xrdef{A Short Completion Example-pg}{47}
@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
@xrdef{GNU Free Documentation License-pg}{56}
@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char65{}}
@xrdef{GNU Free Documentation License-pg}{56}
@xrdef{Concept Index-title}{Concept Index}
@xrdef{Concept Index-pg}{63}
@xrdef{Concept Index-snt}{}
@xrdef{Concept Index-pg}{64}
@xrdef{Function and Variable Index-title}{Function and Variable Index}
@xrdef{Function and Variable Index-pg}{64}
@xrdef{Function and Variable Index-snt}{}
@xrdef{Function and Variable Index-pg}{65}
+2 -2
View File
@@ -4,8 +4,8 @@
\entry{editing command lines}{1}{editing command lines}
\entry{killing text}{2}{killing text}
\entry{yanking text}{2}{yanking text}
\entry{kill ring}{3}{kill ring}
\entry{kill ring}{2}{kill ring}
\entry{initialization file, readline}{4}{initialization file, readline}
\entry{variables, readline}{5}{variables, readline}
\entry{variables, readline}{4}{variables, readline}
\entry{readline, function}{20}{readline, function}
\entry{application-specific completion functions}{41}{application-specific completion functions}
+2 -2
View File
@@ -8,13 +8,13 @@
\entry {initialization file, readline}{4}
\entry {interaction, readline}{1}
\initial {K}
\entry {kill ring}{3}
\entry {kill ring}{2}
\entry {killing text}{2}
\initial {N}
\entry {notation, readline}{1}
\initial {R}
\entry {readline, function}{20}
\initial {V}
\entry {variables, readline}{5}
\entry {variables, readline}{4}
\initial {Y}
\entry {yanking text}{2}
+38 -38
View File
@@ -1,12 +1,12 @@
\entry{bell-style}{5}{bell-style}
\entry{bell-style}{4}{bell-style}
\entry{bind-tty-special-chars}{5}{bind-tty-special-chars}
\entry{comment-begin}{5}{comment-begin}
\entry{completion-prefix-display-length}{5}{completion-prefix-display-length}
\entry{completion-query-items}{5}{completion-query-items}
\entry{convert-meta}{5}{convert-meta}
\entry{disable-completion}{6}{disable-completion}
\entry{editing-mode}{6}{editing-mode}
\entry{enable-keypad}{6}{enable-keypad}
\entry{disable-completion}{5}{disable-completion}
\entry{editing-mode}{5}{editing-mode}
\entry{enable-keypad}{5}{enable-keypad}
\entry{expand-tilde}{6}{expand-tilde}
\entry{history-preserve-point}{6}{history-preserve-point}
\entry{history-size}{6}{history-size}
@@ -15,15 +15,15 @@
\entry{meta-flag}{6}{meta-flag}
\entry{isearch-terminators}{6}{isearch-terminators}
\entry{keymap}{6}{keymap}
\entry{mark-modified-lines}{7}{mark-modified-lines}
\entry{mark-modified-lines}{6}{mark-modified-lines}
\entry{mark-symlinked-directories}{7}{mark-symlinked-directories}
\entry{match-hidden-files}{7}{match-hidden-files}
\entry{output-meta}{7}{output-meta}
\entry{page-completions}{7}{page-completions}
\entry{revert-all-at-newline}{7}{revert-all-at-newline}
\entry{show-all-if-ambiguous}{7}{show-all-if-ambiguous}
\entry{show-all-if-unmodified}{8}{show-all-if-unmodified}
\entry{visible-stats}{8}{visible-stats}
\entry{show-all-if-unmodified}{7}{show-all-if-unmodified}
\entry{visible-stats}{7}{visible-stats}
\entry{beginning-of-line (C-a)}{13}{\code {beginning-of-line (C-a)}}
\entry{end-of-line (C-e)}{13}{\code {end-of-line (C-e)}}
\entry{forward-char (C-f)}{13}{\code {forward-char (C-f)}}
@@ -33,7 +33,7 @@
\entry{clear-screen (C-l)}{13}{\code {clear-screen (C-l)}}
\entry{redraw-current-line ()}{13}{\code {redraw-current-line ()}}
\entry{accept-line (Newline or Return)}{13}{\code {accept-line (Newline or Return)}}
\entry{previous-history (C-p)}{14}{\code {previous-history (C-p)}}
\entry{previous-history (C-p)}{13}{\code {previous-history (C-p)}}
\entry{next-history (C-n)}{14}{\code {next-history (C-n)}}
\entry{beginning-of-history (M-<)}{14}{\code {beginning-of-history (M-<)}}
\entry{end-of-history (M->)}{14}{\code {end-of-history (M->)}}
@@ -70,7 +70,7 @@
\entry{copy-region-as-kill ()}{16}{\code {copy-region-as-kill ()}}
\entry{copy-backward-word ()}{16}{\code {copy-backward-word ()}}
\entry{copy-forward-word ()}{16}{\code {copy-forward-word ()}}
\entry{yank (C-y)}{17}{\code {yank (C-y)}}
\entry{yank (C-y)}{16}{\code {yank (C-y)}}
\entry{yank-pop (M-y)}{17}{\code {yank-pop (M-y)}}
\entry{digit-argument (M-0, M-1, ...{} M--)}{17}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
\entry{universal-argument ()}{17}{\code {universal-argument ()}}
@@ -79,7 +79,7 @@
\entry{insert-completions (M-*)}{17}{\code {insert-completions (M-*)}}
\entry{menu-complete ()}{17}{\code {menu-complete ()}}
\entry{delete-char-or-list ()}{17}{\code {delete-char-or-list ()}}
\entry{start-kbd-macro (C-x ()}{18}{\code {start-kbd-macro (C-x ()}}
\entry{start-kbd-macro (C-x ()}{17}{\code {start-kbd-macro (C-x ()}}
\entry{end-kbd-macro (C-x ))}{18}{\code {end-kbd-macro (C-x ))}}
\entry{call-last-kbd-macro (C-x e)}{18}{\code {call-last-kbd-macro (C-x e)}}
\entry{re-read-init-file (C-x C-r)}{18}{\code {re-read-init-file (C-x C-r)}}
@@ -92,8 +92,8 @@
\entry{set-mark (C-@)}{18}{\code {set-mark (C-@)}}
\entry{exchange-point-and-mark (C-x C-x)}{18}{\code {exchange-point-and-mark (C-x C-x)}}
\entry{character-search (C-])}{18}{\code {character-search (C-])}}
\entry{character-search-backward (M-C-])}{19}{\code {character-search-backward (M-C-])}}
\entry{insert-comment (M-#)}{19}{\code {insert-comment (M-#)}}
\entry{character-search-backward (M-C-])}{18}{\code {character-search-backward (M-C-])}}
\entry{insert-comment (M-#)}{18}{\code {insert-comment (M-#)}}
\entry{dump-functions ()}{19}{\code {dump-functions ()}}
\entry{dump-variables ()}{19}{\code {dump-variables ()}}
\entry{dump-macros ()}{19}{\code {dump-macros ()}}
@@ -169,7 +169,7 @@
\entry{rl_funmap_names}{31}{\code {rl_funmap_names}}
\entry{rl_add_funmap_entry}{31}{\code {rl_add_funmap_entry}}
\entry{rl_begin_undo_group}{31}{\code {rl_begin_undo_group}}
\entry{rl_end_undo_group}{32}{\code {rl_end_undo_group}}
\entry{rl_end_undo_group}{31}{\code {rl_end_undo_group}}
\entry{rl_add_undo}{32}{\code {rl_add_undo}}
\entry{rl_free_undo_list}{32}{\code {rl_free_undo_list}}
\entry{rl_do_undo}{32}{\code {rl_do_undo}}
@@ -180,7 +180,7 @@
\entry{rl_on_new_line_with_prompt}{32}{\code {rl_on_new_line_with_prompt}}
\entry{rl_reset_line_state}{32}{\code {rl_reset_line_state}}
\entry{rl_crlf}{32}{\code {rl_crlf}}
\entry{rl_show_char}{33}{\code {rl_show_char}}
\entry{rl_show_char}{32}{\code {rl_show_char}}
\entry{rl_message}{33}{\code {rl_message}}
\entry{rl_clear_message}{33}{\code {rl_clear_message}}
\entry{rl_save_prompt}{33}{\code {rl_save_prompt}}
@@ -188,8 +188,8 @@
\entry{rl_expand_prompt}{33}{\code {rl_expand_prompt}}
\entry{rl_set_prompt}{33}{\code {rl_set_prompt}}
\entry{rl_insert_text}{33}{\code {rl_insert_text}}
\entry{rl_delete_text}{34}{\code {rl_delete_text}}
\entry{rl_copy_text}{34}{\code {rl_copy_text}}
\entry{rl_delete_text}{33}{\code {rl_delete_text}}
\entry{rl_copy_text}{33}{\code {rl_copy_text}}
\entry{rl_kill_text}{34}{\code {rl_kill_text}}
\entry{rl_push_macro_input}{34}{\code {rl_push_macro_input}}
\entry{rl_read_key}{34}{\code {rl_read_key}}
@@ -198,7 +198,7 @@
\entry{rl_execute_next}{34}{\code {rl_execute_next}}
\entry{rl_clear_pending_input}{34}{\code {rl_clear_pending_input}}
\entry{rl_set_keyboard_input_timeout}{34}{\code {rl_set_keyboard_input_timeout}}
\entry{rl_prep_terminal}{35}{\code {rl_prep_terminal}}
\entry{rl_prep_terminal}{34}{\code {rl_prep_terminal}}
\entry{rl_deprep_terminal}{35}{\code {rl_deprep_terminal}}
\entry{rl_tty_set_default_bindings}{35}{\code {rl_tty_set_default_bindings}}
\entry{rl_tty_unset_default_bindings}{35}{\code {rl_tty_unset_default_bindings}}
@@ -208,9 +208,9 @@
\entry{rl_free}{35}{\code {rl_free}}
\entry{rl_replace_line}{35}{\code {rl_replace_line}}
\entry{rl_extend_line_buffer}{35}{\code {rl_extend_line_buffer}}
\entry{rl_initialize}{36}{\code {rl_initialize}}
\entry{rl_ding}{36}{\code {rl_ding}}
\entry{rl_alphabetic}{36}{\code {rl_alphabetic}}
\entry{rl_initialize}{35}{\code {rl_initialize}}
\entry{rl_ding}{35}{\code {rl_ding}}
\entry{rl_alphabetic}{35}{\code {rl_alphabetic}}
\entry{rl_display_match_list}{36}{\code {rl_display_match_list}}
\entry{_rl_uppercase_p}{36}{\code {_rl_uppercase_p}}
\entry{_rl_lowercase_p}{36}{\code {_rl_lowercase_p}}
@@ -220,24 +220,24 @@
\entry{_rl_digit_value}{36}{\code {_rl_digit_value}}
\entry{rl_macro_bind}{36}{\code {rl_macro_bind}}
\entry{rl_macro_dumper}{36}{\code {rl_macro_dumper}}
\entry{rl_variable_bind}{37}{\code {rl_variable_bind}}
\entry{rl_variable_value}{37}{\code {rl_variable_value}}
\entry{rl_variable_bind}{36}{\code {rl_variable_bind}}
\entry{rl_variable_value}{36}{\code {rl_variable_value}}
\entry{rl_variable_dumper}{37}{\code {rl_variable_dumper}}
\entry{rl_set_paren_blink_timeout}{37}{\code {rl_set_paren_blink_timeout}}
\entry{rl_get_termcap}{37}{\code {rl_get_termcap}}
\entry{rl_callback_handler_install}{37}{\code {rl_callback_handler_install}}
\entry{rl_callback_read_char}{37}{\code {rl_callback_read_char}}
\entry{rl_callback_handler_remove}{38}{\code {rl_callback_handler_remove}}
\entry{rl_catch_signals}{40}{\code {rl_catch_signals}}
\entry{rl_callback_handler_remove}{37}{\code {rl_callback_handler_remove}}
\entry{rl_catch_signals}{39}{\code {rl_catch_signals}}
\entry{rl_catch_sigwinch}{40}{\code {rl_catch_sigwinch}}
\entry{rl_cleanup_after_signal}{40}{\code {rl_cleanup_after_signal}}
\entry{rl_free_line_state}{40}{\code {rl_free_line_state}}
\entry{rl_reset_after_signal}{40}{\code {rl_reset_after_signal}}
\entry{rl_echo_signal_char}{40}{\code {rl_echo_signal_char}}
\entry{rl_resize_terminal}{40}{\code {rl_resize_terminal}}
\entry{rl_set_screen_size}{41}{\code {rl_set_screen_size}}
\entry{rl_get_screen_size}{41}{\code {rl_get_screen_size}}
\entry{rl_reset_screen_size}{41}{\code {rl_reset_screen_size}}
\entry{rl_set_screen_size}{40}{\code {rl_set_screen_size}}
\entry{rl_get_screen_size}{40}{\code {rl_get_screen_size}}
\entry{rl_reset_screen_size}{40}{\code {rl_reset_screen_size}}
\entry{rl_set_signals}{41}{\code {rl_set_signals}}
\entry{rl_clear_signals}{41}{\code {rl_clear_signals}}
\entry{rl_complete}{42}{\code {rl_complete}}
@@ -245,21 +245,21 @@
\entry{rl_complete_internal}{42}{\code {rl_complete_internal}}
\entry{rl_complete}{42}{\code {rl_complete}}
\entry{rl_possible_completions}{42}{\code {rl_possible_completions}}
\entry{rl_insert_completions}{43}{\code {rl_insert_completions}}
\entry{rl_completion_mode}{43}{\code {rl_completion_mode}}
\entry{rl_completion_matches}{43}{\code {rl_completion_matches}}
\entry{rl_insert_completions}{42}{\code {rl_insert_completions}}
\entry{rl_completion_mode}{42}{\code {rl_completion_mode}}
\entry{rl_completion_matches}{42}{\code {rl_completion_matches}}
\entry{rl_filename_completion_function}{43}{\code {rl_filename_completion_function}}
\entry{rl_username_completion_function}{43}{\code {rl_username_completion_function}}
\entry{rl_completion_entry_function}{43}{\code {rl_completion_entry_function}}
\entry{rl_attempted_completion_function}{43}{\code {rl_attempted_completion_function}}
\entry{rl_filename_quoting_function}{44}{\code {rl_filename_quoting_function}}
\entry{rl_filename_dequoting_function}{44}{\code {rl_filename_dequoting_function}}
\entry{rl_filename_quoting_function}{43}{\code {rl_filename_quoting_function}}
\entry{rl_filename_dequoting_function}{43}{\code {rl_filename_dequoting_function}}
\entry{rl_char_is_quoted_p}{44}{\code {rl_char_is_quoted_p}}
\entry{rl_ignore_some_completions_function}{44}{\code {rl_ignore_some_completions_function}}
\entry{rl_directory_completion_hook}{44}{\code {rl_directory_completion_hook}}
\entry{rl_completion_display_matches_hook}{44}{\code {rl_completion_display_matches_hook}}
\entry{rl_basic_word_break_characters}{45}{\code {rl_basic_word_break_characters}}
\entry{rl_basic_quote_characters}{45}{\code {rl_basic_quote_characters}}
\entry{rl_basic_word_break_characters}{44}{\code {rl_basic_word_break_characters}}
\entry{rl_basic_quote_characters}{44}{\code {rl_basic_quote_characters}}
\entry{rl_completer_word_break_characters}{45}{\code {rl_completer_word_break_characters}}
\entry{rl_completion_word_break_hook}{45}{\code {rl_completion_word_break_hook}}
\entry{rl_completer_quote_characters}{45}{\code {rl_completer_quote_characters}}
@@ -267,16 +267,16 @@
\entry{rl_special_prefixes}{45}{\code {rl_special_prefixes}}
\entry{rl_completion_query_items}{45}{\code {rl_completion_query_items}}
\entry{rl_completion_append_character}{45}{\code {rl_completion_append_character}}
\entry{rl_completion_suppress_append}{46}{\code {rl_completion_suppress_append}}
\entry{rl_completion_quote_character}{46}{\code {rl_completion_quote_character}}
\entry{rl_completion_suppress_append}{45}{\code {rl_completion_suppress_append}}
\entry{rl_completion_quote_character}{45}{\code {rl_completion_quote_character}}
\entry{rl_completion_suppress_quote}{46}{\code {rl_completion_suppress_quote}}
\entry{rl_completion_found_quote}{46}{\code {rl_completion_found_quote}}
\entry{rl_completion_mark_symlink_dirs}{46}{\code {rl_completion_mark_symlink_dirs}}
\entry{rl_ignore_completion_duplicates}{46}{\code {rl_ignore_completion_duplicates}}
\entry{rl_filename_completion_desired}{46}{\code {rl_filename_completion_desired}}
\entry{rl_filename_quoting_desired}{46}{\code {rl_filename_quoting_desired}}
\entry{rl_attempted_completion_over}{47}{\code {rl_attempted_completion_over}}
\entry{rl_sort_completion_matches}{47}{\code {rl_sort_completion_matches}}
\entry{rl_attempted_completion_over}{46}{\code {rl_attempted_completion_over}}
\entry{rl_sort_completion_matches}{46}{\code {rl_sort_completion_matches}}
\entry{rl_completion_type}{47}{\code {rl_completion_type}}
\entry{rl_completion_invoking_key}{47}{\code {rl_completion_invoking_key}}
\entry{rl_inhibit_completion}{47}{\code {rl_inhibit_completion}}
+38 -38
View File
@@ -16,13 +16,13 @@
\entry {\code {backward-word (M-b)}}{13}
\entry {\code {beginning-of-history (M-<)}}{14}
\entry {\code {beginning-of-line (C-a)}}{13}
\entry {bell-style}{5}
\entry {bell-style}{4}
\entry {bind-tty-special-chars}{5}
\initial {C}
\entry {\code {call-last-kbd-macro (C-x e)}}{18}
\entry {\code {capitalize-word (M-c)}}{15}
\entry {\code {character-search (C-])}}{18}
\entry {\code {character-search-backward (M-C-])}}{19}
\entry {\code {character-search-backward (M-C-])}}{18}
\entry {\code {clear-screen (C-l)}}{13}
\entry {comment-begin}{5}
\entry {\code {complete (\key {TAB})}}{17}
@@ -37,16 +37,16 @@
\entry {\code {delete-char-or-list ()}}{17}
\entry {\code {delete-horizontal-space ()}}{16}
\entry {\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{17}
\entry {disable-completion}{6}
\entry {disable-completion}{5}
\entry {\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}{18}
\entry {\code {downcase-word (M-l)}}{15}
\entry {\code {dump-functions ()}}{19}
\entry {\code {dump-macros ()}}{19}
\entry {\code {dump-variables ()}}{19}
\initial {E}
\entry {editing-mode}{6}
\entry {editing-mode}{5}
\entry {\code {emacs-editing-mode (C-e)}}{19}
\entry {enable-keypad}{6}
\entry {enable-keypad}{5}
\entry {\code {end-kbd-macro (C-x ))}}{18}
\entry {\code {end-of-history (M->)}}{14}
\entry {\code {end-of-line (C-e)}}{13}
@@ -65,7 +65,7 @@
\entry {horizontal-scroll-mode}{6}
\initial {I}
\entry {input-meta}{6}
\entry {\code {insert-comment (M-#)}}{19}
\entry {\code {insert-comment (M-#)}}{18}
\entry {\code {insert-completions (M-*)}}{17}
\entry {isearch-terminators}{6}
\initial {K}
@@ -75,7 +75,7 @@
\entry {\code {kill-whole-line ()}}{16}
\entry {\code {kill-word (M-d)}}{16}
\initial {M}
\entry {mark-modified-lines}{7}
\entry {mark-modified-lines}{6}
\entry {mark-symlinked-directories}{7}
\entry {match-hidden-files}{7}
\entry {\code {menu-complete ()}}{17}
@@ -91,7 +91,7 @@
\entry {page-completions}{7}
\entry {\code {possible-completions (M-?)}}{17}
\entry {\code {prefix-meta (\key {ESC})}}{18}
\entry {\code {previous-history (C-p)}}{14}
\entry {\code {previous-history (C-p)}}{13}
\initial {Q}
\entry {\code {quoted-insert (C-q or C-v)}}{15}
\initial {R}
@@ -104,12 +104,12 @@
\entry {\code {rl_add_defun}}{28}
\entry {\code {rl_add_funmap_entry}}{31}
\entry {\code {rl_add_undo}}{32}
\entry {\code {rl_alphabetic}}{36}
\entry {\code {rl_alphabetic}}{35}
\entry {\code {rl_already_prompted}}{24}
\entry {\code {rl_attempted_completion_function}}{43}
\entry {\code {rl_attempted_completion_over}}{47}
\entry {\code {rl_basic_quote_characters}}{45}
\entry {\code {rl_basic_word_break_characters}}{45}
\entry {\code {rl_attempted_completion_over}}{46}
\entry {\code {rl_basic_quote_characters}}{44}
\entry {\code {rl_basic_word_break_characters}}{44}
\entry {\code {rl_begin_undo_group}}{31}
\entry {\code {rl_bind_key}}{29}
\entry {\code {rl_bind_key_if_unbound}}{29}
@@ -121,9 +121,9 @@
\entry {\code {rl_bind_keyseq_in_map}}{30}
\entry {\code {rl_binding_keymap}}{25}
\entry {\code {rl_callback_handler_install}}{37}
\entry {\code {rl_callback_handler_remove}}{38}
\entry {\code {rl_callback_handler_remove}}{37}
\entry {\code {rl_callback_read_char}}{37}
\entry {\code {rl_catch_signals}}{40}
\entry {\code {rl_catch_signals}}{39}
\entry {\code {rl_catch_sigwinch}}{40}
\entry {\code {rl_char_is_quoted_p}}{44}
\entry {\code {rl_cleanup_after_signal}}{40}
@@ -140,21 +140,21 @@
\entry {\code {rl_completion_found_quote}}{46}
\entry {\code {rl_completion_invoking_key}}{47}
\entry {\code {rl_completion_mark_symlink_dirs}}{46}
\entry {\code {rl_completion_matches}}{43}
\entry {\code {rl_completion_mode}}{43}
\entry {\code {rl_completion_matches}}{42}
\entry {\code {rl_completion_mode}}{42}
\entry {\code {rl_completion_query_items}}{45}
\entry {\code {rl_completion_quote_character}}{46}
\entry {\code {rl_completion_suppress_append}}{46}
\entry {\code {rl_completion_quote_character}}{45}
\entry {\code {rl_completion_suppress_append}}{45}
\entry {\code {rl_completion_suppress_quote}}{46}
\entry {\code {rl_completion_type}}{47}
\entry {\code {rl_completion_word_break_hook}}{45}
\entry {\code {rl_copy_keymap}}{28}
\entry {\code {rl_copy_text}}{34}
\entry {\code {rl_copy_text}}{33}
\entry {\code {rl_crlf}}{32}
\entry {\code {rl_delete_text}}{34}
\entry {\code {rl_delete_text}}{33}
\entry {\code {rl_deprep_term_function}}{25}
\entry {\code {rl_deprep_terminal}}{35}
\entry {\code {rl_ding}}{36}
\entry {\code {rl_ding}}{35}
\entry {\code {rl_directory_completion_hook}}{44}
\entry {\code {rl_discard_keymap}}{28}
\entry {\code {rl_dispatching}}{23}
@@ -165,7 +165,7 @@
\entry {\code {rl_echo_signal_char}}{40}
\entry {\code {rl_editing_mode}}{27}
\entry {\code {rl_end}}{23}
\entry {\code {rl_end_undo_group}}{32}
\entry {\code {rl_end_undo_group}}{31}
\entry {\code {rl_erase_empty_line}}{23}
\entry {\code {rl_event_hook}}{25}
\entry {\code {rl_execute_next}}{34}
@@ -176,10 +176,10 @@
\entry {\code {rl_extend_line_buffer}}{35}
\entry {\code {rl_filename_completion_desired}}{46}
\entry {\code {rl_filename_completion_function}}{43}
\entry {\code {rl_filename_dequoting_function}}{44}
\entry {\code {rl_filename_dequoting_function}}{43}
\entry {\code {rl_filename_quote_characters}}{45}
\entry {\code {rl_filename_quoting_desired}}{46}
\entry {\code {rl_filename_quoting_function}}{44}
\entry {\code {rl_filename_quoting_function}}{43}
\entry {\code {rl_forced_update_display}}{32}
\entry {\code {rl_free}}{35}
\entry {\code {rl_free_line_state}}{40}
@@ -191,7 +191,7 @@
\entry {\code {rl_get_keymap}}{28}
\entry {\code {rl_get_keymap_by_name}}{28}
\entry {\code {rl_get_keymap_name}}{28}
\entry {\code {rl_get_screen_size}}{41}
\entry {\code {rl_get_screen_size}}{40}
\entry {\code {rl_get_termcap}}{37}
\entry {\code {rl_getc}}{34}
\entry {\code {rl_getc_function}}{25}
@@ -199,8 +199,8 @@
\entry {\code {rl_ignore_completion_duplicates}}{46}
\entry {\code {rl_ignore_some_completions_function}}{44}
\entry {\code {rl_inhibit_completion}}{47}
\entry {\code {rl_initialize}}{36}
\entry {\code {rl_insert_completions}}{43}
\entry {\code {rl_initialize}}{35}
\entry {\code {rl_insert_completions}}{42}
\entry {\code {rl_insert_text}}{33}
\entry {\code {rl_instream}}{24}
\entry {\code {rl_invoking_keyseqs}}{31}
@@ -230,7 +230,7 @@
\entry {\code {rl_pre_input_hook}}{25}
\entry {\code {rl_prefer_env_winsize}}{24}
\entry {\code {rl_prep_term_function}}{25}
\entry {\code {rl_prep_terminal}}{35}
\entry {\code {rl_prep_terminal}}{34}
\entry {\code {rl_prompt}}{24}
\entry {\code {rl_push_macro_input}}{34}
\entry {\code {rl_read_init_file}}{30}
@@ -243,7 +243,7 @@
\entry {\code {rl_replace_line}}{35}
\entry {\code {rl_reset_after_signal}}{40}
\entry {\code {rl_reset_line_state}}{32}
\entry {\code {rl_reset_screen_size}}{41}
\entry {\code {rl_reset_screen_size}}{40}
\entry {\code {rl_reset_terminal}}{35}
\entry {\code {rl_resize_terminal}}{40}
\entry {\code {rl_restore_prompt}}{33}
@@ -255,10 +255,10 @@
\entry {\code {rl_set_keymap}}{28}
\entry {\code {rl_set_paren_blink_timeout}}{37}
\entry {\code {rl_set_prompt}}{33}
\entry {\code {rl_set_screen_size}}{41}
\entry {\code {rl_set_screen_size}}{40}
\entry {\code {rl_set_signals}}{41}
\entry {\code {rl_show_char}}{33}
\entry {\code {rl_sort_completion_matches}}{47}
\entry {\code {rl_show_char}}{32}
\entry {\code {rl_sort_completion_matches}}{46}
\entry {\code {rl_special_prefixes}}{45}
\entry {\code {rl_startup_hook}}{25}
\entry {\code {rl_stuff_char}}{34}
@@ -270,15 +270,15 @@
\entry {\code {rl_unbind_key}}{29}
\entry {\code {rl_unbind_key_in_map}}{29}
\entry {\code {rl_username_completion_function}}{43}
\entry {\code {rl_variable_bind}}{37}
\entry {\code {rl_variable_bind}}{36}
\entry {\code {rl_variable_dumper}}{37}
\entry {\code {rl_variable_value}}{37}
\entry {\code {rl_variable_value}}{36}
\initial {S}
\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{15}
\entry {\code {set-mark (C-@)}}{18}
\entry {show-all-if-ambiguous}{7}
\entry {show-all-if-unmodified}{8}
\entry {\code {start-kbd-macro (C-x ()}}{18}
\entry {show-all-if-unmodified}{7}
\entry {\code {start-kbd-macro (C-x ()}}{17}
\initial {T}
\entry {\code {tab-insert (M-\key {TAB})}}{15}
\entry {\code {tilde-expand (M-~)}}{18}
@@ -293,9 +293,9 @@
\entry {\code {upcase-word (M-u)}}{15}
\initial {V}
\entry {\code {vi-editing-mode (M-C-j)}}{19}
\entry {visible-stats}{8}
\entry {visible-stats}{7}
\initial {Y}
\entry {\code {yank (C-y)}}{17}
\entry {\code {yank (C-y)}}{16}
\entry {\code {yank-last-arg (M-. or M-_)}}{14}
\entry {\code {yank-nth-arg (M-C-y)}}{14}
\entry {\code {yank-pop (M-y)}}{17}
+102 -82
View File
@@ -1,7 +1,7 @@
This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 6 JAN 2009 11:52
**/usr/homes/chet/src/bash/src/lib/readline/doc/rlman.texi
(/usr/homes/chet/src/bash/src/lib/readline/doc/rlman.texi (./texinfo.tex
Loading texinfo [version 2003-02-03.16]: Basics,
This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 18 MAR 2009 08:22
**/Users/chet/src/bash/src/lib/readline/doc/rlman.texi
(/Users/chet/src/bash/src/lib/readline/doc/rlman.texi (./texinfo.tex
Loading texinfo [version 2009-01-18.17]:
\bindingoffset=\dimen16
\normaloffset=\dimen17
\pagewidth=\dimen18
@@ -32,81 +32,94 @@ Loading texinfo [version 2003-02-03.16]: Basics,
\toksD=\toks18
\boxA=\box19
\countA=\count30
\nopdfimagehelp=\toks19
fonts,
\sffam=\fam8
\textleading=\dimen26
\mainmagstep=\count31
\fontdepth=\count32
page headings,
markup,
\fontdepth=\count31
glyphs,
\errorbox=\box20
page headings,
\titlepagetopglue=\skip20
\titlepagebottomglue=\skip21
\evenheadline=\toks19
\oddheadline=\toks20
\evenfootline=\toks21
\oddfootline=\toks22
tables,
\evenheadline=\toks20
\oddheadline=\toks21
\evenfootline=\toks22
\oddfootline=\toks23
tables,
\tableindent=\dimen27
\itemindent=\dimen28
\itemmargin=\dimen29
\itemmax=\dimen30
\itemno=\count33
\itemno=\count32
\multitableparskip=\skip22
\multitableparindent=\skip23
\multitablecolspace=\dimen31
\multitablelinespace=\skip24
\colcount=\count34
\savedfootnotes=\box20
conditionals, indexing,
\secondaryindent=\skip25
\colcount=\count33
\everytab=\toks24
conditionals,
\doignorecount=\count34
indexing,
\whatsitskip=\skip25
\whatsitpenalty=\count35
\secondaryindent=\skip26
\partialpage=\box21
\doublecolumnhsize=\dimen32
sectioning,
\chapno=\count35
\secno=\count36
\subsecno=\count37
\subsubsecno=\count38
\appendixno=\count39
\absseclevel=\count40
\secbase=\count41
\chapheadingskip=\skip26
\secheadingskip=\skip27
\subsecheadingskip=\skip28
\unnumberedno=\count36
\chapno=\count37
\secno=\count38
\subsecno=\count39
\subsubsecno=\count40
\appendixno=\count41
\absseclevel=\count42
\secbase=\count43
\chapheadingskip=\skip27
\secheadingskip=\skip28
\subsecheadingskip=\skip29
toc,
\tocfile=\write0
\contentsrightmargin=\skip29
\savepageno=\count42
\lastnegativepageno=\count43
\shortappendixwidth=\dimen33
\tocindent=\dimen34
\contentsrightmargin=\skip30
\savepageno=\count44
\lastnegativepageno=\count45
\tocindent=\dimen33
environments,
\errorbox=\box22
\lispnarrowing=\skip30
\envskipamount=\skip31
\circthick=\dimen35
\cartouter=\dimen36
\cartinner=\dimen37
\normbskip=\skip32
\normpskip=\skip33
\normlskip=\skip34
\lskip=\skip35
\rskip=\skip36
\lispnarrowing=\skip31
\envskipamount=\skip32
\circthick=\dimen34
\cartouter=\dimen35
\cartinner=\dimen36
\normbskip=\skip33
\normpskip=\skip34
\normlskip=\skip35
\lskip=\skip36
\rskip=\skip37
\nonfillparindent=\dimen37
\tabw=\dimen38
defuns,
\defbodyindent=\skip37
\defargsindent=\skip38
\deflastargmargin=\skip39
\parencount=\count44
defuns,
\defbodyindent=\skip38
\defargsindent=\skip39
\deflastargmargin=\skip40
\defunpenalty=\count46
\parencount=\count47
\brackcount=\count48
macros,
\macscribble=\write1
\paramno=\count45
\macname=\toks23
cross references,
\paramno=\count49
\macname=\toks25
cross references,
\auxfile=\write2
\savesfregister=\count46
\footnoteno=\count47
(/sw/share/texmf-dist/tex/generic/epsf/epsf.tex
\savesfregister=\count50
insertions,
\footnoteno=\count51
\SAVEfootins=\box22
\SAVEmargin=\box23
(/sw/share/texmf-dist/tex/generic/epsf/epsf.tex
\epsffilein=\read0
\epsfframemargin=\dimen39
\epsfframethickness=\dimen40
@@ -116,24 +129,27 @@ cross references,
\epsfxsize=\dimen44
\epsfysize=\dimen45
\pspoints=\dimen46
\epsfnoopenhelp=\toks24
\epsfnoopenhelp=\toks26
)
\noepsfhelp=\toks25
localization,
\nolanghelp=\toks26
\noepsfhelp=\toks27
localization,
\nolanghelp=\toks28
\countUTFx=\count52
\countUTFy=\count53
\countUTFz=\count54
formatting,
\defaultparindent=\dimen47
and turning on texinfo input format.) (./rlman.aux)
and turning on texinfo input format.) (./rlman.aux)
\openout2 = `rlman.aux'.
@cpindfile=@write3
@fnindfile=@write4
@vrindfile=@write5
@tpindfile=@write6
@kyindfile=@write7
@pgindfile=@write8
(./version.texi) [1
\openout2 = `rlman.aux'.
(./version.texi) [1
\openout3 = `rlman.cp'.
\openout4 = `rlman.fn'.
@@ -146,16 +162,20 @@ localization,
\openout8 = `rlman.pg'.
] [2] (./rlman.toc [-1]) [-2] (./rluser.texi
]
\openout1 = `rlman.tmp'.
(./rlman.tmp) [2] (./rlman.toc [-1]) [-2] (./rluser.texi
@btindfile=@write9
Chapter 1
\openout0 = `rlman.toc'.
[1
[1
\openout9 = `rlman.bt'.
] [2] [3] [4] [5]
] [2]
[3] [4] [5]
Underfull \hbox (badness 5231) in paragraph at lines 524--540
@texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr
m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and
@@ -183,7 +203,7 @@ gnored[] |
[11] [12] [13] [14] [15] [16] [17] [18]) (./rltech.texi Chapter 2 [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]
[36] [37] [38] [39] [40] [41] [42] [43] [44] [45]
Underfull \hbox (badness 7379) in paragraph at lines 1870--1875
[]@textrm If an application-specific com-ple-tion func-tion as-signed to @text
tt rl_attempted_
@@ -196,16 +216,16 @@ tt rl_attempted_
.@glue 3.65 plus 1.825 minus 1.21666
.etc.
[47] [48] [49] [50] [51] [52] [53] [54]) Appendix A [55] (./fdl.texi [56]
[57] [58] [59] [60] [61]) (Concept Index) [62] (./rlman.cps)
(Function and Variable Index) [63] (./rlman.fns [64] [65] [66]) [67] )
[46] [47] [48] [49] [50] [51] [52] [53] [54]) Appendix A [55] (./fdl.texi
[56] [57] [58] [59] [60] [61] [62]) (Concept Index) [63] (./rlman.cps)
(Function and Variable Index) [64] (./rlman.fns [65] [66] [67]) [68] )
Here is how much of TeX's memory you used:
1496 strings out of 97980
18428 string characters out of 1221004
47342 words of memory out of 1500000
2358 multiletter control sequences out of 10000+50000
31953 words of font info for 111 fonts, out of 1200000 for 2000
19 hyphenation exceptions out of 8191
14i,8n,17p,281b,697s stack positions out of 5000i,500n,6000p,200000b,5000s
1839 strings out of 97980
23013 string characters out of 1221004
83614 words of memory out of 1500000
2666 multiletter control sequences out of 10000+50000
32127 words of font info for 112 fonts, out of 1200000 for 2000
51 hyphenation exceptions out of 8191
16i,6n,14p,323b,534s stack positions out of 5000i,500n,6000p,200000b,5000s
Output written on rlman.dvi (71 pages, 291468 bytes).
Output written on rlman.dvi (72 pages, 292044 bytes).
+1 -1
View File
@@ -21,7 +21,7 @@ are preserved on all copies.
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
and with the Back-Cover Texts as in (a) below. A copy of the license is
+26
View File
@@ -0,0 +1,26 @@
This manual describes the GNU Readline Library
(version @value{VERSION}, @value{UPDATED}), a library which aids in the
consistency of user interface across discrete programs which provide
a command line interface.
Copyright @copyright{} 1988--2009 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
and with the Back-Cover Texts as in (a) below. A copy of the license is
included in the section entitled ``GNU Free Documentation License''.
(a) The FSF's Back-Cover Text is: You are free to copy and modify
this GNU manual. Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''
@end quotation
@endinput
+51 -51
View File
@@ -1,51 +1,51 @@
\chapentry{Command Line Editing}{1}{1}
\secentry{Introduction to Line Editing}{1}{1}{1}
\secentry{Readline Interaction}{1}{2}{1}
\subsecentry{Readline Bare Essentials}{1}{2}{1}{1}
\subsecentry{Readline Movement Commands}{1}{2}{2}{2}
\subsecentry{Readline Killing Commands}{1}{2}{3}{2}
\subsecentry{Readline Arguments}{1}{2}{4}{3}
\subsecentry{Searching for Commands in the History}{1}{2}{5}{3}
\secentry{Readline Init File}{1}{3}{4}
\subsecentry{Readline Init File Syntax}{1}{3}{1}{4}
\subsecentry{Conditional Init Constructs}{1}{3}{2}{9}
\subsecentry{Sample Init File}{1}{3}{3}{10}
\secentry{Bindable Readline Commands}{1}{4}{13}
\subsecentry{Commands For Moving}{1}{4}{1}{13}
\subsecentry{Commands For Manipulating The History}{1}{4}{2}{13}
\subsecentry{Commands For Changing Text}{1}{4}{3}{14}
\subsecentry{Killing And Yanking}{1}{4}{4}{16}
\subsecentry{Specifying Numeric Arguments}{1}{4}{5}{17}
\subsecentry{Letting Readline Type For You}{1}{4}{6}{17}
\subsecentry{Keyboard Macros}{1}{4}{7}{17}
\subsecentry{Some Miscellaneous Commands}{1}{4}{8}{18}
\secentry{Readline vi Mode}{1}{5}{19}
\chapentry{Programming with GNU Readline}{2}{20}
\secentry{Basic Behavior}{2}{1}{20}
\secentry{Custom Functions}{2}{2}{21}
\subsecentry{Readline Typedefs}{2}{2}{1}{21}
\subsecentry{Writing a New Function}{2}{2}{2}{22}
\secentry{Readline Variables}{2}{3}{23}
\secentry{Readline Convenience Functions}{2}{4}{27}
\subsecentry{Naming a Function}{2}{4}{1}{27}
\subsecentry{Selecting a Keymap}{2}{4}{2}{28}
\subsecentry{Binding Keys}{2}{4}{3}{28}
\subsecentry{Associating Function Names and Bindings}{2}{4}{4}{30}
\subsecentry{Allowing Undoing}{2}{4}{5}{31}
\subsecentry{Redisplay}{2}{4}{6}{32}
\subsecentry{Modifying Text}{2}{4}{7}{33}
\subsecentry{Character Input}{2}{4}{8}{34}
\subsecentry{Terminal Management}{2}{4}{9}{34}
\subsecentry{Utility Functions}{2}{4}{10}{35}
\subsecentry{Miscellaneous Functions}{2}{4}{11}{36}
\subsecentry{Alternate Interface}{2}{4}{12}{37}
\subsecentry{A Readline Example}{2}{4}{13}{38}
\secentry{Readline Signal Handling}{2}{5}{39}
\secentry{Custom Completers}{2}{6}{41}
\subsecentry{How Completing Works}{2}{6}{1}{41}
\subsecentry{Completion Functions}{2}{6}{2}{42}
\subsecentry{Completion Variables}{2}{6}{3}{43}
\subsecentry{A Short Completion Example}{2}{6}{4}{47}
\appendixentry{GNU Free Documentation License}{A}{56}
\unnumbchapentry{Concept Index}{2}{63}
\unnumbchapentry{Function and Variable Index}{2}{64}
@numchapentry{Command Line Editing}{1}{Command Line Editing}{1}
@numsecentry{Introduction to Line Editing}{1.1}{Introduction and Notation}{1}
@numsecentry{Readline Interaction}{1.2}{Readline Interaction}{1}
@numsubsecentry{Readline Bare Essentials}{1.2.1}{Readline Bare Essentials}{1}
@numsubsecentry{Readline Movement Commands}{1.2.2}{Readline Movement Commands}{2}
@numsubsecentry{Readline Killing Commands}{1.2.3}{Readline Killing Commands}{2}
@numsubsecentry{Readline Arguments}{1.2.4}{Readline Arguments}{3}
@numsubsecentry{Searching for Commands in the History}{1.2.5}{Searching}{3}
@numsecentry{Readline Init File}{1.3}{Readline Init File}{4}
@numsubsecentry{Readline Init File Syntax}{1.3.1}{Readline Init File Syntax}{4}
@numsubsecentry{Conditional Init Constructs}{1.3.2}{Conditional Init Constructs}{9}
@numsubsecentry{Sample Init File}{1.3.3}{Sample Init File}{10}
@numsecentry{Bindable Readline Commands}{1.4}{Bindable Readline Commands}{13}
@numsubsecentry{Commands For Moving}{1.4.1}{Commands For Moving}{13}
@numsubsecentry{Commands For Manipulating The History}{1.4.2}{Commands For History}{13}
@numsubsecentry{Commands For Changing Text}{1.4.3}{Commands For Text}{15}
@numsubsecentry{Killing And Yanking}{1.4.4}{Commands For Killing}{16}
@numsubsecentry{Specifying Numeric Arguments}{1.4.5}{Numeric Arguments}{17}
@numsubsecentry{Letting Readline Type For You}{1.4.6}{Commands For Completion}{17}
@numsubsecentry{Keyboard Macros}{1.4.7}{Keyboard Macros}{17}
@numsubsecentry{Some Miscellaneous Commands}{1.4.8}{Miscellaneous Commands}{18}
@numsecentry{Readline vi Mode}{1.5}{Readline vi Mode}{19}
@numchapentry{Programming with GNU Readline}{2}{Programming with GNU Readline}{20}
@numsecentry{Basic Behavior}{2.1}{Basic Behavior}{20}
@numsecentry{Custom Functions}{2.2}{Custom Functions}{21}
@numsubsecentry{Readline Typedefs}{2.2.1}{Readline Typedefs}{22}
@numsubsecentry{Writing a New Function}{2.2.2}{Function Writing}{22}
@numsecentry{Readline Variables}{2.3}{Readline Variables}{23}
@numsecentry{Readline Convenience Functions}{2.4}{Readline Convenience Functions}{27}
@numsubsecentry{Naming a Function}{2.4.1}{Function Naming}{27}
@numsubsecentry{Selecting a Keymap}{2.4.2}{Keymaps}{28}
@numsubsecentry{Binding Keys}{2.4.3}{Binding Keys}{29}
@numsubsecentry{Associating Function Names and Bindings}{2.4.4}{Associating Function Names and Bindings}{30}
@numsubsecentry{Allowing Undoing}{2.4.5}{Allowing Undoing}{31}
@numsubsecentry{Redisplay}{2.4.6}{Redisplay}{32}
@numsubsecentry{Modifying Text}{2.4.7}{Modifying Text}{33}
@numsubsecentry{Character Input}{2.4.8}{Character Input}{34}
@numsubsecentry{Terminal Management}{2.4.9}{Terminal Management}{34}
@numsubsecentry{Utility Functions}{2.4.10}{Utility Functions}{35}
@numsubsecentry{Miscellaneous Functions}{2.4.11}{Miscellaneous Functions}{36}
@numsubsecentry{Alternate Interface}{2.4.12}{Alternate Interface}{37}
@numsubsecentry{A Readline Example}{2.4.13}{A Readline Example}{37}
@numsecentry{Readline Signal Handling}{2.5}{Readline Signal Handling}{39}
@numsecentry{Custom Completers}{2.6}{Custom Completers}{41}
@numsubsecentry{How Completing Works}{2.6.1}{How Completing Works}{41}
@numsubsecentry{Completion Functions}{2.6.2}{Completion Functions}{42}
@numsubsecentry{Completion Variables}{2.6.3}{Completion Variables}{43}
@numsubsecentry{A Short Completion Example}{2.6.4}{A Short Completion Example}{47}
@appentry{GNU Free Documentation License}{A}{GNU Free Documentation License}{56}
@unnchapentry{Concept Index}{10001}{Concept Index}{64}
@unnchapentry{Function and Variable Index}{10002}{Function and Variable Index}{65}
+23 -23
View File
@@ -1,69 +1,69 @@
@xrdef{Command Line Editing-title}{Command Line Editing}
@xrdef{Command Line Editing-pg}{1}
@xrdef{Command Line Editing-snt}{Chapter@tie 1}
@xrdef{Introduction and Notation-title}{Introduction to Line Editing}
@xrdef{Introduction and Notation-pg}{1}
@xrdef{Introduction and Notation-snt}{Section@tie 1.1}
@xrdef{Readline Interaction-title}{Readline Interaction}
@xrdef{Readline Interaction-pg}{1}
@xrdef{Readline Interaction-snt}{Section@tie 1.2}
@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials}
@xrdef{Readline Bare Essentials-pg}{1}
@xrdef{Readline Bare Essentials-snt}{Section@tie 1.2.1}
@xrdef{Command Line Editing-pg}{1}
@xrdef{Introduction and Notation-pg}{1}
@xrdef{Readline Interaction-pg}{1}
@xrdef{Readline Bare Essentials-pg}{1}
@xrdef{Readline Movement Commands-title}{Readline Movement Commands}
@xrdef{Readline Movement Commands-pg}{2}
@xrdef{Readline Movement Commands-snt}{Section@tie 1.2.2}
@xrdef{Readline Killing Commands-title}{Readline Killing Commands}
@xrdef{Readline Killing Commands-pg}{2}
@xrdef{Readline Killing Commands-snt}{Section@tie 1.2.3}
@xrdef{Readline Movement Commands-pg}{2}
@xrdef{Readline Killing Commands-pg}{2}
@xrdef{Readline Arguments-title}{Readline Arguments}
@xrdef{Readline Arguments-pg}{3}
@xrdef{Readline Arguments-snt}{Section@tie 1.2.4}
@xrdef{Searching-title}{Searching for Commands in the History}
@xrdef{Searching-pg}{3}
@xrdef{Searching-snt}{Section@tie 1.2.5}
@xrdef{Readline Arguments-pg}{3}
@xrdef{Searching-pg}{3}
@xrdef{Readline Init File-title}{Readline Init File}
@xrdef{Readline Init File-pg}{4}
@xrdef{Readline Init File-snt}{Section@tie 1.3}
@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax}
@xrdef{Readline Init File Syntax-pg}{4}
@xrdef{Readline Init File Syntax-snt}{Section@tie 1.3.1}
@xrdef{Readline Init File-pg}{4}
@xrdef{Readline Init File Syntax-pg}{4}
@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs}
@xrdef{Conditional Init Constructs-pg}{9}
@xrdef{Conditional Init Constructs-snt}{Section@tie 1.3.2}
@xrdef{Conditional Init Constructs-pg}{9}
@xrdef{Sample Init File-title}{Sample Init File}
@xrdef{Sample Init File-pg}{10}
@xrdef{Sample Init File-snt}{Section@tie 1.3.3}
@xrdef{Sample Init File-pg}{10}
@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
@xrdef{Bindable Readline Commands-pg}{13}
@xrdef{Bindable Readline Commands-snt}{Section@tie 1.4}
@xrdef{Commands For Moving-title}{Commands For Moving}
@xrdef{Commands For Moving-pg}{13}
@xrdef{Commands For Moving-snt}{Section@tie 1.4.1}
@xrdef{Commands For History-title}{Commands For Manipulating The History}
@xrdef{Commands For History-pg}{13}
@xrdef{Commands For History-snt}{Section@tie 1.4.2}
@xrdef{Bindable Readline Commands-pg}{13}
@xrdef{Commands For Moving-pg}{13}
@xrdef{Commands For History-pg}{13}
@xrdef{Commands For Text-title}{Commands For Changing Text}
@xrdef{Commands For Text-pg}{15}
@xrdef{Commands For Text-snt}{Section@tie 1.4.3}
@xrdef{Commands For Text-pg}{15}
@xrdef{Commands For Killing-title}{Killing And Yanking}
@xrdef{Commands For Killing-pg}{16}
@xrdef{Commands For Killing-snt}{Section@tie 1.4.4}
@xrdef{Commands For Killing-pg}{16}
@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
@xrdef{Numeric Arguments-pg}{17}
@xrdef{Numeric Arguments-snt}{Section@tie 1.4.5}
@xrdef{Commands For Completion-title}{Letting Readline Type For You}
@xrdef{Commands For Completion-pg}{17}
@xrdef{Commands For Completion-snt}{Section@tie 1.4.6}
@xrdef{Keyboard Macros-title}{Keyboard Macros}
@xrdef{Keyboard Macros-pg}{18}
@xrdef{Keyboard Macros-snt}{Section@tie 1.4.7}
@xrdef{Numeric Arguments-pg}{17}
@xrdef{Commands For Completion-pg}{17}
@xrdef{Keyboard Macros-pg}{17}
@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
@xrdef{Miscellaneous Commands-pg}{18}
@xrdef{Miscellaneous Commands-snt}{Section@tie 1.4.8}
@xrdef{Miscellaneous Commands-pg}{18}
@xrdef{Readline vi Mode-title}{Readline vi Mode}
@xrdef{Readline vi Mode-pg}{19}
@xrdef{Readline vi Mode-snt}{Section@tie 1.5}
@xrdef{Readline vi Mode-pg}{19}
@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
@xrdef{GNU Free Documentation License-pg}{20}
@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char65{}}
@xrdef{GNU Free Documentation License-pg}{20}
+2 -2
View File
@@ -4,6 +4,6 @@
\entry{editing command lines}{1}{editing command lines}
\entry{killing text}{2}{killing text}
\entry{yanking text}{2}{yanking text}
\entry{kill ring}{3}{kill ring}
\entry{kill ring}{2}{kill ring}
\entry{initialization file, readline}{4}{initialization file, readline}
\entry{variables, readline}{5}{variables, readline}
\entry{variables, readline}{4}{variables, readline}
+2 -2
View File
@@ -6,11 +6,11 @@
\entry {initialization file, readline}{4}
\entry {interaction, readline}{1}
\initial {K}
\entry {kill ring}{3}
\entry {kill ring}{2}
\entry {killing text}{2}
\initial {N}
\entry {notation, readline}{1}
\initial {V}
\entry {variables, readline}{5}
\entry {variables, readline}{4}
\initial {Y}
\entry {yanking text}{2}
Binary file not shown.
+5 -5
View File
@@ -7,7 +7,7 @@
\entry{clear-screen (C-l)}{13}{\code {clear-screen (C-l)}}
\entry{redraw-current-line ()}{13}{\code {redraw-current-line ()}}
\entry{accept-line (Newline or Return)}{13}{\code {accept-line (Newline or Return)}}
\entry{previous-history (C-p)}{14}{\code {previous-history (C-p)}}
\entry{previous-history (C-p)}{13}{\code {previous-history (C-p)}}
\entry{next-history (C-n)}{14}{\code {next-history (C-n)}}
\entry{beginning-of-history (M-<)}{14}{\code {beginning-of-history (M-<)}}
\entry{end-of-history (M->)}{14}{\code {end-of-history (M->)}}
@@ -44,7 +44,7 @@
\entry{copy-region-as-kill ()}{16}{\code {copy-region-as-kill ()}}
\entry{copy-backward-word ()}{16}{\code {copy-backward-word ()}}
\entry{copy-forward-word ()}{16}{\code {copy-forward-word ()}}
\entry{yank (C-y)}{17}{\code {yank (C-y)}}
\entry{yank (C-y)}{16}{\code {yank (C-y)}}
\entry{yank-pop (M-y)}{17}{\code {yank-pop (M-y)}}
\entry{digit-argument (M-0, M-1, ...{} M--)}{17}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
\entry{universal-argument ()}{17}{\code {universal-argument ()}}
@@ -53,7 +53,7 @@
\entry{insert-completions (M-*)}{17}{\code {insert-completions (M-*)}}
\entry{menu-complete ()}{17}{\code {menu-complete ()}}
\entry{delete-char-or-list ()}{17}{\code {delete-char-or-list ()}}
\entry{start-kbd-macro (C-x ()}{18}{\code {start-kbd-macro (C-x ()}}
\entry{start-kbd-macro (C-x ()}{17}{\code {start-kbd-macro (C-x ()}}
\entry{end-kbd-macro (C-x ))}{18}{\code {end-kbd-macro (C-x ))}}
\entry{call-last-kbd-macro (C-x e)}{18}{\code {call-last-kbd-macro (C-x e)}}
\entry{re-read-init-file (C-x C-r)}{18}{\code {re-read-init-file (C-x C-r)}}
@@ -66,8 +66,8 @@
\entry{set-mark (C-@)}{18}{\code {set-mark (C-@)}}
\entry{exchange-point-and-mark (C-x C-x)}{18}{\code {exchange-point-and-mark (C-x C-x)}}
\entry{character-search (C-])}{18}{\code {character-search (C-])}}
\entry{character-search-backward (M-C-])}{19}{\code {character-search-backward (M-C-])}}
\entry{insert-comment (M-#)}{19}{\code {insert-comment (M-#)}}
\entry{character-search-backward (M-C-])}{18}{\code {character-search-backward (M-C-])}}
\entry{insert-comment (M-#)}{18}{\code {insert-comment (M-#)}}
\entry{dump-functions ()}{19}{\code {dump-functions ()}}
\entry{dump-variables ()}{19}{\code {dump-variables ()}}
\entry{dump-macros ()}{19}{\code {dump-macros ()}}
+5 -5
View File
@@ -13,7 +13,7 @@
\entry {\code {call-last-kbd-macro (C-x e)}}{18}
\entry {\code {capitalize-word (M-c)}}{15}
\entry {\code {character-search (C-])}}{18}
\entry {\code {character-search-backward (M-C-])}}{19}
\entry {\code {character-search-backward (M-C-])}}{18}
\entry {\code {clear-screen (C-l)}}{13}
\entry {\code {complete (\key {TAB})}}{17}
\entry {\code {copy-backward-word ()}}{16}
@@ -44,7 +44,7 @@
\entry {\code {history-search-backward ()}}{14}
\entry {\code {history-search-forward ()}}{14}
\initial {I}
\entry {\code {insert-comment (M-#)}}{19}
\entry {\code {insert-comment (M-#)}}{18}
\entry {\code {insert-completions (M-*)}}{17}
\initial {K}
\entry {\code {kill-line (C-k)}}{16}
@@ -62,7 +62,7 @@
\initial {P}
\entry {\code {possible-completions (M-?)}}{17}
\entry {\code {prefix-meta (\key {ESC})}}{18}
\entry {\code {previous-history (C-p)}}{14}
\entry {\code {previous-history (C-p)}}{13}
\initial {Q}
\entry {\code {quoted-insert (C-q or C-v)}}{15}
\initial {R}
@@ -73,7 +73,7 @@
\initial {S}
\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{15}
\entry {\code {set-mark (C-@)}}{18}
\entry {\code {start-kbd-macro (C-x ()}}{18}
\entry {\code {start-kbd-macro (C-x ()}}{17}
\initial {T}
\entry {\code {tab-insert (M-\key {TAB})}}{15}
\entry {\code {tilde-expand (M-~)}}{18}
@@ -89,7 +89,7 @@
\initial {V}
\entry {\code {vi-editing-mode (M-C-j)}}{19}
\initial {Y}
\entry {\code {yank (C-y)}}{17}
\entry {\code {yank (C-y)}}{16}
\entry {\code {yank-last-arg (M-. or M-_)}}{14}
\entry {\code {yank-nth-arg (M-C-y)}}{14}
\entry {\code {yank-pop (M-y)}}{17}
+81 -15
View File
@@ -1,6 +1,6 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on January, 6 2009 by texi2html 1.64 -->
<!-- Created on March, 18 2009 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
@@ -2013,12 +2013,12 @@ so forth.
<P>
<center>
Version 1.2, November 2002
Version 1.3, 3 November 2008
</center>
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
<A HREF="http://fsf.org/">http://fsf.org/</A>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -2136,6 +2136,10 @@ the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
</P><P>
The "publisher" means any person or entity that distributes copies
of the Document to the public.
</P><P>
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
@@ -2449,13 +2453,33 @@ title.
TERMINATION
<P>
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, or distribute it is void, and
will automatically terminate your rights under this License.
</P><P>
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
</P><P>
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
</P><P>
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.
</P><P>
<LI>
@@ -2476,7 +2500,49 @@ following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
as a draft) by the Free Software Foundation. If the Document
specifies that a proxy can decide which future versions of this
License can be used, that proxy's public statement of acceptance of a
version permanently authorizes you to choose that version for the
Document.
</P><P>
<LI>
RELICENSING
<P>
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server. A
"Massive Multiauthor Collaboration" (or "MMC") contained in the
site means any set of copyrightable works thus published on the MMC
site.
</P><P>
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
</P><P>
"Incorporate" means to publish or republish a Document, in whole or
in part, as part of another Document.
</P><P>
An MMC is "eligible for relicensing" if it is licensed under this
License, and if all works that were first published under this License
somewhere other than this MMC, and subsequently incorporated in whole
or in part into the MMC, (1) had no cover texts or invariant sections,
and (2) were thus incorporated prior to November 1, 2008.
</P><P>
The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.
</P><P>
</OL>
<P>
@@ -2492,7 +2558,7 @@ license notices just after the title page:
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ``GNU
@@ -2609,7 +2675,7 @@ to permit their use in free software.
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
This document was generated by <I>Chet Ramey</I> on <I>January, 6 2009</I>
This document was generated by <I>Chet Ramey</I> on <I>March, 18 2009</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
@@ -2771,7 +2837,7 @@ the following structure:
<BR>
<FONT SIZE="-1">
This document was generated
by <I>Chet Ramey</I> on <I>January, 6 2009</I>
by <I>Chet Ramey</I> on <I>March, 18 2009</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
+66 -12
View File
@@ -14,7 +14,7 @@ preserved on all copies.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with the Front-Cover texts
being "A GNU Manual", and with the Back-Cover Texts as in (a)
below. A copy of the license is included in the section entitled
@@ -1300,10 +1300,10 @@ File: rluserman.info, Node: GNU Free Documentation License, Prev: Command Line
Appendix A GNU Free Documentation License
*****************************************
Version 1.2, November 2002
Version 1.3, 3 November 2008
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
`http://fsf.org/'
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -1405,6 +1405,9 @@ Appendix A GNU Free Documentation License
Page" means the text near the most prominent appearance of the
work's title, preceding the beginning of the body of the text.
The "publisher" means any person or entity that distributes copies
of the Document to the public.
A section "Entitled XYZ" means a named subunit of the Document
whose title either is precisely XYZ or contains XYZ in parentheses
following text that translates XYZ in another language. (Here XYZ
@@ -1670,12 +1673,29 @@ Appendix A GNU Free Documentation License
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided for under this License. Any other
attempt to copy, modify, sublicense or distribute the Document is
void, and will automatically terminate your rights under this
License. However, parties who have received copies, or rights,
from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, or distribute it is void,
and will automatically terminate your rights under this License.
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly
and finally terminates your license, and (b) permanently, if the
copyright holder fails to notify you of the violation by some
reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from
that copyright holder, and you cure the violation prior to 30 days
after your receipt of the notice.
Termination of your rights under this section does not terminate
the licenses of parties who have received copies or rights from
you under this License. If your rights have been terminated and
not permanently reinstated, receipt of a copy of some or all of
the same material does not give you any rights to use it.
10. FUTURE REVISIONS OF THIS LICENSE
@@ -1693,7 +1713,41 @@ Appendix A GNU Free Documentation License
published (not as a draft) by the Free Software Foundation. If
the Document does not specify a version number of this License,
you may choose any version ever published (not as a draft) by the
Free Software Foundation.
Free Software Foundation. If the Document specifies that a proxy
can decide which future versions of this License can be used, that
proxy's public statement of acceptance of a version permanently
authorizes you to choose that version for the Document.
11. RELICENSING
"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server.
A "Massive Multiauthor Collaboration" (or "MMC") contained in the
site means any set of copyrightable works thus published on the MMC
site.
"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
"Incorporate" means to publish or republish a Document, in whole or
in part, as part of another Document.
An MMC is "eligible for relicensing" if it is licensed under this
License, and if all works that were first published under this
License somewhere other than this MMC, and subsequently
incorporated in whole or in part into the MMC, (1) had no cover
texts or invariant sections, and (2) were thus incorporated prior
to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the
site under CC-BY-SA on the same site at any time before August 1,
2009, provided the MMC is eligible for relicensing.
ADDENDUM: How to use this License for your documents
====================================================
@@ -1704,7 +1758,7 @@ notices just after the title page:
Copyright (C) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ``GNU
+96 -76
View File
@@ -1,7 +1,7 @@
This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 6 JAN 2009 11:52
**/usr/homes/chet/src/bash/src/lib/readline/doc/rluserman.texi
(/usr/homes/chet/src/bash/src/lib/readline/doc/rluserman.texi (./texinfo.tex
Loading texinfo [version 2003-02-03.16]: Basics,
This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 18 MAR 2009 08:22
**/Users/chet/src/bash/src/lib/readline/doc/rluserman.texi
(/Users/chet/src/bash/src/lib/readline/doc/rluserman.texi (./texinfo.tex
Loading texinfo [version 2009-01-18.17]:
\bindingoffset=\dimen16
\normaloffset=\dimen17
\pagewidth=\dimen18
@@ -32,81 +32,94 @@ Loading texinfo [version 2003-02-03.16]: Basics,
\toksD=\toks18
\boxA=\box19
\countA=\count30
\nopdfimagehelp=\toks19
fonts,
\sffam=\fam8
\textleading=\dimen26
\mainmagstep=\count31
\fontdepth=\count32
page headings,
markup,
\fontdepth=\count31
glyphs,
\errorbox=\box20
page headings,
\titlepagetopglue=\skip20
\titlepagebottomglue=\skip21
\evenheadline=\toks19
\oddheadline=\toks20
\evenfootline=\toks21
\oddfootline=\toks22
tables,
\evenheadline=\toks20
\oddheadline=\toks21
\evenfootline=\toks22
\oddfootline=\toks23
tables,
\tableindent=\dimen27
\itemindent=\dimen28
\itemmargin=\dimen29
\itemmax=\dimen30
\itemno=\count33
\itemno=\count32
\multitableparskip=\skip22
\multitableparindent=\skip23
\multitablecolspace=\dimen31
\multitablelinespace=\skip24
\colcount=\count34
\savedfootnotes=\box20
conditionals, indexing,
\secondaryindent=\skip25
\colcount=\count33
\everytab=\toks24
conditionals,
\doignorecount=\count34
indexing,
\whatsitskip=\skip25
\whatsitpenalty=\count35
\secondaryindent=\skip26
\partialpage=\box21
\doublecolumnhsize=\dimen32
sectioning,
\chapno=\count35
\secno=\count36
\subsecno=\count37
\subsubsecno=\count38
\appendixno=\count39
\absseclevel=\count40
\secbase=\count41
\chapheadingskip=\skip26
\secheadingskip=\skip27
\subsecheadingskip=\skip28
\unnumberedno=\count36
\chapno=\count37
\secno=\count38
\subsecno=\count39
\subsubsecno=\count40
\appendixno=\count41
\absseclevel=\count42
\secbase=\count43
\chapheadingskip=\skip27
\secheadingskip=\skip28
\subsecheadingskip=\skip29
toc,
\tocfile=\write0
\contentsrightmargin=\skip29
\savepageno=\count42
\lastnegativepageno=\count43
\shortappendixwidth=\dimen33
\tocindent=\dimen34
\contentsrightmargin=\skip30
\savepageno=\count44
\lastnegativepageno=\count45
\tocindent=\dimen33
environments,
\errorbox=\box22
\lispnarrowing=\skip30
\envskipamount=\skip31
\circthick=\dimen35
\cartouter=\dimen36
\cartinner=\dimen37
\normbskip=\skip32
\normpskip=\skip33
\normlskip=\skip34
\lskip=\skip35
\rskip=\skip36
\lispnarrowing=\skip31
\envskipamount=\skip32
\circthick=\dimen34
\cartouter=\dimen35
\cartinner=\dimen36
\normbskip=\skip33
\normpskip=\skip34
\normlskip=\skip35
\lskip=\skip36
\rskip=\skip37
\nonfillparindent=\dimen37
\tabw=\dimen38
defuns,
\defbodyindent=\skip37
\defargsindent=\skip38
\deflastargmargin=\skip39
\parencount=\count44
defuns,
\defbodyindent=\skip38
\defargsindent=\skip39
\deflastargmargin=\skip40
\defunpenalty=\count46
\parencount=\count47
\brackcount=\count48
macros,
\macscribble=\write1
\paramno=\count45
\macname=\toks23
cross references,
\paramno=\count49
\macname=\toks25
cross references,
\auxfile=\write2
\savesfregister=\count46
\footnoteno=\count47
(/sw/share/texmf-dist/tex/generic/epsf/epsf.tex
\savesfregister=\count50
insertions,
\footnoteno=\count51
\SAVEfootins=\box22
\SAVEmargin=\box23
(/sw/share/texmf-dist/tex/generic/epsf/epsf.tex
\epsffilein=\read0
\epsfframemargin=\dimen39
\epsfframethickness=\dimen40
@@ -116,24 +129,28 @@ cross references,
\epsfxsize=\dimen44
\epsfysize=\dimen45
\pspoints=\dimen46
\epsfnoopenhelp=\toks24
\epsfnoopenhelp=\toks26
)
\noepsfhelp=\toks25
localization,
\nolanghelp=\toks26
\noepsfhelp=\toks27
localization,
\nolanghelp=\toks28
\countUTFx=\count52
\countUTFy=\count53
\countUTFz=\count54
formatting,
\defaultparindent=\dimen47
and turning on texinfo input format.) (./rluserman.aux)
and turning on texinfo input format.) (./rluserman.aux)
\openout2 = `rluserman.aux'.
@cpindfile=@write3
@fnindfile=@write4
@vrindfile=@write5
@tpindfile=@write6
@kyindfile=@write7
@pgindfile=@write8
(./version.texi) [1
\openout2 = `rluserman.aux'.
(./version.texi)
[1
\openout3 = `rluserman.cp'.
\openout4 = `rluserman.fn'.
@@ -146,7 +163,10 @@ localization,
\openout8 = `rluserman.pg'.
] [2] (./rluserman.toc) [-1] (./rluser.texi
]
\openout1 = `rluserman.tmp'.
(./rluserman.tmp) [2] (./rluserman.toc) [-1] (./rluser.texi
@btindfile=@write9
Chapter 1
\openout0 = `rluserman.toc'.
@@ -182,14 +202,14 @@ gnored[] |
.etc.
[11] [12] [13] [14] [15] [16] [17] [18]) Appendix A [19] (./fdl.texi [20]
[21] [22] [23] [24] [25]) [26] )
[21] [22] [23] [24] [25] [26]) [27] )
Here is how much of TeX's memory you used:
1402 strings out of 97980
16334 string characters out of 1221004
45865 words of memory out of 1500000
2273 multiletter control sequences out of 10000+50000
31953 words of font info for 111 fonts, out of 1200000 for 2000
19 hyphenation exceptions out of 8191
13i,8n,10p,285b,697s stack positions out of 5000i,500n,6000p,200000b,5000s
1743 strings out of 97980
20809 string characters out of 1221004
75544 words of memory out of 1500000
2579 multiletter control sequences out of 10000+50000
32127 words of font info for 112 fonts, out of 1200000 for 2000
51 hyphenation exceptions out of 8191
16i,6n,14p,327b,534s stack positions out of 5000i,500n,6000p,200000b,5000s
Output written on rluserman.dvi (29 pages, 96724 bytes).
Output written on rluserman.dvi (30 pages, 98540 bytes).
+2403 -2630
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -20,7 +20,7 @@ are preserved on all copies.
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
and with the Back-Cover Texts as in (a) below. A copy of the license is
+26
View File
@@ -0,0 +1,26 @@
This manual describes the end user interface of the GNU Readline Library
(version @value{VERSION}, @value{UPDATED}), a library which aids in the
consistency of user interface across discrete programs which provide
a command line interface.
Copyright @copyright{} 1988--2009 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
and with the Back-Cover Texts as in (a) below. A copy of the license is
included in the section entitled ``GNU Free Documentation License''.
(a) The FSF's Back-Cover Text is: You are free to copy and modify
this GNU manual. Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''
@end quotation
@endinput
+23 -23
View File
@@ -1,23 +1,23 @@
\chapentry{Command Line Editing}{1}{1}
\secentry{Introduction to Line Editing}{1}{1}{1}
\secentry{Readline Interaction}{1}{2}{1}
\subsecentry{Readline Bare Essentials}{1}{2}{1}{1}
\subsecentry{Readline Movement Commands}{1}{2}{2}{2}
\subsecentry{Readline Killing Commands}{1}{2}{3}{2}
\subsecentry{Readline Arguments}{1}{2}{4}{3}
\subsecentry{Searching for Commands in the History}{1}{2}{5}{3}
\secentry{Readline Init File}{1}{3}{4}
\subsecentry{Readline Init File Syntax}{1}{3}{1}{4}
\subsecentry{Conditional Init Constructs}{1}{3}{2}{9}
\subsecentry{Sample Init File}{1}{3}{3}{10}
\secentry{Bindable Readline Commands}{1}{4}{13}
\subsecentry{Commands For Moving}{1}{4}{1}{13}
\subsecentry{Commands For Manipulating The History}{1}{4}{2}{13}
\subsecentry{Commands For Changing Text}{1}{4}{3}{14}
\subsecentry{Killing And Yanking}{1}{4}{4}{16}
\subsecentry{Specifying Numeric Arguments}{1}{4}{5}{17}
\subsecentry{Letting Readline Type For You}{1}{4}{6}{17}
\subsecentry{Keyboard Macros}{1}{4}{7}{17}
\subsecentry{Some Miscellaneous Commands}{1}{4}{8}{18}
\secentry{Readline vi Mode}{1}{5}{19}
\appendixentry{GNU Free Documentation License}{A}{20}
@numchapentry{Command Line Editing}{1}{Command Line Editing}{1}
@numsecentry{Introduction to Line Editing}{1.1}{Introduction and Notation}{1}
@numsecentry{Readline Interaction}{1.2}{Readline Interaction}{1}
@numsubsecentry{Readline Bare Essentials}{1.2.1}{Readline Bare Essentials}{1}
@numsubsecentry{Readline Movement Commands}{1.2.2}{Readline Movement Commands}{2}
@numsubsecentry{Readline Killing Commands}{1.2.3}{Readline Killing Commands}{2}
@numsubsecentry{Readline Arguments}{1.2.4}{Readline Arguments}{3}
@numsubsecentry{Searching for Commands in the History}{1.2.5}{Searching}{3}
@numsecentry{Readline Init File}{1.3}{Readline Init File}{4}
@numsubsecentry{Readline Init File Syntax}{1.3.1}{Readline Init File Syntax}{4}
@numsubsecentry{Conditional Init Constructs}{1.3.2}{Conditional Init Constructs}{9}
@numsubsecentry{Sample Init File}{1.3.3}{Sample Init File}{10}
@numsecentry{Bindable Readline Commands}{1.4}{Bindable Readline Commands}{13}
@numsubsecentry{Commands For Moving}{1.4.1}{Commands For Moving}{13}
@numsubsecentry{Commands For Manipulating The History}{1.4.2}{Commands For History}{13}
@numsubsecentry{Commands For Changing Text}{1.4.3}{Commands For Text}{15}
@numsubsecentry{Killing And Yanking}{1.4.4}{Commands For Killing}{16}
@numsubsecentry{Specifying Numeric Arguments}{1.4.5}{Numeric Arguments}{17}
@numsubsecentry{Letting Readline Type For You}{1.4.6}{Commands For Completion}{17}
@numsubsecentry{Keyboard Macros}{1.4.7}{Keyboard Macros}{17}
@numsubsecentry{Some Miscellaneous Commands}{1.4.8}{Miscellaneous Commands}{18}
@numsecentry{Readline vi Mode}{1.5}{Readline vi Mode}{19}
@appentry{GNU Free Documentation License}{A}{GNU Free Documentation License}{20}
+7 -7
View File
@@ -1,12 +1,12 @@
\entry{bell-style}{5}{\code {bell-style}}
\entry{bell-style}{4}{\code {bell-style}}
\entry{bind-tty-special-chars}{5}{\code {bind-tty-special-chars}}
\entry{comment-begin}{5}{\code {comment-begin}}
\entry{completion-prefix-display-length}{5}{\code {completion-prefix-display-length}}
\entry{completion-query-items}{5}{\code {completion-query-items}}
\entry{convert-meta}{5}{\code {convert-meta}}
\entry{disable-completion}{6}{\code {disable-completion}}
\entry{editing-mode}{6}{\code {editing-mode}}
\entry{enable-keypad}{6}{\code {enable-keypad}}
\entry{disable-completion}{5}{\code {disable-completion}}
\entry{editing-mode}{5}{\code {editing-mode}}
\entry{enable-keypad}{5}{\code {enable-keypad}}
\entry{expand-tilde}{6}{\code {expand-tilde}}
\entry{history-preserve-point}{6}{\code {history-preserve-point}}
\entry{history-size}{6}{\code {history-size}}
@@ -15,12 +15,12 @@
\entry{meta-flag}{6}{\code {meta-flag}}
\entry{isearch-terminators}{6}{\code {isearch-terminators}}
\entry{keymap}{6}{\code {keymap}}
\entry{mark-modified-lines}{7}{\code {mark-modified-lines}}
\entry{mark-modified-lines}{6}{\code {mark-modified-lines}}
\entry{mark-symlinked-directories}{7}{\code {mark-symlinked-directories}}
\entry{match-hidden-files}{7}{\code {match-hidden-files}}
\entry{output-meta}{7}{\code {output-meta}}
\entry{page-completions}{7}{\code {page-completions}}
\entry{revert-all-at-newline}{7}{\code {revert-all-at-newline}}
\entry{show-all-if-ambiguous}{7}{\code {show-all-if-ambiguous}}
\entry{show-all-if-unmodified}{8}{\code {show-all-if-unmodified}}
\entry{visible-stats}{8}{\code {visible-stats}}
\entry{show-all-if-unmodified}{7}{\code {show-all-if-unmodified}}
\entry{visible-stats}{7}{\code {visible-stats}}
+7 -7
View File
@@ -1,5 +1,5 @@
\initial {B}
\entry {\code {bell-style}}{5}
\entry {\code {bell-style}}{4}
\entry {\code {bind-tty-special-chars}}{5}
\initial {C}
\entry {\code {comment-begin}}{5}
@@ -7,10 +7,10 @@
\entry {\code {completion-query-items}}{5}
\entry {\code {convert-meta}}{5}
\initial {D}
\entry {\code {disable-completion}}{6}
\entry {\code {disable-completion}}{5}
\initial {E}
\entry {\code {editing-mode}}{6}
\entry {\code {enable-keypad}}{6}
\entry {\code {editing-mode}}{5}
\entry {\code {enable-keypad}}{5}
\entry {\code {expand-tilde}}{6}
\initial {H}
\entry {\code {history-preserve-point}}{6}
@@ -22,7 +22,7 @@
\initial {K}
\entry {\code {keymap}}{6}
\initial {M}
\entry {\code {mark-modified-lines}}{7}
\entry {\code {mark-modified-lines}}{6}
\entry {\code {mark-symlinked-directories}}{7}
\entry {\code {match-hidden-files}}{7}
\entry {\code {meta-flag}}{6}
@@ -34,6 +34,6 @@
\entry {\code {revert-all-at-newline}}{7}
\initial {S}
\entry {\code {show-all-if-ambiguous}}{7}
\entry {\code {show-all-if-unmodified}}{8}
\entry {\code {show-all-if-unmodified}}{7}
\initial {V}
\entry {\code {visible-stats}}{8}
\entry {\code {visible-stats}}{7}
+1 -1
View File
@@ -1879,7 +1879,7 @@ read_secondary_line (remove_quoted_newline)
prompt_again ();
ret = read_a_line (remove_quoted_newline);
#if defined (HISTORY)
if (remember_on_history && (parser_state & PST_HEREDOC))
if (ret && remember_on_history && (parser_state & PST_HEREDOC))
{
/* To make adding the the here-document body right, we need to rely
on history_delimiting_chars() returning \n for the first line of
+5726
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -3258,6 +3258,10 @@ eof_error:
}
}
/* Possible reprompting. */
if (ch == '\n' && SHOULD_PROMPT ())
prompt_again ();
/* XXX -- possibly allow here doc to be delimited by ending right
paren. */
if ((tflags & LEX_INHEREDOC) && ch == close && count == 1)
@@ -3275,10 +3279,6 @@ eof_error:
}
}
/* Possible reprompting. */
if (ch == '\n' && SHOULD_PROMPT ())
prompt_again ();
/* Don't bother counting parens or doing anything else if in a comment */
if (tflags & (LEX_INCOMMENT|LEX_INHEREDOC))
{
+343 -332
View File
File diff suppressed because it is too large Load Diff
+355 -287
View File
File diff suppressed because it is too large Load Diff
+670 -1211
View File
File diff suppressed because it is too large Load Diff
+318 -590
View File
File diff suppressed because it is too large Load Diff
+243 -467
View File
File diff suppressed because it is too large Load Diff
+42
View File
@@ -448,6 +448,48 @@ sighandler
termsig_sighandler (sig)
int sig;
{
/* If we get called twice with the same signal before handling it,
terminate right away. */
if (
#ifdef SIGHUP
sig != SIGHUP &&
#endif
#ifdef SIGINT
sig != SIGINT &&
#endif
#ifdef SIGDANGER
sig != SIGDANGER &&
#endif
#ifdef SIGPIPE
sig != SIGPIPE &&
#endif
#ifdef SIGALRM
sig != SIGALRM &&
#endif
#ifdef SIGTERM
sig != SIGTERM &&
#endif
#ifdef SIGXCPU
sig != SIGXCPU &&
#endif
#ifdef SIGXFSZ
sig != SIGXFSZ &&
#endif
#ifdef SIGVTALRM
sig != SIGVTALRM &&
#endif
#ifdef SIGLOST
sig != SIGLOST &&
#endif
#ifdef SIGUSR1
sig != SIGUSR1 &&
#endif
#ifdef SIGUSR2
sig != SIGUSR2 &&
#endif
sig == terminating_signal)
terminate_immediately = 1;
terminating_signal = sig;
/* XXX - should this also trigger when interrupt_immediately is set? */
+6
View File
@@ -448,6 +448,11 @@ sighandler
termsig_sighandler (sig)
int sig;
{
/* If we get called twice with the same signal before handling it,
terminate right away. */
if (sig == terminating_signal)
terminate_immediately = 1;
terminating_signal = sig;
/* XXX - should this also trigger when interrupt_immediately is set? */
@@ -519,6 +524,7 @@ sigint_sighandler (sig)
if (interrupt_immediately)
{
interrupt_immediately = 0;
last_command_exit_value = 128 + sig;
throw_to_top_level ();
}
+12 -4
View File
@@ -3,7 +3,9 @@
DATE=$(date +%Y%m%d)
PARENT=/fs2/chet/bash
DIR=$PARENT/bash-$DATE
FROOT=bash-$DATE
DIR=$PARENT/$FROOT
TARF=${FROOT}.tar
SRC=/usr/homes/chet/src/bash/src
mkdir $DIR || exit 1
@@ -22,10 +24,16 @@ find . -type d -name 'savedir' -print | xargs rm -rf
rm parser-built y.tab.c y.tab.h
rm -f d d? ddd # convention for temp diff files
rm -f d d? ddd ddd? # convention for temp diff files
cd $PARENT || exit 1
tar cvf bash-$DATE.tar bash-$DATE
tar cvf ${TARF} $FROOT
gzip -v bash-$DATE.tar
gzip -v ${TARF}
REMHOST=z4
if [ "$1" = "-s" ]; then
scp ${TARF}.gz ${REMHOST}:
fi
+4
View File
@@ -140,3 +140,7 @@ three
one
two
three
4.0
echo ${BASH_VERSION%\.*}
4.0
echo ${BASH_VERSION%\.*}
+2
View File
@@ -109,3 +109,5 @@ shopt -q -o history
echo $?
${THIS_SH} ./history1.sub
${THIS_SH} ./history2.sub
+111
View File
@@ -0,0 +1,111 @@
trap 'rm /tmp/newhistory' 0
# bad options
history -x
# cannot use -r and -w at the same time
history -r -w /dev/null
# bad option
fc -v
unset HISTFILESIZE
# all of these should result in an empty history list
history -c
history -r /dev/null
history -n /dev/null
history -c
HISTFILE=history.list
HISTCONTROL=ignoreboth
HISTIGNORE='&:history*:fc*'
HISTSIZE=32
shopt -s cmdhist
set -o history
history
fc -l
fc -nl
fc -lr
fc -nlr
history -s "echo line for history"
history
history -p '!!'
fc -nl
HISTFILE=/tmp/newhistory
history -a
echo displaying \$HISTFILE after history -a
cat $HISTFILE
history
history -w
cat $HISTFILE
history -s "echo line 2 for history"
history
history -p '!e'
history -p '!!'
# this should show up as one history entry
for x in one two three
do
:
done
history
# just a basic test. a full test suite for history expansion should be
# created
set -H
!!
!e
unset HISTSIZE
unset HISTFILE
fc -l 4
fc -l 4 8
fc -l one=two three=four 502
history 4
shopt -so history
shopt -s expand_aliases
alias r="fc -s"
echo aa ab ac
r a=x
r x=4 b=8
# this had better fail with `no command found'
r cc
unalias -a
alias
# these two blocks had better both result in the same output
echo aa
echo bb
echo cc
fc -e cat
echo aa
echo bb
echo cc
fc -e cat -1
set +o history
shopt -q -o history
echo $?
${THIS_SH} ./history1.sub
+10
View File
@@ -0,0 +1,10 @@
set -o history
HISTSIZE=256
HISTFILE=/dev/null
# these two lines should be the same
echo ${BASH_VERSION%\.*}
echo $(fc -nl -1)
echo ${BASH_VERSION%\.*}
fc -nl -1
+11
View File
@@ -63,6 +63,17 @@ after while
before false in trap2a.sub
after false in trap2a.sub
command substitution
+[6] echo 1
1
+[7] echo 2
2
+[8] echo 3
+[8] cat
+[8] false
++[8] echo trap: 8
trap: 8
+[9] echo 4
4
caught a child death
trap -- 'echo caught a child death' SIGCHLD
trap -- 'echo exiting' EXIT
+3
View File
@@ -66,6 +66,8 @@ trap '' USR2
# test ERR trap
./trap2.sub
${THIS_SH} ./trap3.sub
#
# show that setting a trap on SIGCHLD is not disastrous.
#
@@ -88,3 +90,4 @@ trap
trap - SIGCHLD
wait
+90
View File
@@ -0,0 +1,90 @@
# test the trap code
trap 'echo exiting' 0
trap 'echo aborting' 1 2 3 6 15
# make sure a user-specified subshell runs the exit trap, but does not
# inherit the exit trap from a parent shell
( trap 'echo subshell exit' 0; exit 0 )
( exit 0 )
trap
func()
{
trap 'echo ${FUNCNAME:-$0}[$LINENO] funcdebug' DEBUG
echo funcdebug line
}
trap 'echo [$LINENO] debug' DEBUG
echo debug line
trap
func
trap
trap 'echo ${FUNCNAME:-$0}[$LINENO] debug' DEBUG
func2()
{
echo func2debug line
}
declare -ft func2
func2
unset -f func2
trap '' DEBUG
trap
trap - debug
trap
trap - HUP
trap hup
trap '' INT
trap '' int
trap
# exit 0 in exit trap should set exit status
(
set -e
trap 'exit 0' EXIT
false
echo bad
)
echo $?
# hmmm...should this set the handling to SIG_IGN for children, too?
trap '' USR2
./trap1.sub
# test ERR trap
./trap2.sub
#
# show that setting a trap on SIGCHLD is not disastrous.
#
set -o monitor
trap 'echo caught a child death' SIGCHLD
sleep 7 & sleep 6 & sleep 5 &
# this will only catch the first, since there's a trap on SIGCHLD
wait
trap -p SIGCHLD
# Now reset some of the signals the shell handles specially back to
# their default values (with or without the SIG prefix)
trap - SIGINT QUIT TERM
trap
trap - SIGCHLD
wait
+9
View File
@@ -0,0 +1,9 @@
PS4='+[$LINENO] '
trap 'echo trap: $LINENO' ERR
set -x
echo 1
echo 2
echo 3 | cat | false
echo 4
+7
View File
@@ -0,0 +1,7 @@
PS4='+[$LINENO] '
trap 'echo trap: $LINENO' ERR
echo 1
echo 2
echo 3 | cat | false
echo 4
+1 -1
View File
@@ -755,7 +755,7 @@ _run_trap_internal (sig, tag)
}
flags = SEVAL_NONINT|SEVAL_NOHIST;
if (sig != DEBUG_TRAP && sig != RETURN_TRAP)
if (sig != DEBUG_TRAP && sig != RETURN_TRAP && sig != ERROR_TRAP)
flags |= SEVAL_RESETLINE;
if (function_code == 0)
parse_and_execute (trap_command, tag, flags);
+1023
View File
File diff suppressed because it is too large Load Diff