Utilizando Alias para produtividade no terminal
Tags: ptbr, braziliandevs, productivity, terminal
Published: 2021-10-20 00:12:47

Utilizar o terminal faz parte do dia a dia de todo programador, muitas vezes o uso desse terminal é para realizar ou executar quase sempre os mesmos comandos, alguns deles podem ser mais simples ou mais complexos. Desta forma, o quão bom seria possuirmos atalhos para esses comandos? Vamos ver abaixo como criar-los. 

OBS: Todo esse post foi testado apenas no linux e macOS, não sei como é o funcionamento de algo parecido no windows.

## Alias

O comando *alias* (*apelido* em português, eu particularmente também chamo de atalhos), permite definirmos um apelido para um determinado comando.   

Podemos definir esse apelido dentro do arquivo `.profile` (dependendo do seu sitema operacional pode ser `.bashrc`, `.zshrc` ou algum similar) no diretório raiz de um usuário.  

No meu caso vou editar o arquivo `.zshrc` e adicionar no final dele a linha abaixo.

```sh
alias ola="echo 'Isso foi impresso utilizando alias'"
```

Após editar e salvar o arquivo, no terminal digite o comando abaixo para que ele considere as ultimas alterações realizadas no arquivo.

```sh
source ~/.zshrc
``` 

Depois disso podemos testar se o apelido vai funcionar, então digite apenas `ola` no terminal para ver o que acontece, no meu caso o resultado foi o mostrado abaixo.
```
mm@MacBook-Pro-de-Marcelo ~ % ola
Isso foi impresso utilizando alias
```

Pronto, já vimos na prática como criar um apelido para um determinado comando, mas agora vamos utilizar esses atalhos para coisas mais interessantes e uteis.

## Atalhos git

Os atalhos que mais utilizo no meu terminal são do git, vou deixar abaixo todos eles, sendo que cada pessoa pode modificar os atalhos conforme o seu gosto.

```sh
alias gits="git status"
alias gita="git add --all"
alias gitc="git commit -m"
alias gitac="gita && gitc"
alias gitamend="gita && git commit --amend && git push -f"
alias gitp="git push"
alias gitacp="gitac \"push\" && gitp"
alias gitf="git fetch --all"
alias gitfp="gitf && git pull"
alias gitl="git log --pretty=format:'%C(yellow)%cr %C(cyan)%H %C(green)%an %C(blue)%d %C(white)%s'"
alias gitche="git checkout"
alias gitchemaster="git checkout master"
alias gitchedevelop="git checkout develop"
alias gitchenew="git checkout -b"
alias gitm="git merge"
alias gitdelbranchlocal="git branch -d"
alias gitdelbranchremote="git push origin --delete"
alias gitb="git branch -a"
alias gittag="git tag"
alias gittagpush="git push origin --tags"
```

Isso também ajuda para quando esquecemos de algum comando não precisar pesquisar por ele em outros lugares.

## Atalhos npm

Outra ferramenta que utilizo bastante é o npm, desta forma também tenho uma série de atalhos para ele.
```sh
alias nr="npm run"
alias nrd="npm run dev"
alias nrt="nr test"
alias nrcopen="brave-browser coverage/lcov-report/index.html"
alias nrc="npm run test:coverage"
alias nrco="nrc && nrcopen"
alias covo="nrco"
alias nrb="nr build"
alias ns="npm start"
alias ni="npm install"
alias nu="npm uninstall"
alias npmrmi="rm -rf node_modules && rm -f package-lock.json && npm i"
```

## Atalhos ssh

Sempre que preciso conectar em uma maquina ou servidor por ssh, preciso lembrar ou buscar qual o IP da maquina em algum outro lugar. Então também resolvi esse problema utilizando uma outra sessão de atalhos.

```sh
alias sshProjetoHomolog="ssh homologUser@192.168.1.100"
alias sshProjetoProd="ssh prodUser@192.168.1.101"
alias sshGitlab="ssh gitlabUser@192.168.1.102"
```

## Atalhos VS Code e Docker


```sh
alias cdProjeto="cd ~/developer/projeto"
alias cdProjetoDocker="cdProjeto && cd scripts/docker"
alias cdProjetoFront="cdProjeto && cd projeto-frontend"
alias cdProjetoServer="cdProjeto && cd projeto-server"
alias cdProjetoWorker="cdProjeto && cd projeto-worker"

# Abre no vscode o projeto
alias projetoOpen="cdProjeto && code projeto.code-workspace"

# Build total ou parcial 
alias projetoBuild="cdProjetoDocker && docker-compose -f docker-compose.local.yml build --no-cache"
alias projetoBuildServer="projetoBuild projeto-server"
alias projetoBuildWorker="projetoBuild projeto-worker"

# Execução total ou parcial
alias projetoRun="cdProjetoDocker && docker-compose -f docker-compose.local.yml up"
alias projetoRunServer="projetoRun projeto-server"
alias projetoRunWorker="projetoRun projeto-worker"
alias projetoRunFront="cdProjetoFront && ns"

# Build and Run
alias projetoBuildAndRun="cdProjetoDocker && projetoBuild && projetoRun"

# stop
alias projetoStop="cdProjetoDocker && docker-compose -f docker-compose.local.yml down"

```

compare a enorme diferença entre digitar todos os comandos na mão
```sh
cd ~/developer/projeto/scripts/docker
docker-compose -f docker-compose.local.yml build --no-cache
# Esperar a build terminar
docker-compose -f docker-compose.local.yml up

```

Substiindo todos os comandos acima por um atalho:

```sh
projetoBuildAndRun
```

As vezes o tempo de espera é o maior vilão, pois enquando gera a build vc vai pro navegador ou pra caixa de e-mails e quando volta terminal esta ocioso esperando pelo próximo comando.  

Pode bater o enter e ir fazer um café e quando voltar tudo vai estar OK, sem perca de tempo com terminal ocioso na espera pelo próximo comando.


## Dica extra

Eu mantenho um repositório privado no meu github com alguns comandos de setup e instação, para quando eu formatar minha maquina possa buscar esses comandos e scripts de uma forma bem rápida. Também passei a adicionar dentro desse repositório um arquivo que contem todos os meus alias, desta forma eu apenas importo o arquivo `.myCustomAlias` de dentro do meu repositório lá no arquivo `.zshrc`, para fazer essa importação basta adicionar a linha abaixo no arquivo `.profile` ou `.zshrc`.

```sh
source ~/path-to-my-repo/.myCustomAlias
```

Espero que tenha ajudado e inspirado vocês a criarem seus próprios atalhos, apelidos, aliases (como preferirem chamar).