A che serve il comando completo?


17

Durante l'esecuzione del completecomando sul mio terminale GNOME, mostra alcuni comandi. Che cosa sono? E a che serve il completecomando?

$ 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

L'elenco è lungo, quindi ne ho pubblicati alcuni.


1
Ho provato il comando 'man complete' ma non mostra nulla.
Avinash Raj,

2
provahelp complete
Sylvain Pineau il

Risposte:


16

completeè una funzione integrata bash. Quindi non c'è un binario sul sistema. Gestisce il modo in cui i comandi verranno completati quando si preme tab.

Esempio: se si digita:

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

... viene visualizzato un elenco con tutti i possibili valori per questo comando. In questo caso significa tutti i processi in esecuzione. Vedi l'output della completefunzione:

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

Ciò significa che la funzione _pgrep(-F) viene eseguita durante la tabulazione del comando pidof. La definizione di questa funzione è in /etc/bash_completion.d/procps.

Un altro esempio: se si digita:

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

... vedi l'elenco delle cartelle in cui puoi cdcercare /usr/. Quale funzione viene eseguita? greping la completefunzione (come sopra) ci dice che è la funtction _cdin /etc/bash_completion.

Fai da te : hai un programma / script chiamato /bin/myproge lo desideri se lo esegui come segue

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

... dovrebbe solo elencare le cartelle, non i file. Quindi estendi il tuo completamento bash con il seguente comando:

user@host:~$ complete -F _cd myprog

Questo è tutto. Puoi anche scrivere le proprie funzioni per completare cose personalizzate, ad esempio completare solo file o numeri o elenchi di valori statici specifici ...


Quindi è così che il completamento della riga di comando di git sembra molto più intelligente di molti programmi ...
AShelly,

8

completeè un comando bash utilizzato per eseguire l'azione di completamento automatico quando l'utente TABpreme il tasto in un terminale.

Chiamando semplicemente completeverranno elencate tutte le funzioni registrate per il completamento automatico di comandi o opzioni di servizi.

Dalle pagine man di 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.

Controlla /usr/share/bash-completion/bash_completionper vedere i completamenti predefiniti forniti con bash.

Visita http://www.linuxjournal.com/content/more-using-bash-complete-command per un tutorial completo su questo comando.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.