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 repetitivasEficiência : Comandos mais rápidos que cliquesPoder : Acesso a todas as funcionalidades do sistemaAdministração remota : SSH para gerenciar servidoresTroubleshooting : Diagnóstico preciso de problemasEstrutura do Sistema de Arquivos Linux# Diferente do Windows (C:, D:), Linux usa uma estrutura hierárquica única:
├ ├ ├ ├ ├ │ │ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ b b d e h ├ └ l m m o p r r s s s t u v i o e t o ─ ─ i e n p r o u b r y m s a n v c m ─ ─ b d t t o n i v s p r r t / e / i / c t n / / / / / u u a / s s / u u a a r r i i o o 1 2 / / ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( b a d c d b m p s i h d b d i a a d r i r i o i i í o o n o a i a n r p a a n q s n r b d n f f m d n d f q l d i á u p f e l i t t o e o á o o u i o z r i o i t i a o w r s r s r i c s i v s g ó o s s a m d i m v a - o o i u r t r a o d o d a o ç v s s t r i e r d e ç e s e ç s õ a r i a o c e e õ r õ e r o e d v ç s a m o e o r d s e t s i o s e o õ s o m p s o u e e s e á t s s e d v o c t n r m d v ) e b ) s o c í n i d ) t s v d p e e n o s o v t o e i i i o o i c o d m e a n m s ç r u s i t o u p i g a p e t o k á s a ) s a s e l r ) e s e r u - i s u r ) m ) o m ) r i á s i á t c a n o r l ) s r i t e ) e s i o t i l e s l ) o g e o h m s ) ) s m s a p o , a ) d o s ) a r ) c s á a ) r c i h o e s ) ) 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 terceirosNavegaçã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:
d - - r r r w w w x - x r r r - - - x - x r r r - - - x - x 2 1 1 u u u s s s u u u a a a r r r i i i o o o g g g r r r u u u p p p o o o 4 1 . . 1 0 5 2 K M K f f j e e a v v n 3 2 1 0 1 1 0 0 5 9 : : : 3 2 1 0 0 5 D f s o o c c t r u o i m . p e j t n p . t g s o h s
Entendendo as permissões:
d: diretóriorwx: read, write, executePrimeiro 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 anteriorO 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 linhaCtrl + E : Fim da linhaCtrl + U : Apagar do cursor até o inícioCtrl + K : Apagar do cursor até o fimCtrl + W : Apagar palavra anteriorAlt + B : Voltar uma palavraAlt + F : Avançar uma palavraControle de Processos# Ctrl + C : Interromper comando atualCtrl + Z : Suspender comando (background)Ctrl + D : Logout / EOFCtrl + L : Limpar tela (igual a clear)Histórico de Comandos# Seta ↑/↓ : Navegar no históricoCtrl + R : Buscar no histórico (reverse search)!! : Repetir último comando!$ : Último argumento do comando anterior1
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
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