Comprendi il comando incorporato `compgen`


37

Da help compgen:

$ help compgen
compgen: compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]
    Display possible completions depending on the options.

    Intended to be used from within a shell function generating possible
    completions.  If the optional WORD argument is supplied, matches against
    WORD are generated.

    Exit Status:
    Returns success unless an invalid option is supplied or an error occurs.

Quindi, cosa [-abcdefgjksuv]significano le opzioni ?

In altre parole, voglio sapere come utilizzare tutte le opzioni.


Hai letto la pagina man? man compgen. La pagina man è per i builtin della shell, quindi dovrai scorrere fino a compgen.
garethTheRed,

5
"man compgen", non esiste. usa "man bash"
kevinf l'

Risposte:


38

Le opzioni per il compgencomando sono le stesse di complete, tranne -pe -r. Dalla compgenpagina man:

compgen
 compgen [option] [word]
 Generate possible completion matches for word according to the options, which 
 may be any option accepted by the complete builtin with the exception of -p 
 and -r, and write the matches to the standard output

Per le opzioni [abcdefgjksuv]:

  • -a significa nomi di alias
  • -b significa Nomi di shell incorporati
  • -c indica i nomi di tutti i comandi
  • -d significa Nomi della directory
  • -e indica i nomi delle variabili shell esportate
  • -f significa nomi di file e funzioni
  • -g significa nomi di gruppi
  • -j significa nomi di lavoro
  • -k significa Nomi di parole riservate Shell
  • -s significa Nomi di servizio
  • -u indica i nomi dei nomi userAlias
  • -v significa Nomi delle variabili della shell

Puoi vedere la pagina man completa qui .


@Pandya: vedi le opzioni per complete, è uguale a compgen, tranne -pe -r.
cuonglm,

L'ho letto man bashe suggerito di modificare per completare il tuo post in modo che io accetti facilmente.
Pandya,

1
Qualche informazione su come usare compgen -G? Di 'che il mio modello è compgen -G '*.zip'e ho il file "foo.zip". compgen troverà foo.zip, ma cosa succede se l'utente ha già digitato 'b'. Ora, compgen non dovrebbe trovare nulla. Se do il comando compgen -G '*.zip' "b", compgen trova ancora foo.zip
Edward Falk il

@cuonglm Come elencare le funzioni fornite dal comando di servizio? Ad esempio, service networkingtornerà usando e colpendo la scheda force-reload reload restart start stop. Sai come ottenerli compgen?
Ilia Rostovtsev,

@IliaRostovtsev: vedi questo per esempio github.com/scop/bash-completion/blob/…
cuonglm
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.