Aula 1.3 — Domine os comandos fundamentais do terminal: navegação, manipulação de arquivos, pipes e redirecionamentos
🧭 Navegação no Sistema de Arquivos
No Linux, tudo começa pelo terminal. Os três comandos de navegação mais usados são pwd, ls e cd. Dominá-los é o primeiro passo para trabalhar com eficiência.
pwdMostra o diretório atual Print Working Directory
lsLista arquivos e pastas do diretório atual
cdNavega entre diretórios Change Directory
bash — navegação básica
usuario@servidor:~$pwd/home/usuariousuario@servidor:~$ls-ladrwxr-xr-x 5 usuario usuario 4096 jan 15 Documentos/drwxr-xr-x 2 usuario usuario 4096 jan 14 Downloads/-rw-r--r-- 1 usuario usuario 2048 jan 15 notas.txtusuario@servidor:~$cdDocumentosusuario@servidor:~/Documentos$# Agora estou em Documentos!
⚙️ Opções do ls
ls -lLista detalhada com permissões, dono e tamanho
ls -aMostra arquivos ocultos (que começam com .)
ls -laDetalhado + ocultos (combinação mais usada)
ls -lhTamanhos legíveis (KB, MB, GB)
ls -lSOrdena por tamanho (maior primeiro)
🗺️ Atalhos do cd
cd ~Vai para a pasta home do usuário
cd ..Sobe um nível (pasta pai)
cd -Volta para a pasta anterior
cd /Vai para a raiz do sistema
cd ../pastaSobe e entra em outra pasta
💡 Caminhos absolutos vs relativos: Caminhos que começam com / são absolutos (funcionam de qualquer lugar). Sem / são relativos à pasta atual. Exemplo: /home/usuario/Documentos (absoluto) vs Documentos/projetos (relativo).
📁 Manipulação de Arquivos e Pastas
Criar, copiar, mover e remover arquivos são operações diárias de um administrador. Os comandos abaixo cobrem praticamente todos os casos de manipulação de arquivos no terminal Linux.
mkdirCria diretórios -p cria toda a estrutura
touchCria arquivo vazio ou atualiza a data de modificação
cpCopia arquivo ou pasta -r para pastas
mvMove ou renomeia arquivo ou pasta
rmRemove arquivos Sem lixeira!
bash — manipulação de arquivos
usuario@servidor:~$mkdir-pprojetos/site/css# Cria estrutura inteira de uma vezusuario@servidor:~$touchnotas.txt# Cria arquivo vaziousuario@servidor:~$cpnotas.txtbackup.txt# Copia arquivousuario@servidor:~$mvbackup.txt/tmp/# Move para /tmpusuario@servidor:~$cp-rprojetos/backup_projetos/# Copia pasta inteirausuario@servidor:~$rm-inotas.txt# Remove com confirmação (-i é mais seguro)
⚠️ rm não tem lixeira! O comando rm arquivo.txt remove permanentemente — sem volta. Use rm -i arquivo para pedir confirmação. Para pastas com conteúdo use rm -r pasta/ — com muito cuidado! Nunca execute rm -rf /.
👀 Visualizando Conteúdo de Arquivos
Antes de editar ou processar um arquivo, é fundamental saber como visualizá-lo. Cada ferramenta tem seu caso de uso ideal:
catExibe o arquivo inteiro de uma vez — ideal para arquivos pequenos
lessVisualiza página por página — use q para sair, / para buscar
headMostra as primeiras N linhas (padrão: 10)
tail -fMonitora arquivo em tempo real — essencial para logs
bash — visualização de arquivos
usuario@servidor:~$catnotas.txtLinha 1: Estudar LinuxLinha 2: Praticar comandosusuario@servidor:~$head-5/var/log/syslog# Primeiras 5 linhasusuario@servidor:~$tail-5/var/log/syslog# Últimas 5 linhasusuario@servidor:~$tail-f/var/log/syslog# Monitora em tempo real! (Ctrl+C para sair)
🌟 tail -f é uma das ferramentas mais valiosas para administradores: monitora um arquivo de log em tempo real, exibindo novas linhas conforme são escritas. Indispensável ao diagnosticar falhas em servidores. Pressione Ctrl+C para sair.
🔍 Busca: grep e find
Encontrar arquivos e conteúdo específico é uma habilidade essencial. O grep busca texto dentro de arquivos, enquanto find localiza arquivos pelo nome, tipo, tamanho ou data.
grep — busca padrões dentro de arquivos
As flags do grep são simples mas poderosas — memorize as principais:
-rBusca recursiva em subdiretórios
-iIgnora maiúsculas e minúsculas
-nMostra o número da linha encontrada
-vInverte — mostra linhas que NÃO contêm
-cConta quantas linhas correspondem
-lLista só o nome dos arquivos com resultado
bash — grep
usuario@servidor:~$grep"erro"sistema.log# Busca "erro" no arquivousuario@servidor:~$grep-r"usuario"/etc/# Busca recursivamente em /etcusuario@servidor:~$grep-i"ERRO"sistema.log# Ignora maiúsculas/minúsculasusuario@servidor:~$grep-n"falha"sistema.log# Mostra número da linhausuario@servidor:~$grep-v"INFO"sistema.log# Linhas que NÃO contêm INFO
find — localiza arquivos no sistema
bash — find
usuario@servidor:~$find/home-name"*.txt"# Busca arquivos .txtusuario@servidor:~$find/var/log-mtime-7# Modificados nos últimos 7 diasusuario@servidor:~$find/tmp-typef-size+1M# Arquivos maiores que 1 MBusuario@servidor:~$find/etc-name"*.conf"-typef# Arquivos .conf em /etcusuario@servidor:~$locatesshd.conf# Busca rápida via banco de dados
💡 locate vs find:locate é muito mais rápido pois usa um banco de dados pré-indexado, mas pode estar desatualizado. find varre o disco em tempo real com filtros avançados. Para atualizar o banco do locate, execute sudo updatedb.
🔗 Pipes e Redirecionamentos
Uma das maiores potências do Linux é compor comandos simples para resolver tarefas complexas. O pipe (|) encadeia a saída de um comando como entrada do próximo.
Pipe — a saída de um vira a entrada do próximo
cat /var/log/sysloglê o arquivo
→
grep "error"filtra as linhas
→
tail -20últimas 20
bash — pipes
usuario@servidor:~$ls-la|grep".txt"# Lista e filtra .txtusuario@servidor:~$ls|wc -l# Conta quantos arquivos háusuario@servidor:~$ps aux|grepnginx# Localiza processo nginxusuario@servidor:~$cat/var/log/syslog|grep"error"|tail-20
Redirecionamentos — salvando e descartando saídas
>
Sobrescreve
Redireciona saída para arquivo — apaga o conteúdo anterior
>>
Adiciona ao final
Redireciona saída — acrescenta sem apagar o que já existe
<
Entrada de arquivo
Usa um arquivo como entrada de um comando
2>
Erros (stderr)
Redireciona somente mensagens de erro para arquivo
bash — redirecionamentos
usuario@servidor:~$ls-la>arquivos.txt# Salva listagem (sobrescreve)usuario@servidor:~$echo"$(date)">>log.txt# Acrescenta data ao logusuario@servidor:~$catarquivo|grep"erro">erros.log# Filtra e salva só os errosusuario@servidor:~$comando2>/dev/null# Descarta mensagens de errousuario@servidor:~$comando>>/dev/null2>&1# Descarta tudo (saída + erros)
⚡ Atalhos do Terminal e Produtividade
Conhecer os atalhos de teclado do terminal pode multiplicar sua velocidade no dia a dia. O Bash oferece combinações que evitam redigitar comandos e navegam no histórico rapidamente.
Tab — autocompletar (use sempre!)
bash — Tab e histórico
usuario@servidor:~$cd Doc[Tab] → cd Documentos/# Autocompleta pastausuario@servidor:~$cat rel[Tab] → cat relatorio.txt# Autocompleta arquivousuario@servidor:~$cd D[Tab][Tab]# Mostra todas as opções com DDesktop/ Documentos/ Downloads/# Histórico de comandosusuario@servidor:~$history 501 ls -la 502 cd Documentos 503 cat notas.txtusuario@servidor:~$!502# Re-executa comando 502usuario@servidor:~$!!# Re-executa o último comando
Atalhos essenciais de teclado
Ctrl+C
Cancela/interrompe o comando atual — seu "botão de emergência"
Ctrl+Z
Suspende o processo e envia para segundo plano
Ctrl+D
Encerra o terminal (EOF — End of File)
Ctrl+L
Limpa a tela — equivale ao comando clear
Ctrl+A
Move o cursor para o início da linha
Ctrl+E
Move o cursor para o fim da linha
Ctrl+U
Apaga tudo da posição atual até o início
Ctrl+R
Busca reversa no histórico — pesquisa enquanto digita
🌟 Dica de ouro:Ctrl+R é excelente para resgatar comandos longos que você usou antes — basta digitar parte do comando e ele aparece. Ctrl+C é o botão de emergência: algo travou ou está demorando demais? Pressione-o imediatamente.
🚀 Combinando Comandos: Casos Reais
O verdadeiro poder do terminal aparece quando você combina comandos. Um administrador experiente resolve em uma única linha o que levaria minutos com ferramentas gráficas.
🔍 Encontrar e contar arquivos .log maiores que 10MB
$find/var/log-name"*.log"-size+10M|wc -l
⚠️ Ver as 10 últimas linhas de erro do syslog
$grep-i"error"/var/log/syslog|tail-10
💾 Salvar lista de processos em arquivo de relatório
$ps aux|grep-v"grep">>processos.txt
🔒 Buscar arquivos de configuração que contêm "Port 22"
$grep-r"Port 22"/etc/2>/dev/null
📦 Listar os 5 maiores arquivos na pasta atual
$ls-lhS|head-6
💡 Prática recomendada: Quando um comando complexo der certo, salve-o em um arquivo de "receitas" pessoal (~/.meus-comandos.txt). Com o tempo, você terá uma biblioteca de one-liners que resolve problemas recorrentes em segundos.
🎯 Exercício — Arraste e Conecte
Arraste cada descrição para o comando correto.
Descrição
Lista arquivos com detalhes e ocultos, mostrando permissões, dono e tamanho
Busca texto recursivamente em todos os arquivos de um diretório e subdiretórios
Copia um diretório inteiro com todo o seu conteúdo para outro local
Move ou renomeia um arquivo para outro caminho ou nome
Filtra a saída de um comando com grep e salva apenas as linhas correspondentes num arquivo
Monitora um arquivo de log exibindo novas linhas em tempo real conforme são gravadas
Comando
ls -la
grep -r "texto"
cp -r src/ dst/
mv arquivo.txt /backup/
cat arq | grep erro > log.txt
tail -f /var/log/syslog
🛠️ Atividade Prática — Explorador do Terminal
⏱️ ~30 min💻 Ubuntu Server / Terminal📸 Tirar screenshot da saída
1
Navegar pelos diretórios principais
Execute pwd para confirmar onde está, navegue com cd /var/log e liste com ls -lh. Volte para a home com cd ~.
2
Criar uma estrutura de pastas de projeto
Crie em um único comando: mkdir -p ~/lab-terminal/{scripts,logs,backup}. Confirme com ls -la ~/lab-terminal/. Crie três arquivos com touch dentro de scripts/.
3
Copiar e mover arquivos
Copie um arquivo para backup/: cp ~/lab-terminal/scripts/arquivo1.txt ~/lab-terminal/backup/. Mova e renomeie outro: mv ~/lab-terminal/scripts/arquivo2.txt ~/lab-terminal/logs/registro.txt.
4
Buscar arquivos com find e grep
Localize todos os .txt: find ~/lab-terminal -name "*.txt". Adicione texto: echo "teste de busca com grep" > ~/lab-terminal/scripts/notas.txt e busque com grep -r "grep" ~/lab-terminal/.
5
Usar pipes para filtrar dados
Combine: ls -la ~/lab-terminal/ | grep "^d" (só pastas), ps aux | grep bash (processos bash) e ls | wc -l (conta arquivos).
6
Redirecionar saída para arquivo de log
Gere um relatório: echo "=== Relatório $(date) ===" > ~/lab-terminal/logs/relatorio.txt, depois ls -la ~/lab-terminal/ >> ~/lab-terminal/logs/relatorio.txt. Visualize com cat ~/lab-terminal/logs/relatorio.txt.
📌 Para refletir: O terminal Linux é uma linguagem de composição — cada comando pequeno resolve uma tarefa, e você os conecta com | e > para criar fluxos de trabalho poderosos. Um único administrador com bom domínio do terminal consegue gerenciar centenas de servidores com eficiência impossível de alcançar em ambientes gráficos.