Los comandos básicos de Linux se agrupan por tareas: navegación (pwd, ls, cd), trabajo con archivos (cp, mv, rm, mkdir), permisos (chmod, chown), paquetes (apt), procesos (ps, top, kill), búsqueda y tratamiento de texto (find, grep, sed, awk), red (ip, ss, curl) y servicios (systemctl, journalctl). A continuación encontrará tablas con comandos y ejemplos que cubren la mayor parte del trabajo diario en la terminal.
Esta chuleta de comandos de Linux está organizada por tareas: encontrar un archivo, instalar un paquete, matar un proceso bloqueado, extraer una línea de un registro, comprobar un puerto. Los comandos están probados en Ubuntu y Debian; casi todo funciona también en otras distribuciones, y la diferencia está sobre todo en el gestor de paquetes.
Ayuda y pistas
| Comando | Qué hace |
man ls | manual completo del comando; salir con q, buscar con /palabra |
ls --help | resumen breve de las opciones |
type cd | qué es: comando interno, alias o archivo |
which python3 | ruta del ejecutable |
history | historial de comandos; !123 repite el comando número 123 |
Ctrl+R | buscar en el historial |
Ctrl+C / Ctrl+D | interrumpir un comando / cerrar la shell |
Navegación por el sistema de archivos
| Comando | Qué hace |
pwd | directorio actual |
ls -la | todos los archivos, incluidos los ocultos, con permisos y tamaños |
ls -lh | tamaños legibles (K, M, G) |
ls -lt | ordenar por fecha de modificación |
cd /var/log | ir a una ruta absoluta |
cd .. / cd ~ / cd - | subir un nivel / directorio personal / directorio anterior |
tree -L 2 | árbol de directorios de dos niveles (paquete tree) |
Trabajo con archivos y directorios
| Comando | Qué hace |
touch archivo.txt | crear un archivo vacío o actualizar su fecha de modificación |
mkdir -p a/b/c | crear directorios junto con los padres |
cp archivo.txt copia.txt | copiar un archivo |
cp -r origen/ destino/ | copiar un directorio de forma recursiva |
mv viejo.txt nuevo.txt | renombrar o mover |
rm archivo.txt | borrar un archivo (sin papelera) |
rm -r directorio/ | borrar un directorio con su contenido; -f — sin preguntar, con cuidado |
rmdir directorio | borrar un directorio vacío |
ln -s /opt/app/current app | enlace simbólico |
stat archivo.txt | detalles: tamaño, permisos, inodo, fechas |
file imagen.bin | determinar el tipo de archivo por su contenido |
Ver el contenido
| Comando | Qué hace |
cat archivo | mostrar el archivo completo |
less archivo | visualización por páginas, buscar con /, salir con q |
head -n 20 archivo | las primeras 20 líneas |
tail -n 50 archivo | las últimas 50 líneas |
tail -f /var/log/syslog | seguir un archivo en tiempo real |
wc -l archivo | número de líneas |
diff a.conf b.conf | diferencias entre archivos |
Permisos y propietarios
| Comando | Qué hace |
chmod +x script.sh | permitir la ejecución |
chmod 644 archivo | rw-r--r--: el propietario escribe, los demás leen |
chmod 755 directorio | rwxr-xr-x: habitual en directorios y scripts |
chmod 600 ~/.ssh/id_ed25519 | solo el propietario: para claves privadas |
sudo chown www-data:www-data archivo | cambiar propietario y grupo |
sudo chown -R alice /srv/app | cambiar el propietario de forma recursiva |
id | su UID, GID y grupos |
sudo -i | shell de root |
sudo usermod -aG docker alice | añadir un usuario a un grupo |
Paquetes (apt, Debian y Ubuntu)
| Comando | Qué hace |
sudo apt update | actualizar las listas de paquetes de los repositorios |
sudo apt upgrade | actualizar los paquetes instalados |
sudo apt install nginx | instalar un paquete |
sudo apt remove nginx | desinstalar conservando la configuración; purge — con la configuración |
sudo apt autoremove | eliminar dependencias que ya no hacen falta |
apt search htop | buscar un paquete |
apt show nginx | descripción y versión |
dpkg -l | grep nginx | comprobar si un paquete está instalado |
dpkg -L nginx | qué archivos instaló el paquete |
En RHEL, Fedora y Rocky Linux los equivalentes son dnf install, dnf remove, dnf upgrade y rpm -qa.
Entorno y perfil
| Comando | Qué hace |
echo $PATH | dónde busca la shell los programas |
env | todas las variables de entorno |
export APP_ENV=prod | definir una variable para la sesión actual y los procesos hijos |
alias ll='ls -la' | atajo para un comando |
source ~/.bashrc | volver a leer el perfil sin cerrar sesión |
crontab -e / crontab -l | editar / mostrar las tareas cron |
Procesos
| Comando | Qué hace |
ps aux | todos los procesos con usuario, CPU y memoria |
ps aux | grep nginx | encontrar un proceso |
pgrep -a nginx | PID y línea de comandos a partir del nombre |
top / htop | carga en tiempo real |
kill 1234 | pedir al proceso que termine (SIGTERM) |
kill -9 1234 | terminar a la fuerza (SIGKILL) — último recurso |
pkill -f "python app.py" | terminar por coincidencia en la línea de comandos |
comando &, jobs, fg | ejecución en segundo plano y gestión de tareas |
nohup ./job.sh & | el proceso sobrevive al cierre de la terminal |
free -h | memoria y swap |
uptime | tiempo de funcionamiento y carga media |
strace -p 1234 | llamadas al sistema de un proceso |
Servicios y registros (systemd)
| Comando | Qué hace |
systemctl status nginx | estado del servicio y últimas líneas de su registro |
sudo systemctl start|stop|restart nginx | iniciar, detener, reiniciar |
sudo systemctl reload nginx | volver a leer la configuración sin detenerse |
sudo systemctl enable --now nginx | activar el arranque automático e iniciar ahora |
systemctl --failed | unidades con fallo |
journalctl -u nginx -f | registro del servicio en tiempo real |
journalctl -u nginx --since "1 hour ago" | registro de la última hora |
journalctl -p err -b | errores desde el último arranque |
Búsqueda de archivos
| Comando | Qué hace |
find /var/log -name "*.log" | buscar por nombre |
find . -type f -mtime -1 | archivos modificados en las últimas 24 horas |
find / -size +500M 2>/dev/null | archivos grandes, errores de acceso ocultos |
find . -name "*.tmp" -delete | buscar y borrar |
du -sh * | tamaño de cada elemento de un directorio |
df -h | espacio libre en los sistemas de archivos |
Búsqueda y tratamiento de texto: grep, sed, awk, jq
| Comando | Qué hace |
grep "error" app.log | líneas que contienen la palabra |
grep -i -n "error" app.log | sin distinguir mayúsculas, con números de línea |
grep -r "listen" /etc/nginx/ | recursivamente por un directorio |
grep -v "DEBUG" app.log | líneas donde no aparece la palabra |
grep -c "500" access.log | número de coincidencias |
grep -E "warn|error" app.log | expresiones regulares extendidas |
sed 's/viejo/nuevo/g' archivo | reemplazar y mostrar el resultado |
sed -i 's/8080/9090/' app.conf | reemplazar directamente en el archivo |
sed -n '10,20p' archivo | mostrar las líneas 10–20 |
awk '{print $1}' access.log | el primer campo de cada línea |
awk -F: '{print $1}' /etc/passwd | nombres de usuario (separador :) |
awk '$9 == 500' access.log | líneas cuyo noveno campo es 500 |
sort | uniq -c | sort -rn | contar repeticiones y ordenar por frecuencia |
cut -d, -f2 datos.csv | la segunda columna de un CSV |
jq '.items[].name' datos.json | extraer campos de un JSON |
Ejemplo de tubería: las diez direcciones IP que más peticiones han hecho a nginx.
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
Redirección y tuberías
| Construcción | Qué hace |
cmd > salida.txt | escribir la salida en un archivo (sobrescribe) |
cmd >> salida.txt | añadir al final del archivo |
cmd 2> errores.txt | redirigir los errores |
cmd > todo.log 2>&1 | salida y errores en un mismo archivo |
cmd1 | cmd2 | pasar la salida de un comando a la entrada de otro |
cmd | tee salida.txt | mostrar en pantalla y guardar |
cmd1 && cmd2 | ejecutar el segundo solo si el primero tiene éxito |
cmd1 || cmd2 | ejecutar el segundo si el primero falla |
Archivos comprimidos
| Comando | Qué hace |
tar -czf copia.tar.gz directorio/ | empaquetar y comprimir con gzip |
tar -xzf copia.tar.gz | descomprimir |
tar -tzf copia.tar.gz | ver el contenido |
zip -r sitio.zip sitio/ / unzip sitio.zip | archivos zip |
Red
| Comando | Qué hace |
ip a | interfaces y direcciones IP |
ip r | tabla de rutas |
ping -c 4 8.8.8.8 | disponibilidad de un equipo |
ss -tulpn | puertos abiertos y los procesos que los usan |
dig example.com / nslookup example.com | consulta DNS |
curl -I https://example.com | solo las cabeceras de respuesta |
curl -s https://api.example.com | jq | petición a una API con JSON formateado |
wget URL | descargar un archivo |
traceroute example.com | ruta de los paquetes hasta el equipo |
ssh usuario@host | conectarse a un servidor |
ssh-keygen -t ed25519 | crear un par de claves SSH |
scp archivo usuario@host:/tmp/ | copiar un archivo al servidor |
rsync -avz directorio/ usuario@host:/srv/directorio/ | sincronizar un directorio |
sudo ufw status | reglas del cortafuegos |
Sistema y discos
| Comando | Qué hace |
uname -a | núcleo y arquitectura |
cat /etc/os-release | distribución y versión |
hostnamectl | nombre del equipo e información del sistema |
lsblk | discos y particiones |
sudo mount /dev/sdb1 /mnt | montar una partición |
who / w | quién está conectado ahora |
sudo reboot / sudo shutdown -h now | reiniciar / apagar |
Resumen
Para el trabajo diario bastan unas dos docenas de comandos: ls, cd, cp, mv, rm, chmod, sudo, apt, ps, kill, systemctl, journalctl, grep, find, ss, curl y ssh. Guarde esta chuleta de comandos de Linux y consúltela hasta que los comandos le salgan de forma natural. Todos los grupos de comandos se explican paso a paso y con práctica en nuestro curso de Linux.
¿Cómo salgo de man o de less?
Pulse q. Para buscar dentro, escriba una barra seguida de la palabra; n pasa a la siguiente coincidencia.
¿Cómo salgo del editor vim?
Pulse Esc, escriba :q! y Intro para salir sin guardar, o :wq para guardar y salir. Los principiantes suelen encontrar más sencillo nano para editar archivos.
¿Por qué es peligroso rm -rf?
El comando borra sin confirmación y sin papelera, y un error en la ruta (por ejemplo, un espacio de más antes del asterisco) puede eliminar el directorio equivocado. Compruebe la ruta con ls antes de ejecutarlo.
¿Cómo repito el último comando con sudo?
Escriba sudo !! — la shell sustituye el comando anterior completo.
¿Cómo detengo un comando bloqueado en la terminal?
Ctrl+C envía una señal de interrupción. Si el comando no responde, localice su PID con ps o pgrep en otra terminal y termínelo con kill.