00 Fundamentos Linux Esenciales
Actualizado: 17 de marzo de 2026
Fundamentos de Linux para Todos (Lectura Obligatoria)#
Este manual es el filtro número uno. En SoyDigital, trabajamos sobre Linux. Los servidores de campo corren Ubuntu, los contenedores Docker son Linux, el servidor VPN es Debian.
No importa si eres Frontend, Backend o un Brigadista Técnico: Si no sabes moverte en una terminal Linux, no puedes trabajar aquí.
Nivel de Exigencia: CRÍTICO Tiempo estimado: 10–15 horas de práctica Regla de Oro: Prohibido usar interfaz gráfica para tareas que se pueden hacer en terminal.
Nivel 1: Supervivencia en la Terminal#
1. Sistema de Archivos: ¿Dónde estoy?#
En Windows tienes C:\, D:\. En Linux todo nace de la raíz /.
| Ruta | Descripción | Equivalente Windows |
|---|---|---|
/ | La Raíz. El inicio de todo. | C:\ |
/home/usuario | Tu carpeta personal (documentos, código). | C:\Users\Usuario |
/root | Carpeta del administrador (acceso restringido). | N/A |
/etc | Configuraciones del sistema (nginx, ssh, etc). | Registro / AppData |
/var | Variables (logs, bases de datos, webs). | C:\ProgramData |
/bin y /usr/bin | Binarios. Donde viven los programas (ls, git). | C:\Program Files |
/tmp | Archivos temporales (se borra al reiniciar). | %TEMP% |
2. Comandos de Movimiento y Archivos#
Debes memorizar estos comandos. Sin dudar.
bash# ¿Dónde estoy parado? (Print Working Directory) pwd # Listar archivos (con detalles y ocultos) ls -la # -l: lista detallada (permisos, tamaño) # -a: all (incluye .git, .env, .ssh) # Cambiar de directorio cd /var/www # Ir a ruta absoluta cd .. # Subir un nivel cd ~ # Ir a mi home (/home/usuario) cd - # Volver al directorio anterior # Crear directorios mkdir proyecto mkdir -p proyecto/backend/src # Crea toda la ruta de golpe # Crear archivos vacíos touch archivo.txt # Copiar cp archivo.txt copia.txt cp -r carpeta_origen carpeta_copia # -r = recursivo (para carpetas) # Mover o Renombrar (es el mismo comando) mv archivo.txt nuevo_nombre.txt # Renombrar mv archivo.txt /tmp/ # Mover # Borrar (PELIGRO: No hay papelera de reciclaje) rm archivo.txt rm -rf carpeta_inutil # -r = recursivo, -f = force (sin preguntar) # JAMÁS ejecutes "rm -rf /" o borrarás el sistema operativo entero.
3. Ver y Editar Contenido#
bash# Ver contenido rápido cat config.json # Ver contenido paginado (para archivos largos) less log_gigante.log # (Usa flechas para moverte, 'q' para salir) # Ver las últimas 10 líneas (útil para logs en vivo) tail -f error.log # Buscar texto dentro de archivos grep "Error" application.log grep -r "TODO" ./src # Buscar en todos los archivos de una carpeta
Editores de Texto en Terminal:
- Nano: Fácil para principiantes.
nano archivo.txt. (Ctrl+O guardar, Ctrl+X salir). - Vim: Estándar profesional. Si entras por error y no sabes salir:
:q!(enter).
Nivel 2: Permisos y "Sudo" (Admin)#
Linux es multiusuario. No puedes tocar los archivos de otro usuario ni del sistema sin permiso.
1. "Sudo" - El modo Dios#
Si un comando te dice Permission denied, probablemente necesitas privilegios de administrador (root).
bash# Instalar algo (requiere root) sudo apt install git # Editar configuración del sistema sudo nano /etc/hosts
Regla: Nunca uses
sudopara cosas de tu propio usuario (comonpm installo crear archivos en tu home). Solo úsalo para cosas del sistema.
2. Entendiendo chmod y chown#
Ejecuta ls -l y verás algo como -rw-r--r--. Son los permisos.
- r (read): Leer (4)
- w (write): Escribir/Modificar (2)
- x (execute): Ejecutar (1)
Se agrupan en tres: Dueño | Grupo | Otros.
bash# Dar permiso de ejecución a un script chmod +x deploy.sh # Permisos "clásicos": chmod 777 archivo # PELIGRO. Todo el mundo puede hacer todo. PROHIBIDO en prod. chmod 644 archivo # Dueño lee/escribe, el resto solo lee (estándar archivos web). chmod 600 archivo # Solo el dueño lee/escribe. (OBLIGATORIO para llaves SSH). # Cambiar de dueño (Change Owner) sudo chown usuario:grupo archivo sudo chown -R www-data:www-data /var/www/html # Recursivo para webserver
Nivel 3: Gestión de Procesos y Tuberías#
1. Control de Procesos#
¿Un programa se colgó? ¿Necesitas ver qué consume RAM?
bash# Administrador de tareas visual htop # (Si no está: sudo apt install htop) # Ver procesos corriendo rápido ps aux | grep node # Ver solo procesos de Node.js # Matar un proceso kill 1234 # Matar por PID (Process ID) killall node # Matar TODOS los procesos llamados "node" pkill -f "next" # Matar proceso por nombre parcial
2. Tuberías (Pipes) y Redirección#
El superpoder de Linux es conectar programas. La salida de uno es la entrada del otro.
El Pipe |:
bash# "cat" lee el archivo, "|" se lo pasa a "grep" para filtrar cat access.log | grep "404 Not Found" # Contar cuántos archivos hay ls -1 | wc -l # wc = word count
Redirección > y >>:
bash# Guardar salida en un archivo (Sobreescribe) echo "Hola Mundo" > saludo.txt # Agregar al final del archivo (Append) echo "Otra línea" >> saludo.txt # Guardar errores en un archivo separado npm run start 2> errores.log
Nivel 4: Redes desde la Terminal#
Si eres desarrollador, NO puedes depender del navegador para probar redes.
bash# ¿Tengo internet? ping 8.8.8.8 # ¿Responde mi servidor local? ping 192.168.0.159 # ¿Cuál es mi IP? ip a # Busca "inet" en la interfaz eth0 o wlan0. # ¿Qué puertos están abiertos en mi máquina? sudo ss -tulpn # t=tcp, u=udp, l=listening, p=process name # Hacer una petición HTTP a mano (como Postman pero en terminal) curl -v https://api.soy-digital.do/health curl -X POST -d '{"nombre":"test"}' http://localhost:3000/users # Descargar un archivo wget https://ejemplo.com/archivo.zip
Nivel 5: Git y Control de Versiones Básico#
Git no es Github. Git es la herramienta de línea de comandos que controla el historial de tu código.
1. Comandos de Supervivencia#
bash# Descargar un repositorio git clone https://github.com/usuario/repo.git # ¿Qué ha cambiado? (Úsalo compulsivamente cada 5 minutos) git status # Guardar cambios git add . # Preparar todo git commit -m "Mensaje claro de qué hice" # Enviar a la nube git push origin main # Traer cambios de la nube git pull origin main
2. Ramas (Branches) - No rompas main#
Nunca trabajes directo en main si estás experimentando.
bash# Crear rama nueva y moverse a ella git checkout -b mi-nueva-feature # Volver a main git checkout main
3. "Ya la cagué, ¿cómo vuelvo atrás?"#
bash# Deshacer cambios en un archivo (antes de hacer add) git checkout -- archivo.txt # Deshacer un "git add" (sacar del área de preparación) git reset HEAD archivo.txt # Ver el historial git log --oneline
Examen de Autoevaluación#
Si no puedes resolver estos 5 puntos sin mirar Google, no estás listo.
- Crea una estructura de carpetas
proyecto/src/assetscon un solo comando. - Crea un archivo
index.js, agrégale unconsole.log, y ejecútalo con node. - Encuentra el proceso que está ocupando el puerto 3000 y mátalo.
- Cambia los permisos de un archivo para que SOLO tú puedas leerlo y nadie más.
- Busca cuántas veces aparece la palabra "Error" en un log de 500MB y guarda esas líneas en un archivo nuevo llamado
reporte.txt.
No hay excusas. La terminal es tu herramienta principal de trabajo.