Um terminal funcional e de respeito
Tags: linux, terminal, zsh, ohmyzsh
Published: 2022-04-25 22:54:02

## O que você vai encontrar aqui ?

Olá meu caros! Hoje venho trazer para vocês um tutorial rápido para quem curte personalizações em terminal ou um shell diferente. Nesse tutorial, vou ensinar apenas a instalar o **zsh** e o **oh-my-zsh** **no linux** e também falarei um pouco sobre ambos. 

Em outro artigo explicarei sobre os plugins que utilizo bem como os meus scripts personalizados e em outro ensinarei como instalar algo similar no Windows utilizando o **oh my posh**. 

Vamos lá deixar esse terminal bonitão, boa leitura!

![Imagem do meu terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9hpll6i1s07zqhtkev8z.png)

### Antes de começar...

Vou deixar o link para meus dois gists que possuem minha configuração tanto para [Windows](https://gist.github.com/deverebor/91817e5c02a1e82987c6989d4cf397a3)(utilizando o oh-my-posh para personalização) quanto para [Linux](https://gist.github.com/deverebor/3f5164871377f78f4b704dd6099d473b) que será o ponto do artigo de hoje.

Nesses gist's encontra-se detalhadamente minha configuração para cada ambiente e também os plugins que utilizo.

#### Oque é zsh e oh-my-zsh ?

##### Zsh

Bom o zsh é um shell personalizado, por padrão todos os sistemas operacionais vem com um shell. Linux com o bash, Mac o mesmo e o Windows com o powershell.

> Se vem por padrão um, porque eu utilizaria um shell personalizado ?

Essa é uma pergunta excelente e com uma resposta simples. Depende do seu uso e qual tipo de usuário você é. 

O seu shell vai ser útil para todas as suas tarefas, não existe diferença discrepante entre o default e um que você venha instalar como o zsh, fish etc. Um shell custom vai te possibilitar ter uma experiencia diferente e diversas utilidades para o dia a dia como:

- Autocomplete
- Syntax higlight
- Scripts personalizados 
- etc...

##### oh-my-zsh

O oh-my-zsh vai ser uma ferramenta que possibilita a configuração e gerenciamento do seu zsh. Podendo auxiliar na configuração de novos plugins, temas e dependências.

### Um shell personalizado é para mim ?

Tendo isso tudo em mente você deve se perguntar se vale a pena ou não migrar de shell. O lado negativo disso é que algumas empresas podem barrar o uso de shell personalizado ou qualquer tipo de modificação no sistema operacional, normalmente empresas grandes dão uma máquina para o funcionário para que ele possa trabalhar e desenvolver.

Caso você esteja pensando em fazer isso no seu computador de trabalho, primeiro converse com seu gestor. Eu recomendo que seja feito na sua máquina pessoal.

Agora vamos para a melhor parte!

### Começando!

Antes de tudo vamos utilizar o linux como primeiro exemplo. Para instalar o zsh vamos adicioná-lo a nossa maquina.

```zsh
sudo apt install zsh -y
```

> Nesse comando estamos instalando o shell zsh e passando a flag `-y` que não pedirá para confirmar a instalação.

Após isso vamos instalar o [Oh-My-Zsh](https://ohmyz.sh/) que permitirá personalizar de forma mais fácil o nosso novo shell.

```zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```

Quando você rodar o script de instalação do **oh-my-zsh**, vai aparecer uma tela perguntando se você quer adicionar o zsh como shell padrão, basta digitar **y** e será feito.

Com o zsh e o oh-my-zsh instalado, se você der um `ls -la` na sua home, vai encontrar os seguintes arquivos:

![overview das pastas](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2hwjonnsy3b06s3fvoy8.png)

Aqui encontramos a pasta de instalação do oh-my-zsh e também o .zshrc que para nós no momento é o mais importante.

### Vamos configurar o terminal!

Com o passo anterior concluído chegamos na parte mais legal, configurar o seu terminal. Para iniciar vamos digitar o seguinte comando no termnal

```zsh
zsh
```

Isso vai possibilitar a incialização do shell no seu terminal, na finalização de todo o processo vai ser necessário reiniciar a sua máquina para ele ficar como padrão.

Então vamos inciar a configuração. Para isso é necessário abrir o arquivo `.zshrc` com o seu editor de texto, para usuários de base ubuntu vamos possuir o gedit. 

```zsh
gedit ~/.zshrc
```

Com o seu editor aberto você vai encontrar algo parecido com isso:

![visualização do arquivo zshrc](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijx40erxieth7isy4wt9.png)

> Aqui é onde vamos adicionar a partir de agora todas as nossas configurações, scripts, plugins etc.

Abaixo pode-se perceber onde ocorre a conexão entre o seu shell(zsh) e o nosso "gestor" desse shell o oh-my-zsh.

![conexão entre o zsh e o oh-my-zsh](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5j0slc7fm4zoojrex2mx.png)

#### Alterando nosso tema!

O oh-my-zsh te proporciona milhares de temas para adicionar ao seu terminal, você pode visualizar todos [clicando aqui](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes).
No meu caso vou instalar um chamado [Spaceship](https://spaceship-prompt.sh/) que é o meu tema favorito.

Para alterar o seu tema do shell basta escolher um e altera-lo aqui:

![Imagem da seção de alteração do tema](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/py7yaw34f3tprahvuru3.png)

Basta remover o tema padrão que é o `robbyrussell` e adicionar o seu escolhido na wiki do Oh-My-Zsh(disponibilizado no começo desse tópico). 

Nesse ponto você já terá um terminal com um novo shell e um tema personalizado, para finalizar 100% será necessário reiniciar a sua máquina e então o seu shell padrão será o zsh. Mas caso queria seguir com o mesmo tema que utilizo basta prosseguir com a leitura!

#### Instalando e configurando o Spaceship

Clone o repositório

```zsh
git clone https://github.com/spaceship-prompt/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt" --depth=1
```

Symlink spaceship.zsh-theme para seu diretório de temas personalizados do oh-my-zsh:

```zsh
ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"
```

Coloque ZSH_THEME="spaceship" no seu `.zshrc` como foi explicado no tópico anterior.

Com ele instalado você vai possuir algo parecido com isso:

![Spaceship default](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rwews4lk00agnl3ei1mo.png)

E tadaaaaaaa!! Está ai seu terminal completamente personalizado e agora podendo visualizar versão do node, pacote do projeto e muito mais. Para finalizar 100% será necessário reiniciar a sua máquina e então o seu shell padrão será o zsh. 

Caso queira ter acesso a minha personalização do tema Spaceship basta acessar [meu gist](https://gist.github.com/deverebor/3f5164871377f78f4b704dd6099d473b)
 
Muito obrigado e até a próxima!