O bash completion é uma poderosa ferramenta para administradores Linux que utilizam o shell para realizar suas tarefas, permitindo com que comandos, caminhos de arquivos e mesmo parâmetros específicos sejam autocompletados. Em geral essa feature é habilitada por padrão no Linux, porém em algumas distribuições, tal como no Debian, é preciso configurá-la manualmente. Este é justamente o tema do artigo em questão.
Antes de qualquer coisa, certifique-se de que o pacote bash-completion esteja instalado, executando a instrução a seguir:
# apt-get install bash-completion
Em seguida, é preciso indicar a utilização do bash-completion no perfil do bash. Isso pode ser feito individualmente para cada usuário, através do arquivo ~/.bash_profile, ou para todo o sistema. Para essa segunda opção, modifique o arquivo /etc/bash.bashrc, usando um editor qualquer:
# vi /etc/bash.bashrc
Verifique se as seguintes linhas estão incluídas no arquivo de configurações. Inicialmente elas já existem, porém estão comentadas (i.e. iniciadas com o caracter "#"):
# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
A última etapa consiste em testar se o mecanismo de autocomplemento está funcionando. Para isso, é preciso sair da sessão (i.e. fazer um log out do terminal) e iniciar um novo login. Feito isso, tente digitar a inicial de algum comando (ex: service) e em seguida pressionar a tecla TAB uma vez:
# serv<TAB>
Agora que o comando "service" foi autocompletado, pressione a tecla TAB mais duas vezes para que a respectiva lista de seus possíveis parâmetros seja exibida na tela:
# service <TAB>
hwclock networking skeleton udevtrigger
apache2 hwclock-save ondemand umountfs
bootlogd keyboard-setup postfix rsyslog
console-setup procps udev umountroot
dmesg rc sendsigs urandom
halt nagios3 rc.local single
Caso o comando possua múltiplos argumentos, como é o caso do "service", podemos utilizar o TAB mais uma vez, o que fará com que apenas instruções que façam sentido sejam listadas:
# service nagios3 <TAB>
force-reload reload restart start status stop
Agora é só digitar a inicial do argumento, pressionar TAB mais uma vez e executar de vez a instrução completa:
# service nagios3 status
* checking /usr/sbin/nagios3... [OK]
Pronto! Bem fácil, né?