Unix y Linux son sistemas operativos robustos y ampliamente utilizados en servidores, estaciones de trabajo y sistemas embebidos. La línea de comandos es la herramienta esencial para administrarlos con eficiencia. En este manual encontrarás los comandos que todo usuario debería conocer, organizados por categorías y con ejemplos prácticos.
Antes de empezar: la ayuda del sistema
Cualquier comando de esta guía tiene su propia documentación instalada en el sistema. Es el primer sitio donde mirar:
man ls # Manual completo del comando
ls --help # Resumen rápido de opcionesDentro de man te mueves con las flechas, buscas con /palabra y sales con q.

Navegación por el sistema de archivos
pwd (Print Working Directory)
Muestra el directorio en el que te encuentras. Imprescindible cuando trabajas con rutas relativas.
pwdls (List)
Lista el contenido de un directorio.
ls -l: formato largo, con permisos, propietario, tamaño y fecha.ls -a: incluye los archivos ocultos (los que empiezan por punto).ls -h: tamaños en formato legible (K, M, G). Solo tiene efecto junto a-l.ls -lt: ordena por fecha, más reciente primero. Añade-rpara invertir.
Las opciones se combinan. La forma más usada en el día a día:
ls -lah /home/usuariocd (Change Directory)
Cambia de directorio. Fíjate en los espacios: cd es un comando y lo que le sigue es un argumento separado.
cd /home/usuario # Ruta absoluta
cd documentos # Ruta relativa desde donde estás
cd.. # Subir un nivel (¡con espacio!)
cd ~ # Ir a tu directorio personal
cd # Equivalente a "cd ~"
cd - # Volver al directorio anterior
cd / # Ir a la raíz del sistemaTruco: pulsa Tab mientras escribes una ruta y la shell la completará sola. Ahorra tiempo y evita erratas.
mkdir (Make Directory)
mkdir proyecto
mkdir -p padre/hijo/nieto # Crea toda la jerarquía de golpermdir y rm
rmdir solo borra directorios vacíos, lo que en la práctica lo convierte en la opción segura:
rmdir directorio_vaciorm elimina archivos y, con -r, directorios completos:
rm archivo.txt
rm -i archivo.txt # Pide confirmación
rm -r directorio # Borra el directorio y todo su contenidoCuidado con
rm -rf. En Linux no hay papelera de reciclaje: lo que borras desde la terminal desaparece de inmediato y sin confirmación. La opción-fsilencia todos los avisos, así que un error de escritura —un espacio de más enrm -rf / home/usuario/tmp— puede arrasar el sistema. Antes de ejecutar un borrado recursivo, revisa la ruta dos veces. Un buen hábito: lanza primerolssobre esa misma ruta y comprueba que contiene lo que crees.
Ver el contenido de los archivos
cat archivo.txt: vuelca el archivo entero en pantalla. Ideal para archivos cortos.less archivo.log: lo abre en un visor paginado. Para archivos largos es la opción correcta. Sales conq.head -n 20 archivo.txt: primeras 20 líneas.tail -n 20 archivo.txt: últimas 20 líneas.tail -f /var/log/mensajes: sigue el archivo en tiempo real. Es el comando para vigilar registros mientras ocurre algo.
Manipulación de archivos
touch
Crea un archivo vacío o, si ya existe, actualiza su fecha de modificación.
touch notas.txtcp (Copy)
cp origen.txt destino.txt
cp -a directorio_origen/ directorio_destino/Para directorios, usa -a (archivo) mejor que -r: además de copiar recursivamente, preserva permisos, propietarios, fechas y enlaces simbólicos. Con -r a secas puedes perder esos metadatos, algo que importa mucho al copiar configuraciones o webs.
Añade -i si quieres que pregunte antes de sobrescribir un archivo existente.
mv (Move)
Mueve y renombra: en Unix son la misma operación.
mv viejo.txt nuevo.txt # Renombrar
mv archivo.txt /ruta/destino/ # Mover
mv -i archivo.txt /ruta/destino/ # Preguntar antes de sobrescribirfind
Busca archivos por nombre, tamaño, fecha o cualquier otro criterio.
find /ruta -name "archivo.txt" # Por nombre exacto
find /ruta -iname "*.log" # Sin distinguir mayúsculas
find /ruta -size +10M # Archivos de más de 10 MB
find /ruta -mtime -7 # Modificados en los últimos 7 días
find /ruta -type d -name "cache" # Solo directoriosEntrecomilla siempre los patrones con comodines, o la shell los expandirá antes de que find los reciba.
grep
Busca texto dentro de archivos. Probablemente el comando que más usarás.
grep "palabra" archivo.txt
grep -i "palabra" archivo.txt # Ignora mayúsculas/minúsculas
grep -n "palabra" archivo.txt # Muestra el número de línea
grep -r "palabra" /ruta # Busca recursivamente en un directorio
grep -l "palabra" *.txt # Solo lista los archivos que coinciden
grep -v "palabra" archivo.txt # Muestra las líneas que NO coincidenTuberías y redirecciones
Aquí está la verdadera potencia de la línea de comandos: encadenar herramientas pequeñas para resolver problemas grandes.
comando > salida.txt # Redirige la salida a un archivo (lo sobrescribe)
comando >> salida.txt # Añade al final del archivo
comando1 | comando2 # La salida de comando1 alimenta a comando2Un ejemplo real: buscar entre los procesos activos los que contengan «apache».
ps aux | grep apachePermisos y propietarios
chmod (Change Mode)
Los permisos se dividen en tres bloques: usuario (u), grupo (g) y otros (o). Cada uno puede tener lectura (r=4), escritura (w=2) y ejecución (x=1). Se suman: 4+2+1 = 7.
chmod 755 script.sh # rwx para el dueño, r-x para grupo y otros
chmod 644 archivo.txt # rw- para el dueño, r-- para el resto
chmod 600 secreto.key # Solo el dueño puede leer y escribirEl formato simbólico permite ajustes precisos. Ojo con la diferencia entre + y =:
chmod u=rwx,go=rx archivo # Fija los permisos: equivale a 755
chmod +x script.sh # Añade permiso de ejecución
chmod g-w archivo # Quita escritura al grupoCon = estableces los permisos exactos; con + solo añades sobre lo que ya había, así que el resultado depende del estado previo.
Nunca uses
chmod 777. Da permisos totales a cualquier usuario del sistema y es la causa de innumerables agujeros de seguridad. Si algo «solo funciona con 777», el problema real es de propietario o de grupo, no de permisos.
chown (Change Owner)
sudo chown usuario:grupo archivo
sudo chown -R usuario:grupo directorio # RecursivoRequiere privilegios de administrador. Un uso típico: devolver a un servidor web la propiedad de sus archivos con sudo chown -R www-data:www-data /var/www/sitio.
Procesos y administración del sistema
ps
ps aux # Todos los procesos del sistema
ps aux | grep nginx # Filtrar los que te interesanLa segunda columna es el PID, el identificador que necesitarás para actuar sobre un proceso.
top y htop
top muestra los procesos en tiempo real y viene instalado en todas partes. Sales con q.
htop hace lo mismo pero con colores, scroll y navegación con ratón. Hay que instalarlo (sudo apt install htop o sudo dnf install htop), pero merece la pena.
kill
Envía señales a un proceso. La secuencia correcta es empezar por lo suave:
kill 1234 # Pide al proceso que termine ordenadamente (SIGTERM)
kill -9 1234 # Lo mata sin contemplaciones (SIGKILL)
pkill nombre # Por nombre en vez de por PIDkill a secas envía SIGTERM: el proceso recibe el aviso, guarda lo que tenga pendiente, cierra sus archivos y sale limpiamente. kill -9 no le da esa oportunidad: el núcleo lo elimina de inmediato, dejando posibles archivos corruptos, bloqueos huérfanos y datos sin escribir. Úsalo solo si el proceso no responde tras unos segundos al primero.
df y du
df -h # Espacio libre por sistema de archivos
du -sh directorio # Cuánto ocupa un directorio concreto
du -sh * | sort -h # Tamaño de cada elemento, ordenadoLa combinación de la última línea es la forma más rápida de averiguar qué te está llenando el disco.
Redes y conectividad
ip (sustituye a ifconfig)
ip a # Interfaces y direcciones IP
ip r # Tabla de rutas
ip link # Estado de las interfacesVerás ifconfig en miles de tutoriales antiguos, pero pertenece al paquete net-tools, obsoleto desde hace más de una década y ya no instalado por defecto en las distribuciones modernas. Si lo ejecutas y te dice «orden no encontrada», no es un fallo: es que debes usar ip.
ss (sustituye a netstat)
ss -tulnp # Puertos TCP/UDP a la escucha y qué proceso los usaMismo caso que el anterior: netstat es parte de net-tools y está reemplazado por ss, que además es más rápido. Las opciones significan: -t TCP, -u UDP, -l a la escucha, -n sin resolver nombres, -p mostrar el proceso (necesita sudo).
ping
ping -c 4 google.com # Cuatro paquetes y paraSin -c, en Linux ping no se detiene nunca: córtalo con Ctrl+C.
wget y curl
wget https://ejemplo.com/archivo.tar.gz # Descarga con ese mismo nombre
curl -O https://ejemplo.com/archivo.tar.gz # Equivalente en curl
curl -L -o nombre.tar.gz https://ejemplo.com/archivo # Sigue redireccionesA grandes rasgos: wget está pensado para descargar archivos (y sitios enteros); curl para interactuar con APIs y servicios web. Ninguno viene garantizado por defecto, así que puede que tengas que instalarlos.
traceroute y dig
traceroute google.com # Ruta que siguen los paquetes
dig ejemplo.com # Consulta DNSAmbos suelen requerir instalación (traceroute y bind-utils / dnsutils).
Usuarios y privilegios
whoami e id
whoami # Nombre del usuario actual
id # UID, GID y todos los grupos a los que pertenecessudo
Ejecuta un comando concreto con privilegios de administrador, sin necesidad de iniciar sesión como root.
sudo comando
sudo!! # Repite el último comando, esta vez con sudoEs la forma correcta de trabajar: usa tu cuenta normal a diario y eleva privilegios solo cuando haga falta.
Crear usuarios: useradd y adduser
Aquí hay una diferencia que confunde a mucha gente y que depende de la distribución:
- En Debian y Ubuntu,
adduseres un script interactivo que crea el usuario, su directorio personal y pide la contraseña y los datos, todo de una vez. Es la opción cómoda. - En RHEL, Fedora, AlmaLinux o Rocky,
adduseres simplemente un enlace auseradd: no es interactivo y no pedirá nada. useraddexiste en todas las distribuciones y es de bajo nivel. Es el que debes usar en scripts.
# Debian / Ubuntu
sudo adduser nuevo_usuario
# Cualquier distribución
sudo useradd -m nuevo_usuario # -m crea el directorio personal
sudo passwd nuevo_usuarioFíjate en el -m: sin él, useradd crea el usuario pero no su carpeta en /home (según la configuración de la distribución).
passwd
passwd # Cambia tu propia contraseña
sudo passwd usuario # Cambia la de otro usuarioScripting en Bash
Tu primer script
nano script.sh # Escribe el contenido
chmod +x script.sh # Dale permiso de ejecución./script.sh # EjecútaloEl ./ no es opcional: sin él, la shell buscará el script en las rutas del sistema y no lo encontrará.
Contenido de ejemplo:
#!/bin/bash
set -euo pipefail
echo "Hola, mundo"La primera línea (el shebang) indica qué intérprete debe ejecutar el archivo. La segunda es una buena costumbre: hace que el script se detenga ante el primer error (-e), avise si usas una variable no definida (-u) y detecte fallos dentro de una tubería (-o pipefail). Sin ella, un script puede seguir adelante alegremente después de que algo haya fallado.
Variables
nombre="Juan"
echo "Hola, $nombre"
echo "Estás en: $(pwd)"Dos reglas que evitan la mayoría de los problemas: no dejes espacios alrededor del = al asignar, y entrecomilla siempre las variables al usarlas ("$nombre"). Sin comillas, un valor con espacios se partirá en varios argumentos.
Condicionales
if [ "$nombre" = "Juan" ]; then
echo "Eres Juan"
else
echo "No eres Juan"
fiLos espacios dentro de los corchetes son obligatorios: [ es en realidad un comando, y necesita sus argumentos separados. Para comprobar archivos:
if [ -f "/ruta/archivo.txt" ]; then
echo "El archivo existe"
fi
if [ -d "/ruta/directorio" ]; then
echo "El directorio existe"
fiBucles
for i in {1..5}; do
echo "Número $i"
done
for archivo in *.txt; do
echo "Procesando $archivo"
doneTrucos que ahorran tiempo
- Tab: autocompleta comandos y rutas. Púlsalo dos veces para ver todas las opciones.
- Flecha arriba: recupera comandos anteriores.
- Ctrl+R: busca en el historial mientras escribes. Una vez lo pruebas, no vuelves atrás.
- Ctrl+C: interrumpe el comando en ejecución.
- Ctrl+L: limpia la pantalla (igual que
clear). history: lista todos los comandos que has ejecutado.!!: repite el último comando. Combinado con sudo:sudo!!
Conclusión
Estos comandos son la base del manejo de cualquier sistema Unix o Linux. Con ellos puedes gestionar archivos, controlar procesos, revisar la red y automatizar tareas repetitivas mediante scripts.
Dos consejos finales. El primero: cuando dudes de qué hace una opción, man está a un comando de distancia y siempre será más fiable que la memoria. El segundo: ten especial respeto por rm -rf, chmod 777 y kill -9. Son los tres atajos que más rápido resuelven un problema y más problemas causan a largo plazo.