bash – ¿Cómo crear un script con autocompletar?

Pregunta:

Cuando uso un programa como svn y svn en Gnome Terminal:

svn upd

y presiona Tab, se autocompleta para:

svn update

¿Es posible hacer algo así en mi script bash personalizado?

Respuesta:

Tendrás que crear un nuevo archivo:

/etc/bash_completion.d/foo

Para un autocompletado estático ( --help / --verbose por ejemplo) agregue esto:

_foo() 
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="--help --verbose --version"

    if [[ ${cur} == -* ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}
complete -F _foo foo
  • COMP_WORDS es una matriz que contiene todas las palabras individuales en la línea de comando actual.
  • COMP_CWORD es un índice de la palabra que contiene la posición actual del cursor.
  • COMPREPLY es una variable de matriz de la que Bash lee las posibles terminaciones.

Y el comando compgen devuelve la matriz de elementos de --help , --verbose y --version coinciden con la palabra actual "${cur}" :

compgen -W "--help --verbose --version" -- "<userinput>"

Fuente

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım