Busindre » Blog Archive » bash_completion (Bash Inteligente)

bash_completion (Bash Inteligente)

December 7th, 2006 by Busindre

Vamos a ver como instalar bash_completion para poder usar de forma más comoda la consola y poder añadir nosotros nuestras autocompletaciones inteligentes de los comandos que queramos:

Archivo: http://www.caliban.org/files/bash/bash-completion-20060301.tar.gz

Esto funciona en versiones de Bash a partir de la 2.05 en adelante.Para comprobarlo:

[busi @ ~]$ bash -version
GNU bash, version 3.00.16(2)-release (i486-slackware-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.

Instalamos:

$ tar -zxvf bash-completion-20060301.tar.gz
$ cd bash_completion
# cp bash_completion /etc/

Para hacerlo operativo en el .bashrc de nuestro home (o el que interese):

# Auto completado inteligente de la bash.

if [ -r /etc/bash_completion ]; then
. /etc/bash_completion
fi

¿Que corrige?
1.- La ruta
2.- Ayuda con ciertos ejecutables
3.- El nombre de las variables ($)
4.- Los nombres de usuarios (~)
5.- Los hostname (@)

Veamos unos ejemplos:

1.- La ruta

Sin bash_completion

busi@busipc:$ cd w
webip.out wiffimanual~ words
wemeet.mid wireless_videos/ wx/

Con bash_completion

busi@busipc:$ cd w
wireless_videos/ wx/

2.- Ayuda con ciertos ejecutables (Abajo vemos como añadir nuevos)

busi@busipc:$ xmms
00-opensource_theme.m3u
01-cancion.mp3

3.- El nombre de las variables ($)

busi@busipc:$ echo $
$_ $BASH_VERSINFO $HISTFILE

4.- Los nombres de usuarios (~)

busi@busipc:$ ls ~
~adm/ ~busi/ ~ftp/ ~gdm ~lp
~bin/ ~daemon/ ~games ~halt/ ~mail/

5.- Los hostname (@)

busi@busipc:$ ssh @

@192.168.3.20 @kzo.homelinux.org
@195.27.11.143 @204.2.177.34

Vamos a añadir nosotros una completación para el comando unrar en /etc/bash_completion muy simple para entederlo:

complete -f -X '!*.@(rar|RAR)' unrar

Antes:

busi@busipc:$ unrar
aaaaa avvvvvva bbbbbb.rar

Ahora:

busi@busipc:$ unrar bbbbbb.rar

NOTA: Podemos hacerlo asi tambien : complete -G "*.txt" evim

Es mejor usar Zsh ya que es la mejor shell de todas y viene con muchas cosas ya integradas, pero eso lo trataremos en otra ocasion, les dejo un ejemplo con zsh:

[busi @ ~]$ ls ~

adm/ busi/ ftp/ gdm lp
bin/ daemon/ games halt/ mail/

A zsh no le hace falta bash_completion, si no usamos zsh y seguimos con bash mejor es ponerse bash_completion para usar una consola más comoda.

NOTA: También encontramos esta aplicación en los repositorios, pero como vemos es algo muy facil de poner y cuanto más actual sea el bash_completion mejor.

En muchas distribuciones ya viene instalado pero no activado, teniendo que descomentar dicho codigo en el archivo .bashrc

Posted in Curiosidades |

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.