У чому полягає повна команда?


17

Під час виконання 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

Список довгий, тому я розмістив деякі з них.


1
Я спробував команду 'man complete', але нічого не відображає.
Avinash Raj

2
спробуйтеhelp complete
Сільвейн Пано

Відповіді:


16

complete- це вбудована функція bash. Так що в системі немає жодного бінарного. Він обробляє, як команди будуть виконані при натисканні tab.

Приклад: якщо ви вводите:

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/. Яка функція виконується? greping на completeфункцію (як зазначено вище) говорить нам , що це funtction _cdв /etc/bash_completion.

Зробіть це самостійно : у вас названа програма / скрипт, /bin/myprogі ви хочете, щоби виконати її наступним чином

user@host:~$ myprog /home/user/<tab><tab>

... він повинен перераховувати лише папки, а не файли. Тож продовжте ваше завершення bash наступною командою:

user@host:~$ complete -F _cd myprog

Це воно. Ви також можете записати власні функції для завершення користувацьких речей, наприклад, завершення лише певних файлів або чисел або списків статичних значень ...


Ось так заповнення командного рядка Git здається настільки розумнішим, ніж більшість програм ...
AShelly

8

complete- команда bash, яка використовується для виконання автоматичного завершення дії, коли користувач натискає TABклавішу в терміналі.

Щойно зателефонувавши complete, перелічуються всі функції, зареєстровані для автоматичного завершення команд або параметрів послуг.

З сторінок bash man:

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щоб побачити доповнення за замовчуванням, що постачаються з bash.

Відвідайте http://www.linuxjournal.com/content/more-using-bash-complete-command, щоб отримати повний підручник щодо цієї команди.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.