Dicas e configurações para seu sistema linux
Tags: beginners, wsl, tooling, programming
Published: 2024-05-10 13:55:52

Fala meu consagrado, quando eu comecei a minha jornada no linux não tinha ninguém para me ajudar e dar dicas de ferramentas para usar no meu terminal e melhorar minha usabilidade, por isso esse guia extra existe, ele ainda faz parte da jornada de configuração do linux, mas é algo bem extra espero que essas dicas possam te ajudar

## Comandos de Terminal

Se você não tem muita experiencia com terminal ou nunca usou um linux na vida, vale a pena ver esse [artigo](https://www.hostinger.com.br/tutoriais/comandos-linux) e dar um confere em alguns dos comandos que vão te acompanhar pelo dia a dia no linux

## Terminal mais bonito
Powerlevel10k é um plugin para o shell zsh que te da uma liberdade de personalizar o seu terminal e deixar ele a sua cara

> Antes de começar esse processo recomendo fortemente instalar e configurar alguma fonte de sua preferencia do [nerdfonts](https://www.nerdfonts.com/), para suportar os ícones do github

```bash
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
```

Substitua o tema que está no `.zshrc` pelo `powerlevel10k/powerlevel10k` e deve ficar assim:

Restarte o seu terminal e ele aparecerá assim, conclua os passos de acordo com seu gosto

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hb56saa9co8lfll65vmn.png)



> Caso queira saber mais sobre o powerlevel10k [clique aqui](https://github.com/romkatv/powerlevel10k?tab=readme-ov-file#powerlevel10k)

## Alias git
Alguns comando do git pode ser repetitivos e "grandes" caso queira "otimizar" seu digitar de comandos existem esses alias a seguir, é importante que você customize eles ao seu gosto e necessidade 

```zshrc
alias g=git
alias ga='git add'
alias gb='git branch'
alias gc='git commit --verbose'
alias gd='git diff'
alias gf='git fetch'
alias gg='git gui citool'
alias gl='git pull'
alias gm='git merge'
alias gp='git push'
alias gr='git remote'
```

## Alias parar execução de um contêiner

Esse comando para os contêineres em execução automaticamente sem destruir, a fim de preservar recursos do seu pc, é só adicionar ele no `.zshrc` e bau bau

```zshrc
alias docker-down='docker stop $(docker ps -a -q)'
```

## [Transferir wsl para outro disco](https://github.com/LpCodes/Moving-WSL-Distribution-to-Another-Drive)

As vezes temos um ambiente de dev todo configurado e queremos transferir ele para outro pc, esse guia abaixo vai te ajudar com isso.


## Lazygit

Uma interface gráfica para o git no terminal que pode te ajudar a identificar branchs, fazer cherrypick e até rebase

> O passo a passo a seguir será para a instalação no UBUNTU, caso queria instalar de outra forma, ou em outro ambiente linux, [clique aqui](https://github.com/jesseduffield/lazygit?tab=readme-ov-file#installation)

Rode o seguinte comando no terminal:

```bash
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit /usr/local/bin
```

Após a instalação resete se terminal e use o comando `lazygit` no seu terminal quando tiver dentro de um repositório q tem git e ele ficará assim:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lbej0gsby8m00wxua04y.png)



> Para saber mais sobre os comandos do lazygit, [clique aqui](https://github.com/jesseduffield/lazygit?tab=readme-ov-file#features)

## Lazydocker

Dos mesmos criadores de [lazygit](#lazygit) temos o lazydocker, que tem o intuito de ser uma interface gráfica para o docker no seu terminal, muito útil para ver algum log ou se existe algum container que persistiu, deletar volumes facilmente e outras funcionalidades

Podemos instalar o programa usando o [asdf](#asdf) que deixa tudo bem mais fácil, rode os seguintes comandos no terminal caso tenha o [asdf](#asdf) instalado:

```bash
asdf plugin add lazydocker https://github.com/comdotlinux/asdf-lazydocker.git
asdf list all lazydocker
asdf install lazydocker latest
asdf global lazydocker latest
echo "alias lzd='lazydocker'" >> ~/.zshrc
```

Após instalar no terminal rode o comando `lazydocker` e ele ficará assim:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sx50de0svquw65mjn3md.png)



> Para saber mais sobre os comandos do lazydocker, [clique aqui](https://github.com/jesseduffield/lazydocker?tab=readme-ov-file#cool-features)

## Melhor visualização do git log

Esse é um alias de uma visualização de git log, para o git, com ela será possível se orientar de maneira mais fácil, [clique aqui](https://gist.github.com/aalmeida00/b87181f76785b2413d06e56dc6c499db), cole o comando da 1 opção no linux e quando você digitar `git lg` a sua visualização de commits vai ficar mais limpa e direta.

## Definição automática de remote push git

O seguinte comando faz uma magica para setar automaticamente o caminho certo do seu push no git, é uma mão na roda, um oferecimento do Andre
```bash
git config --global push.default current
git config --global push.autoSetupRemote true
```

## Definição automática da versão pelo nvm

O @alvarofg conseguiu um script que ativa a versão automatica do node a partir de um nvm assim que se entra em um projeto 

```bash
# place this after nvm initialization!
autoload -U add-zsh-hook
load-nvmrc() {
  local node_version="$(nvm version)"
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$node_version" ]; then
      nvm use
    fi
  elif [ "$node_version" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
```

E essa foram algumas das dicas e configurações para seu sistema linux, espero que tenha sido útil, bom código e não se esqueça de seguir nossas redes sociais.