## glossário

O que é Shell?

Shell é o programa que interpreta os comandos que você digita e os traduz em chamadas ao sistema operacional. O nome vem da imagem de uma "casca" que envolve o núcleo (kernel) do sistema — você conversa com a casca, e ela conversa com o núcleo.

Ele não é apenas um executor de comandos. É também uma linguagem de programação completa, com variáveis, condicionais, laços e funções, o que o torna a ferramenta padrão para automação em sistemas Unix-like.

Os principais shells

  • Bash — o mais difundido; padrão histórico do Linux e o que você encontra na maioria dos servidores.
  • Zsh — padrão do macOS desde 2019; compatível com Bash e mais rico em autocomplete e personalização.
  • Fish — prioriza usabilidade com sugestões e destaque de sintaxe nativos, ao custo de não ser compatível com scripts Bash.
  • PowerShell — padrão do Windows; diferente dos demais, passa objetos estruturados entre comandos em vez de texto.
  • sh — o shell POSIX mínimo; escrever scripts para ele garante portabilidade máxima.

Shell script na prática

Script de backup com verificação de erro
#!/usr/bin/env bash
set -euo pipefail   # aborta em erro, variável indefinida ou falha em pipe

ORIGEM="/var/www/app"
DESTINO="/backup"
DATA=$(date +%Y-%m-%d)
ARQUIVO="$DESTINO/app-$DATA.tar.gz"

if [[ ! -d "$ORIGEM" ]]; then
  echo "Origem não encontrada: $ORIGEM" >&2
  exit 1
fi

tar -czf "$ARQUIVO" "$ORIGEM"
echo "Backup criado: $ARQUIVO"

# remove backups com mais de 30 dias
find "$DESTINO" -name "app-*.tar.gz" -mtime +30 -delete

Aquela primeira linha depois do shebang merece destaque. set -euo pipefail transforma o comportamento padrão do shell — que é seguir em frente após erros — em algo previsível. Sem ela, um script de backup pode falhar silenciosamente e apagar arquivos antigos achando que salvou os novos.

Redirecionamento e pipes

Controlando entrada, saída e erro
comando > saida.txt        # redireciona a saída (sobrescreve)
comando >> saida.txt       # acrescenta ao final
comando 2> erros.txt       # redireciona apenas os erros
comando > tudo.txt 2>&1    # junta saída e erros no mesmo arquivo
comando < entrada.txt      # lê da entrada padrão
comando1 | comando2        # conecta a saída de um à entrada do outro

Onde o shell aparece profissionalmente

Todo pipeline de CI/CD executa comandos de shell. Todo Dockerfile tem instruções RUN interpretadas por ele. Manutenção de servidores, automação de tarefas repetitivas e investigação de incidentes acontecem majoritariamente no terminal. Os artigos de comandos fundamentais de terminal e SSH na prática cobrem a base necessária.

## faq

Perguntas frequentes

Qual a diferença entre shell, terminal e console?

Terminal é o programa com a janela que exibe texto. Shell é o interpretador que roda dentro dele e executa seus comandos. Console, historicamente, era o terminal físico conectado à máquina — hoje o termo é usado de forma intercambiável com terminal.

Bash ou Zsh: qual devo usar?

Para uso interativo diário, Zsh oferece autocomplete e personalização melhores, e é o padrão no macOS. Para escrever scripts que rodarão em servidores, prefira Bash ou sh puro — é o que estará instalado em praticamente qualquer lugar.

Quando parar de usar shell script e mudar de linguagem?

Uma regra prática comum: se o script passa de cem linhas, precisa manipular estruturas de dados complexas ou exige testes automatizados, migre para Python ou Go. Shell é excelente para orquestrar comandos e péssimo para lógica elaborada.