⬅ Voltar ao Dashboard Módulo 1 — Fundamentos Linux

⌨️ Comandos Essenciais e Produtividade

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.

pwd Mostra o diretório atual
Print Working Directory
ls Lista arquivos e pastas do diretório atual
cd Navega entre diretórios
Change Directory
bash — navegação básica
usuario@servidor:~$ pwd /home/usuario usuario@servidor:~$ ls -la drwxr-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.txt usuario@servidor:~$ cd Documentos usuario@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.

mkdir Cria diretórios
-p cria toda a estrutura
touch Cria arquivo vazio ou atualiza a data de modificação
cp Copia arquivo ou pasta
-r para pastas
mv Move ou renomeia arquivo ou pasta
rm Remove arquivos
Sem lixeira!
bash — manipulação de arquivos
usuario@servidor:~$ mkdir -p projetos/site/css # Cria estrutura inteira de uma vez usuario@servidor:~$ touch notas.txt # Cria arquivo vazio usuario@servidor:~$ cp notas.txt backup.txt # Copia arquivo usuario@servidor:~$ mv backup.txt /tmp/ # Move para /tmp usuario@servidor:~$ cp -r projetos/ backup_projetos/ # Copia pasta inteira usuario@servidor:~$ rm -i notas.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:

cat Exibe o arquivo inteiro de uma vez — ideal para arquivos pequenos
less Visualiza página por página — use q para sair, / para buscar
head Mostra as primeiras N linhas (padrão: 10)
tail -f Monitora arquivo em tempo real — essencial para logs
bash — visualização de arquivos
usuario@servidor:~$ cat notas.txt Linha 1: Estudar Linux Linha 2: Praticar comandos usuario@servidor:~$ head -5 /var/log/syslog # Primeiras 5 linhas usuario@servidor:~$ tail -5 /var/log/syslog # Últimas 5 linhas usuario@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:

-r Busca recursiva em subdiretórios
-i Ignora maiúsculas e minúsculas
-n Mostra o número da linha encontrada
-v Inverte — mostra linhas que NÃO contêm
-c Conta quantas linhas correspondem
-l Lista só o nome dos arquivos com resultado
bash — grep
usuario@servidor:~$ grep "erro" sistema.log # Busca "erro" no arquivo usuario@servidor:~$ grep -r "usuario" /etc/ # Busca recursivamente em /etc usuario@servidor:~$ grep -i "ERRO" sistema.log # Ignora maiúsculas/minúsculas usuario@servidor:~$ grep -n "falha" sistema.log # Mostra número da linha usuario@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 .txt usuario@servidor:~$ find /var/log -mtime -7 # Modificados nos últimos 7 dias usuario@servidor:~$ find /tmp -type f -size +1M # Arquivos maiores que 1 MB usuario@servidor:~$ find /etc -name "*.conf" -type f # Arquivos .conf em /etc usuario@servidor:~$ locate sshd.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/syslog lê o arquivo
grep "error" filtra as linhas
tail -20 últimas 20
bash — pipes
usuario@servidor:~$ ls -la | grep ".txt" # Lista e filtra .txt usuario@servidor:~$ ls | wc -l # Conta quantos arquivos há usuario@servidor:~$ ps aux | grep nginx # Localiza processo nginx usuario@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 log usuario@servidor:~$ cat arquivo | grep "erro" > erros.log # Filtra e salva só os erros usuario@servidor:~$ comando 2> /dev/null # Descarta mensagens de erro usuario@servidor:~$ comando >> /dev/null 2>&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 pasta usuario@servidor:~$ cat rel[Tab]cat relatorio.txt # Autocompleta arquivo usuario@servidor:~$ cd D[Tab][Tab] # Mostra todas as opções com D Desktop/ Documentos/ Downloads/ # Histórico de comandos usuario@servidor:~$ history 501 ls -la 502 cd Documentos 503 cat notas.txt usuario@servidor:~$ !502 # Re-executa comando 502 usuario@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.