Какая польза от полной команды?

При запуске команды 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

Список длинен, поэтому я опубликовал некоторые из них.

17
задан 21 September 2014 в 16:53

2 ответа

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

Именно. Можно также записать собственные функции, чтобы завершить пользовательские вещи, например, завершить только определенные файлы или числа или списки статических значений...

16
ответ дан 21 September 2014 в 16:53

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 для полного учебного руководства об этой команде.

0
ответ дан 21 September 2014 в 16:53

Другие вопросы по тегам:

Похожие вопросы: