--- embedaddon/readline/doc/rluser.texi 2014/07/30 08:16:45 1.1.1.1 +++ embedaddon/readline/doc/rluser.texi 2021/03/17 01:01:01 1.1.1.2 @@ -9,7 +9,7 @@ use these features. There is a document entitled "rea which contains both end-user and programmer documentation for the GNU Readline Library. -Copyright (C) 1988--2014 Free Software Foundation, Inc. +Copyright (C) 1988--2020 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. @@ -350,6 +350,11 @@ file is taken from the value of the environment variab that variable is unset, the default is @file{~/.inputrc}. If that file does not exist or cannot be read, the ultimate default is @file{/etc/inputrc}. +@ifset BashFeatures +The @w{@code{bind}} builtin command can also be used to set Readline +keybindings and variables. +@xref{Bash Builtins}. +@end ifset When a program which uses the Readline library starts up, the init file is read, and the key bindings are set. @@ -423,10 +428,24 @@ the terminal's bell. @item bind-tty-special-chars @vindex bind-tty-special-chars -If set to @samp{on}, Readline attempts to bind the control characters -treated specially by the kernel's terminal driver to their Readline -equivalents. +If set to @samp{on} (the default), Readline attempts to bind the control +characters treated specially by the kernel's terminal driver to their +Readline equivalents. +@item blink-matching-paren +@vindex blink-matching-paren +If set to @samp{on}, Readline attempts to briefly move the cursor to an +opening parenthesis when a closing parenthesis is inserted. The default +is @samp{off}. + +@item colored-completion-prefix +@vindex colored-completion-prefix +If set to @samp{on}, when listing completions, Readline displays the +common prefix of the set of possible completions using a different color. +The color definitions are taken from the value of the @env{LS_COLORS} +environment variable. +The default is @samp{off}. + @item colored-stats @vindex colored-stats If set to @samp{on}, Readline displays possible completions using different @@ -461,6 +480,7 @@ The default value is @samp{off}. If set to @samp{on}, and @var{completion-ignore-case} is enabled, Readline treats hyphens (@samp{-}) and underscores (@samp{_}) as equivalent when performing case-insensitive filename matching and completion. +The default value is @samp{off}. @item completion-prefix-display-length @vindex completion-prefix-display-length @@ -473,9 +493,9 @@ replaced with an ellipsis when displaying possible com @vindex completion-query-items The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. -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. +If the number of possible completions is greater than or equal to this value, +Readline will ask whether or not the user wishes to view them; +otherwise, they are simply listed. This variable must be set to an integer value greater than or equal to 0. A negative value means Readline should never ask. The default limit is @code{100}. @@ -485,7 +505,9 @@ The default limit is @code{100}. If set to @samp{on}, Readline will convert characters with the eighth bit set to an @sc{ascii} key sequence by stripping the eighth bit and prefixing an @key{ESC} character, converting them to a -meta-prefixed key sequence. The default value is @samp{on}. +meta-prefixed key sequence. The default value is @samp{on}, but +will be set to @samp{off} if the locale is one that contains +eight-bit characters. @item disable-completion @vindex disable-completion @@ -493,6 +515,12 @@ If set to @samp{On}, Readline will inhibit word comple Completion characters will be inserted into the line as if they had been mapped to @code{self-insert}. The default is @samp{off}. +@item echo-control-characters +@vindex echo-control-characters +When set to @samp{on}, on operating systems that indicate they support it, +readline echoes a character corresponding to a signal generated from the +keyboard. The default is @samp{on}. + @item editing-mode @vindex editing-mode The @code{editing-mode} variable controls which default set of @@ -500,11 +528,26 @@ key bindings is used. By default, Readline starts up mode, where the keystrokes are most similar to Emacs. This variable can be set to either @samp{emacs} or @samp{vi}. -@item echo-control-characters -When set to @samp{on}, on operating systems that indicate they support it, -readline echoes a character corresponding to a signal generated from the -keyboard. The default is @samp{on}. +@item emacs-mode-string +@vindex emacs-mode-string +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is @samp{@@}. +@item enable-bracketed-paste +@vindex enable-bracketed-paste +When set to @samp{On}, Readline will configure the terminal in a way +that will enable it to insert each paste into the editing buffer as a +single string of characters, instead of treating each character as if +it had been read from the keyboard. This can prevent pasted characters +from being interpreted as editing commands. The default is @samp{On}. + @item enable-keypad @vindex enable-keypad When set to @samp{on}, Readline will try to enable the application @@ -537,14 +580,17 @@ are saved. If set to a value less than zero, the number of history entries is not limited. By default, the number of history entries is not limited. +If an attempt is made to set @var{history-size} to a non-numeric value, +the maximum number of history entries will be set to 500. @item horizontal-scroll-mode @vindex horizontal-scroll-mode This variable can be set to either @samp{on} or @samp{off}. Setting it to @samp{on} means that the text of the lines being edited 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 @samp{off}. +of the screen, instead of wrapping onto a new screen line. +This variable is automatically set to @samp{on} for terminals of height 1. +By default, this variable is set to @samp{off}. @item input-meta @vindex input-meta @@ -552,8 +598,9 @@ this variable is set to @samp{off}. If set to @samp{on}, Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The -default value is @samp{off}. The name @code{meta-flag} is a -synonym for this variable. +default value is @samp{off}, but Readline will set it to @samp{on} if the +locale contains eight-bit characters. +The name @code{meta-flag} is a synonym for this variable. @item isearch-terminators @vindex isearch-terminators @@ -565,7 +612,7 @@ If this variable has not been given a value, the chara @item keymap @vindex keymap Sets Readline's idea of the current keymap for key binding commands. -Acceptable @code{keymap} names are +Built-in @code{keymap} names are @code{emacs}, @code{emacs-standard}, @code{emacs-meta}, @@ -574,8 +621,10 @@ Acceptable @code{keymap} names are @code{vi-move}, @code{vi-command}, and @code{vi-insert}. -@code{vi} is equivalent to @code{vi-command}; @code{emacs} is -equivalent to @code{emacs-standard}. The default value is @code{emacs}. +@code{vi} is equivalent to @code{vi-command} (@code{vi-move} is also a +synonym); @code{emacs} is equivalent to @code{emacs-standard}. +Applications may add additional names. +The default value is @code{emacs}. The value of the @code{editing-mode} variable also affects the default keymap. @@ -631,7 +680,9 @@ the list. The default is @samp{off}. @vindex output-meta If set to @samp{on}, Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape -sequence. The default is @samp{off}. +sequence. +The default is @samp{off}, but Readline will set it to @samp{on} if the +locale contains eight-bit characters. @item page-completions @vindex page-completions @@ -672,9 +723,9 @@ The default value is @samp{off}. @item show-mode-in-prompt @vindex show-mode-in-prompt -If set to @samp{on}, add a character to the beginning of the prompt -indicating the editing mode: emacs (@samp{@@}), vi command (@samp{:}), -or vi insertion (@samp{+}). +If set to @samp{on}, add a string to the beginning of the prompt +indicating the editing mode: emacs, vi command, or vi insertion. +The mode strings are user-settable (e.g., @var{emacs-mode-string}). The default value is @samp{off}. @item skip-completed-text @@ -691,6 +742,32 @@ rather than @samp{Makefilefile}, assuming there is a s completion. The default value is @samp{off}. +@item vi-cmd-mode-string +@vindex vi-cmd-mode-string +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in command mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is @samp{(cmd)}. + +@item vi-ins-mode-string +@vindex vi-ins-mode-string +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in insertion mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is @samp{(ins)}. + @item visible-stats @vindex visible-stats If set to @samp{on}, a character denoting a file's type @@ -733,7 +810,7 @@ Meta-Rubout: backward-kill-word Control-o: "> output" @end example -In the above example, @kbd{C-u} is bound to the function +In the example above, @kbd{C-u} is bound to the function @code{universal-argument}, @kbd{M-DEL} is bound to the function @code{backward-kill-word}, and @kbd{C-o} is bound to run the macro @@ -848,8 +925,9 @@ of tests. There are four parser directives used. @item $if The @code{$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. +Readline. The text of the test, after any comparison operator, +extends to the end of the line; +unless otherwise noted, no characters are required to isolate it. @table @code @item mode @@ -869,6 +947,27 @@ the portion of the terminal name before the first @sam allows @code{sun} to match both @code{sun} and @code{sun-cmd}, for instance. +@item version +The @code{version} test may be used to perform comparisons against +specific Readline versions. +The @code{version} expands to the current Readline version. +The set of comparison operators includes +@samp{=} (and @samp{==}), @samp{!=}, @samp{<=}, @samp{>=}, @samp{<}, +and @samp{>}. +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., @samp{7.1}). If the minor version is omitted, it +is assumed to be @samp{0}. +The operator may be separated from the string @code{version} and +from the version number argument by whitespace. +The following example sets a variable if the Readline version being used +is 7.0 or newer: +@example +$if version >= 7.0 +set show-mode-in-prompt on +$endif +@end example + @item application The @var{application} construct is used to include application-specific settings. Each program using the Readline @@ -883,6 +982,23 @@ $if Bash "\C-xq": "\eb\"\ef\"" $endif @end example + +@item variable +The @var{variable} construct provides simple equality tests for Readline +variables and values. +The permitted comparison operators are @samp{=}, @samp{==}, and @samp{!=}. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values @var{on} and @var{off}. +The following example is equivalent to the @code{mode=emacs} test described +above: +@example +$if editing-mode == emacs +set show-mode-in-prompt on +$endif +@end example @end table @item $endif @@ -999,8 +1115,8 @@ set convert-meta off # rather than as meta-prefixed characters set output-meta on -# if there are more than 150 possible completions for -# a word, ask the user if he wants to see all of them +# if there are 150 or more possible completions for a word, +# ask whether or not the user wants to see all of them set completion-query-items 150 # For FTP @@ -1063,17 +1179,36 @@ Move back to the start of the current or previous word Words are composed of letters and digits. @ifset BashFeatures -@item shell-forward-word () +@item shell-forward-word (M-C-f) Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters. -@item shell-backward-word () +@item shell-backward-word (M-C-b) Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. @end ifset +@item previous-screen-line () +Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. + +@item next-screen-line () +Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width. + +@item clear-display (M-C-l) +Clear the screen and, if possible, the terminal's scrollback buffer, +then redraw the current line, +leaving the current line at the top of the screen. + @item clear-screen (C-l) -Clear the screen and redraw the current line, +Clear the screen, +then redraw the current line, leaving the current line at the top of the screen. @item redraw-current-line () @@ -1119,20 +1254,24 @@ being entered. @item 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. +This command sets the region to the matched text and activates the mark. @item 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. +the history as necessary. This is an incremental search. +This command sets the region to the matched text and activates the mark. @item 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. +The search string may match anywhere in a history line. @item 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 +through the history as necessary using a non-incremental search for a string supplied by the user. +The search string may match anywhere in a history line. @item history-search-forward () Search forward through the history for the string of characters @@ -1148,14 +1287,14 @@ The search string must match at the beginning of a his This is a non-incremental search. By default, this command is unbound. -@item history-substr-search-forward () +@item history-substring-search-forward () Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -@item history-substr-search-backward () +@item history-substring-search-backward () Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. @@ -1185,6 +1324,14 @@ the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, as if the @samp{!$} history expansion had been specified. +@item operate-and-get-next (C-o) +Accept the current line for return to the calling application as if a +newline had been entered, +and fetch the next line relative to the current line from the history +for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. + @end ftable @node Commands For Text @@ -1224,6 +1371,19 @@ Insert a tab character. @item self-insert (a, b, A, 1, !, @dots{}) Insert yourself. +@item bracketed-paste-begin () +This function is intended to be bound to the "bracketed paste" escape +sequence sent by some terminals, and such a binding is assigned by default. +It allows Readline to insert the pasted text as a single unit without treating +each character as if it had been read from the keyboard. The characters +are inserted as if each one was bound to @code{self-insert} instead of +executing any editing commands. + +Bracketed paste sets the region (the characters between point and the mark) +to the inserted text. It uses the concept of an @emph{active mark}: when the +mark is active, Readline redisplay uses the terminal's standout mode to +denote the region. + @item transpose-chars (C-t) Drag the character before the cursor forward over the character at the cursor, moving the @@ -1273,9 +1433,13 @@ By default, this command is unbound. @item kill-line (C-k) Kill the text from point to the end of the line. +With a negative numeric argument, kill backward from the cursor to the +beginning of the current line. @item backward-kill-line (C-x Rubout) -Kill backward to the beginning of the line. +Kill backward from the cursor to the beginning of the current line. +With a negative numeric argument, kill forward from the cursor to the +end of the current line. @item unix-line-discard (C-u) Kill backward from the cursor to the beginning of the current line. @@ -1294,7 +1458,7 @@ Kill the word behind point. Word boundaries are the same as @code{backward-word}. @ifset BashFeatures -@item shell-kill-word () +@item shell-kill-word (M-C-d) Kill from point to the end of the current word, or if between words, to the end of the next word. Word boundaries are the same as @code{shell-forward-word}. @@ -1304,6 +1468,14 @@ Kill the word behind point. Word boundaries are the same as @code{shell-backward-word}. @end ifset +@item shell-transpose-words (M-C-t) +Drag the word before point past the word after point, +moving point past that word as well. +If the insertion point is at the end of the line, this transposes +the last two words on the line. +Word boundaries are the same as @code{shell-forward-word} and +@code{shell-backward-word}. + @item unix-word-rubout (C-w) Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring. @@ -1357,7 +1529,7 @@ leading minus sign, those digits define the argument. If the command is followed by digits, executing @code{universal-argument} again ends the numeric argument, but is otherwise ignored. As a special case, if this command is immediately followed by a -character that is neither a digit or minus sign, the argument count +character that is neither a digit nor minus sign, the argument count for the next command is multiplied by four. The argument count is initially one, so executing this function the first time makes the argument count four, a second time makes the @@ -1514,9 +1686,10 @@ Abort the current editing command and ring the terminal's bell (subject to the setting of @code{bell-style}). -@item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{}) -If the metafied character @var{x} is lowercase, run the command -that is bound to the corresponding uppercase character. +@item do-lowercase-version (M-A, M-B, M-@var{x}, @dots{}) +If the metafied character @var{x} is upper case, run the command +that is bound to the corresponding metafied lower case character. +The behavior is undefined if @var{x} is already lower case. @item prefix-meta (@key{ESC}) Metafy the next character typed. This is for keyboards @@ -1640,12 +1813,7 @@ Perform history and alias expansion on the current lin @item insert-last-argument (M-. or M-_) A synonym for @code{yank-last-arg}. -@item 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. - -@item edit-and-execute-command (C-xC-e) +@item edit-and-execute-command (C-x C-e) Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke @@ -1716,6 +1884,9 @@ If no compspec is found for the full pathname, an atte find a compspec for the portion following the final slash. If those searches do not result in a compspec, any compspec defined with the @option{-D} option to @code{complete} is used as the default. +If there is no default compspec, Bash attempts alias expansion +on the command word as a final resort, and attempts to find a compspec +for the command word from any successful expansion Once a compspec has been found, it is used to generate the list of matching words. @@ -1740,7 +1911,9 @@ Next, the string specified as the argument to the @opt is considered. The string is first split using the characters in the @env{IFS} special variable as delimiters. -Shell quoting is honored. +Shell quoting is honored within the string, in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of @env{IFS}. Each word is then expanded using brace expansion, tilde expansion, parameter and variable expansion, command substitution, and arithmetic expansion, @@ -1788,6 +1961,10 @@ is removed before attempting a match. Any completion that matches the pattern will be removed from the list. A leading @samp{!} negates the pattern; in this case any completion not matching the pattern will be removed. +If the @code{nocasematch} shell option +(see the description of @code{shopt} in @ref{The Shopt Builtin}) +is enabled, the match is performed without regard to the case +of alphabetic characters. Finally, any prefix and suffix specified with the @option{-P} and @option{-S} options are added to each member of the completion list, and the result is @@ -1880,10 +2057,10 @@ matches were generated. @item complete @btindex complete @example -@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DE] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}] -[-F @var{function}] [-C @var{command}] [-X @var{filterpat}] +@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DEI] [-A @var{action}] [-G @var{globpat}] +[-W @var{wordlist}] [-F @var{function}] [-C @var{command}] [-X @var{filterpat}] [-P @var{prefix}] [-S @var{suffix}] @var{name} [@var{name} @dots{}]} -@code{complete -pr [-DE] [@var{name} @dots{}]} +@code{complete -pr [-DEI] [@var{name} @dots{}]} @end example Specify how arguments to each @var{name} should be completed. @@ -1893,16 +2070,24 @@ reused as input. The @option{-r} option removes a completion specification for each @var{name}, or, if no @var{name}s are supplied, all completion specifications. -The @option{-D} option indicates that the remaining options and actions should +The @option{-D} option indicates that other supplied options and actions should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. -The @option{-E} option indicates that the remaining options and actions should +The @option{-E} option indicates that other supplied options and actions should apply to ``empty'' command completion; that is, completion attempted on a blank line. +The @option{-I} option indicates that other supplied options and actions should +apply to completion on the initial non-assignment word on the line, or after a +command delimiter such as @samp{;} or @samp{|}, which is usually command +name completion. +If multiple options are supplied, the @option{-D} option takes precedence +over @option{-E}, and both take precedence over @option{-I}. +If any of @option{-D}, @option{-E}, or @option{-I} are supplied, any other +@var{name} arguments are ignored; these completions only apply to the case +specified by the option. The process of applying these completion specifications when word completion -is attempted is described above (@pxref{Programmable Completion}). The -@option{-D} option takes precedence over @option{-E}. +is attempted is described above (@pxref{Programmable Completion}). Other options, if specified, have the following meanings. The arguments to the @option{-G}, @option{-W}, and @option{-X} options @@ -1932,7 +2117,7 @@ Perform directory name completion if the compspec gene @item filenames Tell Readline that the compspec generates filenames, so it can perform any -filename-specific processing (like adding a slash to directory names +filename-specific processing (like adding a slash to directory names, quoting special characters, or suppressing trailing spaces). This option is intended to be used with shell functions specified with @option{-F}. @@ -1941,6 +2126,9 @@ with @option{-F}. Tell Readline not to quote the completed words if they are filenames (quoting filenames is the default). +@item nosort +Tell Readline not to sort the list of possible completions alphabetically. + @item nospace Tell Readline not to append a space (the default) to words completed at the end of the line. @@ -2084,7 +2272,7 @@ an error occurs adding a completion specification. @item compopt @btindex compopt @example -@code{compopt} [-o @var{option}] [-DE] [+o @var{option}] [@var{name}] +@code{compopt} [-o @var{option}] [-DEI] [+o @var{option}] [@var{name}] @end example Modify completion options for each @var{name} according to the @var{option}s, or for the currently-executing completion if no @var{name}s @@ -2093,14 +2281,19 @@ If no @var{option}s are given, display the completion @var{name} or the current completion. The possible values of @var{option} are those valid for the @code{complete} builtin described above. -The @option{-D} option indicates that the remaining options should +The @option{-D} option indicates that other supplied options should apply to the ``default'' command completion; that is, completion attempted on a command for which no completion has previously been defined. -The @option{-E} option indicates that the remaining options should +The @option{-E} option indicates that other supplied options should apply to ``empty'' command completion; that is, completion attempted on a blank line. +The @option{-I} option indicates that other supplied options should +apply to completion on the initial non-assignment word on the line, or after a +command delimiter such as @samp{;} or @samp{|}, which is usually command +name completion. -The @option{-D} option takes precedence over @option{-E}. +If multiple options are supplied, the @option{-D} option takes precedence +over @option{-E}, and both take precedence over @option{-I} The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a @var{name} for which no completion @@ -2117,7 +2310,7 @@ a shell function and bind it to a particular command u The following function provides completions for the @code{cd} builtin. It is a reasonably good example of what shell functions must do when -used for completion. This function uses the word passsed as @code{$2} +used for completion. This function uses the word passed as @code{$2} to determine the directory name to complete. You can also use the @code{COMP_WORDS} array variable; the current word is indexed by the @code{COMP_CWORD} variable. @@ -2147,7 +2340,7 @@ _comp_cd() local cur _skipdot _cdpath local i j k - # Tilde expansion, with side effect of expanding tilde to full pathname + # Tilde expansion, which also expands tilde to full pathname case "$2" in \~*) eval cur="$2" ;; *) cur=$2 ;; @@ -2210,7 +2403,7 @@ character to the directory name, in case we want to ap The @option{-o bashdefault} option brings in the rest of the "Bash default" completions -- possible completion that Bash adds to the default Readline set. These include things like command name completion, variable completion -for words beginning with @samp{@{}, completions containing pathname +for words beginning with @samp{$} or @samp{$@{}, completions containing pathname expansion patterns (@pxref{Filename Expansion}), and so on. Once installed using @code{complete}, @code{_comp_cd} will be called every @@ -2220,7 +2413,7 @@ Many more examples -- an extensive collection of compl the common GNU, Unix, and Linux commands -- are available as part of the bash_completion project. This is installed by default on many GNU/Linux distributions. Originally written by Ian Macdonald, the project now lives -at @url{http://bash-completion.alioth.debian.org/}. There are ports for +at @url{https://github.com/scop/bash-completion/}. There are ports for other systems such as Solaris and Mac OS X. An older version of the bash_completion package is distributed with bash