Uma Melhor Experiência Linux com o Shell Fish

Os dias de comandos crípticos e sintaxe rígida ficaram para trás. Por que gastar mais tempo decifrando páginas de manual do que escrevendo scripts ou navegando pelo seu sistema? Adote o poder e a simplicidade do shell fish, seu ingresso para uma experiência Linux mais suave e intuitiva.

Aprenda a transformar sua jornada no Linux com o shell fish, desde sua interface amigável até suas extensas opções de personalização.

Diga olá a fluxos de trabalho simplificados e uma nova confiança em suas habilidades no Linux!

Pré-requisitos

Antes de começar, reserve um momento para garantir que você tenha coberto os seguintes itens essenciais para acompanhar este tutorial:

  • O Shell Fish está instalado em sua máquina – Este tutorial utiliza o fish-3.7.0, a versão mais recente até o momento desta escrita.
  • A Linux system – This tutorial uses an Ubuntu 22.04 LTS for demonstrations, but other distributions will work.

Explorando Validações de Comandos, Autocompletar e Sugestões

Com o shell fish instalado, mergulhe no shell fish para execuções de comandos sem problemas. O shell fish oferece feedback em tempo real e sugestões contextualmente conscientes para comandos, nomes de arquivos e argumentos.

Mas primeiro, você precisa acessar o shell fish antes de investigar as validações de comandos, autocompletar e sugestões.

Para explorar esse recurso que permite identificar e corrigir erros antes mesmo de executá-los, siga os passos abaixo:

1. Abra um terminal e execute o comando fish abaixo para acessar o shell fish.

fish
Accessing the fish shell

2. Em seguida, digite a primeira letra do comando ls para tentar listar todos os arquivos no seu diretório atual.

Como mostrado abaixo, a letra ‘l‘ fica vermelha porque o shell fish não a reconhece como um comando válido. Esta indicação visual imediata indica que algo está errado com o comando.

Mas não se preocupe! Graças à sugestão automática, a letra ‘s‘ aparece em mute, sugerindo o comando correto.

Testing command validation

3. Agora, pressione a seta para a direita ou as teclas Ctrl+F para aceitar o comando ls sugerido automaticamente.

Observe que a letra ‘l’ mudou de vermelho para azul porque o shell fish agora reconhece seu comando como ls.

Accepting the auto-suggested command

Definindo Aliases de Comando no Arquivo de Configuração do Fish

Além do feedback em tempo real e sugestões contextualizadas, o fish oferece uma maneira poderosa e flexível de personalizar seu ambiente de linha de comando – o arquivo de configuração do fish. Ao contrário de outros shells que podem usar vários arquivos de configuração, o fish usa principalmente um único arquivo chamado config.fish localizado no diretório ~/.config/fish/.

Para ver como as configurações afetam o shell fish, comece definindo aliases de comando da seguinte forma:

1. Abra o arquivo de configuração do fish usando seu editor de código ou texto preferido, como nano ou vim, mas este tutorial usa o primeiro.

nano ~/.config/fish/config.fish

Depois de aberto, você verá o conteúdo inicial do arquivo de configuração do shell fish, que pode conter configurações padrão ou estar relativamente vazio. Este estado inicial depende se você ou o processo de configuração do seu sistema adicionaram configurações anteriormente.

O arquivo pode incluir apenas comentários ou blocos condicionais básicos para novas instalações, como o abaixo.

Opening the fish configuration file

2. Dentro do bloco if, adicione a seguinte função, salve as alterações e feche o editor.

Neste ponto, você está criando configurações personalizadas no arquivo de configuração do fish, e esta função define um alias (c) para o comando clear.

# Esta função cria um alias para o comando "clear"
function c
    clear
end

? Nota: Cada função definida tem um arquivo .fish correspondente no diretório ~/.config/fish/functions/ (ou seja, c.fish).

Creating an alias for the clear command

3. Execute o seguinte comando para source o arquivo de configuração (config.fish).

Este comando não tem saída para o terminal, mas aplica as alterações de configuração à sua sessão atual.

? Este arquivo de configuração do fish é executado automaticamente cada vez que uma nova sessão do fish é iniciada e é o lugar perfeito para definir personalizações do shell.

source ~/.config/fish/config.fish

4. Em seguida, digite c no prompt para verificar suas alterações.

Observe que a letra ‘c‘ fica azul, pois o shell fish a reconhece como o comando clear. Esse comportamento indica uma alteração bem-sucedida na configuração do fish.

Veja como a letra ‘c‘ fica azul? Essa mudança ocorre porque o shell fish reconhece a letra ‘c‘ como o comando clear. Esse comportamento sinaliza uma atualização bem-sucedida na sua configuração do fish.

Agora, por que não configurar mais alguns aliases para aqueles comandos confiáveis aos quais você continua retornando sempre que necessário?

Verifying the newly created alias for the clear command works

Personalizando o Prompt do Shell Fish

Além de configurar aliases para operações mais suaves, o fish lhe dá o poder de personalizar seu prompt, adicionando um toque pessoal ao seu shell. Em vez de caminhos de diretório longos, aproveite um prompt mais limpo e organizado.

Para personalizar o prompt do shell fish, execute as seguintes ações:

1. Abra o arquivo de configuração do fish (~/.config/fish/config.fish) e adicione a seguinte função.

Esta função personaliza o prompt do seu shell fish para exibir (echo) um cifrão ($) seguido de um espaço.

# Personalizando o prompt do fish
function fish_prompt
    echo '$ '
end
Customizing the fish shell prompt

2. Salve as alterações no arquivo de configuração do fish e saia do editor.

3. Agora, source o arquivo de configuração para aplicar suas alterações.

source ~/.config/fish/config.fish

Depois de fonteado, você verá as mudanças no prompt como na captura de tela a seguir.

Sourcing the fish configuration file to apply the shell prompt changes

Conservando Alterações entre Sessões

Você viu como criar personalizações no shell fish. Mas uma coisa a notar: Essas configurações estão disponíveis apenas na sessão atual.

O que acontece quando você fecha a sessão atual e abre uma nova? Puf! Suas configurações meticulosamente elaboradas desaparecem—que chato, não é mesmo? Mas não tema, pois ainda há esperança. Deixe o comando funcsave resgatar suas configurações do esquecimento!

Para manter suas configurações entre sessões, siga os passos abaixo:

1. Abra o arquivo de configuração do fish e acrescente o comando funcsave a cada function juntamente com o nome da função, assim:

Appending the funcsave command to persist functions across sessions

2. Salve suas alterações e feche o editor e o terminal.

3. Abra uma nova sessão do terminal e execute o comando fish abaixo para acessar o shell fish.

fish

Se os comandos funcsave que você adicionou funcionarem para persistir suas configurações, você verá mensagens como as abaixo.

Accessing the fish shell to verify the configurations persist across sessions

Configuração e Persistência de Variáveis de Ambiente

Embora as funções de persistência sejam ótimas, gerenciar valores globalmente acessíveis leva a criação de scripts de shell a um nível superior — configurando variáveis de ambiente. Ao contrário dos shells tradicionais que dependem do export, o fish usa o set com opções para controlar o escopo da variável e o comportamento de exportação.

Mas há um porém, sabe? Ah, você adivinhou certo! Uma variável definida via comando set no terminal só é acessível na sessão atual.

Para definir e persistir variáveis de ambiente, a opção -gx será útil da seguinte forma:

1. Adicione o seguinte comando para set a variável MY_VARIABLE no arquivo de configuração do fish como global. Abaixo está como a opção -gx funciona:

  • -g – Torna a variável global, acessível a partir de qualquer escopo dentro do mesmo ambiente de usuário.
  • -x – Exporta a variável, tornando-a disponível para quaisquer comandos externos ou programas lançados a partir do fish.
# Definir MY_VARIABLE globalmente e exportá-la
set -gx MY_VARIABLE HelloWorld
Setting an environment variable in the fish configuration file

2. Salve as alterações de configuração, em seguida, feche o editor e o terminal.

3. Abra uma nova sessão de terminal, acesse o shell fish e execute o seguinte comando para confirmar as alterações.

echo $MY_VARIABLE

A saída abaixo confirma que as alterações foram aplicadas em todas as sessões.

Verifying variable persistence

4. Após confirmar, adicione o seguinte comando set ao arquivo de configuração do fish, salve as alterações e feche o editor.

Este comando torna a variável MY_UNIVERSAL_VARIABLE global em todas as sessões, mesmo após reinicializações.

# Definir MY_UNIVERSAL_VARIABLE como universal e exportá-lo
set -Ux MY_UNIVERSAL_VARIABLE universal

Veja como a bandeira -Ux funciona abaixo:

  • -U – Torna a variável MY_UNIVERSAL_VARIABLE universal, garantindo que seja compartilhada em todas as sessões terminais atuais e futuras, incluindo as de diferentes usuários.
  • -x – A variável é exportada para processos filhos, tornando-a acessível a quaisquer comandos ou scripts invocados a partir da sessão atual.
Setting a universal environment variable in the fish configuration file

5. Abra uma nova sessão terminal, acesse o shell fish e execute o comando echo abaixo para verificar as alterações.

echo $MY_UNIVERSAL_VARIABLE

Se tudo correr bem, você terá a seguinte saída, indicando que as alterações foram aplicadas em todas as sessões.

Verifying universal variable persistence

? Além do arquivo de configuração do fish, aproveite o fish_config no terminal para personalizações rápidas e automáticas. Este comando inicia uma interface web em seu navegador, permitindo ajustes rápidos, configurações e gerenciamento de funções e variáveis de forma amigável ao usuário.

Gerenciando Plugins do Fish com o Gerenciador de Pacotes Fisher

O shell Fish é impressionante por si só, certo? Mas sabe o que é ainda melhor? Quando você começa a integrar plugins, ele se torna ainda mais poderoso. Esses plugins expandem as capacidades do shell Fish, trazendo novos comandos, utilitários e integrações para aprimorar significativamente sua experiência na linha de comando.

Um bom exemplo é o Fisher, um gerenciador de pacotes projetado para o shell Fish. Este plugin é construído com desempenho e simplicidade em mente, e é leve.

? Fisher é leve na gestão de plugins para o shell Fish e não é diretamente comparável aos gerenciadores de pacotes em nível de sistema. Essa distinção é evidente em relação ao tamanho e complexidade dos pacotes que ele gerencia.

Para gerenciar plugins do Fish, você deve primeiro instalar o Fisher seguindo as etapas abaixo:

Abra seu terminal, acesse o shell Fish e execute o seguinte comando para baixar e instalar o Fisher. Este comando obtém o script de instalação do Fisher e o redireciona para source, que executa o script na sessão atual do shell Fish via curl.

curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher

Depois de instalado, você verá a seguinte saída.

Installing the Fisher package manager

Agora, execute o comando fisher abaixo para confirmar a instalação visualizando a --version atualmente instalada do Fisher em seu sistema.

fisher --version
Confirming the installed Fisher version

Instalando o Plugin GitNow

Agora que você tem o Fisher em funcionamento, qual é o próximo passo? Que tal fortalecer seu shell de peixe com alguns plugins legais? GitNow, por exemplo, é um conjunto de ferramentas que potencializa seu fluxo de trabalho Git dentro do shell de peixe – tentador.

O GitNow oferece comandos simplificados para tarefas Git rotineiras, aumentando a produtividade e simplificando sua rotina de comandos Git.

Para instalar o GitNow usando o gerenciador de pacotes Fisher, siga estas etapas:

1. No seu shell de peixe, execute o seguinte comando fisher para instalar o plugin GitNow (joseluisq/gitnow).

Este comando instrui o Fisher a buscar e integrar o GitNow na sua configuração do peixe, tornando sua gama de atalhos Git imediatamente disponíveis.

fisher install joseluisq/gitnow
Installing the GitNow plugin

2. Uma vez instalado, execute o comando gitnow abaixo para confirmar que o GitNow está corretamente instalado.

Este comando exibe a versão atualmente instalada do GitNow, mas apenas se os comandos do GitNow forem reconhecidos no seu shell.

gitnow --version
Verifying the GitNow installation

3. Por último, execute este comando fisher para listar todos os plugins que o Fisher gerencia, incluindo o GitNow.

fisher list

Abaixo, você pode ver o plugin GitNow e o próprio plugin Fisher.

Viewing all plugins managed by Fisher

Removendo Plugins do Shell de Peixe

O seu shell de peixe está afogado em plugins? Como se você estivesse deixando de lado para encontrar o que precisa? Limpe seu ambiente do shell de peixe removendo plugins desnecessários.

Para remover um plugin gerenciado pelo Fisher no seu shell fish, siga estes passos:

1. Execute o seguinte comando para listar todos os plugins atualmente instalados.

fisher list

Escolha um da lista que deseja remover.

Viewing all installed plugins

2. Em seguida, execute o comando fisher remove abaixo, seguido pelo nome do plugin (joseluisq/gitnow) a ser removido.

fisher remove joseluisq/gitnow

Este comando diz ao Fisher para desinstalar o plugin GitNow do seu ambiente do shell fish.

Removing the GitNow plugin

3. Agora, execute o mesmo comando fisher list para confirmar que o plugin GitNow foi removido com sucesso.

fisher list

O plugin GitNow não deve mais aparecer na lista de plugins instalados.

Verifying the GitNow plugin removal

Desinstalando o Gerenciador de Pacotes Fisher

Como você viu, o gerenciador de pacotes Fisher é realmente útil. Mas desinstalá-lo pode ser a melhor escolha se você se sentir insatisfeito ou tiver problemas com o Fisher.

Para desinstalar completamente o Fisher do seu shell fish, siga o seguinte:

Execute o comando abaixo para listar e remover o fisher e todos os plugins instalados via Fisher.

fisher list | fisher remove
Listing and removing all plugins

Alternativamente, execute o seguinte comando para remover apenas o fisher em si.

fisher remove jorgebucaran/fisher
Removing Fisher only

Explorando o Gerenciador de Pacotes Oh My Fish

Quando já está a navegar com o Fisher, por que considerar Oh My Fish? Você já experimentou o poder dos plugins do shell fish com o Fisher. Mas aqui está a questão: este framework abre um novo mundo de personalização para o shell fish, oferecendo uma extensa coleção de temas e plugins.

Para ver o que o Oh My Fish tem reservado para você, instale primeiro este gerenciador de pacotes com o seguinte:

Execute o seguinte comando curl para baixar e executar o script de instalação do Oh My Fish (https://get.oh-my.fish) dentro do shell fish.

curl -L https://get.oh-my.fish | fish

Se for bem-sucedido, terá uma saída semelhante à seguinte.

Installing the Oh My Fish package manager

Uma vez instalado, execute o seguinte comando omf para verificar a versão instalada do Oh My Fish.

omf --version

A successful response, as shown below, indicates that Oh My Fish is ready and waiting to transform your fish shell experience.

Verifying the Oh My Fish installation

Personalizando o Ambiente com Temas do Oh My Fish

Cansado da mesma aparência do shell fish? Por que não adicionar um toque de personalidade? Dê um makeover ao seu ambiente do shell fish com temas frescos e personalizados do Oh My Fish.

Para personalizar o ambiente do seu shell fish, você deve instalar temas com os seguintes passos:

1. Abra o arquivo de configuração do fish e remova a função fish_prompt que define como o seu prompt é exibido. Fazê-lo garante que o prompt personalizado que você definiu não entre em conflito ou substitua os temas fornecidos pelo Oh My Fish.

? Os temas vêm com prompts exclusivos cruciais para sua aparência e função. Desativar seu prompt personalizado (fish_prompt) garante que seu tema Oh My Fish escolhido integre totalmente seu design e recursos ao seu shell fish.

2. Em seguida, exclua (rm) o arquivo ~/.config/fish/functions/fish_prompt.fish. Este comando não tem saída, mas excluir este arquivo garante que o shell fish reverta para seu prompt padrão.

rm ~/.config/fish/functions/fish_prompt.fish

3. Execute este comando source para que as alterações no arquivo de configuração do fish tenham efeito.

source ~/.config/fish/config.fish
Sourcing the fish configuration file

4. Agora, execute o seguinte comando omf para descobrir o tema perfeito para o seu shell fish.

omf theme

Escolha um tema que deseja integrar ao shell fish (ou seja, cbjohnson).

? Visite o repositório oficial do GitHub para temas do Oh My Shell para ver como cada tema se parece antes de instalá-los.

Listing available Oh My Fish themes

? Aprimore seu shell fish com plugins executando o seguinte comando para instalar plugins. Visite o repositório do GitHub do OMF para ver uma lista de plugins para instalar. omf install <nome_do_plugin>

5. Em seguida, execute o comando abaixo para instalar o tema escolhido no passo quatro (cbjohnson).

omf install cbjohnson

Uma vez instalado, seu prompt muda imediatamente, como no exemplo a seguir.

Installing an Oh My Fish theme (cbjohnson)

? Dica: Alterne rapidamente entre temas quando tiver dois ou mais executando o seguinte comando. omf theme <nome_do_tema>

Desinstalando Oh My Fish

Oh My Fish é uma joia para dar um toque especial à sua experiência no terminal. Mas se você quiser uma mudança de cenário ou experimentar algo novo, desinstalar Oh My Fish dá um novo começo ao seu shell Fish.

Para desinstalar Oh My Fish, siga os seguintes passos:

1. Execute os seguintes comandos rm para excluir todos os arquivos relacionados ao Oh My Fish.

rm -rf ~/.local/share/omf
rm -rf ~/.config/omf

Depois de removidos, você verá o tema inicialmente instalado desaparecer.

Deleting Oh My Fish-related files

2. Em seguida, execute cada comando abaixo para excluir mais arquivos relacionados ao Oh My Fish.

Esses comandos não têm saída, mas a exclusão desses arquivos garante que todos os vestígios do Oh My Fish sejam removidos do seu sistema.

rm -rf ~/.local/share/omf/pkg/omf/functions/omf.fish
rm ~/.config/fish/conf.d/omf.*

3. Agora, execute o seguinte comando omf para verificar a exclusão.

omf --version

Você verá um erro como o seguinte, dizendo que o comando omf não foi encontrado e que Oh My Fish foi completamente desinstalado.

Verifying the Oh My Fish deletion

Configurando Fish como o Shell Padrão

Se você adorou usar o shell Fish para aprimorar sua experiência no Linux, por que não configurá-lo como seu shell padrão? Dessa forma, você economiza o trabalho de alternar sempre que abrir um novo terminal.

Para definir o fish como seu shell padrão, siga os seguintes passos:

1. Execute o comando abaixo para encontrar o caminho onde o shell fish está localizado.

which fish

Copie o caminho para a área de transferência, pois você precisará dele nos próximos passos.

Finding the path to the fish shell

2. Em seguida, execute o seguinte comando para adicionar o fish à lista de shells aceitáveis em /etc/shells.

echo "/usr/bin/fish" | sudo tee -a /etc/shells
Adding fish to the list of acceptable shells

3. Por fim, execute o comando chsh abaixo para alterar seu shell padrão para o fish (/usr/bin/fish).

chsh -s /usr/bin/fish

Quando reiniciar sua máquina, o fish será seu shell padrão.

Changing the default shell to fish

? Dica: Altere de volta do fish para outro shell como o Bash como padrão repetindo todos os passos nesta seção. Certifique-se de especificar o caminho para o Bash nos passos dois e três, e então reinicie sua máquina para que as alterações sejam aplicadas.

Conclusão

Ao longo deste tutorial, você mergulhou fundo na essência do shell fish, descobrindo seus recursos poderosos e opções personalizáveis. Desde a definição de aliases até a personalização de prompts e persistência de variáveis de ambiente até o gerenciamento de plugins, o shell fish tem sido seu fiel escudeiro.

Você adquiriu insights para transformar sua experiência no Linux com o gerenciador de pacotes Oh My Fish. Além disso, aprendeu como descobrir e instalar novos plugins e temas, expandindo a funcionalidade e a estética do seu ambiente shell fish de forma fácil e eficaz.

Agora que você explorou o básico do shell fish, mergulhe mais fundo e desbloqueie seu potencial completo. Por que não experimentar com prompts personalizados como Powerline ou Starship para dar um toque personalizado ao seu shell?

Source:
https://adamtheautomator.com/fish-shell/