Uma melhor experiência no Linux com o Fish Shell

Chegaram ao fim os dias de comandos crípticos e sintaxe rígida. Por que gastar mais tempo decifrando páginas de manual do que escrevendo scripts ou navegando pelo seu sistema? Abrace o poder e a simplicidade do shell fish, seu bilhete 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 confiança recém-descoberta em suas habilidades no Linux!

Pré-requisitos

Antes de começar, reserve um momento para garantir que você tenha 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 comando sem interrupções. O shell fish oferece feedback em tempo real e sugestões sensíveis ao contexto para comandos, nomes de arquivos e argumentos.

Mas primeiro, você precisará acessar o shell fish antes de explorar validações de comando, autocompletar e sugestões.

Para explorar este recurso que permite identificar e corrigir erros antes mesmo de executá-los, siga as seguintes etapas:

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 pois o shell fish não reconhece como um comando válido. Este sinal visual imediato indica que algo está errado com o comando.

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

Testing command validation

3. Agora, pressione a seta para a direita ou as teclas Ctrl+F para aceitar a sugestão automática do comando ls.

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

Accepting the auto-suggested command

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

Além do feedback em tempo real e das sugestões contextuais, 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 utiliza 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 o nano ou vim, mas este tutorial usa o primeiro.

nano ~/.config/fish/config.fish

Uma vez 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 já adicionaram configurações anteriormente.

O arquivo pode incluir apenas comentários ou blocos condicionais básicos para novas instalações, como o exemplo 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 produz saída no 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 o 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ê sempre retorna quando a vontade bate?

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 oferece 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 por 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

Uma vez fonteado, você verá as alterações no prompt como na captura de tela a seguir.

Sourcing the fish configuration file to apply the shell prompt changes

Persistindo Alterações Entre Sessões

Você viu como criar personalizações no shell fish. Mas uma coisa a observar: 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 é? Mas não tema, ainda há esperança. Deixe o comando funcsave resgatar suas configurações do esquecimento!

Para persistir suas configurações entre sessões, prossiga com o seguinte:

1. Abra o arquivo de configuração do fish e adicione o comando funcsave a cada function junto 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 de terminal e execute o comando fish abaixo para acessar o shell fish.

fish

Se os comandos funcsave que você adicionou funcionam 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 de acesso global eleva a programação de shell a um novo patamar—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á uma pegadinha, sabe? Ah, você adivinhou! Uma variável configurada via comando set no terminal só é acessível na sessão atual.

Para configurar 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 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 iniciados 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 na configuração, então feche o editor e o terminal.

3. Abra uma nova sessão de terminal, acesse o shell do 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. Uma vez confirmado, 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.

# Defina MY_UNIVERSAL_VARIABLE como universal e exporte-o
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 de terminal atuais e futuras, incluindo aquelas 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 de terminal, acesse o shell do 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 lança uma interface web em seu navegador, permitindo ajustes rápidos, configurações e gerenciamento de funções e variáveis de forma amigável para o usuário.

Gerenciando Plugins do Fish com o Gerenciador de Pacotes Fisher

O shell fish é impressionante por si só, certo? Mas adivinha só? 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 melhorar 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.

? O Fisher é leve na gestão de plugins do 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 com as etapas delineadas a seguir:

Abra seu terminal, acesse o shell fish e execute o seguinte comando para baixar e instalar o Fisher. Este comando busca o script de instalação do Fisher e o redireciona para o source, que executa o script dentro da 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

Uma vez 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ê já está com o Fisher funcionando, o que vem depois? Que tal reforçar o seu shell de peixe com alguns plugins legais? GitNow, por exemplo, é um conjunto de ferramentas que potencializa o seu fluxo de trabalho Git dentro do shell de peixe — tentador.

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

Para instalar o GitNow usando o gerenciador de pacotes Fisher, siga estes passos:

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 fish, tornando sua variedade 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 se 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 fim, 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á afundando em plugins? Como se você estivesse deixando de arrumar a bagunça para encontrar o que precisa? Arrume o ambiente do seu 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 indica ao Fisher para desinstalar o plugin GitNow do seu ambiente shell fish.

Removing the GitNow plugin

3. Agora, execute novamente o 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ê estiver insatisfeito ou enfrentando 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 você já está navegando com Fisher, por que considerar Oh My Fish? Você já experimentou o poder dos plugins do shell de peixe com o Fisher. Mas aqui está o detalhe: este framework abre um novo reino de personalização para o shell de peixe, oferecendo uma extensa coleção de temas e plugins.

Para ver o que o Oh My Fish tem guardado 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 bem-sucedido, você 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

Você está cansado da mesma aparência antiga do shell de peixe? Por que não adicionar um toque de personalidade? Dê ao seu ambiente do shell de peixe uma reforma com temas frescos e personalizados do Oh My Fish.

Para personalizar o ambiente do seu shell de peixe, você deve instalar temas com estes passos:

1. Abra o arquivo de configuração do peixe 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 com ou substitua os temas fornecidos pelo Oh My Fish.

? Os temas vêm com prompts únicos essenciais para sua aparência e função. Desativar seu prompt personalizado (fish_prompt) garante que o 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 possui saída, mas ao 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 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 que você escolheu no passo quatro (cbjohnson).

omf install cbjohnson

Depois de instalado, seu prompt muda imediatamente, como no exemplo a seguir.

Installing an Oh My Fish theme (cbjohnson)

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

Desinstalando o Oh My Fish

Oh My Fish é uma joia para dar uma animada na vibe do seu shell. Mas se você quiser uma mudança de cenário ou experimentar algo novo, desinstalar o Oh My Fish dará ao seu shell do fish um novo começo.

Para desinstalar o Oh My Fish, siga os passos abaixo:

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á seu tema inicialmente instalado desaparecer.

Deleting Oh My Fish-related files

2. Em seguida, execute cada um dos comandos 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 comando omf abaixo para verificar a exclusão.

omf --version

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

Verifying the Oh My Fish deletion

Configurando o Fish como o Shell Padrão

Se você curtiu a experiência com o shell do fish aprimorando sua experiência no Linux, por que não defini-lo como seu shell padrão? Dessa forma, você economiza o trabalho de alternar sempre que iniciar um novo terminal.

Para definir o fish como seu shell padrão, siga as etapas abaixo:

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 o seu shell padrão para fish (/usr/bin/fish).

chsh -s /usr/bin/fish

Ao reiniciar sua máquina, você terá o fish como seu shell padrão.

Changing the default shell to fish

? Dica: Volte do fish para outro shell como o Bash como padrão repetindo todos os passos desta seção. Certifique-se de especificar o caminho para o Bash nos passos dois e três, em seguida, reinicie sua máquina para aplicar as alterações.

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 definir aliases até personalizar prompts e persistir variáveis de ambiente até gerenciar plugins, o shell fish tem sido seu fiel escudeiro.

Você obteve 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 facilmente, expandindo a funcionalidade e estética do seu ambiente shell fish.

Agora que você explorou os conceitos básicos do shell fish, mergulhe mais fundo e desbloqueie todo o seu potencial. Que tal experimentar com prompts personalizados como Powerline ou Starship para dar ao seu shell um toque personalizado?

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