Comprender el comando incorporado `compgen`

37

De 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.

Entonces, ¿qué [-abcdefgjksuv]significan las opciones ?

En otras palabras, quiero saber cómo usar todas las opciones.

Pandya
fuente
¿Has leído la página del manual? man compgen. La página de manual es para los componentes integrados de shell, por lo que deberá desplazarse hacia abajo compgen.
garethTheRed
55
"hombre compgen", no existe. use "man bash"
kevinf

Respuestas:

38

Las opciones para el compgencomando son las mismas que complete, excepto -py -r. Desde la compgenpágina del manual:

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

Para opciones [abcdefgjksuv]:

  • -a significa nombres de alias
  • -b significa nombres de conchas incorporadas
  • -c significa nombres de todos los comandos
  • -d significa nombres de directorio
  • -e significa nombres de variables de shell exportadas
  • -f significa nombres de archivo y funciones
  • -g significa nombres de grupos
  • -j significa nombres de trabajo
  • -k significa nombres de palabras reservadas de Shell
  • -s significa nombres de servicio
  • -u significa nombres de usuarioAlias ​​nombres
  • -v significa nombres de variables de shell

Puedes ver la página de manual completa aquí .

Cuonglm
fuente
@Pandya: Ver opciones para complete, es lo mismo que compgen, excepto -py -r.
Cuonglm
Lo leí man bashy sugerí editar para completar su publicación, de modo que acepto fácilmente.
Pandya
1
¿Alguna información sobre cómo usar compgen -G? Digamos que mi patrón es compgen -G '*.zip'y tengo el archivo "foo.zip". compgen encontrará foo.zip, pero qué pasa si el usuario ya ha escrito 'b'. Ahora, compgen no debería encontrar nada. Si doy la orden compgen -G '*.zip' "b", compgen todavía encuentra foo.zip
Edward Falk
@cuonglm ¿Cómo enumerar las funciones que proporciona el comando de servicio? Por ejemplo, usar service networkingy presionar la pestaña volverá force-reload reload restart start stop. ¿Sabes cómo usarlos compgen?
Ilia Rostovtsev
@IliaRostovtsev: vea este por ejemplo github.com/scop/bash-completion/blob/…
cuonglm