Aprendendo Operações Básicas Comparando Fish e Bash
No desenvolvimento web, as operações de linha de comando na "tela preta", ou terminal (shell), são essenciais. Muitas pessoas provavelmente usam o shell padrão, "Bash", sem pensar muito nisso. No entanto, existem shells mais avançados que podem melhorar drasticamente nosso fluxo de trabalho. O principal exemplo, e o foco deste artigo, é o "Fish (Friendly Interactive Shell)".
Este artigo fornece uma explicação completa do uso básico e dos recursos atraentes do Fish, comparando-o com o shell mais popular, "Bash". Esperamos que este artigo sirva como um primeiro passo para os criadores da web tornarem sua vida diária de codificação mais confortável. Todo o código foi projetado para funcionar perfeitamente apenas copiando e colando. Vamos explorar o mundo do Fish acumulando pequenos sucessos de "Funcionou!"
Qual é a diferença entre Fish e Bash? Vamos aprender o básico do shell
Primeiro, vamos entender brevemente as características de cada shell.
- Bash (Bourne Again SHell): Este é o shell "padrão da indústria", instalado por padrão em muitas distribuições Linux e versões mais antigas do macOS. Ele tem uma longa história, e a maioria dos exemplos de linha de comando encontrados online são escritos para Bash. Embora sua estabilidade e histórico sejam atraentes, alguns de seus recursos são um pouco antiquados.
- Fish (Friendly Interactive Shell): Como o nome sugere, foi desenvolvido para ser um "shell interativo e amigável". Sua maior vantagem são seus poderosos recursos de preenchimento automático e destaque de sintaxe, que funcionam imediatamente e são intuitivos até mesmo para iniciantes. É um shell inteligente que combina com os ambientes de desenvolvimento modernos.
Para usar uma analogia, se o Bash é uma "máquina veterana e confiável que requer operação manual", então o Fish é como um "assistente de IA inteligente que antecipa suas intenções и fornece suporte". Agora, vamos ver suas capacidades em ação.
【Mão na massa】É aqui que a diferença aparece! Uma comparação completa das operações básicas no Fish e no Bash
A partir daqui, experimentaremos os recursos convenientes do Fish comparando operações específicas. Se você ainda não instalou o Fish, instale-o de acordo com o seu ambiente.
Para macOS (Homebrew):
brew install fish
Para Ubuntu/Debian:
sudo apt-get update
sudo apt-get install fish
Após a instalação, você pode iniciar o shell Fish digitando `fish` em seu terminal.
1. Aparência e quantidade de informações diferentes! Comparação de prompts
A primeira coisa que você vê ao iniciar um shell é o "prompt", a parte à esquerda onde você digita os comandos. Há uma grande diferença entre o Bash e o Fish desde o início.
Um prompt típico do Bash:
Ele exibe informações como nome de usuário, nome do host e diretório atual, mas é relativamente simples.
user@hostname:~/project$
O prompt padrão do Fish:
O Fish exibe claramente o nome de usuário e o caminho do diretório atual. Especialmente útil é que, quando você está dentro de um repositório Git, ele exibe automaticamente o nome do branch. Para criadores da web, as operações do Git são uma rotina diária. Ver em qual branch você está trabalhando de relance é uma grande ajuda para evitar erros.
user@hostname ~/project (main)>
2. A maior arma do Fish! Sugestões automáticas
O recurso que torna o Fish um "shell de nível divino" são suas sugestões automáticas. Este recurso prevê o comando que você provavelmente digitará a seguir com base no seu histórico de comandos, exibindo-o em uma cor cinza fraca.
Por exemplo, suponha que você já tenha digitado o comando `git commit -m "Initial commit"`. Da próxima vez, apenas digitando `git c`...
A sugestão automática do Fish:
Como você pode ver, todo o comando inferido do seu histórico é exibido fracamente após a parte que você digitou. Se você estiver satisfeito com a sugestão, basta pressionar → (tecla de seta para a direita) ou Ctrl + F para aceitar o comando inteiro. Você não precisa mais digitar comandos longos repetidamente.
user@hostname ~/project (main)> git commit -m "Initial commit"
O Bash também tem um recurso de preenchimento, mas você geralmente precisa pressionar a tecla Tab para ver os candidatos, tornando-o menos contínuo e intuitivo do que o Fish. Essa experiência por si só já vale a pena mudar para o Fish.
3. Reduza drasticamente os erros de digitação! Destaque de sintaxe
O Fish informa em tempo real se o comando que você está digitando é "válido", colorindo-o. Isso é chamado de destaque de sintaxe.
Para um comando válido (por exemplo, `echo`):
Um comando válido que existe no sistema é exibido em azul claro por padrão.
echo "Hello World"
Para um comando inexistente (por exemplo, um erro de digitação como `ech`):
Se você digitar um comando incorretamente ou inserir um que não existe, ele fica vermelho instantaneamente. Isso permite que você perceba seu erro antes de executar o comando, evitando erros desnecessários.
ech "Hello World"
Graças a este recurso, você verá a familiar mensagem de erro "command not found" com muito menos frequência.
Avançado: Como a criação de scripts é diferente?
O papel de um shell não se resume a operações interativas. As diferentes filosofias do Fish e do Bash também aparecem ao escrever "scripts de shell" para automatizar uma série de processos. A criação de scripts do Fish foi projetada com uma sintaxe mais moderna e legível.
1. Definição de variável
No Bash:
Você o escreve no formato `NOME_VARIAVEL=valor`. Existe uma regra única de que você не pode ter espaços ao redor do sinal de igual.
MY_PROJECT="My Awesome Site"
echo $MY_PROJECT
No Fish:
Você usa o comando `set` para definir variáveis. Isso deixa claro o que você está fazendo e, como você passa o valor como um argumento, não precisa se preocupar com a presença de espaços.
set MY_PROJECT "My Awesome Site"
echo $MY_PROJECT
2. Instruções if (ramificação condicional)
No desenvolvimento web, a ramificação condicional como "se o arquivo `package.json` existir, execute `npm install`" é comum.
No Bash:
Uma notação um tanto arcaica usando `[` (o comando de teste) ou `[[` é comum. Palavras-chave como `; then` e `fi` também são necessárias.
if [ -f "package.json" ]; then
echo "package.json encontrado!"
fi
No Fish:
Você pode escrevê-lo de forma mais intuitiva, como em outras linguagens de programação. Você escreve a expressão condicional diretamente após `if` e fecha o bloco com `end`. `then` e `;` são desnecessários, tornando o código mais limpo.
if test -f "package.json"
echo "package.json encontrado!"
end
3. Loops for (iteração)
Processos iterativos, como realizar a mesma operação em vários arquivos, também são usados com frequência.
No Bash:
Você constrói um loop com uma combinação de palavras-chave como `for`, `in`, `do` e `done`.
for i in {1..3}; do
echo "Contagem do loop Bash: $i"
done
No Fish:
Semelhante à instrução `if`, também possui uma sintaxe simples onde `do` é desnecessário e o bloco é fechado com `end`. A parte entre `()` é chamada de "substituição de comando" e trata a saída do comando como uma lista.
for i in (seq 1 3)
echo "Contagem do loop Fish: $i"
end
Pontos a serem observados ao migrar para o Fish
Embora tenhamos mostrado o apelo do Fish, existem alguns "pontos a serem observados" ao migrar. Compreendê-los o ajudará a iniciar sua vida no Fish sem problemas e sem confusão.
1. Incompatibilidade sintática com o Bash
Como vimos, o Fish prioriza a legibilidade do script, portanto, não é totalmente compatível com o Bash. Você precisa ter um cuidado especial ao copiar e colar comandos do Bash que encontrar online.
Encadeamento de comandos (`&&`, `||`)
No Bash, você costuma usar `&&` para escrever um processo em que "se o comando anterior for bem-sucedido, execute o próximo comando".
# Crie um diretório e, se for bem-sucedido, mova-se para ele
mkdir my_dir && cd my_dir
No Fish, isso é expresso com a palavra-chave mais clara `and`. (Embora as versões recentes do Fish também possam usar `&&`, a recomendação oficial é usar `and` ou `;`)
# A maneira Fish de escrever
mkdir my_dir; and cd my_dir
Da mesma forma, `||` do Bash (execute o próximo comando se o anterior falhar) corresponde a `or` no Fish. Se você descobrir que um comando do Bash não está funcionando, lembre-se dessa diferença.
2. Como definir variáveis de ambiente
O método para definir "variáveis de ambiente", que você configura ao definir caminhos para ferramentas, também é diferente.
No Bash (escrito em `~/.bash_profile`, etc.):
Você usa o comando `export` para definir variáveis de ambiente.
export NODE_ENV="development"
No Fish (escrito em `~/.config/fish/config.fish`):
Você usa o comando `set` com a flag `-x` ou `--export`. Isso garante que a variável seja passada não apenas para o shell atual, mas também para seus processos filhos.
set -x NODE_ENV "development"
Em particular, ao adicionar um novo caminho à variável `PATH`, o Fish usa uma sintaxe um pouco especial. Como `$PATH` é tratado como uma lista (array), você pode simplesmente adicioná-lo assim:
# Adicione ~/.node_modules/bin ao início do PATH
set -x PATH ~/.node_modules/bin $PATH
Você не precisa concatená-lo como uma string com dois pontos `:` como no Bash, permitindo um gerenciamento de caminho mais seguro e intuitivo.
Conclusão: Vamos começar a usar o Fish!
Neste artigo, explicamos o uso básico e o apelo do shell de última geração, "Fish", comparando-o com o shell padrão, Bash.
Resumo dos benefícios do Fish:
- 🧠 Sugestões automáticas inteligentes: Acelera e otimiza drasticamente a entrada de comandos.
- 🎨 Destaque de sintaxe: Detecta erros de digitação em tempo real, evitando erros antes que aconteçam.
- 📖 Sintaxe de script legível: Palavras-chave intuitivas e fáceis de entender como `set`, `and`, `or` e `end`.
- 🚀 Pronto para usar imediatamente: Você pode se beneficiar de seus poderosos recursos desde o dia em que o instala.
Claro, o Bash tem as vantagens significativas de estar "disponível em todos os lugares" e ter uma "vasta quantidade de informações". No entanto, que tal escolher o Fish, mais amigável e poderoso, como seu "parceiro" para o trabalho diário de desenvolvimento? Especialmente para criadores da web iniciantes que desejam se acostumar com a linha de comando, o Fish deve ser o melhor parceiro de aprendizado.
Os recursos apresentados neste artigo são apenas uma fração do charme do Fish. Como próximo passo, tente personalizá-lo usando um gerenciador de plugins. Você pode torná-lo legal, adicionar recursos ainda mais convenientes e construir seu próprio ambiente de terminal definitivo.
Para o próximo artigo: Um Guia para Iniciantes sobre a Personalização do Fish com Temas (Fisher, Oh My Fish)