## 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
#!/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 -deleteAquela 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
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 outroOnde 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.