
Terminal e shell do zero: conversando com o computador
Objetivos desta aula
- Entender a diferença entre terminal, shell e comando
- Ler a estrutura de um comando: programa, opções e argumentos
- Navegar, criar e apagar arquivos com segurança
- Usar histórico, autocompletar e o manual (man/--help)
- Encadear comandos com pipe e redirecionamento
Antes de qualquer ferramenta DevOps, existe uma habilidade base: conversar com o computador por texto. O terminal é a janela onde você digita; o shell (normalmente bash ou zsh) é o programa que entende o que você escreveu e executa. Quase todo servidor de produção não tem interface gráfica — só terminal.
Todo comando segue um padrão: programa + opções + argumentos. Em ls -l /etc, ls é o programa (listar), -l é uma opção (formato longo) e /etc é o argumento (qual pasta). Quando você entende esse padrão, qualquer comando novo fica mais fácil de ler.
Para se localizar use pwd (onde estou?), ls (o que tem aqui?) e cd (ir para outro lugar). cd .. sobe uma pasta, cd ~ volta para sua casa (home) e cd - volta para onde você estava antes. Pense como andar por pastas num explorador de arquivos, mas digitando.
Criar e mexer em arquivos: mkdir projeto cria pasta, touch notas.txt cria arquivo vazio, cp copia, mv move ou renomeia e rm apaga. Atenção: no terminal não existe lixeira. rm -rf apaga tudo sem perguntar — por isso, sempre confira com ls antes de apagar.
Você não precisa decorar nada. Use Tab para autocompletar nomes, seta para cima para repetir comandos anteriores e Ctrl+R para buscar no histórico. Para aprender um comando, comando --help mostra um resumo e man comando abre o manual completo (saia com q).
O superpoder do shell é combinar comandos pequenos. O pipe | envia a saída de um comando para outro: ls /etc | grep ssh lista a pasta e filtra só o que contém “ssh”. É assim que profissionais resolvem problemas grandes com peças simples.
Redirecionamento guarda resultados em arquivos: > sobrescreve, >> adiciona ao final e 2> captura erros. Exemplo: comando > saida.log 2>&1 grava saída normal e erros juntos — muito usado em scripts e automações.
Por fim, entenda o código de saída: todo comando termina com um número. 0 significa sucesso; qualquer outro valor indica erro. Veja com echo $?. Pipelines de CI/CD usam exatamente isso para decidir se um passo passou ou falhou.
Na prática
Primeiros passos no terminal
bash
pwd # mostra a pasta atual
ls -la # lista tudo, inclusive arquivos ocultos
mkdir -p ~/lab/dia1 # cria a pasta (e as intermediárias)
cd ~/lab/dia1
echo "olá DevOps" > notas.txt # cria arquivo com conteúdo
cat notas.txt # mostra o conteúdo
echo "linha 2" >> notas.txt # adiciona no final
wc -l notas.txt # conta linhasPipe, filtros e código de saída
bash
history | grep docker # quais comandos docker usei?
ps aux | grep nginx | head -5
ls arquivo-inexistente; echo "saída: $?" # imprime valor diferente de 0
ls /tmp; echo "saída: $?" # imprime 0Por que isso importa
Servidores, contêineres e pipelines são operados por linha de comando. Quem domina o terminal investiga incidentes em minutos em vez de horas.
Erro comum
Copiar e colar comandos da internet sem entender o que fazem — principalmente com sudo ou rm -rf. Leia cada parte antes de apertar Enter.
Dica de produção
Antes de um comando destrutivo, rode a versão que só lista (ex.: ls com o mesmo caminho) para conferir o alvo.
Alerta de segurança
Nunca cole senhas ou tokens direto na linha de comando: eles ficam salvos no histórico (~/.bash_history).
Pergunta de entrevista
O que acontece quando você digita cat app.log | grep ERROR | wc -l? Explique cada etapa.
Glossário
- Terminal
- Janela onde você digita comandos de texto.
- Shell
- Programa (bash, zsh) que interpreta e executa os comandos.
- Pipe (|)
- Envia a saída de um comando como entrada do próximo.
- Exit code
- Número que indica se o comando deu certo (0) ou falhou.
- Home (~)
- Pasta pessoal do usuário logado.
Conexão com o CloudShop
No CloudShop, toda investigação começa no terminal: ler logs, ver processos e testar a API com curl.
Quiz da aula
1. Em `ls -l /var/log`, o que é `-l`?
2. Qual código de saída indica sucesso?
3. Qual a diferença entre `>` e `>>`?
Minhas anotações
Salvo automaticamente neste navegador.
