Quando se fala para alunos que o primeiro mês inteiro será dedicado ao terminal Linux, a reação costuma ser a mesma: uma certa decepção. Onde estão os containers? A nuvem? O Kubernetes?
A resposta é simples. Cada ferramenta que será aprendida neste ano — Docker, Terraform, AWS CLI, kubectl — é operada pelo terminal. Os servidores onde os sistemas vão rodar usam Linux. Os containers que serão orquestrados rodam Linux por dentro. Ignorar o terminal é como querer dirigir sem entender o volante.
Este artigo é o ponto de entrada. Sem pré-requisitos, sem pressa.
O Que é o Terminal
O terminal é uma interface de texto para conversar com o sistema operacional. Em vez de clicar em ícones, digitam-se comandos. Parece um retrocesso, mas é exatamente o contrário: comandos podem ser automatizados, combinados, versionados e executados em milhares de servidores ao mesmo tempo. Cliques não.
No Linux, o programa que interpreta os comandos se chama shell. O mais comum é o Bash — Bourne Again Shell. Quando se abre um terminal, é o Bash que está escutando o que se digita.
Abrindo o Terminal
No Ubuntu ou em qualquer distribuição baseada em Debian, pressiona-se Ctrl + Alt + T. No Windows, recomenda-se o uso do WSL (Windows Subsystem for Linux) — é a forma mais prática de acompanhar este curso sem precisar de uma máquina separada.
Ao abrir, aparecerá algo assim:
usuario@maquina:~$
Isso é o prompt. Ele informa quem é o usuário (usuario), em qual máquina está (maquina) e em qual diretório se encontra (~, que representa o diretório home). O $ indica usuário comum — se fosse #, seria o superusuário root.
Os Primeiros Comandos
Saber onde se está:
pwd
pwd significa print working directory. Exibe o caminho completo do diretório atual. Resultado típico:
/home/usuario
Listar arquivos e pastas:
ls
Para ver mais detalhes — permissões, tamanho, data de modificação:
ls -la
O -l ativa o formato longo. O -a mostra arquivos ocultos (aqueles que começam com ponto).
Navegar entre diretórios:
cd /etc # vai para /etc
cd - # volta ao diretório anterior
cd .. # sobe um nível
cd ~ # vai direto ao home
Criar pastas:
mkdir projetos
# Para criar pastas aninhadas de uma vez
mkdir -p projetos/devops/lab01
Criar e escrever arquivos:
touch notas.txt
echo "Meu primeiro arquivo DevOps" > notas.txt
echo "Segunda linha" >> notas.txt
O > redireciona a saída para o arquivo, sobrescrevendo. O >> acrescenta sem apagar o que já existe.
Ler arquivos:
cat notas.txt
# Para arquivos longos, com navegação linha a linha
less notas.txt
Dentro do less, usam-se as setas para navegar e q para sair.
Copiar, mover e remover:
cp notas.txt notas-backup.txt
mv notas.txt documentos/notas.txt
rm notas-backup.txt
# Remover uma pasta inteira — sem desfazer
rm -rf pasta-de-testes
O rm -rf não tem confirmação nem lixeira. Deve ser usado com total consciência.
Obtendo Ajuda
Nenhum profissional memoriza todos os comandos. O que diferencia um bom usuário de terminal é saber onde encontrar a informação quando necessário.
man ls # manual completo do comando
ls --help # resumo rápido das opções
A maioria dos comandos aceita --help. É o primeiro recurso antes de qualquer busca externa.
Um Fluxo Prático
# Vai para o home
cd ~
# Cria a estrutura do curso
mkdir -p devops-curso/modulo01
# Entra na pasta
cd devops-curso/modulo01
# Cria um arquivo de anotações
touch anotacoes.txt
# Escreve algo nele
echo "Módulo 1 - Terminal e Linux" > anotacoes.txt
echo "Data de início: $(date)" >> anotacoes.txt
# Lê o resultado
cat anotacoes.txt
# Confirma onde está
pwd
Resultado esperado no cat:
Módulo 1 - Terminal e Linux
Data de início: Mon Mar 10 14:32:05 UTC 2025
O $(date) é a primeira amostra de algo poderoso: é possível inserir a saída de um comando dentro de outro. Esse padrão aparecerá com frequência em shell script.
Referências para Aprofundamento
Documentação e leitura
- The Linux Command Line — William E. Shotts Jr. — Disponível gratuitamente. É a referência mais completa e acessível para quem está começando no terminal.
- GNU Bash Reference Manual — A documentação oficial do Bash. Densa, mas indispensável como consulta.
- Linux man pages online — Versão web dos manuais do sistema. Útil quando não há acesso ao
manlocalmente.
Prática interativa
- Over The Wire: Bandit — Desafios progressivos que ensinam terminal de forma prática. Altamente recomendado como exercício paralelo aos artigos.
- Linux Journey — Guia interativo e gratuito cobrindo terminal e conceitos de Linux com exercícios embutidos.
Comunidade
- Unix & Linux Stack Exchange — O melhor lugar para tirar dúvidas específicas sobre comandos e comportamentos do shell.
- LearnLinuxTV — YouTube — Conteúdo em inglês de alta qualidade focado em Linux para profissionais de infraestrutura.
Exercícios
Exercício 1
Por que um curso de DevOps dedica o primeiro mês inteiro ao terminal, em vez de começar por Docker ou Kubernetes?
Ver resposta
✓ Resposta: Porque todas as ferramentas do curso — Docker, Terraform, AWS CLI, kubectl — são operadas pelo terminal, os servidores onde os sistemas rodam usam Linux e os containers orquestrados rodam Linux por dentro. Há também uma razão estrutural: comandos podem ser automatizados, combinados, versionados e executados em milhares de servidores ao mesmo tempo — cliques não. Sem essa base, o resto do curso vira decoreba de comandos sem entender o que está acontecendo.
Exercício 2
Você abre o terminal e vê o prompt abaixo. O que cada parte informa? E o que muda se o último caractere for # em vez de $?
usuario@maquina:~$
Ver resposta
✓ Resposta: usuario é quem está logado; maquina é o host em que a sessão está aberta; ~ é o diretório atual, atalho para o home; e $ indica usuário comum. Se aparecer #, a sessão é do superusuário root — sem as restrições de permissão que protegem o sistema. Na prática isso muda o nível de atenção: um comando errado como root atinge arquivos de sistema que um usuário comum nem conseguiria tocar.
Exercício 3
Qual a diferença entre > e >>? Diga exatamente o que notas.txt contém depois desta sequência:
echo "linha A" > notas.txt
echo "linha B" > notas.txt
echo "linha C" >> notas.txt
Ver resposta
✓ Resposta: > redireciona a saída sobrescrevendo o arquivo; >> acrescenta ao final, preservando o conteúdo. O arquivo termina com duas linhas:
linha B
linha C
A "linha A" foi perdida no segundo comando, que apagou o arquivo antes de escrever. Trocar >> por > por descuido é uma das formas mais fáceis de destruir um arquivo de log ou de configuração sem perceber.
Exercício 4
No comando ls -la, o que cada flag faz? Por que a flag -a é especialmente importante ao inspecionar um servidor?
Ver resposta
✓ Resposta: -l ativa o formato longo, mostrando permissões, dono, tamanho e data de modificação. -a exibe os arquivos ocultos, aqueles cujo nome começa com ponto. O -a importa porque em Linux quase toda configuração vive em arquivos ocultos — .bashrc, .ssh/, .env, .gitignore. Um ls simples esconde exatamente os arquivos que costumam explicar por que o ambiente está se comportando de forma inesperada.
Exercício 5
Por que rm -rf exige atenção redobrada? O que cada flag faz, e por que rm pasta-de-testes sozinho não funcionaria?
Ver resposta
✓ Resposta: -r é recursivo: entra na pasta e remove tudo que houver dentro, em qualquer profundidade. -f força: não pede confirmação e não reclama de arquivos inexistentes. Sem -r, o rm se recusa a apagar um diretório — daí rm pasta-de-testes falhar. O ponto crítico é que não existe confirmação nem lixeira: o que sai não volta. E o erro mais comum não é digitar o comando errado, e sim o caminho errado — um espaço a mais transforma rm -rf /caminho em rm -rf / caminho, que ataca a raiz do sistema.
Exercício 6
O artigo destaca $(date) como uma primeira amostra de algo que reaparecerá em shell script. Que recurso é esse, e o que a linha abaixo grava no arquivo?
echo "Data de início: $(date)" >> anotacoes.txt
Ver resposta
✓ Resposta: É a substituição de comando: o shell executa primeiro o que está dentro de $( ) e substitui a expressão pela saída daquele comando. Aqui o date roda antes do echo, e a linha acrescentada ao arquivo fica parecida com Data de início: Mon Mar 10 14:32:05 UTC 2025. O valor é resolvido no momento da execução, não do salvamento — é o que permite scripts gerarem nomes de arquivo, timestamps de log e tags de release automaticamente.