Actualmente tengo un archivo de finalización de Bash que completa un solo parámetro de una lista de comandos permitidos para un script (llamado "pbt"). Este es el archivo de Terminación Bash trabajo:Finalización de Bash de nivel múltiple
_pbt_complete()
{
local cur goals
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
goals='asadmin clean deploy'
cur=`echo $cur`
COMPREPLY=($(compgen -W "${goals}" ${cur}))
}
complete -F _pbt_complete pbt
Así que si llamo
pbt <tab>
Bash completa de todos los comandos permitidos (asadmin, limpio, desplegar), lo cual está bien.
Ahora quiero agregar un "segundo" nivel a la finalización. Así por ejemplo, si el tipo i
pbt asadmin <tab>
se debe completar todas las opciones que sólo están disponibles en el "medio ambiente" asadmin- (que también me definiré dentro del archivo finalización bash), digamos por ejemplo pbt asadmin [start-domain|stop-domain]
Pero si yo escriba
pbt deploy <tab>
se debe completar a otro conjunto de opciones, por ejemplo pbt deploy [all|current]
. Entonces las opciones para el segundo comando siempre deben depender del primer comando. ¿Cómo puedo hacer eso en el archivo de finalización?
¿Ha instalado o revisado el paquete bash-completion? http://bash-completion.alioth.debian.org/ Los módulos p4 y apt hacen esto. – mkb