26 Abr
Posted by Diego Albuquerque as Ubuntu, Shell Script, bash

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

One Response
Configurando o meu ambiente de desenvolvimento PHP/Symfony no Ubuntu by ÚltimoLOG
Maio 17th, 2007 at 5:31 pm
1[…] 1 ] A primeira coisa a fazer é ativar a auto-complementação do bash, conforme mostrado no artigo [auto] Complete : facilitando as coisas na linha de comando , ou seja, descomentando as linhas do arquivo /etc/bash.bashrc que habilitam tal funcionalidade: # […]
RSS feed for comments on this post · TrackBack URI
Leave a reply