Pessoal, hoje descobri uma coisa fantástica e que pode ajudar demais. Trata-se do comando complete do bash. Este comando é responsável por fazer a complementação do que você digita quando você aperta o TAB. Todo mundo já deve ter usado esta funcionalidade ao menos uma vez na vida, isso é, aqueles que são felizes em utilizar o Linux. :) :) O bom é que ele pode ser programado pra muitas coisas, como por exemplo, fazer auto-complementação de opções de um determinado programa (ex.: apt-get) ou mesmo filtrar a listagem de determinados arquivos quando estivermos chamando um programa especifico na linha de comando. Como ? É isso que vamos ver aqui e agora.. :) :)

Só para lembrar, estaremos utilizando como base o Ubuntu Linux, ok ?

Ainda não descobri todas as suas funcionalidades e facetas mas uma de cara que pode ser ativada é a auto-complementação de alguns programas. Como assim ? Não entendeu ? Perai … vamos explicar melhor.. :)

O que acontece quando você digita aptitude ou apt-get (ambos, gerenciadore de pacotes do ubuntu)  e em seguida aperta TAB ? Bem, normalmente ele deve mostrar todos os arquivos que você tem no diretório corrente, correto ?  Faça o teste. Abra um shell e digite aptitude e em seguida aperte o TAB seguidas vezes.

Agora faça o seguinte. Digite na linha de comando:

bash>   .   /etc/bash_completion

Agora, digite aptitude ou apt-get , o que você achar melhor, e aperte o TAB seguidas vezes. O que aparece ? FANSTÁSTICO! Apareceram as opções que eu posso utilizar do comando que digitei! :)  Isso funcion para vários comandos e o mais fantástico de tudo é que você pode customizar isso para um programa que não está previsto. Em um próximo artigo, mostrarei um exemplo de auto-complementação para o XAMPP e também para o symfony.

Bem,  para que isso fique automático, ou seja, toda vez que você abrir o shell possa utilizar esta funcionalidade abra, como root, o arquivo /etc/bash.bashrc e descomente as linhas abaixo (menos a primeira que é um comentário, claro :) ):

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

Agora quer ver outra coisa fantástica ? Ainda no shell , imagine que estamos querendo abrir um arquivo texto no gedit. Primeiro vamos criar um arquivo texto de teste no diretório atual, caso você não tenha nenhum. Digite :

bash>   echo “Arquivo TESTE do complete” >> arqtest.txt

Agora vamos abrir este arquivo pelo gedit. Digite gedit e aperte TAB seguidas vezes. O que acontece ? Ele vai listar todos os arquivos e diretórios do local que você está correto ? Ai temos que, visualmente, procurar pelo arquivo que queremos no meio daquele “Balai de Gato” :D  E que tal se pudessemos dizer para o bash que, quando eu estiver tentando utilizar o gedit na hora que eu apertar o TAB ele só me mostre arquivos .txt ? facilitaria não ?  Então faça :

bash>  complete -G "*.txt" gedit

Agora, ainda no shell  digite gedit e aperte TAB várias vezes. O que aconteceu ? FANTÁSTICO! Ele lista apenas os arquivos com extensão txt :) :)

Bem pessoal, é isso. A idéia aqui era mostrar uma funcionalidade que acabei de descobrir e que só depende agora da imaginação de cada um para melhorar, ou seja, o céu é o limite.  :)

Ahhhh, ia esquecendo. Como alguns devem ter percebido, o arquivo que cuida da auto-complementação do comando complete é o /etc/bash_completion . Para quem não tem este arquivo, segue em anexo o meu no final do texto.  Ahhh, também existe um diretório /etc/bash_completion.d/ que contém outros scipts para auto-complementação de outros softwares. Estes scripts são chamados pelo arquivo /etc/bash_completion.

Postem ai suas configurações, seus testes, etc.

Abraços.

Diego

Clique aqui para pegar o arquivo bash_completion