Встроенные команды программируемого дополнения
Для управления средствами программируемого дополнения доступны три встроенные команды: одна задаёт способ дополнения аргументов определённой команды, а две другие изменяют процесс дополнения во время его выполнения.
-
compgen -
compgen [-V varname] [option] [word]
Сгенерировать возможные варианты дополнения для word в соответствии с option, которые могут быть любыми параметрами, принимаемыми встроенной командой
complete, за исключением -p, -r, -D, -E и -I, и вывести варианты в стандартный вывод.Если указан параметр -V,
compgenсохраняет сгенерированные варианты дополнения в индексированную переменную массива varname, а не выводит их в стандартный вывод.При использовании параметров -F или -C различные переменные оболочки, устанавливаемые средствами программируемого дополнения, хотя и будут доступны, не будут содержать полезных значений.
Варианты будут сгенерированы так же, как если бы код программируемого дополнения создал их непосредственно на основе спецификации дополнения с теми же флагами. Если задано word, будут показаны или сохранены только те варианты дополнения, которые соответствуют word.
Возвращается истинное значение, если не указан недопустимый параметр и были сгенерированы варианты.
-
complete -
complete [-abcdefgjksuv] [-o comp-option] [-DEI] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] name [name ...] complete -pr [-DEI] [name ...]
Задать способ дополнения аргументов для каждого name.
Если указан параметр -p или не указаны параметры и name, вывести существующие спецификации дополнения в формате, пригодном для повторного использования в качестве входных данных. Параметр -r удаляет спецификацию дополнения для каждого name или, если name не указаны, удаляет все спецификации дополнения.
Параметр -D указывает, что остальные заданные параметры и действия должны применяться к дополнению «по умолчанию», то есть к попытке дополнить команду, для которой дополнение ещё не определено. Параметр -E указывает, что остальные заданные параметры и действия должны применяться к «пустому» дополнению команды, то есть к попытке дополнения в пустой строке. Параметр -I указывает, что остальные заданные параметры и действия должны применяться к дополнению первого слова в строке, не являющегося присваиванием, либо слова после разделителя команд, например «;» или «|»; обычно это дополнение имени команды. Если задано несколько параметров, параметр -D имеет приоритет над -E, а оба они имеют приоритет над -I. Если указан любой из параметров -D, -E или -I, все остальные аргументы name игнорируются; эти дополнения применяются только в случае, указанном параметром.
Процесс применения этих спецификаций дополнения при попытке дополнить слово описан выше (см. Программируемое дополнение).
Другие параметры, если они заданы, имеют следующие значения. Аргументы параметров -G, -W и -X (а при необходимости и параметров -P и -S) следует заключать в кавычки, чтобы защитить их от раскрытия до вызова встроенной команды
complete.-o comp-option-
comp-option управляет рядом аспектов поведения спецификации дополнения, помимо простого создания вариантов дополнения. comp-option может принимать одно из следующих значений:
bashdefault-
Выполнить остальные стандартные процедуры дополнения Bash, если спецификация дополнения не создаёт вариантов.
default-
Использовать стандартное дополнение имён файлов Readline, если спецификация дополнения не создаёт вариантов.
dirnames-
Выполнить дополнение имён каталогов, если спецификация дополнения не создаёт вариантов.
filenames-
Сообщить Readline, что спецификация дополнения создаёт имена файлов, чтобы она могла выполнить обработку, специфичную для имён файлов (например, добавить косую черту к именам каталогов, заключить специальные символы в кавычки или не добавлять пробелы в конце). Этот параметр предназначен для использования с функциями оболочки, заданными с помощью -F.
fullquote-
Указать Readline заключать все дополненные слова в кавычки, даже если это не имена файлов.
noquote-
Указать Readline не заключать дополненные слова в кавычки, если это имена файлов (по умолчанию имена файлов заключаются в кавычки).
nosort-
Указать Readline не сортировать список возможных вариантов дополнения в алфавитном порядке.
nospace-
Указать Readline не добавлять пробел (по умолчанию он добавляется) после слов, дополненных в конце строки.
plusdirsПосле создания всех вариантов, определённых спецификацией дополнения, попытаться дополнить имя каталога и добавить все найденные варианты к результатам остальных действий.
-A action-
action может принимать одно из следующих значений для создания списка возможных вариантов дополнения:
alias-
Имена псевдонимов. Также может задаваться как -a.
arrayvar-
Имена переменных массива.
binding-
Имена привязок клавиш Readline (см. Команды Readline, доступные для привязки).
builtin-
Имена встроенных команд оболочки. Также может задаваться как -b.
command-
Имена команд. Также может задаваться как -c.
directory-
Имена каталогов. Также может задаваться как -d.
disabled-
Имена отключённых встроенных команд оболочки.
enabled-
Имена включённых встроенных команд оболочки.
export-
Имена экспортированных переменных оболочки. Также может задаваться как -e.
file-
Имена файлов и каталогов, как при дополнении имён файлов в Readline. Также может задаваться как -f.
function-
Имена функций оболочки.
group-
Имена групп. Также может задаваться как -g.
helptopic-
Разделы справки, принимаемые встроенной командой
help(см. Встроенные команды Bash). hostname-
Имена узлов, взятые из файла, указанного в переменной оболочки
HOSTFILE(см. Переменные Bash). job-
Имена заданий, если активен контроль заданий. Также может задаваться как -j.
keyword-
Зарезервированные слова оболочки. Также может задаваться как -k.
running-
Имена выполняющихся заданий, если активен контроль заданий.
service-
Имена служб. Также может задаваться как -s.
setopt-
Допустимые аргументы параметра -o встроенной команды
set(см. Встроенная команда Set). shopt-
Имена параметров оболочки, принимаемые встроенной командой
shopt(см. Встроенные команды Bash). signal-
Имена сигналов.
stopped-
Имена остановленных заданий, если активен контроль заданий.
user-
Имена пользователей. Также может задаваться как -u.
variableИмена всех переменных оболочки. Также может задаваться как -v.
-C command-
command выполняется в подоболочке, а его вывод используется в качестве возможных вариантов дополнения. Аргументы передаются так же, как при использовании параметра -F.
-F function-
Функция оболочки function выполняется в текущем окружении оболочки. При её выполнении первый аргумент ($1) — это имя команды, аргументы которой дополняются, второй аргумент ($2) — дополняемое слово, а третий аргумент ($3) — слово перед дополняемым словом, как описано выше (см. Программируемое дополнение). Когда выполнение
functionзавершается, программируемое дополнение получает возможные варианты дополнения из значения переменной массиваCOMPREPLY. -G globpat-
Раскрыть шаблон раскрытия имён файлов globpat, чтобы создать возможные варианты дополнения.
-P prefix-
Добавить prefix в начало каждого возможного варианта дополнения после применения всех остальных параметров.
-S suffix-
Добавить suffix в конец каждого возможного варианта дополнения после применения всех остальных параметров.
-W wordlist-
Разделить wordlist по символам из специальной переменной
IFSи раскрыть каждое полученное слово. Внутри wordlist учитываются кавычки оболочки, что позволяет включать в слова метасимволы оболочки или символы, содержащиеся в значенииIFS. Возможными вариантами дополнения являются элементы полученного списка, соответствующие префиксу дополняемого слова. -X filterpatfilterpat — это шаблон, используемый при раскрытии имён файлов. Он применяется к списку возможных вариантов дополнения, созданному предыдущими параметрами и аргументами, и каждый вариант, соответствующий filterpat, удаляется из списка. Начальный символ «!» в filterpat инвертирует шаблон; в этом случае удаляется любой вариант дополнения, который ему не соответствует.
Возвращается истинное значение, если не указан недопустимый параметр, параметр, отличный от -p, -r, -D, -E или -I, не задан без аргумента name, не предпринимается попытка удалить спецификацию дополнения для name, для которого такая спецификация отсутствует, и при добавлении спецификации дополнения не происходит ошибки.
-
compopt -
compopt [-o option] [-DEI] [+o option] [name]
Изменить параметры дополнения для каждого name в соответствии с option или для выполняемого в данный момент дополнения, если name не заданы. Если option не заданы, отобразить параметры дополнения для каждого name или для текущего дополнения. Возможные значения option — это значения, допустимые для описанной выше встроенной команды
complete.Параметр -D указывает, что остальные заданные параметры должны применяться к дополнению команды «по умолчанию»; параметр -E указывает, что остальные заданные параметры должны применяться к «пустому» дополнению команды; параметр -I указывает, что остальные заданные параметры должны применяться к дополнению первого слова в строке. Эти случаи определяются так же, как для встроенной команды
complete.Если задано несколько параметров, параметр -D имеет приоритет над -E, а оба они имеют приоритет над -I
Возвращается истинное значение, если не указан недопустимый параметр, не предпринимается попытка изменить параметры для name, для которого отсутствует спецификация дополнения, и при выводе не возникает ошибка.
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion-Builtins.html