Todo desenvolvedor gosta de atalhos: são eles que nos tornam mais eficientes em nosso trabalho. É claro que existem atalhos bons e atalhos ruins (codificação preguiçosa, falta de revisão de segurança etc.), mas vamos nos ater aos positivos e falar sobre um bom atalho: os aliases do bash.


Todos nós temos comandos que executamos regularmente, mas não conseguimos nos lembrar ou simplesmente não nos importamos em digitar constantemente, como remover todas as imagens e contêineres do Docker ou derrubar e imediatamente trazer à tona um projeto do Docker. A maioria dos comandos que executamos com frequência todos os dias são padronizados; talvez um ou dois parâmetros mudem. Vamos dar uma olhada em como é fácil criar aliases para que o senhor possa ser mais produtivo!


Como criar um alias básico


Para criar um alias, comece abrindo ~/.bash_profile em qualquer editor de texto que o senhor tenha disponível. O formato para criar um alias é o seguinte:



# alias-name="command to do thing"

alias docker-refresh="docker-compose down && docker-compose up"
alias serve-dir="python -m SimpleHTTPServer"


Recomendo nomear seus aliases de forma que não entrem em conflito com executáveis existentes ou futuros. O senhor poderia adicionar um “namespace” ou prefixo a eles, por exemplo. Para garantir que o alias funcione em seu shell depois de terminar de editar .bash_profile, execute o seguinte:



source ~/.bash_profile


Criar um alias básico é bastante simples, mas e se o seu alias exigir o uso de argumentos? Esse caso é um pouco diferente.


Aliases com Argumentos


Se o comando mais simples que desejamos executar exigir um ou dois argumentos, precisaremos usar algo mais avançado do que o formato básico de alias do bash: precisaremos de uma função.


Digamos que queremos executar um comando que requer um argumento – faríamos algo assim:



# Serve a directory on a given port
# https://davidwalsh.name/serve-directory-python
# $1 = port
# Example: servedir 8080
servedir() {
  # Allow myself to change the port ($1)
  python -m SimpleHTTPServer "$1"
}

# Scrape images with wget
# https://davidwalsh.name/scrape-images-wget
# $1 = url
# Example: scrapeimages https://davidwalsh.name/
scrapeimages() {
  wget -nd -H -p -A jpg,jpeg,png,gif -e robots=off $1
}

# Remove audio from video
# https://davidwalsh.name/remove-audio-video
# $1 = source file
# $2 = destination
# Example: removeaudio myvideo.webm myvideo-silent.mp4
removeaudio() {
  ffmpeg -i $1 -vcodec copy -an $2
}


Suas funções podem conter qualquer número de instruções para que o senhor possa criar comandos avançados:



startover() {
  echo 'Killing everything'
  rm -rf build/
  docker-compose down
  docker rm -f $(docker ps -a -q)
  docker rmi -f $(docker images -q)
  echo 'Everything killed, my lord'
}


Os aliases são muito fáceis de criar e podem aumentar sua produtividade. Durante anos, tive preguiça de dedicar alguns momentos para criar aliases e, olhando para trás, essa preguiça me custou caro. Ao continuar desenvolvendo um novo projeto, reserve alguns momentos para criar aliases para comandos usados com frequência – o senhor se agradecerá mais tarde.