⬅ 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!

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

📝 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.

⌨️ Vim Essencial

O Vim é o editor padrão em servidores Linux. Você precisa conhecer apenas estes comandos para criar e editar scripts:

⌨️ 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"

💡 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.
🔤
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.

🎯 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
Crie a pasta dedicada e abra o novo script no Vim. Pressione i para entrar em modo INSERT:
bash — passo 1
usuario@servidor:~$ mkdir -p ~/scripts usuario@servidor:~$ vim ~/scripts/relatorio.sh
2
Escreva o script de relatório do sistema
No modo INSERT do Vim, digite o conteúdo abaixo (adapte com seu nome). Pressione Esc e :wq para salvar:
~/scripts/relatorio.sh — INSERT
#!/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
Dê permissão e execute
Torne o script executável e rode-o. O relatório deve aparecer formatado na tela:
bash — passo 3
usuario@servidor:~$ chmod +x ~/scripts/relatorio.sh usuario@servidor:~$ ~/scripts/relatorio.sh ================================= RELATÓRIO DO SISTEMA ================================= Usuário: usuario Hostname: servidor Data/Hora: Sáb Mar 22 10:30:00 -03 2026 Uptime: up 2 hours, 14 minutes Memória: Mem: 1,9Gi 512Mi 1,1Gi =================================
4
Adicione uma variável e salve a saída em arquivo
Edite o script, declare uma variável com o nome do log e redirecione a saída para um arquivo:
~/scripts/relatorio.sh — trecho adicionado
#!/bin/bash ARQUIVO_LOG="$HOME/relatorio_$(date +%Y%m%d).txt" # ... restante do script ... echo "Log salvo em: $ARQUIVO_LOG"
bash — executar e verificar
usuario@servidor:~/scripts$ ./relatorio.sh > $HOME/relatorio_$(date +%Y%m%d).txt usuario@servidor:~/scripts$ cat ~/relatorio_20260322.txt
5
Verifique as permissões e tire screenshot
Confirme que o script tem o bit x ativo e que o arquivo de log foi criado:
bash — passo 5
usuario@servidor:~$ ls -la ~/scripts/ -rwxr-xr-x 1 usuario usuario 285 Mar 22 10:28 relatorio.sh usuario@servidor:~$ ls -lh ~/relatorio_*.txt -rw-r--r-- 1 usuario usuario 212 Mar 22 10:30 relatorio_20260322.txt
📌 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.