aboutsummaryrefslogtreecommitdiffstats
path: root/documentation/features.info
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/features.info')
-rw-r--r--documentation/features.info3011
1 files changed, 3011 insertions, 0 deletions
diff --git a/documentation/features.info b/documentation/features.info
new file mode 100644
index 0000000..6398445
--- /dev/null
+++ b/documentation/features.info
@@ -0,0 +1,3011 @@
+This is Info file features.info, produced by Makeinfo-1.55 from the
+input file features.texi.
+
+This text is a brief description of the features that are present in
+the Bash shell.
+
+This is Edition 1.14, last updated 4 August 1994,
+of `The GNU Bash Features Guide',
+for `Bash', Version 1.14.
+
+Copyright (C) 1991, 1993 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 1, 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; see the file COPYING. If not, write to the Free
+Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+File: features.info, Node: Top, Next: Bourne Shell Features, Prev: (DIR), Up: (DIR)
+
+Bash Features
+*************
+
+ Bash contains features that appear in other popular shells, and some
+features that only appear in Bash. Some of the shells that Bash has
+borrowed concepts from are the Bourne Shell (`sh'), the Korn Shell
+(`ksh'), and the C-shell (`csh' and its successor, `tcsh'). The
+following menu breaks the features up into categories based upon which
+one of these other shells inspired the feature.
+
+ This manual is meant as a brief introduction to features found in
+Bash. The Bash manual page should be used as the definitive reference
+on shell behavior.
+
+* Menu:
+
+* Bourne Shell Features:: Features originally found in the
+ Bourne shell.
+
+* Csh Features:: Features originally found in the
+ Berkeley C-Shell.
+
+* Korn Shell Features:: Features originally found in the Korn
+ Shell.
+
+* Bash Specific Features:: Features found only in Bash.
+
+* Job Control:: A chapter describing what job control is
+ and how bash allows you to use it.
+
+* Using History Interactively:: Chapter dealing with history expansion
+ rules.
+
+* Command Line Editing:: Chapter describing the command line
+ editing features.
+
+* Variable Index:: Quick reference helps you find the
+ variable you want.
+
+* Concept Index:: General index for this manual.
+
+
+File: features.info, Node: Bourne Shell Features, Next: Csh Features, Prev: Top, Up: Top
+
+Bourne Shell Style Features
+***************************
+
+ Bash is an acronym for Bourne Again SHell. The Bourne shell is the
+traditional Unix shell originally written by Stephen Bourne. All of
+the Bourne shell builtin commands are available in Bash, and the rules
+for evaluation and quoting are taken from the Posix 1003.2
+specification for the `standard' Unix shell.
+
+ This section briefly summarizes things which Bash inherits from the
+Bourne shell: shell control structures, builtins, variables, and other
+features. It also lists the significant differences between Bash and
+the Bourne Shell.
+
+* Menu:
+
+* Looping Constructs:: Shell commands for iterative action.
+* Conditional Constructs:: Shell commands for conditional execution.
+* Shell Functions:: Grouping commands by name.
+* Bourne Shell Builtins:: Builtin commands inherited from the Bourne
+ Shell.
+* Bourne Shell Variables:: Variables which Bash uses in the same way
+ as the Bourne Shell.
+* Other Bourne Shell Features:: Addtional aspects of Bash which behave in
+ the same way as the Bourne Shell.
+
+
+File: features.info, Node: Looping Constructs, Next: Conditional Constructs, Up: Bourne Shell Features
+
+Looping Constructs
+==================
+
+ Note that wherever you see a `;' in the description of a command's
+syntax, it may be replaced indiscriminately with one or more newlines.
+
+ Bash supports the following looping constructs.
+
+`until'
+ The syntax of the `until' command is:
+ until TEST-COMMANDS; do CONSEQUENT-COMMANDS; done
+ Execute CONSEQUENT-COMMANDS as long as the final command in
+ TEST-COMMANDS has an exit status which is not zero.
+
+`while'
+ The syntax of the `while' command is:
+ while TEST-COMMANDS; do CONSEQUENT-COMMANDS; done
+
+ Execute CONSEQUENT-COMMANDS as long as the final command in
+ TEST-COMMANDS has an exit status of zero.
+
+`for'
+ The syntax of the for command is:
+
+ for NAME [in WORDS ...]; do COMMANDS; done
+ Execute COMMANDS for each member in WORDS, with NAME bound to the
+ current member. If "`in WORDS'" is not present, "`in "$@"'" is
+ assumed.
+
+
+File: features.info, Node: Conditional Constructs, Next: Shell Functions, Prev: Looping Constructs, Up: Bourne Shell Features
+
+Conditional Constructs
+======================
+
+`if'
+ The syntax of the `if' command is:
+
+ if TEST-COMMANDS; then
+ CONSEQUENT-COMMANDS;
+ [elif MORE-TEST-COMMANDS; then
+ MORE-CONSEQUENTS;]
+ [else ALTERNATE-CONSEQUENTS;]
+ fi
+
+ Execute CONSEQUENT-COMMANDS only if the final command in
+ TEST-COMMANDS has an exit status of zero. Otherwise, each `elif'
+ list is executed in turn, and if its exit status is zero, the
+ corresponding MORE-CONSEQUENTS is executed and the command
+ completes. If "`else ALTERNATE-CONSEQUENTS'" is present, and the
+ final command in the final `if' or `elif' clause has a non-zero
+ exit status, then execute ALTERNATE-CONSEQUENTS.
+
+`case'
+ The syntax of the `case' command is:
+
+ `case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac'
+
+ Selectively execute COMMANDS based upon WORD matching PATTERN.
+ The ``|'' is used to separate multiple patterns.
+
+ Here is an example using `case' in a script that could be used to
+ describe an interesting feature of an animal:
+
+ echo -n "Enter the name of an animal: "
+ read ANIMAL
+ echo -n "The $ANIMAL has "
+ case $ANIMAL in
+ horse | dog | cat) echo -n "four";;
+ man | kangaroo ) echo -n "two";;
+ *) echo -n "an unknown number of";;
+ esac
+ echo "legs."
+
+
+File: features.info, Node: Shell Functions, Next: Bourne Shell Builtins, Prev: Conditional Constructs, Up: Bourne Shell Features
+
+Shell Functions
+===============
+
+ Shell functions are a way to group commands for later execution
+using a single name for the group. They are executed just like a
+"regular" command. Shell functions are executed in the current shell
+context; no new process is created to interpret them.
+
+ Functions are declared using this syntax:
+
+ [ `function' ] NAME () { COMMAND-LIST; }
+
+ This defines a function named NAME. The BODY of the function is the
+COMMAND-LIST between { and }. This list is executed whenever NAME is
+specified as the name of a command. The exit status of a function is
+the exit status of the last command executed in the body.
+
+ When a function is executed, the arguments to the function become
+the positional parameters during its execution. The special parameter
+`#' that gives the number of positional parameters is updated to
+reflect the change. Positional parameter 0 is unchanged.
+
+ If the builtin command `return' is executed in a function, the
+function completes and execution resumes with the next command after
+the function call. When a function completes, the values of the
+positional parameters and the special parameter `#' are restored to the
+values they had prior to function execution.
+
+
+File: features.info, Node: Bourne Shell Builtins, Next: Bourne Shell Variables, Prev: Shell Functions, Up: Bourne Shell Features
+
+Bourne Shell Builtins
+=====================
+
+ The following shell builtin commands are inherited from the Bourne
+shell. These commands are implemented as specified by the Posix 1003.2
+standard.
+
+`:'
+ Do nothing beyond expanding any arguments and performing
+ redirections.
+
+`.'
+ Read and execute commands from the FILENAME argument in the
+ current shell context.
+
+`break'
+ Exit from a `for', `while', or `until' loop.
+
+`cd'
+ Change the current working directory.
+
+`continue'
+ Resume the next iteration of an enclosing `for', `while', or
+ `until' loop.
+
+`echo'
+ Print the arguments, separated by spaces, to the standard output.
+
+`eval'
+ The arguments are concatenated together into a single command,
+ which is then read and executed.
+
+`exec'
+ If a COMMAND argument is supplied, it replaces the shell. If no
+ COMMAND is specified, redirections may be used to affect the
+ current shell environment.
+
+`exit'
+ Exit the shell.
+
+`export'
+ Mark the arguments as variables to be passed to child processes in
+ the environment.
+
+`getopts'
+ Parse options to shell scripts or functions.
+
+`hash'
+ Remember the full pathnames of commands specified as arguments, so
+ they need not be searched for on subsequent invocations.
+
+`kill'
+ Send a signal to a process.
+
+`pwd'
+ Print the current working directory.
+
+`read'
+ Read a line from the shell input and use it to set the values of
+ specified variables.
+
+`readonly'
+ Mark variables as unchangable.
+
+`return'
+ Cause a shell function to exit with a specified value.
+
+`shift'
+ Shift positional parameters to the left.
+
+`test'
+`['
+ Evaluate a conditional expression.
+
+`times'
+ Print out the user and system times used by the shell and its
+ children.
+
+`trap'
+ Specify commands to be executed when the shell receives signals.
+
+`umask'
+ Set the shell process's file creation mask.
+
+`unset'
+ Cause shell variables to disappear.
+
+`wait'
+ Wait until child processes exit and report their exit status.
+
+
+File: features.info, Node: Bourne Shell Variables, Next: Other Bourne Shell Features, Prev: Bourne Shell Builtins, Up: Bourne Shell Features
+
+Bourne Shell Variables
+======================
+
+ Bash uses certain shell variables in the same way as the Bourne
+shell. In some cases, Bash assigns a default value to the variable.
+
+`IFS'
+ A list of characters that separate fields; used when the shell
+ splits words as part of expansion.
+
+`PATH'
+ A colon-separated list of directories in which the shell looks for
+ commands.
+
+`HOME'
+ The current user's home directory.
+
+`CDPATH'
+ A colon-separated list of directories used as a search path for
+ the `cd' command.
+
+`MAILPATH'
+ A colon-separated list of files which the shell periodically checks
+ for new mail. You can also specify what message is printed by
+ separating the file name from the message with a `?'. When used
+ in the text of the message, `$_' stands for the name of the
+ current mailfile.
+
+`PS1'
+ The primary prompt string.
+
+`PS2'
+ The secondary prompt string.
+
+`OPTIND'
+ The index of the last option processed by the `getopts' builtin.
+
+`OPTARG'
+ The value of the last option argument processed by the `getopts'
+ builtin.
+
+
+File: features.info, Node: Other Bourne Shell Features, Prev: Bourne Shell Variables, Up: Bourne Shell Features
+
+Other Bourne Shell Features
+===========================
+
+* Menu:
+
+* Major Differences from the Bourne Shell:: Major differences between
+ Bash and the Bourne shell.
+
+ Bash implements essentially the same grammar, parameter and variable
+expansion, redirection, and quoting as the Bourne Shell. Bash uses the
+Posix 1003.2 standard as the specification of how these features are to
+be implemented. There are some differences between the traditional
+Bourne shell and the Posix standard; this section quickly details the
+differences of significance. A number of these differences are
+explained in greater depth in subsequent sections.
+
+
+File: features.info, Node: Major Differences from the Bourne Shell, Up: Other Bourne Shell Features
+
+Major Differences from the Bourne Shell
+---------------------------------------
+
+ Bash implements the `!' keyword to negate the return value of a
+pipeline. Very useful when an `if' statement needs to act only if a
+test fails.
+
+ Bash includes brace expansion (*note Brace Expansion::.).
+
+ Bash includes the Posix and `ksh'-style pattern removal `%%' and
+`##' constructs to remove leading or trailing substrings from variables.
+
+ The Posix and `ksh'-style `$()' form of command substitution is
+implemented, and preferred to the Bourne shell's ```' (which is also
+implemented for backwards compatibility).
+
+ Variables present in the shell's initial environment are
+automatically exported to child processes. The Bourne shell does not
+normally do this unless the variables are explicitly marked using the
+`export' command.
+
+ The expansion `${#xx}', which returns the length of `$xx', is
+supported.
+
+ The `IFS' variable is used to split only the results of expansion,
+not all words. This closes a longstanding shell security hole.
+
+ It is possible to have a variable and a function with the same name;
+`sh' does not separate the two name spaces.
+
+ Bash functions are permitted to have local variables, and thus useful
+recursive functions may be written.
+
+ The `noclobber' option is available to avoid overwriting existing
+files with output redirection.
+
+ Bash allows you to write a function to override a builtin, and
+provides access to that builtin's functionality within the function via
+the `builtin' and `command' builtins.
+
+ The `command' builtin allows selective disabling of functions when
+command lookup is performed.
+
+ Individual builtins may be enabled or disabled using the `enable'
+builtin.
+
+ Functions may be exported to children via the environment.
+
+ The Bash `read' builtin will read a line ending in \ with the `-r'
+option, and will use the `$REPLY' variable as a default if no arguments
+are supplied.
+
+ The `return' builtin may be used to abort execution of scripts
+executed with the `.' or `source' builtins.
+
+ The `umask' builtin allows symbolic mode arguments similar to those
+accepted by `chmod'.
+
+ The `test' builtin is slightly different, as it implements the Posix
+1003.2 algorithm, which specifies the behavior based on the number of
+arguments.
+
+
+File: features.info, Node: Csh Features, Next: Korn Shell Features, Prev: Bourne Shell Features, Up: Top
+
+C-Shell Style Features
+**********************
+
+ The C-Shell ("`csh'") was created by Bill Joy at UC Berkeley. It is
+generally considered to have better features for interactive use than
+the original Bourne shell. Some of the `csh' features present in Bash
+include job control, history expansion, `protected' redirection, and
+several variables for controlling the interactive behaviour of the shell
+(e.g. `IGNOREEOF').
+
+ *Note Using History Interactively:: for details on history expansion.
+
+* Menu:
+
+* Tilde Expansion:: Expansion of the ~ character.
+* Brace Expansion:: Expansion of expressions within braces.
+* C Shell Builtins:: Builtin commands adopted from the C Shell.
+* C Shell Variables:: Variables which Bash uses in essentially
+ the same way as the C Shell.
+
+
+File: features.info, Node: Tilde Expansion, Next: Brace Expansion, Up: Csh Features
+
+Tilde Expansion
+===============
+
+ Bash has tilde (~) expansion, similar, but not identical, to that of
+`csh'. The following table shows what unquoted words beginning with a
+tilde expand to.
+
+`~'
+ The current value of `$HOME'.
+
+`~/foo'
+ `$HOME/foo'
+
+`~fred/foo'
+ The subdirectory `foo' of the home directory of the user `fred'.
+
+`~+/foo'
+ `$PWD/foo'
+
+`~-'
+ `$OLDPWD/foo'
+
+ Bash will also tilde expand words following redirection operators
+and words following `=' in assignment statements.
+
+
+File: features.info, Node: Brace Expansion, Next: C Shell Builtins, Prev: Tilde Expansion, Up: Csh Features
+
+Brace Expansion
+===============
+
+ Brace expansion is a mechanism by which arbitrary strings may be
+generated. This mechanism is similar to PATHNAME EXPANSION (see the
+Bash manual page for details), but the file names generated need not
+exist. Patterns to be brace expanded take the form of an optional
+PREAMBLE, followed by a series of comma-separated strings between a
+pair of braces, followed by an optional POSTAMBLE. The preamble is
+prepended to each string contained within the braces, and the postamble
+is then appended to each resulting string, expanding left to right.
+
+ Brace expansions may be nested. The results of each expanded string
+are not sorted; left to right order is preserved. For example,
+ a{d,c,b}e
+ expands into ADE ACE ABE.
+
+ Brace expansion is performed before any other expansions, and any
+characters special to other expansions are preserved in the result. It
+is strictly textual. Bash does not apply any syntactic interpretation
+to the context of the expansion or the text between the braces.
+
+ A correctly-formed brace expansion must contain unquoted opening and
+closing braces, and at least one unquoted comma. Any incorrectly
+formed brace expansion is left unchanged.
+
+ This construct is typically used as shorthand when the common prefix
+of the strings to be generated is longer than in the above example:
+ mkdir /usr/local/src/bash/{old,new,dist,bugs}
+ or
+ chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
+
+
+File: features.info, Node: C Shell Builtins, Next: C Shell Variables, Prev: Brace Expansion, Up: Csh Features
+
+C Shell Builtins
+================
+
+ Bash has several builtin commands whose definition is very similar
+to `csh'.
+
+`pushd'
+ pushd [DIR | +N | -N]
+
+ Save the current directory on a list and then `cd' to DIR. With no
+ arguments, exchanges the top two directories.
+
+ `+N'
+ Brings the Nth directory (counting from the left of the list
+ printed by `dirs') to the top of the list by rotating the
+ stack.
+
+ `-N'
+ Brings the Nth directory (counting from the right of the list
+ printed by `dirs') to the top of the list by rotating the
+ stack.
+
+ `DIR'
+ Makes the current working directory be the top of the stack,
+ and then CDs to DIR. You can see the saved directory list
+ with the `dirs' command.
+
+`popd'
+ popd [+N | -N]
+
+ Pops the directory stack, and `cd's to the new top directory. When
+ no arguments are given, removes the top directory from the stack
+ and `cd's to the new top directory. The elements are numbered
+ from 0 starting at the first directory listed with `dirs'; i.e.
+ `popd' is equivalent to `popd +0'.
+ `+N'
+ Removes the Nth directory (counting from the left of the list
+ printed by `dirs'), starting with zero.
+
+ `-N'
+ Removes the Nth directory (counting from the right of the
+ list printed by `dirs'), starting with zero.
+
+`dirs'
+ dirs [+N | -N] [-L]
+ Display the list of currently remembered directories. Directories
+ find their way onto the list with the `pushd' command; you can get
+ back up through the list with the `popd' command.
+ `+N'
+ Displays the Nth directory (counting from the left of the
+ list printed by `dirs' when invoked without options), starting
+ with zero.
+
+ `-N'
+ Displays the Nth directory (counting from the right of the
+ list printed by `dirs' when invoked without options), starting
+ with zero.
+
+ `-L'
+ Produces a longer listing; the default listing format uses a
+ tilde to denote the home directory.
+
+`history'
+ history [N] [ [-w -r -a -n] [FILENAME]]
+
+ Display the history list with line numbers. Lines prefixed with
+ with a `*' have been modified. An argument of N says to list only
+ the last N lines. Option `-w' means write out the current history
+ to the history file; `-r' means to read the current history file
+ and make its contents the history list. An argument of `-a' means
+ to append the new history lines (history lines entered since the
+ beginning of the current Bash session) to the history file.
+ Finally, the `-n' argument means to read the history lines not
+ already read from the history file into the current history list.
+ These are lines appended to the history file since the beginning
+ of the current Bash session. If FILENAME is given, then it is used
+ as the history file, else if `$HISTFILE' has a value, that is
+ used, otherwise `~/.bash_history' is used.
+
+`logout'
+ Exit a login shell.
+
+`source'
+ A synonym for `.' (*note Bourne Shell Builtins::.)
+
+
+File: features.info, Node: C Shell Variables, Prev: C Shell Builtins, Up: Csh Features
+
+C Shell Variables
+=================
+
+`IGNOREEOF'
+ If this variable is set, it represents the number of consecutive
+ `EOF's Bash will read before exiting. By default, Bash will exit
+ upon reading a single `EOF'.
+
+`cdable_vars'
+ If this variable is set, Bash treats arguments to the `cd' command
+ which are not directories as names of variables whose values are
+ the directories to change to.
+
+
+File: features.info, Node: Korn Shell Features, Next: Bash Specific Features, Prev: Csh Features, Up: Top
+
+Korn Shell Style Features
+*************************
+
+ This section describes features primarily inspired by the Korn Shell
+(`ksh'). In some cases, the Posix 1003.2 standard has adopted these
+commands and variables from the Korn Shell; Bash implements those
+features using the Posix standard as a guide.
+
+* Menu:
+
+* Korn Shell Constructs:: Shell grammar constructs adopted from the
+ Korn Shell
+* Korn Shell Builtins:: Builtin commands adopted from the Korn Shell.
+* Korn Shell Variables:: Variables which bash uses in essentially
+ the same way as the Korn Shell.
+* Aliases:: Substituting one command for another.
+
+
+File: features.info, Node: Korn Shell Constructs, Next: Korn Shell Builtins, Up: Korn Shell Features
+
+Korn Shell Constructs
+=====================
+
+ Bash includes the Korn Shell `select' construct. This construct
+allows the easy generation of menus. It has almost the same syntax as
+the `for' command.
+
+ The syntax of the `select' command is:
+ select NAME [in WORDS ...]; do COMMANDS; done
+
+ The list of words following `in' is expanded, generating a list of
+items. The set of expanded words is printed on the standard error,
+each preceded by a number. If the "`in WORDS'" is omitted, the
+positional parameters are printed. The `PS3' prompt is then displayed
+and a line is read from the standard input. If the line consists of the
+number corresponding to one of the displayed words, then the value of
+NAME is set to that word. If the line is empty, the words and prompt
+are displayed again. If `EOF' is read, the `select' command completes.
+Any other value read causes NAME to be set to null. The line read is
+saved in the variable `REPLY'.
+
+ The COMMANDS are executed after each selection until a `break' or
+`return' command is executed, at which point the `select' command
+completes.
+
+
+File: features.info, Node: Korn Shell Builtins, Next: Korn Shell Variables, Prev: Korn Shell Constructs, Up: Korn Shell Features
+
+Korn Shell Builtins
+===================
+
+ This section describes Bash builtin commands taken from `ksh'.
+
+`fc'
+ `fc [-e ENAME] [-nlr] [FIRST] [LAST]'
+ `fc -s [PAT=REP] [COMMAND]'
+
+ Fix Command. In the first form, a range of commands from FIRST to
+ LAST is selected from the history list. Both FIRST and LAST may
+ be specified as a string (to locate the most recent command
+ beginning with that string) or as a number (an index into the
+ history list, where a negative number is used as an offset from the
+ current command number). If LAST is not specified it is set to
+ FIRST. If FIRST is not specified it is set to the previous
+ command for editing and -16 for listing. If the `-l' flag is
+ given, the commands are listed on standard output. The `-n' flag
+ suppresses the command numbers when listing. The `-r' flag
+ reverses the order of the listing. Otherwise, the editor given by
+ ENAME is invoked on a file containing those commands. If ENAME is
+ not given, the value of the following variable expansion is used:
+ `${FCEDIT:-${EDITOR:-vi}}'. This says to use the value of the
+ `FCEDIT' variable if set, or the value of the `EDITOR' variable if
+ that is set, or `vi' if neither is set. When editing is complete,
+ the edited commands are echoed and executed.
+
+ In the second form, COMMAND is re-executed after each instance of
+ PAT in the selected command is replaced by REP.
+
+ A useful alias to use with the `fc' command is `r='fc -s'', so
+ that typing `r cc' runs the last command beginning with `cc' and
+ typing `r' re-executes the last command (*note Aliases::.).
+
+`let'
+ The `let' builtin allows arithmetic to be performed on shell
+ variables. For details, refer to *Note Arithmetic Builtins::.
+
+`typeset'
+ The `typeset' command is supplied for compatibility with the Korn
+ shell; however, it has been made obsolete by the `declare' command
+ (*note Bash Builtins::.).
+
+
+File: features.info, Node: Korn Shell Variables, Next: Aliases, Prev: Korn Shell Builtins, Up: Korn Shell Features
+
+Korn Shell Variables
+====================
+
+`REPLY'
+ The default variable for the `read' builtin.
+
+`RANDOM'
+ Each time this parameter is referenced, a random integer is
+ generated. Assigning a value to this variable seeds the random
+ number generator.
+
+`SECONDS'
+ This variable expands to the number of seconds since the shell was
+ started. Assignment to this variable resets the count to the
+ value assigned, and the expanded value becomes the value assigned
+ plus the number of seconds since the assignment.
+
+`PS3'
+ The value of this variable is used as the prompt for the `select'
+ command.
+
+`PS4'
+ This is the prompt printed before the command line is echoed when
+ the `-x' option is set (*note The Set Builtin::.).
+
+`PWD'
+ The current working directory as set by the `cd' builtin.
+
+`OLDPWD'
+ The previous working directory as set by the `cd' builtin.
+
+`TMOUT'
+ If set to a value greater than zero, the value is interpreted as
+ the number of seconds to wait for input after issuing the primary
+ prompt. Bash terminates after that number of seconds if input does
+ not arrive.
+
+
+File: features.info, Node: Aliases, Prev: Korn Shell Variables, Up: Korn Shell Features
+
+Aliases
+=======
+
+* Menu:
+
+* Alias Builtins:: Builtins commands to maniuplate aliases.
+
+ The shell maintains a list of ALIASES that may be set and unset with
+the `alias' and `unalias' builtin commands.
+
+ The first word of each command, if unquoted, is checked to see if it
+has an alias. If so, that word is replaced by the text of the alias.
+The alias name and the replacement text may contain any valid shell
+input, including shell metacharacters, with the exception that the
+alias name may not contain =. The first word of the replacement text
+is tested for aliases, but a word that is identical to an alias being
+expanded is not expanded a second time. This means that one may alias
+`ls' to `"ls -F"', for instance, and Bash does not try to recursively
+expand the replacement text. If the last character of the alias value
+is a space or tab character, then the next command word following the
+alias is also checked for alias expansion.
+
+ Aliases are created and listed with the `alias' command, and removed
+with the `unalias' command.
+
+ There is no mechanism for using arguments in the replacement text,
+as in `csh'. If arguments are needed, a shell function should be used.
+
+ Aliases are not expanded when the shell is not interactive.
+
+ The rules concerning the definition and use of aliases are somewhat
+confusing. Bash always reads at least one complete line of input
+before executing any of the commands on that line. Aliases are
+expanded when a command is read, not when it is executed. Therefore, an
+alias definition appearing on the same line as another command does not
+take effect until the next line of input is read. This means that the
+commands following the alias definition on that line are not affected
+by the new alias. This behavior is also an issue when functions are
+executed. Aliases are expanded when the function definition is read,
+not when the function is executed, because a function definition is
+itself a compound command. As a consequence, aliases defined in a
+function are not available until after that function is executed. To
+be safe, always put alias definitions on a separate line, and do not
+use `alias' in compound commands.
+
+ Note that for almost every purpose, aliases are superseded by shell
+functions.
+
+
+File: features.info, Node: Alias Builtins, Up: Aliases
+
+Alias Builtins
+--------------
+
+`alias'
+ alias [NAME[=VALUE] ...]
+
+ Without arguments, print the list of aliases on the standard
+ output. If arguments are supplied, an alias is defined for each
+ NAME whose VALUE is given. If no VALUE is given, the name and
+ value of the alias is printed.
+
+`unalias'
+ unalias [-a] [NAME ... ]
+
+ Remove each NAME from the list of aliases. If `-a' is supplied,
+ all aliases are removed.
+
+
+File: features.info, Node: Bash Specific Features, Next: Job Control, Prev: Korn Shell Features, Up: Top
+
+Bash Specific Features
+**********************
+
+ This section describes the features unique to Bash.
+
+* Menu:
+
+* Invoking Bash:: Command line options that you can give
+ to Bash.
+* Bash Startup Files:: When and how Bash executes scripts.
+* Is This Shell Interactive?:: Determining the state of a running Bash.
+* Bash Builtins:: Table of builtins specific to Bash.
+* The Set Builtin:: This builtin is so overloaded it
+ deserves its own section.
+* Bash Variables:: List of variables that exist in Bash.
+* Shell Arithmetic:: Arithmetic on shell variables.
+* Printing a Prompt:: Controlling the PS1 string.
+
+
+File: features.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash Specific Features
+
+Invoking Bash
+=============
+
+ In addition to the single-character shell command-line options
+(*note The Set Builtin::.), there are several multi-character options
+that you can use. These options must appear on the command line before
+the single-character options to be recognized.
+
+`-norc'
+ Don't read the `~/.bashrc' initialization file in an interactive
+ shell. This is on by default if the shell is invoked as `sh'.
+
+`-rcfile FILENAME'
+ Execute commands from FILENAME (instead of `~/.bashrc') in an
+ interactive shell.
+
+`-noprofile'
+ Don't load the system-wide startup file `/etc/profile' or any of
+ the personal initialization files `~/.bash_profile',
+ `~/.bash_login', or `~/.profile' when bash is invoked as a login
+ shell.
+
+`-version'
+ Display the version number of this shell.
+
+`-login'
+ Make this shell act as if it were directly invoked from login.
+ This is equivalent to `exec - bash' but can be issued from another
+ shell, such as `csh'. If you wanted to replace your current login
+ shell with a Bash login shell, you would say `exec bash -login'.
+
+`-nobraceexpansion'
+ Do not perform curly brace expansion (*note Brace Expansion::.).
+
+`-nolineediting'
+ Do not use the GNU Readline library (*note Command Line Editing::.)
+ to read interactive command lines.
+
+`-posix'
+ Change the behavior of Bash where the default operation differs
+ from the Posix 1003.2 standard to match the standard. This is
+ intended to make Bash behave as a strict superset of that standard.
+
+ There are several single-character options you can give which are
+not available with the `set' builtin.
+
+`-c STRING'
+ Read and execute commands from STRING after processing the
+ options, then exit.
+
+`-i'
+ Force the shell to run interactively.
+
+`-s'
+ If this flag is present, or if no arguments remain after option
+ processing, then commands are read from the standard input. This
+ option allows the positional parameters to be set when invoking an
+ interactive shell.
+
+ An *interactive* shell is one whose input and output are both
+connected to terminals (as determined by `isatty()'), or one started
+with the `-i' option.
+
+
+File: features.info, Node: Bash Startup Files, Next: Is This Shell Interactive?, Prev: Invoking Bash, Up: Bash Specific Features
+
+Bash Startup Files
+==================
+
+ When and how Bash executes startup files.
+
+ For Login shells (subject to the -noprofile option):
+
+ On logging in:
+ If `/etc/profile' exists, then source it.
+
+ If `~/.bash_profile' exists, then source it,
+ else if `~/.bash_login' exists, then source it,
+ else if `~/.profile' exists, then source it.
+
+ On logging out:
+ If `~/.bash_logout' exists, source it.
+
+ For non-login interactive shells (subject to the -norc and -rcfile options):
+ On starting up:
+ If `~/.bashrc' exists, then source it.
+
+ For non-interactive shells:
+ On starting up:
+ If the environment variable `ENV' is non-null, expand the
+ variable and source the file named by the value. If Bash is
+ not started in Posix mode, it looks for `BASH_ENV' before
+ `ENV'.
+
+ So, typically, your `~/.bash_profile' contains the line
+ `if [ -f `~/.bashrc' ]; then source `~/.bashrc'; fi'
+
+after (or before) any login specific initializations.
+
+ If Bash is invoked as `sh', it tries to mimic the behavior of `sh'
+as closely as possible. For a login shell, it attempts to source only
+`/etc/profile' and `~/.profile', in that order. The `-noprofile'
+option may still be used to disable this behavior. A shell invoked as
+`sh' does not attempt to source any other startup files.
+
+ When Bash is started in POSIX mode, as with the `-posix' command
+line option, it follows the Posix 1003.2 standard for startup files.
+In this mode, the `ENV' variable is expanded and that file sourced; no
+other startup files are read.
+
+
+File: features.info, Node: Is This Shell Interactive?, Next: Bash Builtins, Prev: Bash Startup Files, Up: Bash Specific Features
+
+Is This Shell Interactive?
+==========================
+
+ You may wish to determine within a startup script whether Bash is
+running interactively or not. To do this, examine the variable `$PS1';
+it is unset in non-interactive shells, and set in interactive shells.
+Thus:
+
+ if [ -z "$PS1" ]; then
+ echo This shell is not interactive
+ else
+ echo This shell is interactive
+ fi
+
+ You can ask an interactive Bash to not run your `~/.bashrc' file
+with the `-norc' flag. You can change the name of the `~/.bashrc' file
+to any other file name with `-rcfile FILENAME'. You can ask Bash to
+not run your `~/.bash_profile' file with the `-noprofile' flag.
+
+
+File: features.info, Node: Bash Builtins, Next: The Set Builtin, Prev: Is This Shell Interactive?, Up: Bash Specific Features
+
+Bash Builtin Commands
+=====================
+
+ This section describes builtin commands which are unique to or have
+been extended in Bash.
+
+`builtin'
+ builtin [SHELL-BUILTIN [ARGS]]
+ Run a shell builtin. This is useful when you wish to rename a
+ shell builtin to be a function, but need the functionality of the
+ builtin within the function itself.
+
+`bind'
+ bind [-m KEYMAP] [-lvd] [-q NAME]
+ bind [-m KEYMAP] -f FILENAME
+ bind [-m KEYMAP] KEYSEQ:FUNCTION-NAME
+
+ Display current Readline (*note Command Line Editing::.) key and
+ function bindings, or bind a key sequence to a Readline function
+ or macro. The binding syntax accepted is identical to that of
+ `.inputrc' (*note Readline Init File::.), but each binding must be
+ passed as a separate argument: `"\C-x\C-r":re-read-init-file'.
+ Options, if supplied, have the following meanings:
+
+ `-m keymap'
+ Use KEYMAP as the keymap to be affected by the subsequent
+ bindings. Acceptable KEYMAP names are `emacs',
+ `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move',
+ `vi-command', and `vi-insert'. `vi' is equivalent to
+ `vi-command'; `emacs' is equivalent to `emacs-standard'.
+
+ `-l'
+ List the names of all readline functions
+
+ `-v'
+ List current function names and bindings
+
+ `-d'
+ Dump function names and bindings in such a way that they can
+ be re-read
+
+ `-f filename'
+ Read key bindings from FILENAME
+
+ `-q'
+ Query about which keys invoke the named FUNCTION
+
+`command'
+ command [-pVv] COMMAND [ARGS ...]
+ Runs COMMAND with ARG ignoring shell functions. If you have a
+ shell function called `ls', and you wish to call the command `ls',
+ you can say `command ls'. The `-p' option means to use a default
+ value for `$PATH' that is guaranteed to find all of the standard
+ utilities.
+
+ If either the `-V' or `-v' option is supplied, a description of
+ COMMAND is printed. The `-v' option causes a single word
+ indicating the command or file name used to invoke COMMAND to be
+ printed; the `-V' option produces a more verbose description.
+
+`declare'
+ declare [-frxi] [NAME[=VALUE]]
+
+ Declare variables and/or give them attributes. If no NAMEs are
+ given, then display the values of variables instead. `-f' means
+ to use function names only. `-r' says to make NAMEs readonly.
+ `-x' says to mark NAMEs for export. `-i' says that the variable
+ is to be treated as an integer; arithmetic evaluation (*note Shell
+ Arithmetic::.) is performed when the variable is assigned a value.
+ Using `+' instead of `-' turns off the attribute instead. When
+ used in a function, `declare' makes NAMEs local, as with the
+ `local' command.
+
+`enable'
+ enable [-n] [-a] [NAME ...]
+ Enable and disable builtin shell commands. This allows you to use
+ a disk command which has the same name as a shell builtin. If
+ `-n' is used, the NAMEs become disabled. Otherwise NAMEs are
+ enabled. For example, to use the `test' binary found via `$PATH'
+ instead of the shell builtin version, type `enable -n test'. The
+ `-a' option means to list each builtin with an indication of
+ whether or not it is enabled.
+
+`help'
+ help [PATTERN]
+ Display helpful information about builtin commands. If PATTERN is
+ specified, `help' gives detailed help on all commands matching
+ PATTERN, otherwise a list of the builtins is printed.
+
+`local'
+ local NAME[=VALUE]
+ For each argument, create a local variable called NAME, and give
+ it VALUE. `local' can only be used within a function; it makes
+ the variable NAME have a visible scope restricted to that function
+ and its children.
+
+`type'
+ type [-all] [-type | -path] [NAME ...]
+ For each NAME, indicate how it would be interpreted if used as a
+ command name.
+
+ If the `-type' flag is used, `type' returns a single word which is
+ one of "alias", "function", "builtin", "file" or "keyword", if
+ NAME is an alias, shell function, shell builtin, disk file, or
+ shell reserved word, respectively.
+
+ If the `-path' flag is used, `type' either returns the name of the
+ disk file that would be executed, or nothing if `-type' would not
+ return "file".
+
+ If the `-all' flag is used, returns all of the places that contain
+ an executable named FILE. This includes aliases and functions, if
+ and only if the `-path' flag is not also used.
+
+ `Type' accepts `-a', `-t', and `-p' as equivalent to `-all',
+ `-type', and `-path', respectively.
+
+`ulimit'
+ ulimit [-acdmstfpnuvSH] [LIMIT]
+ `Ulimit' provides control over the resources available to processes
+ started by the shell, on systems that allow such control. If an
+ option is given, it is interpreted as follows:
+ `-S'
+ change and report the soft limit associated with a resource
+ (the default if the `-H' option is not given).
+
+ `-H'
+ change and report the hard limit associated with a resource.
+
+ `-a'
+ all current limits are reported.
+
+ `-c'
+ the maximum size of core files created.
+
+ `-d'
+ the maximum size of a process's data segment.
+
+ `-m'
+ the maximum resident set size.
+
+ `-s'
+ the maximum stack size.
+
+ `-t'
+ the maximum amount of cpu time in seconds.
+
+ `-f'
+ the maximum size of files created by the shell.
+
+ `-p'
+ the pipe buffer size.
+
+ `-n'
+ the maximum number of open file descriptors.
+
+ `-u'
+ the maximum number of processes available to a single user.
+
+ `-v'
+ the maximum amount of virtual memory available to the process.
+
+ If LIMIT is given, it is the new value of the specified resource.
+ Otherwise, the current value of the specified resource is printed.
+ If no option is given, then `-f' is assumed. Values are in
+ 1024-byte increments, except for `-t', which is in seconds, `-p',
+ which is in units of 512-byte blocks, and `-n' and `-u', which are
+ unscaled values.
+
+
+File: features.info, Node: The Set Builtin, Next: Bash Variables, Prev: Bash Builtins, Up: Bash Specific Features
+
+The Set Builtin
+===============
+
+ This builtin is so overloaded that it deserves its own section.
+
+`set'
+ set [-abefhkmnptuvxldCHP] [-o OPTION] [ARGUMENT ...]
+
+ `-a'
+ Mark variables which are modified or created for export.
+
+ `-b'
+ Cause the status of terminated background jobs to be reported
+ immediately, rather than before printing the next primary
+ prompt.
+
+ `-e'
+ Exit immediately if a command exits with a non-zero status.
+
+ `-f'
+ Disable file name generation (globbing).
+
+ `-h'
+ Locate and remember (hash) commands as functions are defined,
+ rather than when the function is executed.
+
+ `-k'
+ All keyword arguments are placed in the environment for a
+ command, not just those that precede the command name.
+
+ `-m'
+ Job control is enabled (*note Job Control::.).
+
+ `-n'
+ Read commands but do not execute them.
+
+ `-o OPTION-NAME'
+ Set the flag corresponding to OPTION-NAME:
+
+ `allexport'
+ same as `-a'.
+
+ `braceexpand'
+ the shell will perform brace expansion (*note Brace
+ Expansion::.).
+
+ `emacs'
+ use an emacs-style line editing interface (*note Command
+ Line Editing::.).
+
+ `errexit'
+ same as `-e'.
+
+ `histexpand'
+ same as `-H'.
+
+ `ignoreeof'
+ the shell will not exit upon reading EOF.
+
+ `interactive-comments'
+ allow a word beginning with a `#' to cause that word and
+ all remaining characters on that line to be ignored in an
+ interactive shell.
+
+ `monitor'
+ same as `-m'.
+
+ `noclobber'
+ same as `-C'.
+
+ `noexec'
+ same as `-n'.
+
+ `noglob'
+ same as `-f'.
+
+ `nohash'
+ same as `-d'.
+
+ `notify'
+ same as `-b'.
+
+ `nounset'
+ same as `-u'.
+
+ `physical'
+ same as `-P'.
+
+ `posix'
+ change the behavior of Bash where the default operation
+ differs from the Posix 1003.2 standard to match the
+ standard. This is intended to make Bash behave as a
+ strict superset of that standard.
+
+ `privileged'
+ same as `-p'.
+
+ `verbose'
+ same as `-v'.
+
+ `vi'
+ use a `vi'-style line editing interface.
+
+ `xtrace'
+ same as `-x'.
+
+ `-p'
+ Turn on privileged mode. In this mode, the `$ENV' file is
+ not processed, and shell functions are not inherited from the
+ environment. This is enabled automatically on startup if the
+ effective user (group) id is not equal to the real user
+ (group) id. Turning this option off causes the effective user
+ and group ids to be set to the real user and group ids.
+
+ `-t'
+ Exit after reading and executing one command.
+
+ `-u'
+ Treat unset variables as an error when substituting.
+
+ `-v'
+ Print shell input lines as they are read.
+
+ `-x'
+ Print commands and their arguments as they are executed.
+
+ `-l'
+ Save and restore the binding of the NAME in a `for' command.
+
+ `-d'
+ Disable the hashing of commands that are looked up for
+ execution. Normally, commands are remembered in a hash
+ table, and once found, do not have to be looked up again.
+
+ `-C'
+ Disallow output redirection to existing files.
+
+ `-H'
+ Enable ! style history substitution. This flag is on by
+ default.
+
+ `-P'
+ If set, do not follow symbolic links when performing commands
+ such as `cd' which change the current directory. The
+ physical directory is used instead.
+
+ `--'
+ If no arguments follow this flag, then the positional
+ parameters are unset. Otherwise, the positional parameters
+ are set to the ARGUMENTS, even if some of them begin with a
+ `-'.
+
+ `-'
+ Signal the end of options, cause all remaining ARGUMENTS to
+ be assigned to the positional parameters. The `-x' and `-v'
+ options are turned off. If there are no arguments, the
+ positional parameters remain unchanged.
+
+ Using `+' rather than `-' causes these flags to be turned off.
+ The flags can also be used upon invocation of the shell. The
+ current set of flags may be found in `$-'. The remaining N
+ ARGUMENTS are positional parameters and are assigned, in order, to
+ `$1', `$2', .. `$N'. If no arguments are given, all shell
+ variables are printed.
+
+
+File: features.info, Node: Bash Variables, Next: Shell Arithmetic, Prev: The Set Builtin, Up: Bash Specific Features
+
+Bash Variables
+==============
+
+ These variables are set or used by bash, but other shells do not
+normally treat them specially.
+
+`HISTCONTROL'
+`history_control'
+ Set to a value of `ignorespace', it means don't enter lines which
+ begin with a space or tab into the history list. Set to a value
+ of `ignoredups', it means don't enter lines which match the last
+ entered line. A value of `ignoreboth' combines the two options.
+ Unset, or set to any other value than those above, means to save
+ all lines on the history list.
+
+`HISTFILE'
+ The name of the file to which the command history is saved.
+
+`HISTSIZE'
+ If set, this is the maximum number of commands to remember in the
+ history.
+
+`histchars'
+ Up to three characters which control history expansion, quick
+ substitution, and tokenization (*note History Interaction::.).
+ The first character is the "history-expansion-char", that is, the
+ character which signifies the start of a history expansion,
+ normally `!'. The second character is the character which
+ signifies `quick substitution' when seen as the first character on
+ a line, normally `^'. The optional third character is the
+ character which signifies the remainder of the line is a comment,
+ when found as the first character of a word, usually `#'. The
+ history comment character causes history substitution to be
+ skipped for the remaining words on the line. It does not
+ necessarily cause the shell parser to treat the rest of the line
+ as a comment.
+
+`HISTCMD'
+ The history number, or index in the history list, of the current
+ command. If `HISTCMD' is unset, it loses its special properties,
+ even if it is subsequently reset.
+
+`hostname_completion_file'
+`HOSTFILE'
+ Contains the name of a file in the same format as `/etc/hosts' that
+ should be read when the shell needs to complete a hostname. You
+ can change the file interactively; the next time you attempt to
+ complete a hostname, Bash will add the contents of the new file to
+ the already existing database.
+
+`MAILCHECK'
+ How often (in seconds) that the shell should check for mail in the
+ files specified in `MAILPATH'.
+
+`PROMPT_COMMAND'
+ If present, this contains a string which is a command to execute
+ before the printing of each primary prompt (`$PS1').
+
+`UID'
+ The numeric real user id of the current user.
+
+`EUID'
+ The numeric effective user id of the current user.
+
+`HOSTTYPE'
+ A string describing the machine Bash is running on.
+
+`OSTYPE'
+ A string describing the operating system Bash is running on.
+
+`FIGNORE'
+ A colon-separated list of suffixes to ignore when performing
+ filename completion A file name whose suffix matches one of the
+ entries in `FIGNORE' is excluded from the list of matched file
+ names. A sample value is `.o:~'
+
+`INPUTRC'
+ The name of the Readline startup file, overriding the default of
+ `~/.inputrc'.
+
+`BASH_VERSION'
+ The version number of the current instance of Bash.
+
+`IGNOREEOF'
+ Controls the action of the shell on receipt of an `EOF' character
+ as the sole input. If set, then the value of it is the number of
+ consecutive `EOF' characters that can be read as the first
+ characters on an input line before the shell will exit. If the
+ variable exists but does not have a numeric value (or has no
+ value) then the default is 10. If the variable does not exist,
+ then `EOF' signifies the end of input to the shell. This is only
+ in effect for interactive shells.
+
+`no_exit_on_failed_exec'
+ If this variable exists, the shell will not exit in the case that
+ it couldn't execute the file specified in the `exec' command.
+
+`nolinks'
+ If present, says not to follow symbolic links when doing commands
+ that change the current working directory. By default, bash
+ follows the logical chain of directories when performing commands
+ such as `cd' which change the current directory.
+
+ For example, if `/usr/sys' is a link to `/usr/local/sys' then:
+ $ cd /usr/sys; echo $PWD
+ /usr/sys
+ $ cd ..; pwd
+ /usr
+
+ If `nolinks' exists, then:
+ $ cd /usr/sys; echo $PWD
+ /usr/local/sys
+ $ cd ..; pwd
+ /usr/local
+
+ See also the description of the `-P' option to the `set' builtin,
+ *Note The Set Builtin::.
+
+
+File: features.info, Node: Shell Arithmetic, Next: Printing a Prompt, Prev: Bash Variables, Up: Bash Specific Features
+
+Shell Arithmetic
+================
+
+* Menu:
+
+* Arithmetic Evaluation:: How shell arithmetic works.
+* Arithmetic Expansion:: How to use arithmetic in shell expansions.
+* Arithmetic Builtins:: Builtin commands that use shell arithmetic.
+
+
+File: features.info, Node: Arithmetic Evaluation, Next: Arithmetic Expansion, Up: Shell Arithmetic
+
+Arithmetic Evaluation
+---------------------
+
+ The shell allows arithmetic expressions to be evaluated, as one of
+the shell expansions or by the `let' builtin.
+
+ Evaluation is done in long integers with no check for overflow,
+though division by 0 is trapped and flagged as an error. The following
+list of operators is grouped into levels of equal-precedence operators.
+The levels are listed in order of decreasing precedence.
+
+`- +'
+ unary minus and plus
+
+`! ~'
+ logical and bitwise negation
+
+`* / %'
+ multiplication, division, remainder
+
+`+ -'
+ addition, subtraction
+
+`<< >>'
+ left and right bitwise shifts
+
+`<= >= < >'
+ comparison
+
+`== !='
+ equality and inequality
+
+`&'
+ bitwise AND
+
+`^'
+ bitwise exclusive OR
+
+`|'
+ bitwise OR
+
+`&&'
+ logical AND
+
+`||'
+ logical OR
+
+`= *= /= %= += -= <<= >>= &= ^= |='
+ assignment
+
+ Shell variables are allowed as operands; parameter expansion is
+performed before the expression is evaluated. The value of a parameter
+is coerced to a long integer within an expression. A shell variable
+need not have its integer attribute turned on to be used in an
+expression.
+
+ Constants with a leading 0 are interpreted as octal numbers. A
+leading `0x' or `0X' denotes hexadecimal. Otherwise, numbers take the
+form [BASE#]n, where BASE is a decimal number between 2 and 36
+representing the arithmetic base, and N is a number in that base. If
+BASE is omitted, then base 10 is used.
+
+ Operators are evaluated in order of precedence. Sub-expressions in
+parentheses are evaluated first and may override the precedence rules
+above.
+
+
+File: features.info, Node: Arithmetic Expansion, Next: Arithmetic Builtins, Prev: Arithmetic Evaluation, Up: Shell Arithmetic
+
+Arithmetic Expansion
+--------------------
+
+ Arithmetic expansion allows the evaluation of an arithmetic
+expression and the substitution of the result. There are two formats
+for arithmetic expansion:
+
+ $[ expression ]
+ $(( expression ))
+
+ The expression is treated as if it were within double quotes, but a
+double quote inside the braces or parentheses is not treated specially.
+All tokens in the expression undergo parameter expansion, command
+substitution, and quote removal. Arithmetic substitutions may be
+nested.
+
+ The evaluation is performed according to the rules listed above. If
+the expression is invalid, Bash prints a message indicating failure and
+no substitution occurs.
+
+
+File: features.info, Node: Arithmetic Builtins, Prev: Arithmetic Expansion, Up: Shell Arithmetic
+
+Arithmetic Builtins
+-------------------
+
+`let'
+ let EXPRESSION [EXPRESSION]
+ The `let' builtin allows arithmetic to be performed on shell
+ variables. Each EXPRESSION is evaluated according to the rules
+ given previously (*note Arithmetic Evaluation::.). If the last
+ EXPRESSION evaluates to 0, `let' returns 1; otherwise 0 is
+ returned.
+
+
+File: features.info, Node: Printing a Prompt, Prev: Shell Arithmetic, Up: Bash Specific Features
+
+Controlling the Prompt
+======================
+
+ The value of the variable `$PROMPT_COMMAND' is examined just before
+Bash prints each primary prompt. If it is set and non-null, then the
+value is executed just as if you had typed it on the command line.
+
+ In addition, the following table describes the special characters
+which can appear in the `PS1' variable:
+
+`\t'
+ the time, in HH:MM:SS format.
+
+`\d'
+ the date, in "Weekday Month Date" format (e.g. "Tue May 26").
+
+`\n'
+ newline.
+
+`\s'
+ the name of the shell, the basename of `$0' (the portion following
+ the final slash).
+
+`\w'
+ the current working directory.
+
+`\W'
+ the basename of `$PWD'.
+
+`\u'
+ your username.
+
+`\h'
+ the hostname.
+
+`\#'
+ the command number of this command.
+
+`\!'
+ the history number of this command.
+
+`\nnn'
+ the character corresponding to the octal number `nnn'.
+
+`\$'
+ if the effective uid is 0, `#', otherwise `$'.
+
+`\\'
+ a backslash.
+
+`\['
+ begin a sequence of non-printing characters. This could be used to
+ embed a terminal control sequence into the prompt.
+
+`\]'
+ end a sequence of non-printing characters.
+
+
+File: features.info, Node: Job Control, Next: Using History Interactively, Prev: Bash Specific Features, Up: Top
+
+Job Control
+***********
+
+ This chapter disusses what job control is, how it works, and how
+Bash allows you to access its facilities.
+
+* Menu:
+
+* Job Control Basics:: How job control works.
+* Job Control Builtins:: Bash builtin commands used to interact
+ with job control.
+* Job Control Variables:: Variables Bash uses to customize job
+ control.
+
+
+File: features.info, Node: Job Control Basics, Next: Job Control Builtins, Up: Job Control
+
+Job Control Basics
+==================
+
+ Job control refers to the ability to selectively stop (suspend) the
+execution of processes and continue (resume) their execution at a later
+point. A user typically employs this facility via an interactive
+interface supplied jointly by the system's terminal driver and Bash.
+
+ The shell associates a JOB with each pipeline. It keeps a table of
+currently executing jobs, which may be listed with the `jobs' command.
+When Bash starts a job asynchronously (in the background), it prints a
+line that looks like:
+ [1] 25647
+ indicating that this job is job number 1 and that the process ID of
+the last process in the pipeline associated with this job is 25647.
+All of the processes in a single pipeline are members of the same job.
+Bash uses the JOB abstraction as the basis for job control.
+
+ To facilitate the implementation of the user interface to job
+control, the system maintains the notion of a current terminal process
+group ID. Members of this process group (processes whose process group
+ID is equal to the current terminal process group ID) receive
+keyboard-generated signals such as `SIGINT'. These processes are said
+to be in the foreground. Background processes are those whose process
+group ID differs from the terminal's; such processes are immune to
+keyboard-generated signals. Only foreground processes are allowed to
+read from or write to the terminal. Background processes which attempt
+to read from (write to) the terminal are sent a `SIGTTIN' (`SIGTTOU')
+signal by the terminal driver, which, unless caught, suspends the
+process.
+
+ If the operating system on which Bash is running supports job
+control, Bash allows you to use it. Typing the SUSPEND character
+(typically `^Z', Control-Z) while a process is running causes that
+process to be stopped and returns you to Bash. Typing the DELAYED
+SUSPEND character (typically `^Y', Control-Y) causes the process to be
+stopped when it attempts to read input from the terminal, and control to
+be returned to Bash. You may then manipulate the state of this job,
+using the `bg' command to continue it in the background, the `fg'
+command to continue it in the foreground, or the `kill' command to kill
+it. A `^Z' takes effect immediately, and has the additional side
+effect of causing pending output and typeahead to be discarded.
+
+ There are a number of ways to refer to a job in the shell. The
+character `%' introduces a job name. Job number `n' may be referred to
+as `%n'. A job may also be referred to using a prefix of the name used
+to start it, or using a substring that appears in its command line.
+For example, `%ce' refers to a stopped `ce' job. Using `%?ce', on the
+other hand, refers to any job containing the string `ce' in its command
+line. If the prefix or substring matches more than one job, Bash
+reports an error. The symbols `%%' and `%+' refer to the shell's
+notion of the current job, which is the last job stopped while it was
+in the foreground. The previous job may be referenced using `%-'. In
+output pertaining to jobs (e.g., the output of the `jobs' command), the
+current job is always flagged with a `+', and the previous job with a
+`-'.
+
+ Simply naming a job can be used to bring it into the foreground:
+`%1' is a synonym for `fg %1' bringing job 1 from the background into
+the foreground. Similarly, `%1 &' resumes job 1 in the background,
+equivalent to `bg %1'
+
+ The shell learns immediately whenever a job changes state.
+Normally, Bash waits until it is about to print a prompt before
+reporting changes in a job's status so as to not interrupt any other
+output. If the the `-b' option to the `set' builtin is set, Bash
+reports such changes immediately (*note The Set Builtin::.). This
+feature is also controlled by the variable `notify'.
+
+ If you attempt to exit bash while jobs are stopped, the shell prints
+a message warning you. You may then use the `jobs' command to inspect
+their status. If you do this, or try to exit again immediately, you
+are not warned again, and the stopped jobs are terminated.
+
+
+File: features.info, Node: Job Control Builtins, Next: Job Control Variables, Prev: Job Control Basics, Up: Job Control
+
+Job Control Builtins
+====================
+
+`bg'
+ bg [JOBSPEC]
+ Place JOBSPEC into the background, as if it had been started with
+ `&'. If JOBSPEC is not supplied, the current job is used.
+
+`fg'
+ fg [JOBSPEC]
+ Bring JOBSPEC into the foreground and make it the current job. If
+ JOBSPEC is not supplied, the current job is used.
+
+`jobs'
+ jobs [-lpn] [JOBSPEC]
+ jobs -x COMMAND [JOBSPEC]
+
+ The first form lists the active jobs. The `-l' option lists
+ process IDs in addition to the normal information; the `-p' option
+ lists only the process ID of the job's process group leader. The
+ `-n' option displays only jobs that have changed status since last
+ notfied. If JOBSPEC is given, output is restricted to information
+ about that job. If JOBSPEC is not supplied, the status of all
+ jobs is listed.
+
+ If the `-x' option is supplied, `jobs' replaces any JOBSPEC found
+ in COMMAND or ARGUMENTS with the corresponding process group ID,
+ and executes COMMAND, passing it ARGUMENTs, returning its exit
+ status.
+
+`suspend'
+ suspend [-f]
+ Suspend the execution of this shell until it receives a `SIGCONT'
+ signal. The `-f' option means to suspend even if the shell is a
+ login shell.
+
+ When job control is active, the `kill' and `wait' builtins also
+accept JOBSPEC arguments.
+
+
+File: features.info, Node: Job Control Variables, Prev: Job Control Builtins, Up: Job Control
+
+Job Control Variables
+=====================
+
+`auto_resume'
+ This variable controls how the shell interacts with the user and
+ job control. If this variable exists then single word simple
+ commands without redirects are treated as candidates for resumption
+ of an existing job. There is no ambiguity allowed; if you have
+ more than one job beginning with the string that you have typed,
+ then the most recently accessed job will be selected. The name of
+ a stopped job, in this context, is the command line used to start
+ it. If this variable is set to the value `exact', the string
+ supplied must match the name of a stopped job exactly; if set to
+ `substring', the string supplied needs to match a substring of the
+ name of a stopped job. The `substring' value provides
+ functionality analogous to the `%?' job id (*note Job Control
+ Basics::.). If set to any other value, the supplied string must
+ be a prefix of a stopped job's name; this provides functionality
+ analogous to the `%' job id.
+
+`notify'
+ Setting this variable to a value is equivalent to `set -b';
+ unsetting it is equivalent to `set +b' (*note The Set Builtin::.).
+
+
+File: features.info, Node: Using History Interactively, Next: Command Line Editing, Prev: Job Control, Up: Top
+
+Using History Interactively
+***************************
+
+ This chapter describes how to use the GNU History Library
+interactively, from a user's standpoint. It should be considered a
+user's guide. For information on using the GNU History Library in your
+own programs, see the GNU Readline Library Manual.
+
+* Menu:
+
+* History Interaction:: What it feels like using History as a user.
+
+
+File: features.info, Node: History Interaction, Up: Using History Interactively
+
+History Interaction
+===================
+
+ The History library provides a history expansion feature that is
+similar to the history expansion provided by `csh'. The following text
+describes the syntax used to manipulate the history information.
+
+ History expansion takes place in two parts. The first is to
+determine which line from the previous history should be used during
+substitution. The second is to select portions of that line for
+inclusion into the current one. The line selected from the previous
+history is called the "event", and the portions of that line that are
+acted upon are called "words". The line is broken into words in the
+same fashion that Bash does, so that several English (or Unix) words
+surrounded by quotes are considered as one word.
+
+* Menu:
+
+* Event Designators:: How to specify which history line to use.
+* Word Designators:: Specifying which words are of interest.
+* Modifiers:: Modifying the results of substitution.
+
+
+File: features.info, Node: Event Designators, Next: Word Designators, Up: History Interaction
+
+Event Designators
+-----------------
+
+ An event designator is a reference to a command line entry in the
+history list.
+
+`!'
+ Start a history substitution, except when followed by a space, tab,
+ the end of the line, = or (.
+
+`!!'
+ Refer to the previous command. This is a synonym for `!-1'.
+
+`!n'
+ Refer to command line N.
+
+`!-n'
+ Refer to the command N lines back.
+
+`!string'
+ Refer to the most recent command starting with STRING.
+
+`!?string'[`?']
+ Refer to the most recent command containing STRING.
+
+`!#'
+ The entire command line typed so far.
+
+`^string1^string2^'
+ Quick Substitution. Repeat the last command, replacing STRING1
+ with STRING2. Equivalent to `!!:s/string1/string2/'.
+
+
+File: features.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction
+
+Word Designators
+----------------
+
+ A : separates the event specification from the word designator. It
+can be omitted if the word designator begins with a ^, $, * or %.
+Words are numbered from the beginning of the line, with the first word
+being denoted by a 0 (zero).
+
+`0 (zero)'
+ The `0'th word. For many applications, this is the command word.
+
+`n'
+ The Nth word.
+
+`^'
+ The first argument; that is, word 1.
+
+`$'
+ The last argument.
+
+`%'
+ The word matched by the most recent `?string?' search.
+
+`x-y'
+ A range of words; `-Y' abbreviates `0-Y'.
+
+`*'
+ All of the words, except the `0'th. This is a synonym for `1-$'.
+ It is not an error to use * if there is just one word in the event;
+ the empty string is returned in that case.
+
+`x*'
+ Abbreviates `x-$'
+
+`x-'
+ Abbreviates `x-$' like `x*', but omits the last word.
+
+
+File: features.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction
+
+Modifiers
+---------
+
+ After the optional word designator, you can add a sequence of one or
+more of the following modifiers, each preceded by a :.
+
+`h'
+ Remove a trailing pathname component, leaving only the head.
+
+`r'
+ Remove a trailing suffix of the form `.'SUFFIX, leaving the
+ basename.
+
+`e'
+ Remove all but the trailing suffix.
+
+`t'
+ Remove all leading pathname components, leaving the tail.
+
+`p'
+ Print the new command but do not execute it.
+
+`q'
+ Quote the substituted words, escaping further substitutions.
+
+`x'
+ Quote the substituted words as with `q', but break into words at
+ spaces, tabs, and newlines.
+
+`s/old/new/'
+ Substitute NEW for the first occurrence of OLD in the event line.
+ Any delimiter may be used in place of /. The delimiter may be
+ quoted in OLD and NEW with a single backslash. If & appears in
+ NEW, it is replaced by OLD. A single backslash will quote the &.
+ The final delimiter is optional if it is the last character on the
+ input line.
+
+`&'
+ Repeat the previous substitution.
+
+`g'
+ Cause changes to be applied over the entire event line. Used in
+ conjunction with `s', as in `gs/old/new/', or with `&'.
+
+
+File: features.info, Node: Command Line Editing, Next: Variable Index, Prev: Using History Interactively, Up: Top
+
+Command Line Editing
+********************
+
+ This chapter describes the basic features of the GNU command line
+editing interface.
+
+* Menu:
+
+* Introduction and Notation:: Notation used in this text.
+* Readline Interaction:: The minimum set of commands for editing a line.
+* Readline Init File:: Customizing Readline from a user's view.
+* Bindable Readline Commands:: A description of most of the Readline commands
+ available for binding
+* Readline vi Mode:: A short description of how to make Readline
+ behave like the vi editor.
+
+
+File: features.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
+
+Introduction to Line Editing
+============================
+
+ The following paragraphs describe the notation used to represent
+keystrokes.
+
+ The text C-k is read as `Control-K' and describes the character
+produced when the Control key is depressed and the k key is struck.
+
+ The text M-k is read as `Meta-K' and describes the character
+produced when the meta key (if you have one) is depressed, and the k
+key is struck. If you do not have a meta key, the identical keystroke
+can be generated by typing ESC first, and then typing k. Either
+process is known as "metafying" the k key.
+
+ The text M-C-k is read as `Meta-Control-k' and describes the
+character produced by "metafying" C-k.
+
+ In addition, several keys have their own names. Specifically, DEL,
+ESC, LFD, SPC, RET, and TAB all stand for themselves when seen in this
+text, or in an init file (*note Readline Init File::., for more info).
+
+
+File: features.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
+
+Readline Interaction
+====================
+
+ Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press RETURN. You do not have to be at the end of
+the line to press RETURN; the entire line is accepted regardless of the
+location of the cursor within the line.
+
+* Menu:
+
+* Readline Bare Essentials:: The least you need to know about Readline.
+* Readline Movement Commands:: Moving about the input line.
+* Readline Killing Commands:: How to delete text, and how to get it back!
+* Readline Arguments:: Giving numeric arguments to commands.
+
+
+File: features.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
+
+Readline Bare Essentials
+------------------------
+
+ In order to enter characters into the line, simply type them. The
+typed character appears where the cursor was, and then the cursor moves
+one space to the right. If you mistype a character, you can use your
+erase character to back up and delete the mistyped character.
+
+ Sometimes you may miss typing a character that you wanted to type,
+and not notice your error until you have typed several other
+characters. In that case, you can type C-b to move the cursor to the
+left, and then correct your mistake. Afterwards, you can move the
+cursor to the right with C-f.
+
+ When you add text in the middle of a line, you will notice that
+characters to the right of the cursor are `pushed over' to make room
+for the text that you have inserted. Likewise, when you delete text
+behind the cursor, characters to the right of the cursor are `pulled
+back' to fill in the blank space created by the removal of the text. A
+list of the basic bare essentials for editing the text of an input line
+follows.
+
+C-b
+ Move back one character.
+
+C-f
+ Move forward one character.
+
+DEL
+ Delete the character to the left of the cursor.
+
+C-d
+ Delete the character underneath the cursor.
+
+Printing characters
+ Insert the character into the line at the cursor.
+
+C-_
+ Undo the last thing that you did. You can undo all the way back
+ to an empty line.
+
+
+File: features.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
+
+Readline Movement Commands
+--------------------------
+
+ The above table describes the most basic possible keystrokes that
+you need in order to do editing of the input line. For your
+convenience, many other commands have been added in addition to C-b,
+C-f, C-d, and DEL. Here are some commands for moving more rapidly
+about the line.
+
+C-a
+ Move to the start of the line.
+
+C-e
+ Move to the end of the line.
+
+M-f
+ Move forward a word.
+
+M-b
+ Move backward a word.
+
+C-l
+ Clear the screen, reprinting the current line at the top.
+
+ Notice how C-f moves forward a character, while M-f moves forward a
+word. It is a loose convention that control keystrokes operate on
+characters while meta keystrokes operate on words.
+
+
+File: features.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
+
+Readline Killing Commands
+-------------------------
+
+ "Killing" text means to delete the text from the line, but to save
+it away for later use, usually by "yanking" (re-inserting) it back into
+the line. If the description for a command says that it `kills' text,
+then you can be sure that you can get the text back in a different (or
+the same) place later.
+
+ When you use a kill command, the text is saved in a "kill-ring".
+Any number of consecutive kills save all of the killed text together, so
+that when you yank it back, you get it all. The kill ring is not line
+specific; the text that you killed on a previously typed line is
+available to be yanked back later, when you are typing another line.
+
+ Here is the list of commands for killing text.
+
+C-k
+ Kill the text from the current cursor position to the end of the
+ line.
+
+M-d
+ Kill from the cursor to the end of the current word, or if between
+ words, to the end of the next word.
+
+M-DEL
+ Kill from the cursor the start of the previous word, or if between
+ words, to the start of the previous word.
+
+C-w
+ Kill from the cursor to the previous whitespace. This is
+ different than M-DEL because the word boundaries differ.
+
+ And, here is how to "yank" the text back into the line. Yanking
+means to copy the most-recently-killed text from the kill buffer.
+
+C-y
+ Yank the most recently killed text back into the buffer at the
+ cursor.
+
+M-y
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is C-y or M-y.
+
+
+File: features.info, Node: Readline Arguments, Prev: Readline Killing Commands, Up: Readline Interaction
+
+Readline Arguments
+------------------
+
+ You can pass numeric arguments to Readline commands. Sometimes the
+argument acts as a repeat count, other times it is the sign of the
+argument that is significant. If you pass a negative argument to a
+command which normally acts in a forward direction, that command will
+act in a backward direction. For example, to kill text back to the
+start of the line, you might type M- C-k.
+
+ The general way to pass numeric arguments to a command is to type
+meta digits before the command. If the first `digit' you type is a
+minus sign (-), then the sign of the argument will be negative. Once
+you have typed one meta digit to get the argument started, you can type
+the remainder of the digits, and then the command. For example, to give
+the C-d command an argument of 10, you could type M-1 0 C-d.
+
+
+File: features.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
+
+Readline Init File
+==================
+
+ Although the Readline library comes with a set of Emacs-like
+keybindings installed by default, it is possible that you would like to
+use a different set of keybindings. You can customize programs that
+use Readline by putting commands in an "init" file in your home
+directory. The name of this file is taken from the value of the shell
+variable `INPUTRC'. If that variable is unset, the default is
+`~/.inputrc'.
+
+ When a program which uses the Readline library starts up, the init
+file is read, and the key bindings are set.
+
+ In addition, the `C-x C-r' command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+
+* Menu:
+
+* Readline Init Syntax:: Syntax for the commands in the inputrc file.
+* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
+
+
+File: features.info, Node: Readline Init Syntax, Next: Conditional Init Constructs, Up: Readline Init File
+
+Readline Init Syntax
+--------------------
+
+ There are only a few basic constructs allowed in the Readline init
+file. Blank lines are ignored. Lines beginning with a # are comments.
+Lines beginning with a $ indicate conditional constructs (*note
+Conditional Init Constructs::.). Other lines denote variable settings
+and key bindings.
+
+Variable Settings
+ You can change the state of a few variables in Readline by using
+ the `set' command within the init file. Here is how you would
+ specify that you wish to use `vi' line editing commands:
+
+ set editing-mode vi
+
+ Right now, there are only a few variables which can be set; so
+ few, in fact, that we just list them here:
+
+ `editing-mode'
+ The `editing-mode' variable controls which editing mode you
+ are using. By default, Readline starts up in Emacs editing
+ mode, where the keystrokes are most similar to Emacs. This
+ variable can be set to either `emacs' or `vi'.
+
+ `horizontal-scroll-mode'
+ This variable can be set to either `On' or `Off'. Setting it
+ to `On' means that the text of the lines that you edit will
+ scroll horizontally on a single screen line when they are
+ longer than the width of the screen, instead of wrapping onto
+ a new screen line. By default, this variable is set to `Off'.
+
+ `mark-modified-lines'
+ This variable, when set to `On', says to display an asterisk
+ (`*') at the start of history lines which have been modified.
+ This variable is `off' by default.
+
+ `bell-style'
+ Controls what happens when Readline wants to ring the
+ terminal bell. If set to `none', Readline never rings the
+ bell. If set to `visible', Readline uses a visible bell if
+ one is available. If set to `audible' (the default),
+ Readline attempts to ring the terminal's bell.
+
+ `comment-begin'
+ The string to insert at the beginning of the line when the
+ `vi-comment' command is executed. The default value is `"#"'.
+
+ `meta-flag'
+ If set to `on', Readline will enable eight-bit input (it will
+ not strip the eighth bit from the characters it reads),
+ regardless of what the terminal claims it can support. The
+ default value is `off'.
+
+ `convert-meta'
+ If set to `on', Readline will convert characters with the
+ eigth bit set to an ASCII key sequence by stripping the eigth
+ bit and prepending an ESC character, converting them to a
+ meta-prefixed key sequence. The default value is `on'.
+
+ `output-meta'
+ If set to `on', Readline will display characters with the
+ eighth bit set directly rather than as a meta-prefixed escape
+ sequence. The default is `off'.
+
+ `completion-query-items'
+ The number of possible completions that determines when the
+ user is asked whether he wants to see the list of
+ possibilities. If the number of possible completions is
+ greater than this value, Readline will ask the user whether
+ or not he wishes to view them; otherwise, they are simply
+ listed. The default limit is `100'.
+
+ `keymap'
+ Sets Readline's idea of the current keymap for key binding
+ commands. Acceptable `keymap' names are `emacs',
+ `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move',
+ `vi-command', and `vi-insert'. `vi' is equivalent to
+ `vi-command'; `emacs' is equivalent to `emacs-standard'. The
+ default value is `emacs'. The value of the `editing-mode'
+ variable also affects the default keymap.
+
+ `show-all-if-ambiguous'
+ This alters the default behavior of the completion functions.
+ If set to `on', words which have more than one possible
+ completion cause the matches to be listed immediately instead
+ of ringing the bell. The default value is `off'.
+
+ `expand-tilde'
+ If set to `on', tilde expansion is performed when Readline
+ attempts word completion. The default is `off'.
+
+Key Bindings
+ The syntax for controlling key bindings in the init file is
+ simple. First you have to know the name of the command that you
+ want to change. The following pages contain tables of the command
+ name, the default keybinding, and a short description of what the
+ command does.
+
+ Once you know the name of the command, simply place the name of
+ the key you wish to bind the command to, a colon, and then the
+ name of the command on a line in the init file. The name of the
+ key can be expressed in different ways, depending on which is most
+ comfortable for you.
+
+ KEYNAME: FUNCTION-NAME or MACRO
+ KEYNAME is the name of a key spelled out in English. For
+ example:
+ Control-u: universal-argument
+ Meta-Rubout: backward-kill-word
+ Control-o: ">&output"
+
+ In the above example, `C-u' is bound to the function
+ `universal-argument', and `C-o' is bound to run the macro
+ expressed on the right hand side (that is, to insert the text
+ `>&output' into the line).
+
+ "KEYSEQ": FUNCTION-NAME or MACRO
+ KEYSEQ differs from KEYNAME above in that strings denoting an
+ entire key sequence can be specified, by placing the key
+ sequence in double quotes. Some GNU Emacs style key escapes
+ can be used, as in the following example, but the special
+ character names are not recognized.
+
+ "\C-u": universal-argument
+ "\C-x\C-r": re-read-init-file
+ "\e[11~": "Function Key 1"
+
+ In the above example, `C-u' is bound to the function
+ `universal-argument' (just as it was in the first example),
+ `C-x C-r' is bound to the function `re-read-init-file', and
+ `ESC [ 1 1 ~' is bound to insert the text `Function Key 1'.
+ The following escape sequences are available when specifying
+ key sequences:
+
+ ``\C-''
+ control prefix
+
+ ``\M-''
+ meta prefix
+
+ ``\e''
+ an escape character
+
+ ``\\''
+ backslash
+
+ ``\"''
+ "
+
+ ``\'''
+ '
+
+ When entering the text of a macro, single or double quotes
+ should be used to indicate a macro definition. Unquoted text
+ is assumed to be a function name. Backslash will quote any
+ character in the macro text, including " and '. For example,
+ the following binding will make `C-x \' insert a single \
+ into the line:
+ "\C-x\\": "\\"
+
+
+File: features.info, Node: Conditional Init Constructs, Prev: Readline Init Syntax, Up: Readline Init File
+
+Conditional Init Constructs
+---------------------------
+
+ Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key bindings
+and variable settings to be performed as the result of tests. There
+are three parser directives used.
+
+`$if'
+ The `$if' construct allows bindings to be made based on the
+ editing mode, the terminal being used, or the application using
+ Readline. The text of the test extends to the end of the line; no
+ characters are required to isolate it.
+
+ `mode'
+ The `mode=' form of the `$if' directive is used to test
+ whether Readline is in `emacs' or `vi' mode. This may be
+ used in conjunction with the `set keymap' command, for
+ instance, to set bindings in the `emacs-standard' and
+ `emacs-ctlx' keymaps only if Readline is starting out in
+ `emacs' mode.
+
+ `term'
+ The `term=' form may be used to include terminal-specific key
+ bindings, perhaps to bind the key sequences output by the
+ terminal's function keys. The word on the right side of the
+ `=' is tested against the full name of the terminal and the
+ portion of the terminal name before the first `-'. This
+ allows SUN to match both SUN and SUN-CMD, for instance.
+
+ `application'
+ The APPLICATION construct is used to include
+ application-specific settings. Each program using the
+ Readline library sets the APPLICATION NAME, and you can test
+ for it. This could be used to bind key sequences to
+ functions useful for a specific program. For instance, the
+ following command adds a key sequence that quotes the current
+ or previous word in Bash:
+ $if bash
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ $endif
+
+`$endif'
+ This command, as you saw in the previous example, terminates an
+ `$if' command.
+
+`$else'
+ Commands in this branch of the `$if' directive are executed if the
+ test fails.
+
+
+File: features.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
+
+Bindable Readline Commands
+==========================
+
+* Menu:
+
+* Commands For Moving:: Moving about the line.
+* Commands For History:: Getting at previous lines.
+* Commands For Text:: Commands for changing text.
+* Commands For Killing:: Commands for killing and yanking.
+* Numeric Arguments:: Specifying numeric arguments, repeat counts.
+* Commands For Completion:: Getting Readline to do the typing for you.
+* Keyboard Macros:: Saving and re-executing typed characters
+* Miscellaneous Commands:: Other miscellaneous commands.
+
+
+File: features.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
+
+Commands For Moving
+-------------------
+
+`beginning-of-line (C-a)'
+ Move to the start of the current line.
+
+`end-of-line (C-e)'
+ Move to the end of the line.
+
+`forward-char (C-f)'
+ Move forward a character.
+
+`backward-char (C-b)'
+ Move back a character.
+
+`forward-word (M-f)'
+ Move forward to the end of the next word. Words are composed of
+ letters and digits.
+
+`backward-word (M-b)'
+ Move back to the start of this, or the previous, word. Words are
+ composed of letters and digits.
+
+`clear-screen (C-l)'
+ Clear the screen and redraw the current line, leaving the current
+ line at the top of the screen.
+
+`redraw-current-line ()'
+ Refresh the current line. By default, this is unbound.
+
+
+File: features.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
+
+Commands For Manipulating The History
+-------------------------------------
+
+`accept-line (Newline, Return)'
+ Accept the line regardless of where the cursor is. If this line is
+ non-empty, add it to the history list according to the setting of
+ the `HISTCONTROL' variable. If this line was a history line, then
+ restore the history line to its original state.
+
+`previous-history (C-p)'
+ Move `up' through the history list.
+
+`next-history (C-n)'
+ Move `down' through the history list.
+
+`beginning-of-history (M-<)'
+ Move to the first line in the history.
+
+`end-of-history (M->)'
+ Move to the end of the input history, i.e., the line you are
+ entering.
+
+`reverse-search-history (C-r)'
+ Search backward starting at the current line and moving `up'
+ through the history as necessary. This is an incremental search.
+
+`forward-search-history (C-s)'
+ Search forward starting at the current line and moving `down'
+ through the the history as necessary. This is an incremental
+ search.
+
+`non-incremental-reverse-search-history (M-p)'
+ Search backward starting at the current line and moving `up'
+ through the history as necessary using a non-incremental search
+ for a string supplied by the user.
+
+`non-incremental-forward-search-history (M-n)'
+ Search forward starting at the current line and moving `down'
+ through the the history as necessary using a non-incremental search
+ for a string supplied by the user.
+
+`history-search-forward ()'
+ Search forward through the history for the string of characters
+ between the start of the current line and the current point. This
+ is a non-incremental search. By default, this command is unbound.
+
+`history-search-backward ()'
+ Search backward through the history for the string of characters
+ between the start of the current line and the current point. This
+ is a non-incremental search. By default, this command is unbound.
+
+`yank-nth-arg (M-C-y)'
+ Insert the first argument to the previous command (usually the
+ second word on the previous line). With an argument N, insert the
+ Nth word from the previous command (the words in the previous
+ command begin with word 0). A negative argument inserts the Nth
+ word from the end of the previous command.
+
+`yank-last-arg (M-., M-_)'
+ Insert last argument to the previous command (the last word on the
+ previous line). With an argument, behave exactly like
+ `yank-nth-arg'.
+
+
+File: features.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
+
+Commands For Changing Text
+--------------------------
+
+`delete-char (C-d)'
+ Delete the character under the cursor. If the cursor is at the
+ beginning of the line, there are no characters in the line, and
+ the last character typed was not C-d, then return EOF.
+
+`backward-delete-char (Rubout)'
+ Delete the character behind the cursor. A numeric arg says to kill
+ the characters instead of deleting them.
+
+`quoted-insert (C-q, C-v)'
+ Add the next character that you type to the line verbatim. This is
+ how to insert key sequences like C-q, for example.
+
+`tab-insert (M-TAB)'
+ Insert a tab character.
+
+`self-insert (a, b, A, 1, !, ...)'
+ Insert yourself.
+
+`transpose-chars (C-t)'
+ Drag the character before the cursor forward over the character at
+ the cursor, moving the cursor forward as well. If the insertion
+ point is at the end of the line, then this transposes the last two
+ characters of the line. Negative argumentss don't work.
+
+`transpose-words (M-t)'
+ Drag the word behind the cursor past the word in front of the
+ cursor moving the cursor over that word as well.
+
+`upcase-word (M-u)'
+ Uppercase the current (or following) word. With a negative
+ argument, do the previous word, but do not move the cursor.
+
+`downcase-word (M-l)'
+ Lowercase the current (or following) word. With a negative
+ argument, do the previous word, but do not move the cursor.
+
+`capitalize-word (M-c)'
+ Capitalize the current (or following) word. With a negative
+ argument, do the previous word, but do not move the cursor.
+
+
+File: features.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
+
+Killing And Yanking
+-------------------
+
+`kill-line (C-k)'
+ Kill the text from the current cursor position to the end of the
+ line.
+
+`backward-kill-line (C-x Rubout)'
+ Kill backward to the beginning of the line.
+
+`unix-line-discard (C-u)'
+ Kill backward from the cursor to the beginning of the current line.
+ Save the killed text on the kill-ring.
+
+`kill-whole-line ()'
+ Kill all characters on the current line, no matter where the
+ cursor is. By default, this is unbound.
+
+`kill-word (M-d)'
+ Kill from the cursor to the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the same
+ as `forward-word'.
+
+`backward-kill-word (M-DEL)'
+ Kill the word behind the cursor. Word boundaries are the same as
+ `backward-word'.
+
+`unix-word-rubout (C-w)'
+ Kill the word behind the cursor, using white space as a word
+ boundary. The killed text is saved on the kill-ring.
+
+`delete-horizontal-space ()'
+ Delete all spaces and tabs around point. By default, this is
+ unbound.
+
+`yank (C-y)'
+ Yank the top of the kill ring into the buffer at the current
+ cursor position.
+
+`yank-pop (M-y)'
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is yank or yank-pop.
+
+
+File: features.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
+
+Specifying Numeric Arguments
+----------------------------
+
+`digit-argument (M-0, M-1, ... M--)'
+ Add this digit to the argument already accumulating, or start a new
+ argument. M- starts a negative argument.
+
+`universal-argument ()'
+ Each time this is executed, the argument count is multiplied by
+ four. The argument count is initially one, so executing this
+ function the first time makes the argument count four. By
+ default, this is not bound to a key.
+
+
+File: features.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
+
+Letting Readline Type For You
+-----------------------------
+
+`complete (TAB)'
+ Attempt to do completion on the text before the cursor. This is
+ application-specific. Generally, if you are typing a filename
+ argument, you can do filename completion; if you are typing a
+ command, you can do command completion, if you are typing in a
+ symbol to GDB, you can do symbol name completion, if you are
+ typing in a variable to Bash, you can do variable name completion,
+ and so on. See the Bash manual page for a complete list of
+ available completion functions.
+
+`possible-completions (M-?)'
+ List the possible completions of the text before the cursor.
+
+`insert-completions ()'
+ Insert all completions of the text before point that would have
+ been generated by `possible-completions'. By default, this is not
+ bound to a key.
+
+
+File: features.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
+
+Keyboard Macros
+---------------
+
+`start-kbd-macro (C-x ()'
+ Begin saving the characters typed into the current keyboard macro.
+
+`end-kbd-macro (C-x ))'
+ Stop saving the characters typed into the current keyboard macro
+ and save the definition.
+
+`call-last-kbd-macro (C-x e)'
+ Re-execute the last keyboard macro defined, by making the
+ characters in the macro appear as if typed at the keyboard.
+
+
+File: features.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
+
+Some Miscellaneous Commands
+---------------------------
+
+`re-read-init-file (C-x C-r)'
+ Read in the contents of your init file, and incorporate any
+ bindings or variable assignments found there.
+
+`abort (C-g)'
+ Abort the current editing command and ring the terminal's bell
+ (subject to the setting of `bell-style').
+
+`do-uppercase-version (M-a, M-b, ...)'
+ Run the command that is bound to the corresoponding uppercase
+ character.
+
+`prefix-meta (ESC)'
+ Make the next character that you type be metafied. This is for
+ people without a meta key. Typing `ESC f' is equivalent to typing
+ `M-f'.
+
+`undo (C-_, C-x C-u)'
+ Incremental undo, separately remembered for each line.
+
+`revert-line (M-r)'
+ Undo all changes made to this line. This is like typing the `undo'
+ command enough times to get back to the beginning.
+
+`tilde-expand (M-~)'
+ Perform tilde expansion on the current word.
+
+`dump-functions ()'
+ Print all of the functions and their key bindings to the readline
+ output stream. If a numeric argument is supplied, the output is
+ formatted in such a way that it can be made part of an INPUTRC
+ file.
+
+`display-shell-version (C-x C-v)'
+ Display version information about the current instance of Bash.
+
+`shell-expand-line (M-C-e)'
+ Expand the line the way the shell does when it reads it. This
+ performs alias and history expansion as well as all of the shell
+ word expansions.
+
+`history-expand-line (M-^)'
+ Perform history expansion on the current line.
+
+`insert-last-argument (M-., M-_)'
+ A synonym for `yank-last-arg'.
+
+`operate-and-get-next (C-o)'
+ Accept the current line for execution and fetch the next line
+ relative to the current line from the history for editing. Any
+ argument is ignored.
+
+`emacs-editing-mode (C-e)'
+ When in `vi' editing mode, this causes a switch back to emacs
+ editing mode, as if the command `set -o emacs' had been executed.
+
+
+File: features.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
+
+Readline vi Mode
+================
+
+ While the Readline library does not have a full set of `vi' editing
+functions, it does contain enough to allow simple editing of the line.
+The Readline `vi' mode behaves as specified in the Posix 1003.2
+standard.
+
+ In order to switch interactively between `Emacs' and `Vi' editing
+modes, use the `set -o emacs' and `set -o vi' commands (*note The Set
+Builtin::.). The Readline default is `emacs' mode.
+
+ When you enter a line in `vi' mode, you are already placed in
+`insertion' mode, as if you had typed an `i'. Pressing ESC switches
+you into `command' mode, where you can edit the text of the line with
+the standard `vi' movement keys, move to previous history lines with
+`k', and following lines with `j', and so forth.
+
+
+File: features.info, Node: Variable Index, Next: Concept Index, Prev: Command Line Editing, Up: Top
+
+Variable Index
+**************
+
+* Menu:
+
+* auto_resume: Job Control Variables.
+* BASH_VERSION: Bash Variables.
+* bell-style: Readline Init Syntax.
+* cdable_vars: C Shell Variables.
+* CDPATH: Bourne Shell Variables.
+* comment-begin: Readline Init Syntax.
+* completion-query-items: Readline Init Syntax.
+* convert-meta: Readline Init Syntax.
+* editing-mode: Readline Init Syntax.
+* EUID: Bash Variables.
+* expand-tilde: Readline Init Syntax.
+* FIGNORE: Bash Variables.
+* histchars: Bash Variables.
+* HISTCMD: Bash Variables.
+* HISTCONTROL: Bash Variables.
+* HISTFILE: Bash Variables.
+* history_control: Bash Variables.
+* HISTSIZE: Bash Variables.
+* HOME: Bourne Shell Variables.
+* horizontal-scroll-mode: Readline Init Syntax.
+* HOSTFILE: Bash Variables.
+* hostname_completion_file: Bash Variables.
+* HOSTTYPE: Bash Variables.
+* IFS: Bourne Shell Variables.
+* IGNOREEOF: C Shell Variables.
+* IGNOREEOF: Bash Variables.
+* INPUTRC: Bash Variables.
+* keymap: Readline Init Syntax.
+* MAILCHECK: Bash Variables.
+* MAILPATH: Bourne Shell Variables.
+* mark-modified-lines: Readline Init Syntax.
+* meta-flag: Readline Init Syntax.
+* nolinks: Bash Variables.
+* notify: Job Control Variables.
+* no_exit_on_failed_exec: Bash Variables.
+* OLDPWD: Korn Shell Variables.
+* OPTARG: Bourne Shell Variables.
+* OPTIND: Bourne Shell Variables.
+* OSTYPE: Bash Variables.
+* output-meta: Readline Init Syntax.
+* PATH: Bourne Shell Variables.
+* PROMPT_COMMAND: Bash Variables.
+* PS1: Bourne Shell Variables.
+* PS2: Bourne Shell Variables.
+* PS3: Korn Shell Variables.
+* PS4: Korn Shell Variables.
+* PWD: Korn Shell Variables.
+* RANDOM: Korn Shell Variables.
+* REPLY: Korn Shell Variables.
+* SECONDS: Korn Shell Variables.
+* show-all-if-ambiguous: Readline Init Syntax.
+* TMOUT: Korn Shell Variables.
+* UID: Bash Variables.
+
+
+File: features.info, Node: Concept Index, Prev: Variable Index, Up: Top
+
+Concept Index
+*************
+
+* Menu:
+
+* $else: Conditional Init Constructs.
+* $endif: Conditional Init Constructs.
+* $if: Conditional Init Constructs.
+* .: Bourne Shell Builtins.
+* :: Bourne Shell Builtins.
+* abort (C-g): Miscellaneous Commands.
+* accept-line (Newline, Return): Commands For History.
+* alias: Alias Builtins.
+* backward-char (C-b): Commands For Moving.
+* backward-delete-char (Rubout): Commands For Text.
+* backward-kill-line (C-x Rubout): Commands For Killing.
+* backward-kill-word (M-DEL): Commands For Killing.
+* backward-word (M-b): Commands For Moving.
+* beginning-of-history (M-<): Commands For History.
+* beginning-of-line (C-a): Commands For Moving.
+* bg: Job Control Builtins.
+* bind: Bash Builtins.
+* break: Bourne Shell Builtins.
+* builtin: Bash Builtins.
+* call-last-kbd-macro (C-x e): Keyboard Macros.
+* capitalize-word (M-c): Commands For Text.
+* case: Conditional Constructs.
+* cd: Bourne Shell Builtins.
+* clear-screen (C-l): Commands For Moving.
+* command: Bash Builtins.
+* complete (TAB): Commands For Completion.
+* continue: Bourne Shell Builtins.
+* declare: Bash Builtins.
+* delete-char (C-d): Commands For Text.
+* delete-horizontal-space (): Commands For Killing.
+* digit-argument (M-0, M-1, ... M-): Numeric Arguments.
+* dirs: C Shell Builtins.
+* do-uppercase-version (M-a, M-b, ...): Miscellaneous Commands.
+* downcase-word (M-l): Commands For Text.
+* dump-functions (): Miscellaneous Commands.
+* echo: Bourne Shell Builtins.
+* enable: Bash Builtins.
+* end-kbd-macro (C-x )): Keyboard Macros.
+* end-of-history (M->): Commands For History.
+* end-of-line (C-e): Commands For Moving.
+* eval: Bourne Shell Builtins.
+* event designators: Event Designators.
+* exec: Bourne Shell Builtins.
+* exit: Bourne Shell Builtins.
+* expansion: History Interaction.
+* export: Bourne Shell Builtins.
+* fc: Korn Shell Builtins.
+* fg: Job Control Builtins.
+* for: Looping Constructs.
+* forward-char (C-f): Commands For Moving.
+* forward-search-history (C-s): Commands For History.
+* forward-word (M-f): Commands For Moving.
+* getopts: Bourne Shell Builtins.
+* hash: Bourne Shell Builtins.
+* help: Bash Builtins.
+* history: C Shell Builtins.
+* history events: Event Designators.
+* History, how to use: Job Control Variables.
+* history-search-backward (): Commands For History.
+* history-search-forward (): Commands For History.
+* if: Conditional Constructs.
+* insert-completions (): Commands For Completion.
+* interaction, readline: Readline Interaction.
+* jobs: Job Control Builtins.
+* kill: Bourne Shell Builtins.
+* Kill ring: Readline Killing Commands.
+* kill-line (C-k): Commands For Killing.
+* kill-whole-line (): Commands For Killing.
+* kill-word (M-d): Commands For Killing.
+* Killing text: Readline Killing Commands.
+* let: Korn Shell Builtins.
+* let: Arithmetic Builtins.
+* local: Bash Builtins.
+* logout: C Shell Builtins.
+* next-history (C-n): Commands For History.
+* non-incremental-forward-search-history (M-n): Commands For History.
+* non-incremental-reverse-search-history (M-p): Commands For History.
+* popd: C Shell Builtins.
+* possible-completions (M-?): Commands For Completion.
+* prefix-meta (ESC): Miscellaneous Commands.
+* previous-history (C-p): Commands For History.
+* pushd: C Shell Builtins.
+* pwd: Bourne Shell Builtins.
+* quoted-insert (C-q, C-v): Commands For Text.
+* re-read-init-file (C-x C-r): Miscellaneous Commands.
+* read: Bourne Shell Builtins.
+* Readline, how to use: Modifiers.
+* readonly: Bourne Shell Builtins.
+* redraw-current-line (): Commands For Moving.
+* return: Bourne Shell Builtins.
+* reverse-search-history (C-r): Commands For History.
+* revert-line (M-r): Miscellaneous Commands.
+* self-insert (a, b, A, 1, !, ...): Commands For Text.
+* set: The Set Builtin.
+* shift: Bourne Shell Builtins.
+* source: C Shell Builtins.
+* start-kbd-macro (C-x (): Keyboard Macros.
+* suspend: Job Control Builtins.
+* tab-insert (M-TAB): Commands For Text.
+* test: Bourne Shell Builtins.
+* tilde-expand (M-~): Miscellaneous Commands.
+* times: Bourne Shell Builtins.
+* transpose-chars (C-t): Commands For Text.
+* transpose-words (M-t): Commands For Text.
+* trap: Bourne Shell Builtins.
+* type: Bash Builtins.
+* typeset: Korn Shell Builtins.
+* ulimit: Bash Builtins.
+* umask: Bourne Shell Builtins.
+* unalias: Alias Builtins.
+* undo (C-_, C-x C-u): Miscellaneous Commands.
+* universal-argument (): Numeric Arguments.
+* unix-line-discard (C-u): Commands For Killing.
+* unix-word-rubout (C-w): Commands For Killing.
+* unset: Bourne Shell Builtins.
+* until: Looping Constructs.
+* upcase-word (M-u): Commands For Text.
+* wait: Bourne Shell Builtins.
+* while: Looping Constructs.
+* yank (C-y): Commands For Killing.
+* yank-last-arg (M-., M-_): Commands For History.
+* yank-nth-arg (M-C-y): Commands For History.
+* yank-pop (M-y): Commands For Killing.
+* Yanking text: Readline Killing Commands.
+* [: Bourne Shell Builtins.
+
+
+
+Tag Table:
+Node: Top1044
+Node: Bourne Shell Features2405
+Node: Looping Constructs3579
+Node: Conditional Constructs4634
+Node: Shell Functions6194
+Node: Bourne Shell Builtins7567
+Node: Bourne Shell Variables9766
+Node: Other Bourne Shell Features11025
+Node: Major Differences from the Bourne Shell11783
+Node: Csh Features14194
+Node: Tilde Expansion15087
+Node: Brace Expansion15691
+Node: C Shell Builtins17283
+Node: C Shell Variables20578
+Node: Korn Shell Features21088
+Node: Korn Shell Constructs21826
+Node: Korn Shell Builtins23037
+Node: Korn Shell Variables25190
+Node: Aliases26466
+Node: Alias Builtins28833
+Node: Bash Specific Features29356
+Node: Invoking Bash30085
+Node: Bash Startup Files32404
+Node: Is This Shell Interactive?34247
+Node: Bash Builtins35055
+Node: The Set Builtin41437
+Node: Bash Variables46377
+Node: Shell Arithmetic50945
+Node: Arithmetic Evaluation51307
+Node: Arithmetic Expansion53028
+Node: Arithmetic Builtins53862
+Node: Printing a Prompt54334
+Node: Job Control55599
+Node: Job Control Basics56074
+Node: Job Control Builtins60249
+Node: Job Control Variables61768
+Node: Using History Interactively63077
+Node: History Interaction63584
+Node: Event Designators64630
+Node: Word Designators65461
+Node: Modifiers66446
+Node: Command Line Editing67755
+Node: Introduction and Notation68415
+Node: Readline Interaction69435
+Node: Readline Bare Essentials70574
+Node: Readline Movement Commands72104
+Node: Readline Killing Commands72995
+Node: Readline Arguments74698
+Node: Readline Init File75649
+Node: Readline Init Syntax76647
+Node: Conditional Init Constructs83580
+Node: Bindable Readline Commands85826
+Node: Commands For Moving86496
+Node: Commands For History87344
+Node: Commands For Text89988
+Node: Commands For Killing91727
+Node: Numeric Arguments93176
+Node: Commands For Completion93803
+Node: Keyboard Macros94816
+Node: Miscellaneous Commands95375
+Node: Readline vi Mode97466
+Node: Variable Index98343
+Node: Concept Index101671
+
+End Tag Table