MaisTools
Desarrollador/

Chuleta de Linux

Referencia rápida de Linux: comandos del terminal, flags, ejemplos y combinaciones con pipes, organizados por sección con búsqueda instantánea.

Chuleta de Linux

Comandos terminal, bash, pipes y one-liners

Navegación

ls

Lista el contenido de un directorio con permisos, tamaño y fecha.

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

Cambia el directorio actual. Sin argumento va al home.

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

Muestra la ruta completa del directorio actual.

Flags-P-L
Ejemplo
pwd
tree

Muestra el árbol de directorios en formato visual.

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

Identifica el tipo de un archivo (texto, binario, imagen, script, etc).

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

Muestra metadatos detallados de un archivo (tamaño, inode, fechas, permisos).

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

Archivos

touch

Crea un archivo vacío o actualiza la fecha de modificación.

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

Crea un directorio. Con -p crea toda la estructura de padres faltantes.

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

Borra un directorio que esté vacío.

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

Borra archivos o directorios. Con -rf borra recursivo y sin confirmar (peligroso).

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

Copia archivos o directorios.

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

Mueve o renombra archivos y directorios.

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

Crea enlaces: -s para symlink, sin flag para hard link.

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

Imprime el contenido de uno o más archivos a stdout.

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

Visualiza archivos página a página con navegación. Buscar con /. +F sigue como tail -f.

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

Muestra las primeras N líneas de un archivo (default: 10).

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

Muestra las últimas N líneas. -f sigue el archivo mientras crece.

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

Cuenta líneas (-l), palabras (-w), bytes (-c) o caracteres (-m).

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

Permisos

chmod

Cambia los permisos (rwx) de archivos y directorios.

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

Cambia el dueño y/o grupo de archivos.

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

Ejecuta un comando como otro usuario (root por defecto).

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

Cambia a otro usuario. - carga el entorno de ese usuario.

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

Crea (useradd) o elimina (userdel) cuentas de usuario.

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

Establece o cambia la contraseña de un usuario.

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

Muestra el usuario actual (whoami) o todos los usuarios conectados (who).

Ejemplo
whoami
who
who -a
id / groups

Muestra el UID, GID y grupos del usuario actual.

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

Procesos

ps

Lista procesos. aux muestra todos los procesos con detalle.

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

Muestra procesos en tiempo real, ordenados por uso de CPU/memoria.

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

Envía una señal a un proceso por PID. -9 fuerza la terminación (SIGKILL).

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

Mata procesos por nombre (killall) o patrón (pkill).

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

Gestiona jobs del shell: jobs lista, fg trae al frente, bg reanuda en background.

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

Ejecuta un comando que sigue corriendo aun después de cerrar el terminal.

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

Inicia un proceso con prioridad ajustada (nice) o cambia la prioridad (renice).

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

Añadir & al final del comando lo ejecuta en background, liberando el terminal.

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

Red

ping

Prueba la conectividad enviando paquetes ICMP. -c limita el número.

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

Hace peticiones HTTP/HTTPS y descarga archivos. Soporta GET, POST, headers, autenticación.

Flags-X-H-d-o-O-L-I-s-u
Ejemplo
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

Descarga archivos vía HTTP/FTP. Soporta reanudación con -c y mirror recursivo.

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

Conecta a un servidor remoto vía Secure Shell. -L crea túneles para puertos locales.

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

Copia archivos entre máquinas vía SSH.

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

Sincroniza archivos y directorios eficientemente. -avz es la combinación más usada.

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

Muestra puertos a la escucha y conexiones activas. -tulpn es el uso típico.

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

Consulta DNS. dig es más detallado, nslookup más simple, host más conciso.

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

Compresión

tar

Empaqueta y comprime directorios. -czf crea con gzip, -xzf extrae.

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

Compresión zip. unzip -l lista el contenido sin extraer.

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

Comprime/descomprime archivos individuales con gzip. -k mantiene el original.

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

Compresión bzip2, más lenta pero con mejor ratio que gzip.

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

Compresión xz, mejor ratio aún. -T0 usa todos los cores.

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

Formato 7z, alto ratio de compresión. Soporta password y split de archives.

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

Búsqueda

find

Busca archivos por nombre, tipo, tamaño, edad y ejecuta acciones con -exec.

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

Busca patrones en archivos. -r recursivo, -i ignora mayúsculas, -E activa regex.

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

Procesa texto columna a columna. Lenguaje completo para parsear archivos estructurados.

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

Edita streams de texto. -i altera el archivo en sitio, más usado para sustituciones.

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

Encuentra binarios y archivos: locate (cache), which (en PATH), whereis (binario, source, manual).

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

Redirección

> (redirigir stdout)

Redirige stdout a un archivo, sobrescribiendo el contenido existente.

Ejemplo
echo hello > out.txt
ls -la > files.txt
>> (añadir a stdout)

Redirige stdout a un archivo añadiendo al contenido existente.

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

Conecta el stdout de un comando al stdin del siguiente, encadenando procesos.

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

Redirige stderr (fd 2). 2>&1 junta stderr con stdout. &> hace ambos en bash.

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

Lee de stdin y escribe a archivo Y a stdout. -a añade en lugar de sobrescribir.

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

Construye comandos a partir del stdin. Indispensable para combinar find o grep con otros comandos.

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

Entorno

export

Define variables de entorno que son heredadas por procesos hijos.

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

Lista todas las variables de entorno activas. printenv puede mostrar una específica.

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

Crea atajos para comandos. Define en ~/.bashrc o ~/.zshrc para que sean permanentes.

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

Imprime texto o variables a stdout. -e activa escapes como \n y \t.

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

Carga un script en el shell actual (no en un subshell). Útil para .bashrc y venv.

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

Muestra el historial de comandos. !! repite el último, !N ejecuta el comando N.

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

Paquetes

apt / apt-get

Gestor de paquetes Debian/Ubuntu. apt es más moderno y amigable que apt-get.

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

Gestor de paquetes Red Hat/Fedora/CentOS. dnf es el sucesor moderno de yum.

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

Gestor de paquetes para macOS y Linux con fórmulas mantenidas por la comunidad.

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

Gestor de paquetes Arch Linux. -Syu actualiza todo, -S instala, -R elimina.

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

Paquetes universales con sandboxing. Se instalan en cualquier distribución moderna.

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

SSH

ssh-keygen

Genera pares de claves SSH. ed25519 es la recomendación actual (más rápido y seguro que RSA).

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

Copia la clave pública al ~/.ssh/authorized_keys del servidor remoto.

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

El agente SSH guarda claves desencriptadas en memoria para no pedir passphrase en cada conexión.

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

Cliente SFTP interactivo para transferir archivos vía SSH.

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

Archivo de configuración SSH por host. Permite alias, identidad, puerto, jump host.

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

Disco

df

Muestra espacio usado y disponible por sistema de archivos. -h en formato legible.

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

Muestra el espacio ocupado por archivos y directorios. -sh resumen en formato legible.

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

Monta un sistema de archivos en un punto de montaje. umount desmonta.

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

Lista discos y particiones en formato árbol (lsblk) o tabla (fdisk).

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

Muestra memoria RAM total, usada, libre y caché. -h en formato legible.

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

Monitorización

htop

Versión mejorada de top con colores, scroll y mata procesos con F9.

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

Estadísticas de memoria virtual, CPU, IO. Útil para diagnosticar bottlenecks.

Ejemplo
vmstat
vmstat 2 5
iostat

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

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

Muestra mensajes del kernel. Útil para diagnosticar problemas de hardware o drivers.

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

Controla servicios systemd: arrancar, parar, ver estado, activar al boot.

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

Logs de systemd. -f sigue en vivo, -u filtra por servicio, --since por tiempo.

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

uptime muestra cuánto lleva el sistema encendido y la load average. w lista usuarios y qué hacen.

Ejemplo
uptime
w

Avanzado

watch

Repite un comando periódicamente. -d destaca cambios entre ejecuciones.

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

Crea sesiones de terminal persistentes que sobreviven a logouts. Versión clásica.

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

Multiplexor de terminal moderno: múltiples ventanas, paneles y sesiones persistentes.

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

Programador de tareas periódicas. crontab -e edita los jobs del usuario actual.

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

Programa un comando para ejecutarse una sola vez en el futuro.

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

Referencia

stdin, stdout, stderr

Cada proceso tiene tres streams por defecto identificadas por file descriptors. Entender estas streams es la clave para combinar comandos con pipes y redirecciones.

stdinfd 0

Entrada estándar. Por defecto viene del teclado, pero se puede sustituir por un archivo con < o por el stdout de otro comando vía pipe.

stdoutfd 1

Salida estándar. Por defecto va al terminal. Se redirige con > (sobrescribir) o >> (añadir).

stderrfd 2

Errores y avisos. Es una stream separada para que los errores no se mezclen con la salida normal. Se redirige con 2>.

Ejemplo
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
Permisos rwx

Cada archivo tiene tres grupos de permisos (usuario, grupo, otros) con tres bits cada uno (read, write, execute). En formato numérico cada grupo es la suma de sus bits.

Objetivos
  • udueño del archivo
  • ggrupo del archivo
  • otodos los demás
  • atodos (u+g+o)
Bits y valores
  • r = 4 — leer
  • w = 2 — escribir
  • x = 1 — ejecutar (o entrar en directorio)
Ejemplos comunes
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

El shell puede tener varios jobs a la vez. Solo el job en foreground ocupa el terminal; los jobs en background siguen corriendo mientras escribes otros comandos.

Foreground

Job que está usando el terminal. Recibe input del teclado y muestra output. Bloquea el prompt hasta terminar.

Background

Job corriendo en paralelo, sin ocupar el terminal. Libera el prompt para otros comandos. Se termina con kill o trayéndolo a fg.

Comandos útiles
./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 esenciales

Combinaciones de comandos frecuentes en el día a día. Cada una resuelve una tarea específica en un único pipeline.

  • 01.Encuentra archivos mayores que 100MB en todo el sistema.
    find / -type f -size +100M 2>/dev/null
  • 02.Lista los 10 archivos más grandes en el directorio actual.
    du -ah . | sort -rh | head -10
  • 03.Busca y reemplaza texto en todos los archivos que lo contienen.
    grep -rl 'old' . | xargs sed -i 's/old/new/g'
  • 04.Cuenta el número total de archivos recursivamente.
    find . -type f | wc -l
  • 05.Muestra todos los usuarios actualmente conectados al sistema.
    who
  • 06.Hace todos los scripts .sh ejecutables recursivamente.
    find . -name '*.sh' -exec chmod +x {} +
  • 07.Repite un comando cada 2 segundos para ver cambios en tiempo real.
    watch -n 2 "df -h"
  • 08.Obtiene la IP pública externa de la máquina actual.
    curl -s ifconfig.me
  • 09.Lista todos los puertos abiertos y los procesos que los usan.
    ss -tulpn
  • 10.Muestra los 10 procesos que más memoria consumen.
    ps aux --sort=-%mem | head -10
  • 11.Muestra los 10 procesos que más CPU consumen.
    ps aux --sort=-%cpu | head -10
  • 12.Encuentra symlinks rotos (apuntan a archivos inexistentes).
    find . -xtype l
  • 13.Borra todos los archivos .DS_Store generados por macOS.
    find . -name '.DS_Store' -delete
  • 14.Crea un backup tar.gz con la fecha en el nombre del archivo.
    tar czf backup-$(date +%F).tar.gz folder/
  • 15.Inicia un servidor HTTP simple en el puerto 8000 para compartir archivos.
    python3 -m http.server 8000
  • 16.Formatea e imprime JSON de forma legible.
    cat data.json | python3 -m json.tool
  • 17.Sigue un log en tiempo real comenzando por las últimas 100 líneas.
    tail -f -n 100 logfile
  • 18.Encuentra todos los archivos y directorios vacíos.
    find . -empty
  • 19.Cuenta líneas de código sumando todos los archivos .py del proyecto.
    find . -name '*.py' | xargs wc -l
  • 20.Muestra el tamaño de cada subdirectorio ordenado del menor al mayor.
    du -h --max-depth=1 | sort -h