Use o suporte de preenchimento automático bash para aumentar sua produtividade

Quando comecei a pesquisar o Gradle, fiquei pensando se seria possível autocompletar em tarefas como funciona, por exemplo, para subcomandos git (e eu realmente me acostumei com isso!). Isso realmente economiza muita digitação e aumenta seu fluxo no shell.

Como se viu, o bash (que estou usando felizmente) tem suporte para permitir que você escreva seus próprios scripts para autocompletar do bash e que o supracitado git autocompletar nada mais é do que tal script.

Para ter uma ideia de como as coisas funcionam, o primeiro lugar a olhar é

/etc/bash_completion

Este arquivo faz toda a configuração básica e é originado no seu arquivo .bashrc ou em /etc/bash.bashrc. Ele também origina automaticamente todos os arquivos em /etc/bash_completion.d/, para habilitar as extensões eays para novos comandos.

Para voltar ao meu objetivo (obter a conclusão de tarefas para o Gradle), parece que eu não era o único procurando algo assim e o script apropriado para colocar em /etc/bash_completion.d pode ser encontrado no Livro de receitas do Gradle :

#!/bin/bash

_gradle_complete
()
{
local cur tasks

COMPREPLY
=()
cur
=${COMP_WORDS[COMP_CWORD]}
tasks
='clean compile dists javadoc jar test war'
cur
=`echo $cur | sed 's/\\//g'`
COMPREPLY
=($(compgen -W "${tasks}" ${cur} | sed 's/\\//g') )
}

complete
-F _gradle_complete -o filenames gradle

E isso é tudo que existe! Quando você abre seu próximo shell, o novo preenchimento estará ativo e você obterá a conclusão de todas as tarefas que colocou na variável de tarefas no script. Basta colocar suas tarefas mais comuns lá. Não é um preenchimento dinâmico baseado no arquivo de construção, mas ainda é muito útil e ajuda a aumentar o seu fluxo na linha de comando.

E se você perder a conclusão de algum outro comando, basta dar uma olhada nos scripts existentes, aprender e adotar!