1. Historia y Evolución de Linux
Para entender Linux, debemos conocer sus raíces. Todo comenzó con UNIX, el sistema operativo que sentó las bases de la informática moderna, y un estudiante finlandés con una visión de libertad.
1991
Nacimiento del Kernel Linux
Linus Torvalds, un estudiante de la Universidad de Helsinki, lanza la versión 0.02 del kernel que él mismo había desarrollado, basándose en MINIX. Este fue el inicio del sistema operativo.
1992
Licencia Pública General (GPL)
El kernel Linux adopta la GPL, permitiendo su uso, modificación y distribución libre. Se combina con las utilidades del proyecto GNU, formando el sistema operativo GNU/Linux.
1993 - 1994
Slackware y Debian
Surgen las primeras distribuciones robustas. Slackware se convierte en la más antigua aún en mantenimiento y Debian sienta las bases para miles de distribuciones futuras con su enfoque en la comunidad.
1998 - 2000
Crecimiento Empresarial (Red Hat y SUSE)
Grandes empresas comienzan a adoptar Linux para sus servidores. Se forman Red Hat y SUSE, ofreciendo soporte comercial y validando a Linux como una alternativa seria.
2004
Nacimiento de Ubuntu
Mark Shuttleworth lanza Ubuntu, enfocado en hacer que Linux sea fácil de usar para el usuario promedio de escritorio. Esto impulsa su popularidad masiva.
Hoy
El Dominio Silencioso
Linux impulsa el 90% de los servidores en la nube, todos los superordenadores, la vasta mayoría de dispositivos IoT, routers, y el sistema Android, confirmando su ubicuidad global.
2. Instalación y Sistema de Archivos
Esta sección te guiará en los pasos esenciales para comenzar a usar Linux, desde la elección de tu "sabor" hasta la comprensión de su corazón: el sistema de archivos.
2.1 Elige tu Distribución (Distro)
La principal diferencia con otros sistemas es que existen cientos de "sabores" o distribuciones. Tu elección depende de tu objetivo y nivel de experiencia.
Ubuntu/Linux Mint
Ideal para: Principiantes y usuarios de escritorio.
Son fáciles de instalar, tienen interfaces intuitivas y una gran comunidad de soporte.
Fedora/CentOS
Ideal para: Desarrolladores y entornos empresariales.
Utilizan paquetes RPM y son conocidos por su innovación y estabilidad a largo plazo.
Arch Linux/Gentoo
Ideal para: Usuarios avanzados y entusiastas.
Ofrecen una máxima personalización y control, pero requieren un conocimiento más profundo del sistema.
2.2 Preparando el Terreno
El proceso más común es crear un medio de instalación booteable con un archivo ISO.
- Descarga la imagen ISO de tu distribución favorita (ej. Ubuntu).
- Utiliza una herramienta (como Rufus o Balena Etcher) para "grabar" la ISO en una unidad USB.
- Configura el BIOS/UEFI de tu equipo para arrancar desde la unidad USB.
2.3 El Sistema de Archivos de Linux
A diferencia de Windows (donde todo comienza con C:\), Linux tiene un único árbol de directorios que comienza en la raíz, representado por la barra inclinada (/). Esto se conoce como el **Estándar de Jerarquía del Sistema de Archivos (FHS)**.
**Todo es un archivo:** En Linux, dispositivos, particiones, sockets y datos se manejan como archivos. Esta uniformidad es clave para su flexibilidad y potencia.
Directorios Raíz Clave
/bin y /sbin
Binarios Esenciales: Contienen programas ejecutables fundamentales para que el sistema funcione (ej. `ls`, `cp`, `mount`).
/home
Directorio Personal: Contiene las carpetas personales de cada usuario. Tus documentos y configuraciones se guardan aquí.
/etc
Archivos de Configuración: Contiene todos los archivos de configuración del sistema y de los servicios instalados.
/var
Datos Variables: Contiene datos que cambian constantemente, como logs del sistema, correos y bases de datos.
3. La Terminal y el Comando Linux
La terminal, o línea de comandos (CLI), es la herramienta más poderosa de Linux. Aquí aprenderás los comandos esenciales para navegar, manipular archivos y administrar el sistema.
3.2 Administración del Sistema
Comandos para obtener información del sistema y gestionar procesos en segundo plano.
`man`
Abre el **manual** de cualquier comando. Escribe `man ls` para ver la documentación completa.
`top` o `htop`
Muestra el **uso de recursos** (CPU, Memoria) en tiempo real y gestiona procesos activos.
`cat`, `grep`
**Concatena/muestra** contenido de archivos (`cat`) y **filtra** texto dentro de ellos (`grep`). Esencial para la gestión de logs.
3.3 Gestión de Paquetes (APT)
Los gestores de paquetes son la forma centralizada de instalar, actualizar y eliminar software en Linux. En distribuciones basadas en Debian (como Ubuntu), se usa **APT (Advanced Packaging Tool)**.
El Comando **sudo**
`sudo` (SuperUser DO) es indispensable. Te permite ejecutar comandos con privilegios de administrador, necesarios para instalar software o modificar archivos críticos del sistema.
user@linux:~$ sudo apt update [sudo] password for user: ******** ... Paquetes actualizados ... user@linux:~$ sudo apt install nginx user@linux:~$ sudo apt remove nginx**Comandos APT Clave:**
- **`apt update`**: Descarga las listas de paquetes más recientes de los repositorios.
- **`apt upgrade`**: Instala las nuevas versiones de todos los paquetes instalados.
- **`apt install [paquete]`**: Instala un paquete de software.
- **`apt remove [paquete]`**: Desinstala un paquete de software.
4. Trabajo con Usuario Root y Sudo
¿Qué es el usuario root?
En Linux, el usuario **root** es el superusuario del sistema. Tiene **acceso total y sin restricciones** para realizar cualquier acción: instalar software, modificar archivos de configuración o eliminar componentes críticos. Su poder es útil, pero también implica grandes riesgos si se usa sin cuidado.
¿Cuándo usar root o `sudo`?
Es conveniente utilizar permisos de administrador cuando se realizan **tareas que afectan al sistema completo**.
Instalación y Actualización
Modificación de Archivos Críticos
Administración de Servicios
Manejo de Discos (Montar/Desmontar)
Gestión de Usuarios y Grupos
Permisos y Propiedad (Chmod/Chown)
¿Cuándo NO usar root?
Evita usar root para tareas cotidianas o de desarrollo. Trabajar como root en estas situaciones puede provocar errores de permisos, archivos dañados o configuraciones incorrectas.
- Abrir editores de código (VSCode, PyCharm, etc.)
- Ejecutar Jupyter Notebooks o Python
- Navegar por carpetas personales (usar `cd ~` o `cd /home/user`)
- Crear o editar archivos que no son del sistema (ej. documentos o proyectos)
`sudo` vs. `sudo -i` (Entrar como Root)
Usar `sudo`
Es la forma más segura. **Eleva permisos solo para un comando específico**.
Entrar como Root (`sudo -i`)
Útil si necesitas ejecutar **varios comandos administrativos consecutivos**. Se recomienda salir inmediatamente después de terminar la tarea.
Riesgos de trabajar como root
El usuario root no tiene frenos. Comandos destructivos como rm -rf / pueden ejecutarse sin confirmación y causar daños críticos. Linux sigue el principio de **mínimos privilegios**: usar root solo cuando sea estrictamente necesario.
5. Comportamiento del Bash y Gestión de Funciones
Comprender cómo Bash carga funciones, alias y variables es clave para evitar errores de sintaxis,
conflictos en memoria y comportamientos inesperados al modificar el archivo ~/.bashrc.
Bash es el intérprete de comandos que ejecuta instrucciones escritas en terminal. Cuando se inicia una sesión, carga configuraciones desde archivos como:
~/.bashrc→ configuración interactiva~/.profile→ variables de entorno/etc/bash.bashrc→ configuración global
Cada vez que ejecutas:
Recarga funciones, alias y variables sin cerrar la terminal.
- Funciones con nombres previamente cargados
- Alias con el mismo nombre que funciones
- Funciones antiguas aún en memoria
- Errores de sintaxis previos no recargados
Ejemplo de conflicto:
Puede mostrar una función antigua aunque ya no exista en el archivo.
Cuando defines una función en Bash, queda almacenada en memoria durante la sesión. Aunque edites el archivo, la función sigue activa hasta reiniciar o recargar correctamente.
Elimina una función específica de la sesión actual.
Recargar configuración:
Reiniciar sesión de Bash:
Eliminar alias:
Ver alias activos:
- Usar prefijos en funciones personalizadas (
_odev_) - No reutilizar nombres de comandos existentes
- Probar funciones antes de guardarlas definitivamente
- Documentar cada función con comentarios
¡Es Hora de Practicar!
El conocimiento de Linux solo se consolida con la práctica. Descarga una distribución y comienza a explorar la terminal.