lunes, 29 de julio de 2013

Autocompletar comandos: Bash-Completion

Sabemos que cuando utilizamos la terminal podemos auto-completar el nombre de un archivo o comando utilizando la tecla [TAB].

Ejemplo:

usuario@host:~$ sudo apt-get [TAB]
autoclean        check            dselect-upgrade  source
autoremove       clean            install          update
build-dep        dist-upgrade     purge            upgrade
changelog        download         remove

Tal como en el ejemplo esto lo realizo con un usuario que se encuentra dentro del archivo /etc/sudoers capas de utilizar comando como si se tratase del root. Hablaremos de este archivo en estradas posteriores.

La situación cambia cuando nosotros nos cambiamos al usuario root ya sea con:

usuario@host:~$ sudo su # Utilizando contraseña del usuario que ejecuta el comando. En este caso usuario.
su # utilizando contraseña del usuario root.

Si tratamos de realizar lo anterior nos damos cuenta de que nos muestra algo similar a lo siguiente:

root@host:~# apt-get [TAB]
Display all N possibilities? (y or n)
#
# Lista de archivos del directorio actual.
#
--More--

Cuando en realidad queremos que nos auto-complete o muestra las opciones que tenemos disponibles.

Este comportamiento no esta disponible por defecto por lo que si queremos activarlo tenemos la necesidad de editar el archivo /root/.bashrc


root@host:~# nano .bashrc
Buscar lo siguiente:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi
y descomentamos las últimas tres lineas que muestro, es decir, debe quedar así:
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

Podemos reiniciar nuestra terminal o simplemente cargar nuestra configuración haciendo uso de source:

root@host:~# source .bashrc
¡Listo! ya nos podrá auto-completar los comando también con el usuario root.

Si queremos que este cambio se realice con todos los usuario deberemos debemos de editar el /etc/bash.bashrc y descomentar las mismas lineas o algunas similares.

NOTA:

Como se indica en los comentarios del archivo ~/.bashrc si ya se encuentra habilitado en /etc/bash.bashrc no es necesario realizarlo en este archivo.

Eso es todo por el momento si quieren más información revisar los siguiente sitios:
http://bash-completion.alioth.debian.org/
http://tldp.org/LDP/abs/html/tabexpansion.html
http://www.debian-administration.org/articles/316

No hay comentarios:

Publicar un comentario