O que é o Bash? Guia sobre o shell para iniciantes de Linux e o seu encanto
Ao criar sites, mais cedo ou mais tarde irá deparar-se com o "ecrã preto" — o terminal (ou CUI) — para operações de servidor. Muitos designers e programadores podem sentir que "parece difícil..." ou "preferia evitar...". No entanto, se souber um pouco de Bash, o programa interativo usado nesse ecrã preto, a sua eficiência de trabalho pode mejorar drasticamente, e o seu mundo de criação web irá expandir-se.
Neste artigo, vamos explicar o que é o Bash e como usá-lo em termos simples e amigáveis, para que até os iniciantes em Linux e operações de servidor possam ter o seu momento de "Aha!". Preparamos muitas amostras que pode copiar e colar para experimentar como "funciona", cobrindo tudo, desde operações essenciais de ficheiros a técnicas básicas para automatizar tarefas tediosas e repetitivas. Vamos transformar esse medo do ecrã preto na excitação de adquirir uma nova ferramenta!
Afinal, o que é um shell? E o que é o Bash?
Antes de falarmos do Bash, vamos primeiro entender o seu "chefe", o shell.
O shell: um "intérprete" que o liga ao SO
No coração de um computador reside o kernel, um programa que lida com as funções mais fundamentais do sistema operativo, como a gestão de hardware. Vamos pensar no kernel como um rei. Não podemos dar ordens diretamente ao rei (o kernel).
É aí que entra o shell. O shell é como um "intérprete" ou um "secretário" que traduz as nossas palavras (comandos) para uma linguagem que o rei consegue entender. Quando digitamos um comando no teclado, o shell recebe-o, interpreta-o e transmite-o ao kernel para executar a ordem. Esse "ecrã preto" é onde este shell opera.
Bash: o "intérprete" mais popular
Assim como existem diferentes tipos de intérpretes, existem vários tipos de shells (zsh, fish, csh, etc.). Entre eles, o mais amplamente e padronizadamente usado no Linux e macOS hoje em dia é o Bash (Bourne-Again SHell). A menos que tenha uma razão específica em contrário, pode assumir que o shell que estará a usar num servidor é quase certamente o Bash. Por outras palavras, pode pensar em aprender a usar o Bash como a mesma coisa que aprender as operações básicas de comandos do Linux.
Vamos pôr as mãos na massa! Comandos básicos do Bash
Ver para crer. Vamos experimentar alguns comandos básicos imediatamente. Abra a "Terminal.app" no macOS, ou um ambiente de terminal como o WSL ou o Git Bash no Windows, depois copie e cole os seguintes comandos e prima Enter.
pwd - Verificar a sua localização atual
pwd (Print Working Directory) é um comando que lhe diz, "Em que pasta (diretório) estou agora?". Se alguma vez se sentir perdido, digite isto primeiro.
$ pwd
/Users/yourname/Documents
ls - Listar ficheiros e pastas no interior
ls (List) exibe uma lista de ficheiros e pastas no diretório atual.
$ ls
ProjectA ProjectB memo.txt
Adicionar a opção -l permite-lhe ver informações mais detalhadas, como permissões de ficheiros, datas de modificação, e mais.
$ ls -l
total 8
drwxr-xr-x 3 yourname staff 96 Jul 5 10:00 ProjectA
drwxr-xr-x 5 yourname staff 160 Jul 5 10:01 ProjectB
-rw-r--r-- 1 yourname staff 512 Jul 5 10:02 memo.txt
cd - Mover para outra pasta
cd (Change Directory) é o comando para se mover para outro diretório. É como viajar de cidade em cidade num RPG.
$ cd ProjectA
Especificar .. (dois pontos) permite-lhe voltar para o diretório pai.
$ cd ..
Criar e apagar ficheiros e pastas
O básico das operações de linha de comandos é criar, mover e apagar ficheiros e pastas. Com o Bash, isto é instantâneo.
mkdir - Criar uma nova pasta
mkdir (Make Directory) cria uma nova pasta vazia.
$ mkdir new-website
touch - Criar um novo ficheiro vazio
O comando touch permite-lhe criar um ficheiro vazio. É útil para criar ficheiros modelo de HTML ou CSS.
$ touch index.html
echo e > - Escrever texto num ficheiro
echo é um comando que imprime uma cadeia de texto especificada no ecrã. Quando combinado com o símbolo > (redirecionamento), pode alterar o destino da saída do ecrã para um ficheiro, escrevendo assim conteúdo nele.
$ echo "<h1>Hello, Bash!</h1>" > index.html
Nota: > irá sobrescrever o ficheiro. Se quiser adicionar a um ficheiro, use >> em vez disso.
cat - Exibir o conteúdo de um ficheiro
Pode usar o comando cat para exibir o conteúdo de um ficheiro no terminal. Vamos verificar o conteúdo que acabámos de escrever.
$ cat index.html
<h1>Hello, Bash!</h1>
rm - Remover ficheiros ou pastas
rm (Remove) é um comando para apagar ficheiros e pastas. Este comando é muito poderoso; apaga os ficheiros de forma imediata e permanente, sem os enviar para a reciclagem, e não pode ser desfeito. Antes de o usar, verifique sempre se está a apagar a coisa certa com pwd e ls.
$ rm index.html
Para apagar uma pasta e todo o seu conteúdo, precisa da opção -r (Recursive).
$ rm -r old-website
O verdadeiro poder do Bash! Encadeando comandos com pipes
Uma das características mais poderosas do Bash é o pipe |. Esta é uma funcionalidade que "encadeia" a saída de um comando para se tornar a entrada do comando seguinte. Imagine uma passadeira rolante de uma fábrica, a passar itens de uma estação de processamento para a seguinte.
Por exemplo, se quiser "listar todos os ficheiros em detalhe (ls -l), e depois dessa lista, exibir apenas as linhas que contêm a palavra 'index' (grep index)", iria encadeá-los assim:
$ ls -l | grep "index"
-rw-r--r-- 1 yourname staff 23 Jul 5 10:30 index.html
-rw-r--r-- 1 yourname staff 1024 Jul 5 10:31 index.php
A beleza do Bash é que pode realizar operações complexas numa única linha, combinando comandos simples como este.
Introdução aos scripts Bash para automação
Digitar a mesma combinação de comandos repetidamente é entediante, certo? Em tais casos, pode guardar uma série de comandos num ficheiro e executá-los todos de uma vez. Isto é um script Bash.
Por exemplo, digamos que sempre que inicia um novo projeto de site, cria sempre a mesma estrutura de pastas (css, js, images) e um ficheiro `index.html`. Vamos criar um script chamado `create_project.sh` para automatizar esta tarefa.
#!/bin/bash
# Criar uma pasta de projeto com o nome especificado em tempo de execução
PROJECT_NAME=$1
mkdir $PROJECT_NAME
cd $PROJECT_NAME
# Criar várias subpastas
mkdir css js images
# Criar ficheiros HTML e CSS vazios
touch index.html css/style.css
echo "Project '$PROJECT_NAME' created successfully!"
Crie um ficheiro chamado `create_project.sh` com este conteúdo, e depois dê-lhe permissões de execução com o comando `chmod +x`.
$ chmod +x create_project.sh
Depois disso, só precisa de o executar como `./create_project.sh nome-do-projeto`, e a tarefa rotineira fica concluída num instante.
$ ./create_project.sh my-new-dream-site
Project 'my-new-dream-site' created successfully!
Conclusão
Ótimo trabalho! Neste artigo, aprendemos sobre os conceitos básicos e o uso do shell, o programa por trás do ecrã preto, e o seu representante mais proeminente, o Bash. Pode parecer inacessível no início, mas ao experimentar realmente alguns dos comandos aqui introduzidos, provavelmente sentiu um vislumbre da sua conveniência e poder.
- Verifique a sua localização atual e mova-se livremente com
pwd,ls, ecd. - Manipule livremente ficheiros e pastas com
mkdir,touch, erm. - Encadeie comandos com o pipe
|para realizar operações complexas de forma simples. - Automatize de forma inteligente tarefas rotineiras, colocando-as num script Bash.
Para um criador web, o Bash pode ser uma arma tão poderosa como as ferramentas de design ou os editores de código. Encorajamo-lo a continuar a aprender alguns comandos de cada vez e a aplicá-los no seu trabalho diário.
Para aqueles que pensam, "Mas o meu PC com Windows não tem Bash...", não se preocupem! No próximo artigo, vamos explicar como instalar o "WSL (Subsistema Windows para Linux)", que facilita o uso do Bash no Windows, com imagens para o guiar!
[Use também no Windows!] Passos para instalar o Bash com WSL (com imagens)