bash completion

 
Ha meses peguei uma boa função do que simplifica acessar os diferentes projetos web em que estamos trabalhando, a função é esta:

function www() {
  cd "/www/$1"
}

Bastante simples.  Ao digitar www[enter], vai pra pasta /www, ou www projeto[enter]
Mas faltava a a cobertura do bolo, completar com [tab] o nome dos projetos existentes, isso só funcionava se estivessemos na pasta /www, naturalmente
Consegui escrever um script bash usando o completion, que faz isso estando em qualquer pasta do sistema
Você precisa ter no seu ~/.bashrc a seguinte linha:

. /etc/bash_completion

Depois, crie este arquivo /etc/bash_completion.d/_www e adicione este código
 

_www() {
  local dirs=("/www/$2"*/); [[ -e ${dirs[0]} ]] && COMPREPLY=( "${dirs[@]#/www/}" );
}

Finalmente, edite o arquivo /etc/bash_completion e adicione esta linha em qualquer lugar:

 

complete -F _www www

 

Salve, feche o shell e abra novamente

 

Pronto, agora você pode acessar seus projetos mais rapidamente :)

 

Nota: Se seus projetos não estiverem em /www, crie um symlink (cd /&&sudo ln -s /pasta/dos/projetos /www) ou altere nas funções acima o para o caminho correto

 

Comments

Muito Bom!
Eu estava a muito tempo pra fazer isso mas nunca mais toquei neste código :P
Já estou usando.

Para fazer as novas configurações funcinoarem basta executar:

$ source ~/.bashrc

De tanto passar aqui pra dar uma coladinha pra lembrar como fazer o autocomplete resolvi retribuir com um presentinho:
Fiz um bash script pra automatizar esse processo já que volta e meia precisamos reconfigurar essas paradinhas qdo pegamos uma máquina nova.
 
https://raw.github.com/revagomes/dotfiles/master/www-compltetion.sh
 
PS.: Críticas e sugestões são bem vindas. :)
Abs.

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Twitter-style #hashtags are linked to https://twitter.com.
  • Twitter-style @usernames are linked to their Twitter account pages.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <bash> <php> <css> <mysql>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.