Fundamentos do Terminal Linux
Linux oferece um poderoso conjunto de ferramentas via linha de comando. Dominar esses comandos é essencial para administração de sistemas, manipulação de arquivos, gerenciamento de processos e configuração de redes.
- Controle Remoto e Inicialização
Desligamento e Reinicialização
# Comandos frequentes
reboot # reinicia o sistema
init 0 # desliga
# Outros exemplos
shutdown -h now # desliga imediatamente
shutdown -h +1 # desliga após 1 minuto
halt # para o sistema (desliga manualmente)
poweroff # para e desliga a energia
shutdown -r now # reinicia agora
init 6 # reinicia
logout # encerra a sessão
Ativação do SSH
# Instalar servidor SSH (CentOS)
yum -y install openssh-server
# Instalar servidor SSH (Ubuntu)
apt -y install openssh-server
# Iniciar e habilitar serviço
systemctl start sshd
systemctl enable sshd
# Instalar ferramentas de rede (se necessário)
apt -y install net-tools
ifconfig # exibe informações de rede
# Editar configuração SSH
sudo vi /etc/ssh/sshd_config
# Port 22
# PermitRootLogin yes
# PasswordAuthentication yes
# Reiniciar serviço
systemctl restart sshd
- Estrutura de Diretórios do Linux
root@ubuntu:/# tree -L 1
.
|-- efi # arquivos de inicialização
|-- boot # kernel, initrd, grub
|-- dev # dispositivos (bloco, caractere)
|-- etc # configurações do sistema
|-- home # diretórios dos usuários
|-- root # diretório do superusuário
|-- lib -> usr/lib # bibliotecas estáticas e dinâmicas
|-- lib64 -> usr/lib64
|-- var # dados variáveis (logs, cache, backups)
|-- bin -> usr/bin # comandos executáveis do usuário
|-- sbin -> usr/sbin # comandos administrativos
|-- usr # recursos do sistema (aplicativos)
|-- proc # sistema de arquivos virtual (processos)
|-- sys # informações do hardware
|-- media # ponto de montagem para mídias removíveis
|-- mnt # montagem temporária
|-- opt # software de terceiros
|-- tmp # arquivos temporários
|-- lost+found # arquivos recuperados após falha
|-- run # informações da inicialização
|-- srv # dados para serviços de rede (FTP, TFTP)
- Comandos de Navegação e Arquivos
Formato Geral
comando [-opções] [argumentos]
# Exemplo: ls -l /home/arquivo.txt
# Exemplo: cp -r pasta1 pasta2
ls – Listar Arquivos
ls [ -a -l -h ] [caminho]
ls -a # mostra todos (incluindo ocultos)
ls -l # formato detalhado (lista)
ls -la # combina -l e -a
# Arquivos ocultos começam com .
cd – Mudar de Diretório
cd [caminho] # muda para o diretório especificado
cd # volta para o diretório HOME
pwd – Diretório Atual
pwd # imprime o caminho completo do diretório atual
mkdir – Criar Pastas
mkdir [-p] caminho # cria diretório
# -p cria diretórios intermediários automaticamente
mkdir projeto
mkdir -p ~/aulas/modulo1/atividades
touch – Criar Arquivos
touch caminho # cria arquivo vazio
touch /tmp/meu_arquivo.txt
cat / more – Visualizar Conteúdo
cat relatorio.txt # exibe todo o conteúdo
more relatorio.txt # exibe paginado (espaço para próxima página, q para sair)
cp – Copiar
cp [-r] origem destino # copia arquivos ou pastas
cp documento.txt backup.txt
cp -r pasta_projeto /tmp/
mv – Mover / Renomear
mv origem destino # move ou renomeia
mv dados.txt /home/usuario/
mv antigo_nome.txt novo_nome.txt
rm – Remover
rm [-r -f] arquivo1 arquivo2 ...
# -r: recursivo (pastas)
# -f: força (sem confirmação)
rm temp.txt
rm -r pasta_velha
rm -rf lixo/ # cuidado!
# Suporte a curingas: rm *.log, rm relatorio*
which – Localizar Programa
which python3
# /usr/bin/python3
which nano
# /usr/bin/nano
find – Buscar Arquivos
# Por nome
find / -name "config.txt"
find /home -name "*.docx"
# Por tamanho
find / -size +100M
find /var -size -1k
grep – Filtrar Linhas
grep [-n] "padrão" arquivo
# -n: mostra número da linha
grep "erro" log.txt
grep -n "sucesso" relatorio.txt
# Pode ser usado com pipe: cat /etc/passwd | grep "root"
wc – Contar Linhas, Palavras, Caracteres
wc [-l -w -c -m] arquivo
wc -l lista.txt # número de linhas
wc -w texto.txt # número de palavras
wc -c dados.bin # bytes
# Combinado: cat log.txt | wc -l
Pipe (|) – Encadeamento
# Saída de um comando vira entrada do próximo
ls -la /usr/bin | grep "zip"
cat /var/log/syslog | grep "kernel" | tail -5
echo e Redirecionamento
echo "Olá mundo"
echo "Linha 1" > arquivo.txt # sobrescreve
echo "Linha 2" >> arquivo.txt # anexa
# Aspas invertidas executam comando: echo `date`
# Variáveis: echo $HOME
tail – Final do Arquivo
tail [-f -n] arquivo
tail -n 20 log.txt # últimas 20 linhas
tail -f /var/log/syslog # monitora em tempo real (Ctrl+C para sair)
- Editor de Texto: vi/vim
vi arquivo.txt
vim arquivo.txt # versão melhorada com cores
# Modos: comando, inserção, modo de linha
| Modo Comando |
Ação |
| i |
entra no modo inserção (antes do cursor) |
| a |
inserção depois do cursor |
| I |
enserção no início da linha |
| A |
inserção no final da linha |
| o |
abre nova linha abaixo |
| O |
abre nova linha acima |
| Esc |
volta ao modo comando |
| Navegação |
Tecla |
| Cima / k |
sobe |
| Baixo / j |
desce |
| Esquerda / h |
esquerda |
| Direita / l |
direita |
| 0 |
início da linha |
| $ |
final da linha |
| PgUp/PgDn |
página acima/abaixo |
| / |
busca para frente |
| n/N |
próximo/anterior na busca |
| Edição |
Comando |
| dd |
apaga linha |
| ndd |
apaga n linhas (ex: 5dd) |
| yy |
copia linha |
| nyy |
copia n linhas |
| p |
cola |
| u |
desfaz |
| Ctrl+r |
refaz |
| gg |
vai para primeira linha |
| G |
vai para última linha |
| dG |
apaga até o final |
| dgg |
apaga até o início |
| d$ |
apaga até o final da linha |
| d0 |
apaga até o início da linha |
| Modo de Linha |
Comando |
| :wq |
salva e sai |
| :q! |
sai sem salvar |
| :w |
salva |
| :set nu |
mostra números de linha |
| :set paste |
modo colar sem indentação |
Ajuda
comando --help # resumo de opções
man comando # manual completo (ex: man ls)
info comando # documentação alternativa
- Usuários e Permissões
Superusuário (root)
su - howard # muda para o usuário howard (carrega ambiente)
su root # muda para root (sem - não carrega perfil)
# Para voltar: exit ou Ctrl+D
sudo – Executar como root
sudo comando # executa com privilégios de root
# Para configurar: visudo ou editar /etc/sudoers
howard ALL=(ALL) NOPASSWD:ALL
Gerenciamento de Grupos
groupadd grupo_novo # cria grupo
groupdel grupo_existente # remove grupo
Gerenciamento de Usuários
useradd [-g grupo] [-d home] nome # cria usuário
# -g: grupo primário, -d: diretório home
userdel [-r] nome # remove usuário (-r remove home)
id nome # exibe UID, GID e grupos do usuário
usermod -aG grupo nome # adiciona usuário a um grupo
getent passwd # lista todos os usuários do sistema
Permissões
# Leitura (r=4), Escrita (w=2), Execução (x=1)
# Dono | Grupo | Outros
chmod u=rwx,g=rx,o=r arquivo # 754
chmod -R 755 pasta/ # recursivo
chown dono:grupo arquivo # altera proprietário (apenas root)
chown -R usuario:grupo pasta/
- Utilitários Essenciais
Atalhos do Terminal
Ctrl+D # logout
Ctrl+R # busca reversa no histórico
Ctrl+A # início da linha
Ctrl+E # final da linha
Ctrl+←/→ # pula palavra
history # lista comandos anteriores
!comando # executa último comando que começa com "comando"
Gerenciamento de Pacotes
# CentOS/RHEL
yum install wget
yum remove wget
yum search wget
# Ubuntu/Debian
apt install wget
apt remove wget
apt search wget
# Pacotes locais .rpm/.deb
rpm -ivh pacote.rpm
dpkg -i pacote.deb
systemctl – Serviços
systemctl start | stop | status | enable | disable nome_servico
# Exemplos: sshd, firewalld, NetworkManager
systemctl enable ntp
ln – Links
ln -s alvo link # link simbólico (atalho)
ln -s /etc/nginx /home/usuario/nginx
rm link # remove o link (não afeta o destino)
date – Data e Hora
date # data e hora atuais
date "+%Y-%m-%d %H:%M:%S" # formato personalizado
date -d "+1 day" +%Y%m%d # data de amanhã
date -d "-1 month" +%Y-%m # mês passado
# Sincronizar timezone: ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
ifconfig / hostname – Rede
ifconfig # exibe interfaces de rede (instalar net-tools)
hostname # nome do host
hostnamectl set-hostname novo-nome # altera permanentemente
cat /etc/hosts # resolução local de nomes
Ping e Download
ping -c 4 google.com # testa conectividade (4 pacotes)
wget URL # download de arquivo
curl -O URL # download via HTTP
Portas – nmap / netstat
nmap 127.0.0.1 # escaneia portas abertas
netstat -anp | grep :80 # verifica qual processo usa a porta 80
Processos – ps / top / kill
ps -ef # lista todos os processos
ps aux # formato alternativo
top # monitor em tempo real (q para sair)
kill 1234 # encerra processo com PID 1234
kill -9 5678 # força encerramento
ps -ef | grep nginx
Monitoramento – df / iostat / sar
df -h # espaço em disco (human readable)
iostat -x 2 3 # estatísticas de I/O (2s, 3 vezes)
sar -n DEV 1 5 # tráfego de rede (1s, 5 vezes)
Variáveis de Ambiente
env # lista todas as variáveis
echo $PATH # exibe o PATH
export MEU_VAR="valor" # variável temporária (sessão)
# Para tornar permanente:
echo 'export MEU_VAR="valor"' >> ~/.bashrc # usuário atual
source ~/.bashrc
# Para todos os usuários: /etc/profile
# PATH customizado:
export PATH=$PATH:/home/usuario/meu_scripts
Compactação e Compressão
# tar (gzip)
tar -zcvf backup.tar.gz pasta/ # compactar
tar -zxvf backup.tar.gz -C /destino # descompactar
# zip
zip -r arquivos.zip pasta/ # compactar
unzip arquivos.zip -d /destino # descompactar
SCP – Transferência entre servidores
scp arquivo.txt usuario@servidor:/caminho/ # enviar
scp usuario@servidor:/caminho/arquivo.txt . # receber
scp -r pasta/ usuario@servidor:~/ # pasta recursiva
- Considerações Finais
Esses comandos formam a base do trabalho diário com Linux. Pratique em um ambiente virtual ou container para ganhar fluência. Use man e --help para explorar opções avançadas de cada ferramenta.