Datos personales

jueves, 4 de noviembre de 2010

bash: Autocompletado para tsclient

Utilizo habitualmente la utilidad tsclient para administrar sistemas windows y su interfaz no es demasiado cómoda a la hora de escoger alguna de las conexiones que ya tengo guardadas en el directorio ~/.tsclient

El siguiente script bash activará el autocompletado para el comando tsclient, de forma que, la primera pulsación del tabulador mostrará directamente la opción -x y la segunda listará las conexiones que tenemos disponibles dentro de ~/.tsclient.

_bash_completion_tsclient()
{
 local cur prev opts
 COMPREPLY=()
 cur="${COMP_WORDS[COMP_CWORD]}"
 prev="${COMP_WORDS[COMP_CWORD-1]}"

 opts="-x"

 case "${prev}" in
  -*)
    local conexiones=$(ls ~/.tsclient/*.rdp)
    COMPREPLY=($(compgen -W "${conexiones}" -- ${cur}))
    return 0;
    ;;
  *)
  ;;
 esac

 COMPREPLY=($(compgen -W "${opts}" -- ${cur}))  
 return 0
}
complete -F _bash_completion_tsclient tsclient

Para que los cambios sean permanentes, crearemos el fichero /etc/bash_completion.d/tsclient y reinicaremos nuestro shell.

Para probarlo inmediatamente en la sesión activa basta con ejecutar:

$. /etc/bash_completion.d/tsclient

En caso de problemas, lo primero que hay que comprobar es que el siguiente código está habilitado en ~/.bashrc o en /etc/bash.bashrc:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

Para ver la lista de reglas que tenemos habilitadas en nuestra sesión ejecutaremos el comando complete -p

Referencias