Módulos de Estudio
Selecciona un módulo para ver sus ejercicios ordenados por dificultad
Bash Scripting
Variables, bucles, funciones, scripts completos
Estructuras de Control
if/elif/else, case, transformaciones entre estructuras
Procesos y Servicios
ps, kill, jobs, fg, bg, gestión de procesos
Usuarios y Permisos
useradd, chmod, chown, /etc/passwd, grupos
Redes y Configuración
ip, ping, ss, rutas, interfaces de red
Variables de Entorno y Rutas
$PATH, $HOME, export, which, whereis, /bin, /usr/bin
Transformaciones Avanzadas
if→case, case→if, corrección semántica, ordenar bloques
Cron y Tareas Programadas
Sintaxis crontab, *, /, rangos, crontab -e/-l/-r
Logs y Redirección
/var/log/, tail -f, journalctl, >, >>, 2>, &>
Procesos y Señales Avanzado
SIGTERM vs SIGKILL, SIGHUP, pkill, killall, ps aux
Scripting Reforzado
Corrección y transformación if/case, bucles for/while/until, scripts combinados
Herramientas
Sandbox Terminal
Ejecuta scripts Bash en el navegador
Apuntes
Teoría, tablas y ejemplos por tema
Modo Práctica
Con pistas y soluciones
Modo Evaluación
Sin pistas, registra progreso
Repaso Rápido
Flashcards de todos los módulos
Simulador de Examen
15 preguntas con temporizador
Mis Errores
Repasa los ejercicios fallados
Mis Notas
Todas tus anotaciones por módulo
Glosario
Términos clave de sysadmin
Scripts Reales
Scripts de admin comentados
Referencia Rápida
Busca comandos por nombre o descripción
VAR=valor
Asignar variable (sin espacios)
echo $VAR
Expandir variable
$(comando)
Sustitución de comando
if [ cond ]; then
Inicio de condicional
elif [ cond ]; then
Condición adicional
fi
Cierre de if
for i in {1..10}; do
Bucle for con rango
while [ cond ]; do
Bucle while
done
Cierre de for/while
nombre() { ... }
Definir función
$1, $2, $@, $#
Argumentos del script/función
$?
Código de salida del último comando
case "$VAR" in
Inicio de case
patron)
Patrón del case (termina en )
p1|p2)
Patrón OR en case
;;
Fin de bloque case
*)
Comodín case (equivale a else)
esac
Cierre de case
[ -z "$V" ]
Comprobar variable vacía
[ -n "$V" ]
Comprobar variable no vacía
[ $N -gt 0 ]
Comparación numérica mayor que
-eq -ne -lt -le -gt -ge
Operadores numéricos en [ ]
ps aux
Listar todos los procesos
kill -15 PID
SIGTERM — terminar elegantemente
kill -9 PID
SIGKILL — terminar forzosamente
kill -1 PID
SIGHUP — recargar configuración
kill -19 PID
SIGSTOP — suspender proceso
pkill nombre
Terminar por nombre (parcial)
killall nombre
Terminar por nombre (exacto)
pgrep nombre
Buscar PID por nombre
jobs
Listar jobs del shell actual
fg %N
Traer job N al primer plano
bg %N
Reanudar job N en segundo plano
comando &
Ejecutar directamente en background
useradd -m usuario
Crear usuario con directorio home
passwd usuario
Cambiar contraseña de usuario
usermod -aG grupo usr
Añadir usuario a grupo (sin quitar otros)
userdel -r usuario
Borrar usuario y su home
id usuario
Ver UID, GID y grupos
chmod 755 fichero
Cambiar permisos (octal)
chmod u+x fichero
Cambiar permisos (simbólico)
chown usr:grp fich
Cambiar propietario y grupo
r=4 w=2 x=1
Valores octal de permisos rwx
ip addr
Ver interfaces y direcciones IP
ip route show
Ver tabla de rutas
ip addr add IP/M dev IF
Asignar IP temporalmente
ip link set IF up/down
Activar/desactivar interfaz
ping -c 4 host
Ping limitado a 4 paquetes
ss -tulpn
Puertos TCP/UDP en escucha
ip route add default via GW
Añadir ruta por defecto
echo $PATH
Ver el PATH actual
export PATH=$PATH:/dir
Añadir directorio al PATH
which comando
Localizar ejecutable en PATH
whereis comando
Localizar binario, fuente y manual
type comando
Tipo: builtin, alias o ejecutable
export VAR=valor
Exportar variable para subprocesos
env
Listar todas las variables de entorno
source ~/.bashrc
Recargar configuración del shell
crontab -e
Editar crontab del usuario actual
crontab -l
Listar crontab actual
crontab -r
Eliminar crontab (¡cuidado!)
* * * * * cmd
Cada minuto (m h dom mon dow)
0 0 * * *
Cada día a medianoche
*/15 * * * *
Cada 15 minutos
0 8 * * 1
Lunes a las 8:00 AM
0 6 1 * *
Primer día de mes a las 6 AM
cmd > fichero
Redirigir stdout (sobreescribe)
cmd >> fichero
Añadir stdout al final del fichero
cmd 2> errores
Redirigir stderr
cmd &> todo.log
Redirigir stdout y stderr juntos
cmd 2>/dev/null
Descartar stderr
tail -f fichero
Seguir log en tiempo real
tail -n 50 fichero
Últimas 50 líneas
journalctl -u servicio
Logs de un servicio systemd
journalctl -b
Logs desde el último arranque
/var/log/auth.log
Log de autenticación (Debian/Ubuntu)