⬅ Voltar ao Dashboard Módulo 2 — Shell Script

📜 Shell Script: Primeiros Passos

Aula 2.1 — Automatização de tarefas no Linux: shebang, echo, comentários, Vim e o fluxo criar–permitir–executar

🤖 Por que Aprender Shell Script?

Shell Script é um arquivo de texto com comandos Linux que o sistema executa em sequência, como uma receita automática. Em vez de digitar os mesmos 10 comandos toda manhã para fazer backup, você escreve o script uma vez — e ele faz tudo sozinho, para sempre.

😫
Sem Script Fazer backup manualmente todo dia às 6h
🤖
Com Script O computador faz sozinho enquanto você dorme!

🍳 Analogia: Receita de Bolo

10 minutos por dia × 365 dias = 60 horas por ano economizadas! Um sysadmin que sabe Shell Script faz em segundos o que um iniciante faz em horas.

📋 Situações práticas onde Shell Script é usado

📝 Estrutura de um Shell Script

Um script Shell é um arquivo de texto simples (com extensão .sh) que contém comandos Linux, um por linha. Três elementos formam a base de qualquer script.

meu_script.sh
#!/bin/bash # ① Shebang — SEMPRE na 1ª linha # Script: Informações do Sistema # ② Comentário — explicação # Autor: César Azevedo echo "==== INFO DO SISTEMA ====" # ③ Comandos echo "Usuário: $(whoami)" echo "Pasta: $(pwd)" echo "Data: $(date)"

① Shebang — #!/bin/bash

A primeira linha do script declara qual interpretador deve executar o arquivo. #! é o prefixo obrigatório; /bin/bash é o caminho do Bash.

⚠️ Regras do Shebang: deve estar exatamente na primeira linha, sem nenhum espaço antes do # e sem espaço entre # e !. ❌   #!/bin/bash (espaço antes) invalida o shebang.

② Comentários — #

Linhas que começam com # (após o shebang) são ignoradas pelo Shell. Use para documentar o que cada parte faz, quem escreveu e quando.

③ Comandos

Os mesmos comandos que você digita no terminal funcionam nos scripts. O Shell executa-os linha por linha, de cima para baixo.

🚀 Criando seu Primeiro Script

O fluxo de trabalho é sempre o mesmo: criar → dar permissão → executar. Veja passo a passo:

1
Criar o arquivo com o Vim
bash
usuario@servidor:~$ vim primeiro.sh
2
Entrar em modo de inserção no Vim Pressione i para começar a digitar.
3
Digitar o conteúdo do script
primeiro.sh — INSERT
#!/bin/bash # Meu primeiro script! echo "Olá, Linux!" echo "Usuário: $(whoami)" echo "Pasta: $(pwd)" date
4
Salvar e sair do Vim Pressione Esc para sair do modo INSERT, depois digite :wq e pressione Enter.
5
Dar permissão de execução
bash
usuario@servidor:~$ chmod +x primeiro.sh
6
Executar o script!
bash
usuario@servidor:~$ ./primeiro.sh Olá, Linux! Usuário: usuario Pasta: /home/usuario Qui Dez 25 10:30:00 -03 2025

Por que ./ antes do nome? Significa “procure o arquivo aqui, nesta pasta”. Sem ele, o Shell procuraria apenas nas pastas do sistema ($PATH) e não encontraria seu script.

🔄 Fluxo de Trabalho e Vim Essencial

Memorize o fluxo de três etapas que se repete em todos os scripts que você criar:

📝
1. Criar vim script.sh
🔓
2. Permitir chmod +x script.sh
▶️
3. Executar ./script.sh

⌨️ Vim Essencial — Comandos que você precisa saber

NAVEGAÇÃO E EDIÇÃO

TeclaAção
iModo INSERT (digitar)
aINSERT após cursor
oNova linha abaixo
EscSair do INSERT
ddDeletar linha
yyCopiar linha
pColar
uDesfazer (undo)

SALVAR E SAIR

ComandoAção
:wSalvar (write)
:qSair (quit)
:wqSalvar e sair
:q!Sair SEM salvar
:wq!Forçar salvar e sair

🆘 Travou no Vim? Pressione Esc várias vezes → digite :q!Enter.

📢 echo e Substituição de Comandos

O comando echo exibe texto na tela. É o principal meio de comunicar o script com o usuário. Dentro das aspas, você pode usar substituição de comandos com $(comando) para inserir a saída de outro comando dinamicamente.

exemplos-echo.sh
#!/bin/bash # Texto simples echo "Olá, mundo!" # Substituição de comando: $(comando) echo "Usuário logado: $(whoami)" echo "Diretório atual: $(pwd)" echo "Data e hora: $(date)" echo "Arquivos aqui: $(ls | wc -l) arquivos" # echo -n: sem quebra de linha ao final echo -n "Digite seu nome: " # (cursor fica na mesma linha, aguardando input) # echo -e: interpreta sequências especiais echo -e "Linha 1\nLinha 2\nLinha 3" Linha 1 Linha 2 Linha 3

💡 Aspas simples vs duplas: aspas duplas (") interpretam variáveis e substituições. Aspas simples (') tratam tudo como literal. echo "$USER"usuario. echo '$USER'$USER.

📦 Variáveis no Shell Script

Variáveis armazenam valores para reutilizar ao longo do script. No Bash, não há espaço entre o nome, o = e o valor. Para usar o valor, prefixe com $.

variaveis.sh
#!/bin/bash # Declarar variável — SEM espaços ao redor do = NOME="Alice" IDADE="22" SERVIDOR="192.168.1.10" HOJE=$(date +%d/%m/%Y) # variável com substituição # Usar variável — prefixe com $ echo "Olá, $NOME! Você tem $IDADE anos." echo "Servidor: $SERVIDOR" echo "Relatório gerado em: $HOJE" Olá, Alice! Você tem 22 anos. Servidor: 192.168.1.10 Relatório gerado em: 25/12/2025

⚠️ Erro comum: NOME = "Alice" (com espaços) causa erro. O Bash interpreta NOME como um comando. Sempre use NOME="Alice" sem espaços.

✅ Boas Práticas em Shell Script

📜
Sempre use shebang A primeira linha deve ser #!/bin/bash em todos os scripts, sem exceções.
💬
Comente com propósito Comente o "por quê", não o "o quê". # incrementa x é óbvio; # necessário para evitar race condition é útil.
🔤
Nomes em maiúsculas para variáveis Convention: NOME_ARQUIVO em maiúsculo para variáveis globais. Facilita distinguir de comandos.
🧪
Teste antes de automatizar Execute o script manualmente com dados reais antes de agendar com cron. Um erro em produção pode ser catastrófico.
💾
Use controle de versão Scripts são código. Use Git para rastrear mudanças, especialmente em scripts de produção.
🔒
Permissão mínima Use chmod 750 (ou 700) em vez de 777. Dê execução apenas a quem realmente precisa.

🎯 Exercício — Arraste e Conecte

Arraste cada descrição para o comando ou conceito correto do Shell Script.

Descrição
Primeira linha obrigatória do script que indica ao sistema qual interpretador usar para executar o arquivo
Comando que exibe texto na tela; principal forma de comunicar o script com o usuário
Comando que concede permissão de execução ao arquivo de script antes de rodá-lo pela primeira vez
Prefixo ./ indica ao Shell que deve procurar o script no diretório atual, e não no PATH do sistema
Linha começando com # que é ignorada pelo interpretador e serve para documentar o código
Teclas usadas no Vim para salvar e sair do editor após digitar o conteúdo do script
Comando / Conceito
Shebang (#!/bin/bash)
echo
chmod +x
Execução com ./
Comentário (#)
Vim: Esc:wq

🛠️ Atividade Prática — Meu Primeiro Script de Relório

⏱ ~30 min 💻 Ubuntu Server / Terminal 📸 Tirar screenshot da saída
1
Crie o diretório de scripts e o arquivo
No terminal, crie uma pasta dedicada e o script: mkdir -p ~/scripts && vim ~/scripts/relatorio.sh. Dentro do Vim, pressione i para entrar em modo INSERT.
2
Escreva o script de relatório do sistema
Digite o seguinte conteúdo (adapte com seu nome):
#!/bin/bash
# Relatório do Sistema — Autor: Seu Nome
echo "==============================="
echo " RELATÓRIO DO SISTEMA"
echo "==============================="
echo "Usuário: $(whoami)"
echo "Hostname: $(hostname)"
echo "Data/Hora: $(date)"
echo "Uptime: $(uptime -p)"
echo "Memória: $(free -h | grep Mem)"
echo "==============================="
3
Salve, dê permissão e execute
Pressione Esc, digite :wq e Enter para salvar. Depois: chmod +x ~/scripts/relatorio.sh && ~/scripts/relatorio.sh. O relatório deve aparecer formatado na tela.
4
Adicione uma variável e salve a saída em arquivo
Edite o script novamente (vim ~/scripts/relatorio.sh). Adicione no início (logo após o shebang): ARQUIVO_LOG="$HOME/relatorio_$(date +%Y%m%d).txt". No final do script, adicione: echo "Log salvo em: $ARQUIVO_LOG". Execute redirecionando a saída: ./relatorio.sh > $HOME/relatorio_$(date +%Y%m%d).txt. Verifique o arquivo criado com cat.
5
Verifique as permissões e tire screenshot
Execute ls -la ~/scripts/ para ver as permissões do script (deve mostrar -rwxr-xr-x ou similar com o x ativo). Tire um screenshot mostrando: a listagem de permissões, a saída do script e o arquivo de log criado.
📌 Para refletir: Um script Shell é essencialmente uma lista de comandos que você já sabe usar. A grande transformação é que esses comandos passam a ser executados automaticamente, na ordem certa, toda vez, sem intervenção humana. Você acabou de criar seu primeiro robô administrador de sistemas.

❓ Verifique seu Conhecimento

O que é o shebang (#!) em um script Bash?

AUm comentário especial sem efeito
BA primeira linha que indica ao sistema qual interpretador usar
CUm comando para executar o script com sudo
DUm marcador de fim de arquivo
✓ O shebang #!/bin/bash na primeira linha indica ao kernel qual programa deve interpretar o script.

Qual permissão é necessária para executar um script com ./script.sh?

APermissão de leitura (r)
BPermissão de escrita (w)
CPermissão de execução (x)
DPermissão de superusuário (s)
✓ Use chmod +x script.sh para adicionar permissão de execução antes de rodar com ./script.sh.

Qual comando exibe texto na saída padrão em um script Bash?

Aecho
Bprint
Cwrite
Ddisplay
echo é o comando básico para imprimir texto. Use echo -e para interpretar sequências como \n.

O que o comando chmod 755 script.sh define?

ASomente o dono pode ler o arquivo
BTodos podem escrever no arquivo
CNinguém pode executar o arquivo
DDono tem rwx; grupo e outros têm r-x
✓ 755 = 7(rwx para dono) + 5(r-x para grupo) + 5(r-x para outros). Padrão para scripts executáveis.