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.
Diagrama que muestra la descarga de ISO, creación de USB y arranque desde BIOS

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

sudo apt update sudo apt install paquete

Modificación de Archivos Críticos

sudo nano /etc/hosts

Administración de Servicios

sudo systemctl restart servicio

Manejo de Discos (Montar/Desmontar)

sudo mount /dev/sda1 /mnt

Gestión de Usuarios y Grupos

sudo adduser usuario sudo deluser usuario

Permisos y Propiedad (Chmod/Chown)

sudo chown user:group file

¿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**.

sudo apt update

Entrar como Root (`sudo -i`)

Útil si necesitas ejecutar **varios comandos administrativos consecutivos**. Se recomienda salir inmediatamente después de terminar la tarea.

sudo -i # ... comandos administrativos ... exit

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:

source ~/.bashrc

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:

type datos

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.

unset -f nombre_funcion

Elimina una función específica de la sesión actual.

Recargar configuración:

source ~/.bashrc

Reiniciar sesión de Bash:

exec bash

Eliminar alias:

unalias nombre

Ver alias activos:

alias
  • Usar prefijos en funciones personalizadas (_ o dev_)
  • No reutilizar nombres de comandos existentes
  • Probar funciones antes de guardarlas definitivamente
  • Documentar cada función con comentarios
# Ir a carpeta de proyectos _proyectos() { cd ~/Proyectos }

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