Mais de 500 comandos do Linux

Mascote do LinuxPro folheando um livro de comandos e apontando para uma linha, ao lado do terminal

Decorar comando não é o objetivo — saber que ele existe é. Este guia é a referência rápida do terminal Linux organizada por tarefa: você bate o olho, acha a família certa e vai fundo no man. No fim há o PDF com mais de 500 comandos, para baixar e consultar offline.

Antes de tudo: como descobrir o resto sozinho

Quatro comandos que substituem metade das buscas no Google:

man tar              # o manual completo, a fonte da verdade
tar --help           # o resumo, quando o man é longo demais
apropos compress     # procura comando pela descrição, quando você não sabe o nome
type -a ls           # o que é isso? alias, builtin, binário? onde está?

E o mais útil que não vem instalado: o tldr, que mostra exemplos práticos em vez de sintaxe formal.

sudo apt install tldr    # ou: sudo dnf install tealdeer / sudo pacman -S tealdeer
tldr tar

Navegar e mexer em arquivos

pwd                        # onde estou
cd /var/log                # ir para o diretório
cd -                       # voltar ao diretório anterior
ls -lah                    # listar: longo, ocultos, tamanho legível
ls -lt                     # ordenar pelo mais recente
tree -L 2                  # árvore de diretórios, 2 níveis

cp origem destino          # copiar
cp -a pasta/ /backup/      # copiar preservando tudo (dono, data, links)
mv antigo novo             # mover ou renomear
rm -i arquivo              # remover perguntando antes
rm -rf pasta/              # remover recursivo e sem perguntar (cuidado)
mkdir -p a/b/c             # criar a árvore inteira
ln -s /opt/app/bin/app /usr/local/bin/app   # link simbólico

touch arquivo              # criar vazio ou atualizar a data
stat arquivo               # metadados: inode, permissão, três datas
file arquivo               # que tipo de arquivo é este, de verdade
readlink -f link           # para onde o link aponta, resolvido
basename /a/b/c.txt        # c.txt
dirname  /a/b/c.txt        # /a/b

Ver e editar texto

cat arquivo                # despejar o conteúdo
less arquivo               # paginar (q sai, / busca, G vai ao fim)
head -n 20 arquivo         # primeiras 20 linhas
tail -n 50 arquivo         # últimas 50
tail -f /var/log/syslog    # acompanhar em tempo real
wc -l arquivo              # contar linhas

nano arquivo               # editor simples
vim arquivo                # editor do sysadmin (:wq salva e sai)

diff -u antigo novo        # diferença entre dois arquivos
comm -3 a.txt b.txt        # o que está em um e não no outro (arquivos ordenados)
tee arquivo                # escrever na tela E no arquivo ao mesmo tempo
sudo tee /etc/x.conf       # o truque para escrever em arquivo de root com pipe

Procurar

find /var -name "*.log"                    # por nome
find . -type f -size +100M                 # arquivos maiores que 100 MB
find . -mtime -1                           # modificados nas últimas 24h
find . -name "*.tmp" -delete               # achar e apagar
find . -type f -print0 | xargs -0 grep -l "senha"   # nomes com espaço, sem quebrar

grep -rn "erro" /var/log                   # recursivo, com número de linha
grep -i "warning" arquivo                  # ignorando maiúscula
grep -v "^#" /etc/ssh/sshd_config          # tirar comentários
grep -c "404" access.log                   # contar ocorrências
grep -A3 -B3 "falhou" log                  # com 3 linhas de contexto

locate nginx.conf                          # busca no índice (rode updatedb antes)
which python3                              # onde está o binário do PATH
whereis python3                            # binário, fonte e manual

Processar texto: o poder real do shell

cut -d: -f1 /etc/passwd                    # coluna 1, separador ":"
sort arquivo | uniq -c | sort -rn          # contar e ranquear ocorrências
tr 'a-z' 'A-Z' < arquivo                   # trocar caractere
sed 's/antigo/novo/g' arquivo              # substituir (na saída)
sed -i.bak 's/antigo/novo/g' arquivo       # substituir no arquivo, com backup
awk '{print $1, $9}' access.log            # imprimir colunas
awk '$9 == 404 {print $7}' access.log      # filtrar por coluna e imprimir outra
awk '{soma+=$1} END {print soma}' nums     # somar uma coluna
paste a.txt b.txt                          # colar arquivos lado a lado
column -t arquivo                          # alinhar em colunas
jq '.items[].name' dados.json              # o awk do JSON

O combo que resolve a maioria das análises de log: grep filtra, awk escolhe a coluna, sort | uniq -c | sort -rn ranqueia.

Permissões e propriedade

chmod 644 arquivo          # dono lê/escreve, resto só lê
chmod 755 script.sh        # executável para todos
chmod +x script.sh         # só ligar o bit de execução
chmod -R g+w pasta/        # recursivo, dá escrita ao grupo

chown usuario:grupo arquivo
chown -R www-data:www-data /var/www

umask 022                  # permissão padrão dos arquivos novos
getfacl arquivo            # ACLs, quando chmod não basta
setfacl -m u:joao:rw arquivo

sudo comando               # rodar como root
sudo -u www-data comando   # rodar como outro usuário
visudo                     # editar o sudoers com validação de sintaxe

Compactar e arquivar

tar czf pacote.tar.gz pasta/       # criar (c) gzip (z) arquivo (f)
tar xzf pacote.tar.gz              # extrair
tar tzf pacote.tar.gz              # listar sem extrair
tar xzf pacote.tar.gz -C /destino  # extrair em outro lugar
tar cJf pacote.tar.xz pasta/       # xz: comprime mais, demora mais

zip -r pacote.zip pasta/
unzip pacote.zip
gzip arquivo / gunzip arquivo.gz
zcat log.gz | grep erro            # ler comprimido sem descompactar

O mnemônico do tar: criar, extrair, listar.

Processos

ps aux                     # todos os processos
ps aux | grep nginx        # filtrar
pgrep -a nginx             # PIDs e linha de comando
top                        # monitor interativo clássico
htop                       # a versão civilizada (instale)
btop                       # a versão bonita (instale)

kill 1234                  # pedir para terminar (SIGTERM)
kill -9 1234               # matar sem chance de limpeza (último recurso)
pkill -f "python script"   # matar pelo padrão da linha de comando
killall nginx

nice -n 10 comando         # rodar com prioridade baixa
renice -n 5 -p 1234        # mudar prioridade de processo em execução

nohup comando &            # continua depois que você desloga
comando &                  # em segundo plano
jobs / fg / bg             # gerenciar os jobs do shell
lsof -p 1234               # arquivos abertos pelo processo
lsof -i :80                # quem está usando a porta 80

Disco e sistemas de arquivos

df -h                      # espaço livre por partição
du -sh *                   # tamanho de cada item do diretório atual
du -sh * | sort -rh | head # os maiores primeiro
ncdu /var                  # explorador de espaço interativo (instale)

lsblk -f                   # discos, partições e sistemas de arquivos
blkid                      # UUID e tipo de cada partição
mount /dev/sdb1 /mnt       # montar
umount /mnt                # desmontar
findmnt                    # o que está montado, em árvore

fdisk -l                   # particionamento (MBR/GPT)
mkfs.ext4 /dev/sdb1        # formatar
fsck /dev/sdb1             # checar (só com a partição desmontada)
smartctl -a /dev/sda       # saúde do disco (pacote smartmontools)

Usuários e grupos

whoami / id / groups
adduser joao               # criar usuário (interativo, Debian/Ubuntu)
usermod -aG sudo joao      # adicionar ao grupo — o -a é obrigatório
passwd joao                # trocar senha
deluser joao               # remover
su - joao                  # virar outro usuário
last                       # últimos logins
w                          # quem está logado agora e fazendo o quê

Pacotes

# Debian / Ubuntu
apt update && apt upgrade
apt install pacote
apt remove pacote / apt purge pacote
apt search termo / apt show pacote
apt list --installed
dpkg -l | grep nome        # o que está instalado
dpkg -S /usr/bin/ls        # de qual pacote veio este arquivo

# Fedora / RHEL / Rocky
dnf install pacote / dnf remove pacote
dnf search termo / dnf info pacote
rpm -qa | grep nome
rpm -qf /usr/bin/ls

# Arch
pacman -Syu / pacman -S pacote / pacman -Rns pacote
pacman -Qs termo / pacman -Qo /usr/bin/ls

# universais
snap list / flatpak list

Rede

ip a                       # endereços das interfaces (substitui ifconfig)
ip r                       # tabela de rotas
ip link set eth0 up

ss -tulpn                  # portas em escuta e processos (substitui netstat)
ss -tn state established   # conexões abertas

ping -c4 1.1.1.1
traceroute exemplo.com / mtr exemplo.com
dig exemplo.com +short     # consulta DNS
dig @1.1.1.1 exemplo.com MX
host exemplo.com

curl -I https://exemplo.com                    # só os cabeçalhos
curl -s -o /dev/null -w '%{http_code}n' URL   # só o código HTTP
curl -fLO https://exemplo.com/arquivo.tar.gz   # baixar mantendo o nome
wget -c https://exemplo.com/grande.iso         # baixar com retomada

nmap -p 1-1000 servidor    # varredura de portas (só onde você tem autorização)
tcpdump -i eth0 port 80    # capturar pacote
nc -zv servidor 22         # a porta está aberta?

SSH e transferência

ssh usuario@servidor
ssh -p 2222 usuario@servidor
ssh-keygen -t ed25519      # gerar par de chaves
ssh-copy-id usuario@servidor   # instalar a chave pública lá

scp arquivo usuario@servidor:/destino/
scp -r pasta/ usuario@servidor:/destino/

rsync -avz --progress origem/ usuario@servidor:/destino/
rsync -avz --delete origem/ /backup/    # espelhar (apaga o que sumiu na origem)

ssh -L 8080:localhost:80 usuario@servidor   # túnel local
ssh -D 1080 usuario@servidor                # proxy SOCKS

A barra final em rsync muda tudo: origem/ copia o conteúdo, origem copia a pasta.

systemd e serviços

systemctl status nginx
systemctl start|stop|restart|reload nginx
systemctl enable --now nginx      # habilitar no boot e iniciar agora
systemctl disable nginx
systemctl list-units --type=service --state=running
systemctl daemon-reload           # depois de editar uma unit
systemctl cat nginx               # ver a unit inteira
systemctl edit nginx              # sobrescrever sem tocar no original

systemd-analyze blame             # o que está demorando no boot
journalctl -u nginx -f            # log do serviço, ao vivo
journalctl -p err -b              # só erros, deste boot
journalctl --since "1 hour ago"
journalctl --disk-usage / journalctl --vacuum-time=7d

Sistema e desempenho

uname -a                   # kernel e arquitetura
hostnamectl                # hostname, SO, kernel, virtualização
uptime                     # tempo ligado e carga
free -h                    # memória
vmstat 1                   # CPU, memória, I/O a cada segundo
iostat -x 1                # I/O por disco (pacote sysstat)
sar -u 1 5                 # histórico de CPU
lscpu / lsmem / lspci / lsusb / lsmod
dmesg -T | tail -50        # mensagens do kernel com data
sensors                    # temperatura (pacote lm-sensors)

Agendamento

crontab -e                 # editar o cron do usuário
crontab -l                 # listar
# min hora dia mês diadasemana comando
# 0 3 * * *  /opt/backup.sh      → todo dia às 3h

at 22:00                   # executar uma única vez (Ctrl-D encerra)
systemd-run --on-active=30m /opt/script.sh   # timer descartável
systemctl list-timers                        # timers do systemd

O shell em si

history | grep ssh         # o que eu digitei mesmo?
!!                         # repetir o último comando
sudo !!                    # repetir o último com sudo
!$                         # último argumento do comando anterior
Ctrl-R                     # busca reversa no histórico
Ctrl-A / Ctrl-E            # início / fim da linha
Ctrl-L                     # limpar a tela
Ctrl-C / Ctrl-Z            # interromper / suspender

comando1 | comando2        # pipe: saída de um vira entrada do outro
comando > arquivo          # redirecionar saída (sobrescreve)
comando >> arquivo         # acrescentar
comando 2> erros.txt       # redirecionar só o erro
comando &> tudo.txt        # saída e erro juntos
comando1 && comando2       # só roda o segundo se o primeiro deu certo
comando1 || comando2       # só roda o segundo se o primeiro falhou

alias ll='ls -lah'         # atalho (ponha no ~/.bashrc para durar)
export VAR=valor
echo $PATH
watch -n2 'df -h'          # repetir um comando a cada 2 segundos
timeout 10 comando         # matar se passar de 10 segundos
yes | comando              # responder "sim" para tudo
screen / tmux              # sessão que sobrevive à queda do SSH

A geração nova de ferramentas

Substitutos modernos que valem a instalação — mais rápidos, com saída mais legível e padrões melhores:

Clássico Moderno Ganho
grep rg (ripgrep) Muito mais rápido; ignora .git and .gitignore sozinho
find fd Sintaxe humana: fd ".log$"
cat bat Cor por sintaxe e número de linha
ls eza Cores, ícones, status do git
du dust / ncdu Mostra onde o espaço foi, visualmente
df duf Tabela legível por tipo de montagem
top btop Gráfico de CPU, memória, rede e disco
cd zoxide Aprende os diretórios que você usa
man tldr Exemplos práticos em vez de sintaxe formal
fzf Busca difusa em qualquer lista; casa com Ctrl-R

Cinco hábitos que evitam desastre

  1. Teste o rm with ls antes. Rode o mesmo padrão com ls; se a lista estiver certa, troque por rm.
  2. Cuidado com o espaço. rm -rf /home/user /tmp apaga duas coisas, não uma.
  3. Sempre -i or --dry-run quando o comando é destrutivo — the rsync tem -n, o find tem -print antes do -delete.
  4. Copie o arquivo de configuração antes de editar: cp x.conf x.conf.bak. Custa um segundo.
  5. Valide antes de recarregar: nginx -t, apachectl configtest, visudo, named-checkconf. Serviço que não sobe às três da manhã sempre foi editado sem validar.

Baixe o guia completo em PDF

A apostila em português com mais de 500 comandos explicados, gratuita e livre para compartilhar:

Útil para iniciante, para quem está no meio do caminho e também para quem já é avançado e precisa relembrar. E, antes de sair executando como root, a frase de sempre: “com grandes poderes vêm grandes responsabilidades”.

Para continuar: a Série Servidores Linux aplica boa parte disso na prática, e um assistente de IA no terminal explica qualquer um destes comandos na hora em que você travar.