Muito do meu .profile
, como tenho certeza de que é semelhante ao .profile
dos outros, é construído sobre atalhos e ajudantes para os comandos que são digitados (figurativamente) milhões de vezes por dia.
Considerando a quantidade de repositórios que estou constantemente fazendo malabarismos, tendo a alternar constantemente entre os diretórios que contêm o código-fonte. No início de meus dias de Linux, comecei a manter todos os projetos em andamento, ~/src
então acabou sendo bastante simples remover (literalmente) um punhado de caracteres digitados com frequência de meus fluxos de trabalho contínuos.
function csrc {
if [ -d "${HOME}/src/${1}" ] ; then
cd "${HOME}/src/${1}"
else
echo "directory ${1} not found"
fi
}
E ontem eu estava procurando uma desculpa para descobrir como implementar rotinas de conclusão de bash customizadas e isso resultou.
function csrc_complete {
local cur
COMPREPLY=()
if [ $COMP_CWORD != 1 ] ; then
return
fi
cur="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=( $(for d in $HOME/src/$cur* ; do basename $d ; done) )
if [ "${COMPREPLY[0]}" == "${cur}*" ] ; then
COMPREPLY=()
return
else
return 0
fi
}
complete -F csrc_complete csrc
Ambos os fragmentos estão aninhados em algumas das camadas superiores da minha corrente .profile
.