Do czego służy pełne polecenie?

17

Podczas uruchamiania completepolecenia na moim terminalu gnome wyświetla niektóre polecenia. Co to są? A do czego służy completepolecenie?

$ 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

Lista jest długa, więc opublikowałem niektóre z nich.

Avinash Raj
źródło
1
Próbowałem polecenia „kompletny człowiek”, ale nic nie wyświetla.
Avinash Raj
2
spróbujhelp complete
Sylvain Pineau

Odpowiedzi:

16

completejest wbudowaną funkcją bash. Więc nie ma pliku binarnego w systemie. Obsługuje sposób wykonywania poleceń po naciśnięciu tab.

Przykład: jeśli wpiszesz:

user@host:~$ pidof <tab><tab>

... pojawia się lista ze wszystkimi możliwymi wartościami dla tego polecenia. W tym przypadku oznacza to wszystkie uruchomione procesy. Zobacz dane wyjściowe completefunkcji:

user@host:~$ complete | grep pidof
complete -F _pgrep pidof

Oznacza to, że funkcja _pgrep(-F) jest wykonywana podczas tabulacji polecenia pidof. Definicja tej funkcji znajduje się w /etc/bash_completion.d/procps.

Kolejny przykład: jeśli wpiszesz:

user@host:~$ cd /usr/<tab><tab>
bin/     games/   include/ lib/     lib32/   local/   sbin/    share/   src/

... zobaczysz listę folderów, które możesz cdpod /usr/. Która funkcja jest wykonywana? greping z completefunkcji (jak wyżej) mówi nam, że to funtction _cdw /etc/bash_completion.

Zrób to sam : masz wywołany program / skrypt /bin/myprogi chcesz go, jeśli wykonasz go w następujący sposób

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

... powinno zawierać tylko foldery, a nie pliki. Tak więc rozszerz swój bash za pomocą następującego polecenia:

user@host:~$ complete -F _cd myprog

Otóż ​​to. Możesz także pisać własne funkcje, aby uzupełniać niestandardowe rzeczy, na przykład wypełniać tylko określone pliki lub liczby lub listy wartości statycznych ...

chaos
źródło
W ten sposób uzupełnianie wiersza poleceń gita wydaje się o wiele mądrzejsze niż w większości programów ...
AShelly
8

completejest poleceniem bash służącym do wykonania akcji autouzupełniania, gdy użytkownik naciśnie TABklawisz w terminalu.

Tylko wywołanie completewyświetli listę wszystkich funkcji zarejestrowanych do automatycznego uzupełniania poleceń lub opcji usług.

Ze stron podręcznika użytkownika bash:

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.

Zaznacz, /usr/share/bash-completion/bash_completionaby zobaczyć domyślne uzupełnienia dostarczane przez bash.

Odwiedź http://www.linuxjournal.com/content/more-using-bash-complete-command, aby uzyskać pełny samouczek na temat tego polecenia.

Sylvain Pineau
źródło