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 /.

RutaDescripciónEquivalente Windows
/La Raíz. El inicio de todo.C:\
/home/usuarioTu carpeta personal (documentos, código).C:\Users\Usuario
/rootCarpeta del administrador (acceso restringido).N/A
/etcConfiguraciones del sistema (nginx, ssh, etc).Registro / AppData
/varVariables (logs, bases de datos, webs).C:\ProgramData
/bin y /usr/binBinarios. Donde viven los programas (ls, git).C:\Program Files
/tmpArchivos 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 sudo para cosas de tu propio usuario (como npm install o 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.

  1. Crea una estructura de carpetas proyecto/src/assets con un solo comando.
  2. Crea un archivo index.js, agrégale un console.log, y ejecútalo con node.
  3. Encuentra el proceso que está ocupando el puerto 3000 y mátalo.
  4. Cambia los permisos de un archivo para que SOLO tú puedas leerlo y nadie más.
  5. 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.