Por Que Usar o Terminal?#
O terminal (ou shell) é uma das ferramentas mais poderosas do Linux. Enquanto interfaces gráficas são limitadas ao que os desenvolvedores implementaram, o terminal oferece:
- Automação: Scripts para tarefas repetitivas
- Eficiência: Comandos mais rápidos que cliques
- Poder: Acesso a todas as funcionalidades do sistema
- Administração remota: SSH para gerenciar servidores
- Troubleshooting: Diagnóstico preciso de problemas
Estrutura do Sistema de Arquivos Linux#
Diferente do Windows (C:, D:), Linux usa uma estrutura hierárquica única:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| / (raiz - root)
├── bin/ (binários essenciais)
├── boot/ (arquivos de boot)
├── dev/ (dispositivos)
├── etc/ (configurações do sistema)
├── home/ (diretórios dos usuários)
│ ├── usuario1/
│ └── usuario2/
├── lib/ (bibliotecas compartilhadas)
├── media/ (mídias removíveis)
├── mnt/ (pontos de montagem temporários)
├── opt/ (software opcional)
├── proc/ (informações de processos)
├── root/ (home do root)
├── run/ (dados de runtime)
├── sbin/ (binários de sistema)
├── srv/ (dados de serviços)
├── sys/ (informações do kernel)
├── tmp/ (arquivos temporários)
├── usr/ (aplicações de usuário)
└── var/ (dados variáveis - logs, cache)
|
Diretórios Importantes#
/home/usuario: Seus arquivos pessoais (equivalente a C:\Users\usuario)/etc: Configurações do sistema/var/log: Logs do sistema/tmp: Arquivos temporários (limpo no reboot)/usr/bin: Programas instalados/opt: Software de terceiros
Navegação Básica#
pwd - Print Working Directory#
Mostra onde você está:
1
2
| pwd
# Saída: /home/usuario/Documentos
|
ls - List#
Lista arquivos e diretórios:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| # Listagem simples
ls
# Listagem detalhada
ls -l
# Mostrar arquivos ocultos
ls -a
# Listagem detalhada com arquivos ocultos
ls -la
# Tamanhos legíveis (KB, MB, GB)
ls -lh
# Ordenar por data de modificação
ls -lt
# Ordenar por tamanho
ls -lS
# Listagem recursiva
ls -R
|
Saída de ls -lh:
1
2
3
| drwxr-xr-x 2 usuario grupo 4.0K fev 2 10:30 Documentos
-rw-r--r-- 1 usuario grupo 1.5M fev 1 15:20 foto.jpg
-rwxr-xr-x 1 usuario grupo 12K jan 30 09:15 script.sh
|
Entendendo as permissões:
d: diretóriorwx: read, write, execute- Primeiro grupo: permissões do dono
- Segundo grupo: permissões do grupo
- Terceiro grupo: permissões de outros
cd - Change Directory#
Navega entre diretórios:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # Ir para um diretório
cd /home/usuario/Documentos
# Voltar ao diretório anterior
cd -
# Ir para o diretório home
cd
# ou
cd ~
# Subir um nível
cd ..
# Subir dois níveis
cd ../..
# Ir para a raiz
cd /
|
Atalhos úteis:
~: Diretório home (/home/usuario).: Diretório atual..: Diretório pai-: Diretório anterior
O TAB é seu melhor amigo:
1
2
3
4
5
6
7
| # Digite parte do nome e pressione TAB
cd Doc[TAB]
# Completa para: cd Documentos/
# Pressione TAB duas vezes para ver opções
cd D[TAB][TAB]
# Mostra: Desktop/ Documentos/ Downloads/
|
Manipulação de Diretórios#
mkdir - Make Directory#
Cria diretórios:
1
2
3
4
5
6
7
8
9
10
11
| # Criar um diretório
mkdir projetos
# Criar múltiplos diretórios
mkdir projeto1 projeto2 projeto3
# Criar estrutura de diretórios
mkdir -p projetos/web/frontend/src
# Criar com permissões específicas
mkdir -m 755 publico
|
rmdir - Remove Directory#
Remove diretórios vazios:
1
2
3
4
5
| # Remover diretório vazio
rmdir pasta_vazia
# Remover estrutura de diretórios vazios
rmdir -p projetos/teste/vazio
|
rm - Remove#
Remove arquivos e diretórios:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| # Remover arquivo
rm arquivo.txt
# Remover múltiplos arquivos
rm arquivo1.txt arquivo2.txt
# Remover diretório e conteúdo (CUIDADO!)
rm -r pasta/
# Remover forçado (sem confirmação)
rm -f arquivo.txt
# Remover diretório forçado e recursivo
rm -rf pasta/
# Remover com confirmação
rm -i arquivo.txt
# Remover arquivos com padrão
rm *.txt
rm backup_*
|
⚠️ ATENÇÃO: rm -rf é permanente! Não há lixeira no terminal.
Manipulação de Arquivos#
cp - Copy#
Copia arquivos e diretórios:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| # Copiar arquivo
cp origem.txt destino.txt
# Copiar para outro diretório
cp arquivo.txt /home/usuario/Documentos/
# Copiar múltiplos arquivos
cp arquivo1.txt arquivo2.txt /destino/
# Copiar diretório recursivamente
cp -r pasta_origem/ pasta_destino/
# Copiar preservando atributos
cp -p arquivo.txt backup.txt
# Copiar com confirmação antes de sobrescrever
cp -i arquivo.txt destino.txt
# Copiar mostrando progresso
cp -v arquivo.txt destino.txt
|
mv - Move#
Move ou renomeia arquivos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # Renomear arquivo
mv nome_antigo.txt nome_novo.txt
# Mover arquivo
mv arquivo.txt /home/usuario/Documentos/
# Mover múltiplos arquivos
mv arquivo1.txt arquivo2.txt /destino/
# Mover diretório
mv pasta_antiga/ pasta_nova/
# Mover com confirmação
mv -i arquivo.txt destino.txt
# Mover sem sobrescrever
mv -n arquivo.txt destino.txt
|
touch - Create File#
Cria arquivos vazios ou atualiza timestamp:
1
2
3
4
5
6
7
8
| # Criar arquivo vazio
touch arquivo.txt
# Criar múltiplos arquivos
touch arquivo1.txt arquivo2.txt arquivo3.txt
# Atualizar timestamp de arquivo existente
touch arquivo_existente.txt
|
Visualização de Arquivos#
cat - Concatenate#
Exibe conteúdo de arquivos:
1
2
3
4
5
6
7
8
9
10
11
| # Mostrar conteúdo
cat arquivo.txt
# Mostrar múltiplos arquivos
cat arquivo1.txt arquivo2.txt
# Mostrar com números de linha
cat -n arquivo.txt
# Concatenar arquivos em um novo
cat arquivo1.txt arquivo2.txt > combinado.txt
|
Visualiza arquivos grandes (navegável):
1
2
3
4
5
6
7
8
| less arquivo.txt
# Navegação dentro do less:
# Espaço: próxima página
# b: página anterior
# /texto: buscar texto
# n: próxima ocorrência
# q: sair
|
head - First Lines#
Mostra primeiras linhas:
1
2
3
4
5
6
7
8
| # Primeiras 10 linhas (padrão)
head arquivo.txt
# Primeiras 20 linhas
head -n 20 arquivo.txt
# Primeiros 100 bytes
head -c 100 arquivo.txt
|
tail - Last Lines#
Mostra últimas linhas:
1
2
3
4
5
6
7
8
9
10
11
| # Últimas 10 linhas (padrão)
tail arquivo.txt
# Últimas 50 linhas
tail -n 50 arquivo.txt
# Acompanhar arquivo em tempo real (logs)
tail -f /var/log/syslog
# Acompanhar com número de linhas
tail -f -n 100 /var/log/syslog
|
Busca e Localização#
find - Find Files#
Busca arquivos no sistema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| # Buscar por nome
find /home -name "arquivo.txt"
# Buscar ignorando maiúsculas/minúsculas
find /home -iname "arquivo.txt"
# Buscar por extensão
find /home -name "*.pdf"
# Buscar arquivos modificados nos últimos 7 dias
find /home -mtime -7
# Buscar arquivos maiores que 100MB
find /home -size +100M
# Buscar e executar comando
find /tmp -name "*.tmp" -delete
# Buscar diretórios
find /home -type d -name "projetos"
# Buscar arquivos
find /home -type f -name "*.log"
|
locate - Fast Find#
Busca rápida usando banco de dados:
1
2
3
4
5
6
7
8
9
10
11
| # Buscar arquivo
locate arquivo.txt
# Atualizar banco de dados
sudo updatedb
# Buscar ignorando maiúsculas
locate -i arquivo.txt
# Limitar resultados
locate -n 10 arquivo.txt
|
which - Find Command#
Localiza executáveis:
1
2
3
4
5
6
| # Onde está o comando?
which python
# Saída: /usr/bin/python
which ls
# Saída: /usr/bin/ls
|
whereis - Locate Binary#
Localiza binário, fonte e manual:
1
2
| whereis python
# Saída: python: /usr/bin/python /usr/lib/python3.10 /usr/share/man/man1/python.1.gz
|
Atalhos de Teclado Essenciais#
Navegação na Linha#
- Ctrl + A: Início da linha
- Ctrl + E: Fim da linha
- Ctrl + U: Apagar do cursor até o início
- Ctrl + K: Apagar do cursor até o fim
- Ctrl + W: Apagar palavra anterior
- Alt + B: Voltar uma palavra
- Alt + F: Avançar uma palavra
Controle de Processos#
- Ctrl + C: Interromper comando atual
- Ctrl + Z: Suspender comando (background)
- Ctrl + D: Logout / EOF
- Ctrl + L: Limpar tela (igual a
clear)
Histórico de Comandos#
- Seta ↑/↓: Navegar no histórico
- Ctrl + R: Buscar no histórico (reverse search)
- !!: Repetir último comando
- !$: Último argumento do comando anterior
1
2
3
4
| # Exemplo de !$
mkdir /tmp/teste
cd !$
# Executa: cd /tmp/teste
|
Histórico de Comandos#
history - Command History#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| # Ver histórico
history
# Ver últimos 20 comandos
history 20
# Executar comando do histórico
!123 # Executa comando número 123
# Executar último comando que começou com 'git'
!git
# Buscar no histórico
Ctrl + R
# Digite parte do comando
|
Limpar Histórico#
1
2
3
4
5
| # Limpar histórico da sessão
history -c
# Limpar arquivo de histórico
rm ~/.bash_history
|
Wildcards (Curingas)#
Padrões para matching de arquivos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # * - qualquer sequência de caracteres
ls *.txt # Todos arquivos .txt
rm backup_* # Todos arquivos começando com backup_
# ? - um único caractere
ls arquivo?.txt # arquivo1.txt, arquivo2.txt, etc.
# [] - conjunto de caracteres
ls arquivo[123].txt # arquivo1.txt, arquivo2.txt, arquivo3.txt
ls [A-Z]*.txt # Arquivos começando com maiúscula
# {} - expansão de chaves
mkdir projeto_{web,mobile,api}
# Cria: projeto_web, projeto_mobile, projeto_api
cp arquivo.txt{,.bak}
# Cria: arquivo.txt.bak (backup)
|
Redirecionamento e Pipes#
Redirecionamento de Saída#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # Sobrescrever arquivo
ls > lista.txt
# Adicionar ao arquivo
ls >> lista.txt
# Redirecionar erro
comando 2> erros.txt
# Redirecionar saída e erro
comando > saida.txt 2>&1
# Descartar saída
comando > /dev/null
|
Pipes (|)#
Conecta saída de um comando à entrada de outro:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # Listar e filtrar
ls -l | grep ".txt"
# Contar linhas
cat arquivo.txt | wc -l
# Ordenar e remover duplicatas
cat lista.txt | sort | uniq
# Ver processos e filtrar
ps aux | grep python
# Logs em tempo real filtrados
tail -f /var/log/syslog | grep error
|
file - File Type#
Identifica tipo de arquivo:
1
2
3
4
5
| file documento.pdf
# Saída: documento.pdf: PDF document, version 1.4
file imagem.jpg
# Saída: imagem.jpg: JPEG image data
|
du - Disk Usage#
Uso de disco:
1
2
3
4
5
6
7
8
| # Tamanho do diretório atual
du -sh .
# Tamanho de cada subdiretório
du -h --max-depth=1
# Top 10 maiores diretórios
du -h | sort -rh | head -10
|
df - Disk Free#
Espaço livre em disco:
1
2
3
4
5
| # Espaço em disco
df -h
# Apenas sistema de arquivos local
df -h -x tmpfs -x devtmpfs
|
wc - Word Count#
Conta linhas, palavras, caracteres:
1
2
3
4
5
6
7
8
9
10
11
12
| # Contar linhas
wc -l arquivo.txt
# Contar palavras
wc -w arquivo.txt
# Contar caracteres
wc -c arquivo.txt
# Tudo junto
wc arquivo.txt
# Saída: linhas palavras bytes arquivo.txt
|
Dicas Práticas de Produção#
1. Sempre use TAB para autocompletar#
Evita erros de digitação e economiza tempo.
2. Use cd - para alternar entre diretórios#
1
2
3
| cd /var/log
cd /etc
cd - # Volta para /var/log
|
1
2
3
4
5
| # Executa segundo comando apenas se primeiro suceder
mkdir projeto && cd projeto
# Executa segundo comando apenas se primeiro falhar
cd /diretorio || echo "Diretório não existe"
|
4. Use aliases para comandos frequentes#
1
2
3
4
| # Adicione ao ~/.bashrc
alias ll='ls -lah'
alias ..='cd ..'
alias ...='cd ../..'
|
1
2
3
| # Use aspas ou escape
cd "Meus Documentos"
cd Meus\ Documentos
|
Exercícios Práticos#
Exercício 1: Navegação Básica#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # 1. Vá para seu diretório home
cd ~
# 2. Crie estrutura de diretórios
mkdir -p projetos/web/frontend projetos/web/backend
# 3. Navegue até frontend
cd projetos/web/frontend
# 4. Volte para projetos
cd ../..
# 5. Liste tudo recursivamente
ls -R
|
Exercício 2: Manipulação de Arquivos#
1
2
3
4
5
6
7
8
9
10
11
12
| # 1. Crie arquivos de teste
touch arquivo1.txt arquivo2.txt arquivo3.txt
# 2. Copie todos para backup
mkdir backup
cp *.txt backup/
# 3. Renomeie arquivo1
mv arquivo1.txt primeiro.txt
# 4. Liste com detalhes
ls -lh
|
Exercício 3: Busca e Filtros#
1
2
3
4
5
6
7
8
| # 1. Encontre todos arquivos .txt no home
find ~ -name "*.txt" -type f
# 2. Liste processos do Python
ps aux | grep python
# 3. Conte quantos arquivos .txt existem
find ~ -name "*.txt" -type f | wc -l
|
O Comando man#
O man (manual) é a documentação embutida do Linux. Praticamente todo comando tem uma página de manual detalhada.
Uso Básico#
1
2
3
4
| man ls # Manual do ls
man 5 passwd # Seção 5 (formato de arquivo) do passwd
man -k "copy files" # Buscar por palavra-chave
man -f ls # Descrição curta (equivale a whatis ls)
|
Seções do Manual#
| Seção | Conteúdo |
|---|
| 1 | Comandos de usuário |
| 2 | Chamadas de sistema (kernel) |
| 3 | Funções de biblioteca (C) |
| 4 | Arquivos especiais (/dev) |
| 5 | Formatos de arquivo (/etc/passwd, /etc/fstab) |
| 7 | Miscelânea (protocolos, convenções) |
| 8 | Comandos de administração (root) |
Exemplo: passwd existe na seção 1 (comando) e na seção 5 (formato do arquivo):
1
2
| man 1 passwd # Como usar o comando passwd
man 5 passwd # Formato do arquivo /etc/passwd
|
Navegação dentro do man#
| Tecla | Função |
|---|
| Espaço | Próxima página |
| b | Página anterior |
| /texto | Buscar texto |
| n | Próxima ocorrência |
| N | Ocorrência anterior |
| g | Ir para início |
| G | Ir para fim |
| q | Sair |
Alternativas ao man#
1
2
3
| ls --help # Ajuda rápida (resumida)
info ls # Documentação GNU (mais detalhada que man)
tldr ls # Exemplos práticos (instalar: sudo apt install tldr)
|
Recursos Adicionais#
Documentação#
1
2
3
4
5
6
7
8
| # Manual de um comando
man ls
# Ajuda rápida
ls --help
# Informações sobre comando
info ls
|
Cheat Sheets Online#
Prática Interativa#
Próximo capítulo: Gerenciamento de Arquivos e Permissões (em breve)
Capítulo anterior: 2 - Instalação