TooManySecrets HeadQuarters
Completado en Bash en OpenSolaris.

Desde la versión de desarrollo snv_126 de OpenSolaris, ya está disponible la posibilidad de usar el Bash Completion (completado en el Bash) en OpenSolaris. Lo único que ocurre, es que no viene activado por defecto (imagino que vendrá listo en otras más adelante, o como mínimo, en la versión 2010.02).

Para activarlo no teneis más que editar el archivo .bashrc de vuestra $HOME, a la par que crear una configuración para el bash completion (no asustarse, es una simple copia lo que hay que hacer). En total se trataría de ejecutar los siguientes pasos:

1. Editar ${HOME}/.bashrc y añadir lo siguiente:

if [ -f /etc/bash/bash_completion ]; then
. /etc/bash/bash_completion
fi

2. Crear el fichero /etc/bash/bash_completion copiando el de ejemplo:

# cp /etc/bash/bash_completion.example /etc/bash/bash_completion

Y con eso ya estaría todo listo (recuerda que para usarlo de inmediato o bien abres un nuevo terminal, o bien haces un “source /etc/bash/bash_completion” en tu actual shell). A partir de entonces podrás hacer cosas como:

  • ssh <TAB><TAB>
    <lista de hosts conocidos>
  • su - <TAB><TAB>
    <lista de usuarios en /etc/password>
  • evince <TAB><TAB>
    <lista de directorios, ficheros .ps y .pdf en el directorio actual>

y así podríamos seguir…

Añadir otros completados:

Estos no son los únicos completados, es posible añadir muchos más. La forma más fácil de hacerlo sería añadir un fichero en /etc/bash/bash_configuration.d, y estos ficheros serán añadidos automáticamente si han sido añadidas las líneas anteriormente mencionadas en el fichero .bashrc.

Por ejemplo; un caso útil para todo aquel que use el software de revisiones Mercurial, es copiar el fichero que viene en /usr/demo/mercurial, que puede ser copiado tal cual y ya se obtiene el completado de comandos de mercurial:

# cp /usr/demo/mercurial/bash_completion /etc/bash/bash_completion.d/

Habiendo hecho este paso, y a continuación el mencionado source /etc/bash/bash_completion, se puede obtener:

  • $ hg <TAB><TAB>
    active       bisect       cddlchk      copyright    hdrchk       init         mv           permchk      reparent     showconfig   update
    add          blame        checkout     cp           heads        jstyle       nits         pull         resolve      st           verify

Es posible añadir más completado para varios comandos, por ejemplo se podría crear uno para zfs, zpool, pkg, etc (las posibilidades son muchas para enumerarlas todas). Pero aquí hay algunas que se han encontrado:

Todo esto lo he sacado y traducido de una entrada de Darren Kenny titulada “Bash Completion on OpenSolaris” http://blogs.sun.com/dar/entry/bash_completion_on_opensolaris

Have a nice day ;-)

TooManySecrets