MaisTools
Desenvolvedor/

Linux Cheat Sheet

Referência rápida de Linux: comandos do terminal, flags, exemplos e combinações com pipes, organizados por secção e com pesquisa instantânea.

Linux Cheat Sheet

Comandos terminal, bash, pipes e one-liners

Navegação

ls

Lista o conteúdo de um directório com permissões, tamanho e data.

Flags-l-a-la-h-S-t-r-R
Exemplo
ls -la /var/log
cd

Muda o directório actual. Sem argumento vai para o home.

Exemplo
cd /etc/nginx
cd ~
cd -
cd ..
pwd

Mostra o caminho completo do directório actual.

Flags-P-L
Exemplo
pwd
tree

Mostra a árvore de directórios em formato visual.

Flags-L-d-a-I
Exemplo
tree -L 2 ~/projects
file

Identifica o tipo de um ficheiro (texto, binário, imagem, script, etc).

Flags-i-b
Exemplo
file image.png
file -i script.sh
stat

Mostra metadados detalhados de um ficheiro (tamanho, inode, datas, permissões).

Flags-c-f
Exemplo
stat file.txt
stat -c "%n %s %y" file.txt

Ficheiros

touch

Cria um ficheiro vazio ou actualiza a data de modificação.

Flags-a-m-c-t
Exemplo
touch newfile.txt
touch -t 202601011200 file.txt
mkdir

Cria um directório. Com -p cria toda a estrutura de pais que faltarem.

Flags-p-m-v
Exemplo
mkdir -p projects/app/src
mkdir -m 700 secret
rmdir

Apaga um directório que esteja vazio.

Flags-p
Exemplo
rmdir empty_dir
rmdir -p a/b/c
rm

Apaga ficheiros ou directórios. Com -rf apaga recursivo e sem confirmar (perigoso).

Flags-r-f-i-v
Exemplo
rm file.txt
rm -rf node_modules
cp

Copia ficheiros ou directórios.

Flags-r-v-i-p-a-u
Exemplo
cp file.txt backup.txt
cp -r src/ dest/
mv

Move ou renomeia ficheiros e directórios.

Flags-i-v-n-f
Exemplo
mv old.txt new.txt
mv *.log archive/
ln

Cria links: -s para link simbólico, sem flag para hard link.

Flags-s-f-v
Exemplo
ln -s /usr/local/bin/node ~/node
ln file hardlink
cat

Imprime o conteúdo de um ou mais ficheiros para stdout.

Flags-n-A-b-s
Exemplo
cat file.txt
cat -n script.sh
less

Visualiza ficheiros página a página com navegação. Pesquisa com /. +F segue como tail -f.

Flags-N-S-X+F
Exemplo
less /var/log/syslog
less +F app.log
head

Mostra as primeiras N linhas de um ficheiro (default: 10).

Flags-n-c
Exemplo
head -n 20 file.txt
head -c 1024 binary
tail

Mostra as últimas N linhas. -f segue o ficheiro à medida que cresce.

Flags-n-f-F-c
Exemplo
tail -n 50 access.log
tail -f /var/log/syslog
wc

Conta linhas (-l), palavras (-w), bytes (-c) ou caracteres (-m).

Flags-l-w-c-m
Exemplo
wc -l file.txt
wc *.md

Permissões

chmod

Altera as permissões (rwx) de ficheiros e directórios.

Flags-R-v
Exemplo
chmod 755 script.sh
chmod +x deploy.sh
chmod -R 644 docs/
chown

Altera o dono e/ou grupo de ficheiros.

Flags-R-v
Exemplo
chown user file.txt
chown -R www-data:www-data /var/www
sudo

Executa um comando como outro utilizador (por defeito root).

Flags-i-u-k-l
Exemplo
sudo apt update
sudo -u postgres psql
sudo -i
su

Muda para outro utilizador. - carrega o ambiente desse utilizador.

Flags--c-l
Exemplo
su - postgres
su -c 'whoami' root
useradd / userdel

Cria (useradd) ou apaga (userdel) contas de utilizador.

Flags-m-s-G-r
Exemplo
sudo useradd -m -s /bin/bash john
sudo userdel -r john
passwd

Define ou altera a password de um utilizador.

Flags-l-u-d
Exemplo
passwd
sudo passwd john
whoami / who

Mostra o utilizador actual (whoami) ou todos os utilizadores ligados (who).

Exemplo
whoami
who
who -a
id / groups

Mostra o UID, GID e grupos do utilizador actual.

Flags-u-g-G-n
Exemplo
id
id -nG
groups

Processos

ps

Lista processos. aux mostra todos os processos com detalhe.

Flagsaux-ef-u--sort
Exemplo
ps aux
ps -ef
top

Mostra processos em tempo real, ordenados por uso de CPU/memória.

Flags-u-p-d-n
Exemplo
top
top -u www-data
top -p 1234
kill

Envia um sinal a um processo pelo PID. -9 força a terminação (SIGKILL).

Flags-9-15-l-HUP
Exemplo
kill 1234
kill -9 1234
kill -HUP $(pidof nginx)
killall / pkill

Mata processos por nome (killall) ou padrão (pkill).

Flags-9-u-i
Exemplo
killall firefox
pkill -9 -f node
pkill -u john
jobs / fg / bg

Gere jobs do shell: jobs lista, fg traz para foreground, bg retoma em background.

Flags-l-r-s
Exemplo
jobs
fg %1
bg %2
# Ctrl+Z to suspend the foreground job
nohup

Corre um comando que continua mesmo depois de fechar o terminal.

Exemplo
nohup ./long-task.sh > out.log 2>&1 &
nohup python script.py &
nice / renice

Inicia um processo com prioridade ajustada (nice) ou altera a prioridade (renice).

Flags-n
Exemplo
nice -n 19 ./heavy.sh
renice -n 5 -p 1234
& (background)

Acrescentar & no fim do comando faz correr em background, libertando o terminal.

Exemplo
./server.sh &
long-task &
disown %1

Rede

ping

Testa conectividade enviando pacotes ICMP. -c limita o número.

Flags-c-i-W-s
Exemplo
ping google.com
ping -c 4 8.8.8.8
curl

Faz pedidos HTTP/HTTPS e descarrega ficheiros. Suporta GET, POST, headers, autenticação.

Flags-X-H-d-o-O-L-I-s-u
Exemplo
curl https://api.github.com
curl -X POST -H "Content-Type: application/json" -d '{"a":1}' url
curl -O https://example.com/file.zip
wget

Descarrega ficheiros via HTTP/FTP. Suporta retoma com -c e mirror recursivo.

Flags-c-r-O-q--mirror
Exemplo
wget https://example.com/file.zip
wget -c <url>
wget -r -np https://site/docs/
ssh

Liga-se a um servidor remoto via Secure Shell. -L cria túneis para portas locais.

Flags-p-i-L-R-D-N-T
Exemplo
ssh user@host
ssh -p 2222 -i ~/.ssh/id_ed25519 user@host
ssh -L 8080:localhost:80 user@host
scp

Copia ficheiros via SSH entre máquinas.

Flags-r-P-i-p
Exemplo
scp file.txt user@host:/tmp/
scp -r dir/ user@host:/var/www/
scp user@host:/etc/conf .
rsync

Sincroniza ficheiros e directórios eficientemente. -avz é a combinação mais usada.

Flags-a-v-z-P--delete--exclude
Exemplo
rsync -avz src/ user@host:/dest/
rsync -av --delete --exclude='.git' a/ b/
ss / netstat

Mostra portas em escuta e ligações activas. -tulpn é o uso típico.

Flags-t-u-l-n-p
Exemplo
ss -tulpn
ss -t state established
dig / nslookup / host

Consulta DNS. dig é mais detalhado, nslookup mais simples, host mais conciso.

Flags+short-t@
Exemplo
dig google.com
dig +short MX gmail.com
nslookup example.com 8.8.8.8

Compressão

tar

Empacota e comprime directórios. -czf cria com gzip, -xzf extrai.

Flags-c-x-z-j-J-v-f-t
Exemplo
tar -czvf archive.tar.gz folder/
tar -xzvf archive.tar.gz
tar -tf archive.tar.gz
zip / unzip

Compressão zip. unzip -l lista o conteúdo sem extrair.

Flags-r-q-l-d
Exemplo
zip -r out.zip folder/
unzip archive.zip
unzip -l archive.zip
gzip / gunzip

Comprime/descomprime ficheiros individuais com gzip. -k mantém o original.

Flags-d-k-9-r
Exemplo
gzip file.txt
gzip -d file.txt.gz
gzip -k file.txt
bzip2 / bunzip2

Compressão bzip2, mais lenta mas com melhor ratio que gzip.

Flags-d-k-9
Exemplo
bzip2 file.txt
bunzip2 file.txt.bz2
xz / unxz

Compressão xz, ainda melhor ratio. -T0 usa todos os cores.

Flags-d-k-9-T
Exemplo
xz file.txt
unxz file.txt.xz
xz -T0 file
7z

Formato 7z, alto ratio de compressão. Suporta password e split de archives.

Subcomandosaxl
Flags-p
Exemplo
7z a out.7z folder/
7z x archive.7z
7z a -p out.7z secret.txt

Pesquisa

find

Procura ficheiros por nome, tipo, tamanho, idade, e executa acções com -exec.

Flags-name-type-size-mtime-exec-delete-empty
Exemplo
find . -name "*.log"
find / -type f -size +100M
find . -mtime -7
find . -name "*.tmp" -delete
grep

Procura padrões em ficheiros. -r recursivo, -i ignora maiúsculas, -E ativa regex.

Flags-r-i-n-v-l-E-c-A-B-C
Exemplo
grep -rn "TODO" src/
grep -i error log
grep -E "warn|error" file
awk

Processa texto coluna a coluna. Linguagem completa para parsing de ficheiros estruturados.

Exemplo
awk '{print $1}' file.txt
awk -F',' '{print $2}' csv
awk '/error/ {count++} END {print count}' log
sed

Edita streams de texto. -i altera o ficheiro no sítio, mais usado para substituições.

Flags-i-e-n-E
Exemplo
sed 's/old/new/g' file
sed -i 's/old/new/g' file
sed -n '10,20p' file
locate / which / whereis

Encontra binários e ficheiros: locate (cache), which (no PATH), whereis (binário, source, manual).

Flags-i-l
Exemplo
locate nginx.conf
which python3
whereis bash

Redirecionamento

> (redirecionar stdout)

Redireciona stdout para um ficheiro, sobrescrevendo o conteúdo existente.

Exemplo
echo hello > out.txt
ls -la > files.txt
>> (acrescentar stdout)

Redireciona stdout para um ficheiro acrescentando ao conteúdo existente.

Exemplo
echo "line" >> log.txt
date >> events.log
| (pipe)

Liga o stdout de um comando ao stdin do seguinte, encadeando processos.

Exemplo
ls -la | grep .conf
cat file | sort | uniq
2> (redirecionar stderr)

Redireciona stderr (fd 2). 2>&1 junta stderr ao stdout. &> faz ambos em bash.

Exemplo
cmd 2> errors.log
cmd > out.log 2>&1
cmd &> all.log
tee

Lê do stdin e escreve para ficheiro E para stdout. -a acrescenta em vez de sobrescrever.

Flags-a
Exemplo
ls | tee files.txt
echo 'data' | sudo tee /etc/conf
make | tee -a build.log
xargs

Constrói comandos a partir do stdin. Indispensável para combinar find ou grep com outros comandos.

Flags-n-I-P-0
Exemplo
find . -name "*.log" | xargs rm
echo "a b c" | xargs -n 1
ls *.txt | xargs -I {} cp {} backup/

Ambiente

export

Define variáveis de ambiente que são herdadas por processos filhos.

Exemplo
export PATH="$PATH:/opt/bin"
export API_KEY="abc123"
export -p
env / printenv

Lista todas as variáveis de ambiente activas. printenv pode mostrar uma específica.

Exemplo
env
printenv PATH
env VAR=value command
alias / unalias

Cria atalhos para comandos. Define em ~/.bashrc ou ~/.zshrc para serem permanentes.

Exemplo
alias ll='ls -la'
alias gs='git status'
unalias ll
echo

Imprime texto ou variáveis para stdout. -e activa escapes como \n e \t.

Flags-n-e
Exemplo
echo "Hello $USER"
echo -e "line1\nline2"
echo $PATH
source / .

Carrega um script no shell actual (não num subshell). Útil para .bashrc e venv.

Exemplo
source ~/.bashrc
. ~/.zshrc
source venv/bin/activate
history

Mostra histórico de comandos. !! repete o último, !N executa o comando N.

Flags-c-d!
Exemplo
history
history | grep ssh
!!
!42

Pacotes

apt / apt-get

Gestor de pacotes Debian/Ubuntu. apt é mais moderno e amigável que apt-get.

Subcomandosupdateupgradeinstallremovepurgesearchshow
Exemplo
sudo apt update && sudo apt upgrade
sudo apt install nginx
sudo apt remove --purge package
apt search keyword
yum / dnf

Gestor de pacotes Red Hat/Fedora/CentOS. dnf é o sucessor moderno do yum.

Subcomandosinstallremoveupdatesearchinfolist
Exemplo
sudo dnf install nginx
sudo yum update
dnf search keyword
brew

Gestor de pacotes para macOS e Linux com fórmulas mantidas pela comunidade.

Subcomandosinstalluninstallupdateupgradesearchlist
Exemplo
brew install wget
brew update && brew upgrade
brew list
brew search node
pacman

Gestor de pacotes Arch Linux. -Syu actualiza tudo, -S instala, -R remove.

Flags-S-R-Syu-Ss-Q
Exemplo
sudo pacman -S nginx
sudo pacman -Syu
pacman -Ss keyword
snap / flatpak

Pacotes universais com sandboxing. Instalam em qualquer distribuição moderna.

Subcomandosinstallremovelistfind
Exemplo
sudo snap install code
flatpak install flathub org.gimp.GIMP
snap list

SSH

ssh-keygen

Gera pares de chaves SSH. ed25519 é a recomendação actual (mais rápido e seguro que RSA).

Flags-t-b-C-f-N
Exemplo
ssh-keygen -t ed25519 -C "john.doe@example.com"
ssh-keygen -t rsa -b 4096
ssh-copy-id

Copia a chave pública para o ~/.ssh/authorized_keys do servidor remoto.

Flags-i-p
Exemplo
ssh-copy-id user@host
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@host
ssh-agent / ssh-add

Agente SSH guarda chaves desencriptadas em memória para não pedir passphrase a cada conexão.

Flags-l-d-D
Exemplo
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ssh-add -l
sftp

Cliente SFTP interactivo para transferir ficheiros via SSH.

Exemplo
sftp user@host
put file.txt
get remote.zip
ls
bye
~/.ssh/config

Ficheiro de configuração SSH por host. Permite alias, identidade, porta, jump host.

Exemplo
Host myserver
  HostName 1.2.3.4
  User john
  Port 2222
  IdentityFile ~/.ssh/id_ed25519

Disco

df

Mostra espaço usado e disponível por sistema de ficheiros. -h em formato legível.

Flags-h-T-i
Exemplo
df -h
df -h /
df -i
du

Mostra o espaço ocupado por ficheiros e directórios. -sh resumo em formato legível.

Flags-h-s-a-c--max-depth
Exemplo
du -sh *
du -h --max-depth=1
du -ah . | sort -rh | head -20
mount / umount

Monta um sistema de ficheiros num ponto de montagem. umount desmonta.

Flags-a-t-o
Exemplo
mount
sudo mount /dev/sdb1 /mnt/data
sudo umount /mnt/data
lsblk / fdisk

Lista discos e partições em formato de árvore (lsblk) ou tabela (fdisk).

Flags-f-l-p
Exemplo
lsblk
lsblk -f
sudo fdisk -l
free

Mostra memória RAM total, usada, livre e cache. -h em formato legível.

Flags-h-m-g-s
Exemplo
free -h
free -m
free -h -s 2

Monitorização

htop

Versão melhorada do top com cores, scroll e mata processos com F9.

Flags-u-p
Exemplo
htop
htop -u www-data
htop -p 1234,5678
vmstat

Estatísticas de memória virtual, CPU, IO. Útil para diagnosticar bottlenecks.

Exemplo
vmstat
vmstat 2 5
iostat

Estatísticas de IO de discos. Identifica discos saturados.

Flags-x-c-d
Exemplo
iostat
iostat -xz 2
dmesg

Mostra mensagens do kernel. Útil para diagnosticar problemas de hardware ou drivers.

Flags-T-w-l
Exemplo
sudo dmesg | tail
sudo dmesg -T
sudo dmesg -w
systemctl

Controla serviços systemd: arrancar, parar, ver estado, activar no boot.

Subcomandosstartstoprestartstatusenabledisablereload
Exemplo
sudo systemctl start nginx
sudo systemctl status sshd
sudo systemctl enable docker
journalctl

Logs do systemd. -f segue ao vivo, -u filtra por serviço, --since por tempo.

Flags-u-f-n--since-p
Exemplo
journalctl -u nginx
journalctl -f
journalctl --since "1 hour ago"
journalctl -p err
uptime / w

uptime mostra há quanto tempo o sistema está ligado e a load average. w lista utilizadores e o que fazem.

Exemplo
uptime
w

Avançado

watch

Repete um comando periodicamente. -d destaca alterações entre execuções.

Flags-n-d-t
Exemplo
watch -n 2 "df -h"
watch -d "ls -l"
watch "ps aux | grep node"
screen

Cria sessões de terminal persistentes que sobrevivem a logouts. Versão clássica.

Flags-S-r-ls-d
Exemplo
screen -S work
screen -r work
screen -ls
# Ctrl+A D to detach
tmux

Multiplexador de terminal moderno: múltiplas janelas, panes e sessões persistentes.

Subcomandosnewattachlskill-session
Exemplo
tmux new -s work
tmux attach -t work
tmux ls
# Ctrl+B D to detach
cron / crontab

Agendador de tarefas periódicas. crontab -e edita os jobs do utilizador actual.

Flags-e-l-r
Exemplo
crontab -e
crontab -l
0 3 * * * /script.sh    # daily at 3am
*/15 * * * * /poll.sh   # every 15 minutes
at

Agenda um comando para correr uma única vez no futuro.

Flags-l-r-c
Exemplo
echo "/script.sh" | at now + 1 hour
at 14:30 tomorrow
atq
at -r 5

Referência

stdin, stdout, stderr

Cada processo tem três streams por defeito identificadas por file descriptors. Compreender estas streams é a chave para combinar comandos com pipes e redirecionamentos.

stdinfd 0

Entrada padrão. Por defeito vem do teclado, mas pode ser substituída por um ficheiro com < ou pelo stdout de outro comando via pipe.

stdoutfd 1

Saída padrão. Por defeito vai para o terminal. Redireciona-se com > (sobrescrever) ou >> (acrescentar).

stderrfd 2

Erros e avisos. É uma stream separada para os erros não se misturarem com a saída normal. Redireciona-se com 2>.

Exemplo
cmd > out.txt          # stdout → file
cmd 2> err.txt         # stderr → file
cmd > out 2>&1         # stdout + stderr → file
cmd &> all.txt         # bash shorthand
cmd < input.txt        # stdin ← file
cmd1 | cmd2            # stdout cmd1 → stdin cmd2
Permissões rwx

Cada ficheiro tem três grupos de permissões (utilizador, grupo, outros) com três bits cada (read, write, execute). Em formato numérico cada grupo é a soma dos bits.

Alvos
  • udono do ficheiro
  • ggrupo do ficheiro
  • otodos os outros
  • atodos (u+g+o)
Bits e valores
  • r = 4 — ler
  • w = 2 — escrever
  • x = 1 — executar (ou entrar em directório)
Exemplos comuns
chmod 755 file       # rwx r-x r-x   (typical script)
chmod 644 file       # rw- r-- r--   (regular file)
chmod 600 file       # rw- --- ---   (private, e.g. SSH key)
chmod 700 dir        # rwx --- ---   (private dir)
chmod +x script.sh   # add execute for everyone
chmod u+w,g-w file   # add write to owner, remove from group
chmod -R 755 dir/    # recursive
Foreground vs Background

O shell pode ter vários jobs em simultâneo. Apenas o job em foreground ocupa o terminal; os jobs em background continuam a correr enquanto escreves outros comandos.

Foreground

Job que está a usar o terminal. Recebe input do teclado e mostra output. Bloqueia o prompt até terminar.

Background

Job a correr em paralelo, sem ocupar o terminal. Liberta o prompt para outros comandos. Termina-se com kill ou trazendo para fg.

Comandos úteis
./long-task.sh &     # start in background
Ctrl+Z               # suspend the foreground job
jobs                 # list jobs of the current shell
fg %1                # bring job 1 to foreground
bg %1                # resume job 1 in background
disown %1            # detach from shell (survives logout)
nohup ./task.sh &    # ignore HUP, redirect to nohup.out
ps -ef               # list all system processes
20 one-liners essenciais

Combinações de comandos frequentes no dia a dia. Cada uma resolve uma tarefa específica num único pipeline.

  • 01.Encontra ficheiros maiores que 100MB em todo o sistema.
    find / -type f -size +100M 2>/dev/null
  • 02.Lista os 10 ficheiros maiores no directório actual.
    du -ah . | sort -rh | head -10
  • 03.Pesquisa e substitui texto em todos os ficheiros que o contêm.
    grep -rl 'old' . | xargs sed -i 's/old/new/g'
  • 04.Conta o número total de ficheiros recursivamente.
    find . -type f | wc -l
  • 05.Mostra todos os utilizadores actualmente ligados ao sistema.
    who
  • 06.Torna todos os scripts .sh executáveis recursivamente.
    find . -name '*.sh' -exec chmod +x {} +
  • 07.Repete um comando a cada 2 segundos para ver alterações em tempo real.
    watch -n 2 "df -h"
  • 08.Obtém o IP público externo da máquina actual.
    curl -s ifconfig.me
  • 09.Lista todas as portas abertas e os processos que as usam.
    ss -tulpn
  • 10.Mostra os 10 processos que mais memória consomem.
    ps aux --sort=-%mem | head -10
  • 11.Mostra os 10 processos que mais CPU consomem.
    ps aux --sort=-%cpu | head -10
  • 12.Encontra symlinks quebrados (apontam para ficheiros inexistentes).
    find . -xtype l
  • 13.Apaga todos os ficheiros .DS_Store gerados pelo macOS.
    find . -name '.DS_Store' -delete
  • 14.Cria um backup tar.gz com a data no nome do ficheiro.
    tar czf backup-$(date +%F).tar.gz folder/
  • 15.Inicia um servidor HTTP simples na porta 8000 para partilhar ficheiros.
    python3 -m http.server 8000
  • 16.Formata e imprime JSON de forma legível.
    cat data.json | python3 -m json.tool
  • 17.Acompanha um log em tempo real começando pelas últimas 100 linhas.
    tail -f -n 100 logfile
  • 18.Encontra todos os ficheiros e directórios vazios.
    find . -empty
  • 19.Conta linhas de código somando todos os ficheiros .py do projecto.
    find . -name '*.py' | xargs wc -l
  • 20.Mostra o tamanho de cada subdirectório ordenado do menor para o maior.
    du -h --max-depth=1 | sort -h