При запуске команды complete
на моем терминале gnome отображаются некоторые команды. Что это? И какая польза от команды complete
?
$ complete
complete -F _minimal
complete -F _filedir_xspec oodraw
complete -F _filedir_xspec elinks
complete -F _filedir_xspec freeamp
complete -F _longopt split
complete -F _longopt sed
complete -F _longopt ld
complete -F _longopt grep
complete -F _service /etc/init.d/vboxweb-service
complete -F _service /etc/init.d/vboxballoonctrl-service
complete -F _service /etc/init.d/rc
complete -F _service /etc/init.d/nmbd
complete -F _service /etc/init.d/halt
complete -j -P '"%' -S '"' jobs
complete -d pushd
Список длинен, поэтому я опубликовал некоторые из них.
complete
удар встроенная функция. Таким образом, нет двоичного файла в системе. Это обрабатывает, как команды будут завершены когда нажимающая вкладка.
Пример: если Вы вводите:
user@host:~$ pidof <tab><tab>
... список появляется со всеми возможными значениями для этой команды. В этом случае это означает все рабочие процессы. Посмотрите вывод complete
функция:
user@host:~$ complete | grep pidof
complete -F _pgrep pidof
Это означает что функция _pgrep
(-F) выполняется при переключении вкладок команды pidof
. Определение этой функции находится в /etc/bash_completion.d/procps
.
Другой пример: если Вы вводите:
user@host:~$ cd /usr/<tab><tab>
bin/ games/ include/ lib/ lib32/ local/ sbin/ share/ src/
... Вы видите список папок, Вы можете cd
к под /usr/
. Какая функция выполняется? хватание complete
функция (как выше) говорит нам, что это - funtction _cd
в /etc/bash_completion
.
Сделайте это сами: Вам назвали программу/сценарий /bin/myprog
и Вы хотите это при выполнении его следующим образом
user@host:~$ myprog /home/user/<tab><tab>
... это должно только перечислить папки, не файлы. Поэтому расширьте свое завершение удара с помощью следующей команды:
user@host:~$ complete -F _cd myprog
Именно. Можно также записать собственные функции, чтобы завершить пользовательские вещи, например, завершить только определенные файлы или числа или списки статических значений...
complete
команда удара, используемая для выполнения действия автоматического заполнения, когда пользователь совершил нападки, ВКЛАДКА вводят терминал.
Вызов всего complete
перечислит все функции, зарегистрированные для автозавершения сервисных опций или команд.
Из страниц справочника удара:
complete: complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat]
[-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix]
[-S suffix] [name ...]
Specify how arguments are to be completed by Readline.
For each NAME, specify how arguments are to be completed. If no options
are supplied, existing completion specifications are printed in a way that
allows them to be reused as input.
Options:
-p print existing completion specifications in a reusable format
-r remove a completion specification for each NAME, or, if no
NAMEs are supplied, all completion specifications
-D apply the completions and actions as the default for commands
without any specific completion defined
-E apply the completions and actions to "empty" commands --
completion attempted on a blank line
When completion is attempted, the actions are applied in the order the
uppercase-letter options are listed above. The -D option takes
precedence over -E.
Exit Status:
Returns success unless an invalid option is supplied or an error occurs.
Проверка /usr/share/bash-completion/bash_completion
для наблюдения завершений по умолчанию, которые идут с ударом.
Посещение http://www.linuxjournal.com/content/more-using-bash-complete-command для полного учебного руководства об этой команде.