- Linux es un sistema tipo Unix, libre, seguro y muy usado en servidores, nube y DevOps.
- La base práctica pasa por dominar terminal, permisos, usuarios, procesos y red.
- El gestor de paquetes y el shell scripting permiten automatizar e integrar tareas complejas.
- Con estos fundamentos es más fácil afrontar certificaciones y trabajos como admin o DevOps.

Si estás empezando con Linux o quieres pasar del típico uso de la interfaz gráfica a dominar la terminal y la administración del sistema, este mega artículo está pensado para ti. Vamos a recorrer, con calma pero en profundidad, todo lo que necesitas saber: desde qué es Linux y cómo conseguirlo hasta comandos, permisos, scripting, procesos, red y mucho más.
A lo largo del texto irás viendo comandos reales, ejemplos prácticos y explicaciones pensadas para que entiendas qué está pasando “por debajo del capó”. La idea es que termines con una base tan sólida que puedas seguir aprendiendo por tu cuenta, preparar entrevistas técnicas de Linux, certificaciones y trabajos de administración de sistemas o DevOps sin miedo.
Qué es Linux y por qué merece la pena aprenderlo
Linux es un sistema operativo de tipo Unix, libre y de código abierto, que se utiliza en prácticamente todos los entornos que puedas imaginar: servidores, ordenadores de escritorio, supercomputadores, móviles (Android), dispositivos embebidos e incluso en proyectos de IoT.
Una instalación típica de Linux se compone de un núcleo o kernel que desarrolló Linus Torvalds a principios de los 90, más un conjunto enorme de utilidades y herramientas (muchas procedentes del proyecto GNU) que forman el sistema completo. De ahí que muchas veces se hable de “GNU/Linux”.
Se considera una alternativa robusta y económica a sistemas como Unix comercial, Windows o macOS porque es gratuito, muy estable, altamente configurable y cuenta con una comunidad gigantesca que mantiene miles de paquetes de software listos para instalar.
Linux se distribuye en diferentes “sabores” o distribuciones (distros): Ubuntu, Debian, Fedora, openSUSE, CentOS, Red Hat, Arch, Gentoo, etc. Cada una cambia algunas herramientas, gestores de paquetes o políticas, pero todas comparten la misma base: el kernel y la filosofía Unix.
Ventajas clave de usar Linux en el mundo real
Una de las grandes razones por las que Linux domina en servidores, nube y DevOps es su fiabilidad y seguridad frente a otros sistemas. Bien administrado, es muy raro que un servidor Linux tenga que reiniciarse por cuelgues del sistema.
También es un entorno muy potente para tareas de automatización y administración gracias a la terminal, el shell y las herramientas de scripting. Muchas tareas que en otros sistemas son engorrosas, aquí se resuelven con unas pocas líneas de comandos encadenados.
En el mundo DevOps, Linux es prácticamente el estándar de facto: se usa constantemente para contenedores Docker, Kubernetes, CI/CD, scripts de despliegue y orquestación de infraestructuras.
Al ser software libre, cualquiera puede estudiar y modificar el sistema. Esto permite que empresas y administradores adapten el comportamiento del sistema a sus necesidades, logrando entornos muy personalizados, ligeros o ultra seguros según haga falta.
Por último, Linux es una habilidad muy demandada en el mercado laboral: las empresas buscan perfiles con experiencia en administración de sistemas, scripting en Bash y herramientas de red, y pagan sueldos muy competitivos cuando el perfil es sólido.
Conceptos básicos: kernel, shell y sistema multiusuario
Para entender qué estás haciendo en Linux, conviene tener claro qué piezas intervienen. El kernel es el “corazón” que habla con el hardware y gestiona memoria, procesos, dispositivos, etc. Encima de él se ejecutan todos los programas.
El usuario no suele hablar directamente con el kernel, sino a través de programas intermedios. El más importante para nuestro día a día es el intérprete de órdenes o shell. En la mayoría de distros el shell por defecto es Bash, aunque también existen Zsh, Fish y otros.
Linux sigue el modelo clásico Unix de sistema multiusuario y multitarea: varios usuarios pueden estar conectados a la vez y cada uno cuenta con su propio entorno, permisos y procesos. El sistema gestiona qué puede hacer cada uno mediante usuarios, grupos y permisos de archivo.
Además, Linux entiende prácticamente todo como un archivo: desde ficheros de texto hasta dispositivos físicos, procesos o canales de comunicación aparecen como entradas en el sistema de ficheros, lo que simplifica muchísimo su manejo desde la terminal.
Cómo obtener e instalar Linux
Para aprender de verdad Linux, necesitas acceso a un terminal real. Tienes varias opciones muy sencillas para instalar Linux sin complicarte la vida ni cargarte tu sistema principal.
Si usas macOS ya tienes un sistema Unix bajo los pies, y puedes abrir la terminal con una combinación como Cmd + Espacio y escribiendo “Terminal”. No es Linux, pero los comandos básicos y la filosofía son prácticamente iguales.
Si quieres una distro Linux completa, puedes instalar Linux en un PC con Ubuntu, Debian, openSUSE o la que prefieras en un equipo dedicado, en arranque dual con Windows, o dentro de una máquina virtual utilizando herramientas como VirtualBox.
Otra opción muy cómoda es usar entornos remotos proporcionados por tu trabajo, universidad o proveedor cloud. En ese caso basta con conectarte por SSH a la máquina remota y ya tendrás un prompt de Linux listo para ejecutar comandos.
Algunas webs y plataformas educativas ofrecen incluso terminales Linux online, ejecutándose en el navegador, ideal para experimentar sin tocar tu PC. Suelen permitir ejecutar la mayoría de comandos básicos, así como probar pequeños scripts en Bash.
El sistema de archivos de Linux y la estructura de directorios
En Linux no existe el concepto de “disco C:” o letras de unidad. Todo cuelga de un único árbol cuya raíz es el directorio / (barra). A partir de ahí se organizan todos los demás directorios y dispositivos.
Algunos de los más importantes son /etc (configuración), /home (carpetas de usuario), /var (logs y datos variables), /usr (binarios y librerías de usuario), y así sucesivamente según la jerarquía definida por el estándar FHS (Filesystem Hierarchy Standard).
Las unidades de disco, particiones, USB, etc., aparecen como dispositivos en /dev (por ejemplo /dev/sda) y se “enganchan” al árbol de directorios mediante el comando mount, de forma que se puedan usar como rutas normales.
En Unix los nombres de archivo distinguen mayúsculas y minúsculas, por lo que a.txt, A.txt y A.TXT son archivos diferentes. Conviene acostumbrarse a usar nombres simples en minúsculas, con guiones o guiones bajos y, a ser posible, sin espacios.
Dentro de esta estructura también se representan elementos especiales como dispositivos de carácter o bloque, enlaces simbólicos, directorios virtuales como /proc o /sys, y sistemas temporales en memoria como /run o tmpfs.
Entrando en la terminal: sesión, consola y shell
Cuando inicias un sistema Linux sin entorno gráfico, normalmente verás un prompt de inicio de sesión en modo texto, pidiéndote usuario y contraseña. Tras autenticarse, el sistema muestra un mensaje de bienvenida y te deja en un shell.
Aunque arranques en entorno gráfico, siempre puedes abrir una terminal gráfica (gnome-terminal, xterm, etc.) o cambiar a una consola virtual con combinaciones como Ctrl+Alt+F3, y volver al entorno gráfico con otra combinación similar.
Linux ofrece varias consolas de texto simultáneas, de modo que puedes iniciar sesión en diferentes TTY (F1-F6) y usar cada una para tareas distintas. Esto enfatiza el carácter multiusuario y multitarea del sistema, incluso aunque solo haya una persona delante del teclado.
Para cerrar una sesión de shell basta con escribir exit o pulsar Ctrl+D. En una consola real, esto te devuelve al prompt de login; en una terminal gráfica, normalmente cierra la ventana.
Apagar el sistema no se hace cortando la corriente, sino ejecutando órdenes como shutdown -h now, poweroff o reboot. Esto asegura que los datos en caché se escriban correctamente en disco y se eviten corrupciones de sistema de archivos.
Comandos básicos de navegación y manejo de ficheros
Para moverte por el sistema de archivos utilizas comandos como cd (cambiar de directorio), pwd (ruta actual) y ls (listar contenidos). Son la base del trabajo diario en consola.
Una buena forma de practicar sin peligro es crear un “laboratorio” aislado, por ejemplo con mkdir /tmp/tutorial && cd /tmp/tutorial, y allí experimentar con directorios, ficheros y permisos sin miedo a romper nada importante.
El comando mkdir acepta varios nombres a la vez, por ejemplo mkdir dir1 dir2 dir3, y también puede crear estructuras anidadas con la opción -p, como en mkdir -p dir4/dir5/dir6.
Si quieres trabajar con nombres que contienen espacios, hay que escapar los espacios con barras invertidas o usar comillas. Por ejemplo, mkdir «carpeta 1» o mkdir carpeta\ con\ espacios.
Para inspeccionar el contenido de un fichero de texto puedes usar cat, more o less. Cat muestra todo de golpe, mientras que less funciona como un “paginador” y te permite moverte cómodamente con las flechas, Page Up/Down y salir con la tecla q.
Redirecciones, tuberías y creación rápida de ficheros
Una de las ideas más potentes de Unix es la posibilidad de redirigir la salida estándar de un comando a un fichero usando el símbolo >. Por ejemplo, ls > listado.txt guarda el listado en vez de mostrarlo por pantalla.
Si en lugar de querer sobreescribir un archivo quieres añadir contenido al final, utilizas >> para hacer un append. Por ejemplo, echo «Nueva línea» >> listado.txt añade una línea extra al contenido existente.
Con echo también puedes crear ficheros pequeños de prueba: echo «Prueba» > test_1.txt, y luego usar cat para leerlos o combinarlos. Es muy práctico para generar datos de ejemplo de manera ultrarrápida.
Cuando quieres encadenar comandos, utilizas la tubería | para que la salida de uno sea la entrada de otro. Por ejemplo, cat archivo | grep texto busca líneas que coincidan con un patrón dentro de un fichero mostrado por cat.
Además de stdout (salida estándar) y stdin (entrada estándar), existe stderr (salida de errores). También puedes redirigirla con 2> para errores y combinaciones como >fichero 2>&1 para unir ambas salidas en un mismo destino.
Permisos, propietarios y grupos en Linux
Cada archivo y directorio en Linux tiene asociado un usuario propietario, un grupo y un conjunto de permisos de lectura (r), escritura (w) y ejecución (x) para cada uno de esos niveles: usuario, grupo y otros.
Cuando ejecutas ls -l ves una línea similar a -rw-r–r–, donde el primer carácter indica el tipo (archivo normal, directorio, enlace, etc.) y los nueve siguientes reflejan las máscaras de permisos para usuario, grupo y otros en bloques de tres.
Para modificar propietario se usa chown y para cambiar grupo chgrp. Si quieres ajustar permisos, recurres a chmod, ya sea en modo simbólico (u+rw, g-w, o=rX…) o numérico (644, 755, 700) según prefieras.
Existen además tres bits especiales: setuid, setgid y sticky. El primero y el segundo hacen que un ejecutable corra con los privilegios del dueño o del grupo del archivo, y el sticky bit en un directorio tipo /tmp evita que otros usuarios borren ficheros ajenos en ese directorio compartido.
La creación de archivos nuevos se ve afectada por la umask, una máscara que “resta” permisos por defecto. En muchas distros modernas se usa umask 0002 junto con el esquema de grupos privados de usuario, de forma que los archivos sean accesibles para el usuario y su grupo pero no para el resto.
Gestión de usuarios, grupos y privilegios
El usuario con todos los poderes en Linux es root, también llamado superusuario o administrador del sistema. Desde esa cuenta puedes instalar paquetes, modificar configuraciones críticas o cambiar permisos sin restricciones.
Para gestionar cuentas de usuario en Debian y derivadas se usan utilidades de alto nivel como adduser y deluser, que permiten crear o eliminar usuarios y sus directorios personales de forma cómoda.
Si quieres que un usuario normal pueda ejecutar ciertas órdenes administrativas sin cambiar por completo a root, puedes usar sudo y ajustarlo en /etc/sudoers para permitir o denegar comandos concretos, con o sin pedir contraseña.
También existen grupos especiales que conceden acceso a ciertos dispositivos o recursos: por ejemplo audio, video, cdrom, plugdev, netdev, etc. Añadir un usuario a esos grupos le otorga permisos sin necesidad de convertirlo en root.
La asociación de usuarios y grupos se controla mediante archivos como /etc/passwd, /etc/group y /etc/shadow, además de herramientas como passwd, usermod, groupadd y similares para ajustar contraseñas o membresía de grupo.
Sistema de paquetes y software en Linux
En lugar de andar descargando instaladores ejecutables como en otros sistemas, en Linux lo habitual es tirar de gestores de paquetes integrados en la distribución. En Debian/Ubuntu se usan apt, apt-get y dpkg; en Fedora/RHEL, dnf o yum; en openSUSE, zypper; etc.
Instalar un programa suele reducirse a algo tan simple como sudo apt-get install nombre_paquete, que se encarga de resolver dependencias y traer todo lo necesario desde los repositorios oficiales o de terceros.
Actualizar el sistema también es trivial usando comandos del mismo estilo: por ejemplo, apt-get update para refrescar índices de paquetes y apt-get upgrade o apt-get dist-upgrade para aplicar actualizaciones disponibles.
En general, cada distribución tiene su propio formato de paquete (deb, rpm, etc.), pero todas comparten la filosofía de gestionar el software de forma centralizada, con metadatos, comprobación de firmas y registro de archivos instalados.
Para encontrar documentación sobre un comando o paquete concreto dispones de man, info y ficheros en /usr/share/doc, así como herramientas tipo apropos o whatis para buscar por palabras clave dentro de las páginas de manual.
Edición de texto: editores, Vim, Emacs y amigos
En el mundo Linux la edición de textos es fundamental, porque la mayoría de la configuración se hace editando ficheros en /etc, scripts en /usr/local o archivos de usuario en su home. Por eso conviene manejar al menos un editor de consola.
Vi y sus derivados como Vim están prácticamente en cualquier sistema Unix. Vim añade muchas mejoras, colores y ayuda integrada, y suele ser la opción recomendada para aprender un editor potente y ubicuo que te funcione en cualquier servidor.
Vim funciona con distintos modos: NORMAL para moverte y dar órdenes, INSERT para escribir texto, VISUAL para seleccionar, y un modo de comandos al pulsar “:”. Es un poco chocante al principio, pero la curva de aprendizaje merece mucho la pena si trabajas mucho en consola.
Otros editores populares son Emacs, mcedit (el editor integrado en Midnight Commander), nano, etc. En Debian puedes configurar tu editor por defecto apuntando la alternativa /usr/bin/editor al que prefieras mediante update-alternatives.
Sea cual sea tu elección, te interesa aprender lo suficiente como para editar con soltura ficheros largos, buscar textos, reemplazarlos con expresiones regulares y guardar cambios sin miedo a romper la sintaxis de configuraciones críticas.
Comandos de sistema, procesos y monitorización
Linux es multitarea real, así que en cualquier momento hay montones de procesos ejecutándose. Para verlos puedes usar ps, top, htop o herramientas similares. Top y htop muestran una vista en tiempo real con uso de CPU, memoria, etc.
Cada programa en ejecución tiene un identificador de proceso (PID) que puedes ver con ps o pgrep. Si un proceso se cuelga o se queda “zombi”, puedes intentar pararlo con kill enviando señales como SIGTERM o, en última instancia, SIGKILL.
Además de procesos en primer plano, el shell puede lanzar y gestionar trabajos en segundo plano con el carácter &. Los comandos jobs, fg y bg permiten listar, reanudar o enviar al fondo estos procesos relacionados con tu sesión actual.
Para supervisar el rendimiento de un sistema de forma más “hardcore” cuentas con herramientas como vmstat, iostat, sar, free, uptime, dmesg y otras muchas, que muestran estadísticas de CPU, memoria, disco o registros del kernel.
En los sistemas modernos, la mayoría de servicios y demonios están gestionados por systemd, y se controlan con systemctl para arrancarlos, detenerlos, ver su estado o habilitarlos al inicio. Los logs centralizados se consultan con journalctl.
Red en Linux: interfaces, servicios y cortafuegos
Configurar la red en Linux implica manejar interfaces como eth0, wlan0 o nombres modernos tipo enp3s0. Puedes inspeccionar su estado con ip addr, ip link o herramientas más tradicionales como ifconfig.
La pila de red proporciona comandos para ver rutas, puertos abiertos y conexiones activas: por ejemplo ip route, ss, netstat, ping, traceroute, así como gestores más complejos para DNS, DHCP, etc.
A nivel de servicios, Linux es la plataforma reina para montar un servidor web (Apache, Nginx), bases de datos, servidores de correo, DNS y un largo etcétera, que se administran casi siempre desde la línea de comandos y ficheros de configuración en /etc.
Para proteger el sistema se usan cortafuegos basados en netfilter, con herramientas como iptables o nftables. Mediante reglas puedes permitir o denegar tráfico entrante y saliente en determinados puertos, interfaces y protocolos.
Para diagnosticar problemas de red también son muy útiles comandos como tcpdump o Wireshark para captura de paquetes, o journals y logs de servicios específicos cuando algo no responde como debería.
Shell scripting: automatizando tareas con Bash
Una de las grandes armas de Linux es la capacidad de automatizar tareas mediante scripts en Bash. Un script no es más que un archivo de texto con una serie de comandos que el shell ejecuta en orden.
Lo habitual es empezar el archivo con una línea shebang como #!/bin/bash para indicar qué intérprete debe ejecutarlo, y luego añadir instrucciones, condiciones, bucles y funciones según sea necesario.
Dentro de un script tienes variables, parámetros posicionales ($1, $2, …), estructuras de control como if/then/else, for, while, case, y toda la potencia de las herramientas clásicas de Unix (grep, sed, awk, cut, sort, uniq, etc.) encadenadas.
Con unas pocas líneas puedes automatizar copias de seguridad, rotación de logs, despliegues de aplicaciones, procesado de datos o cualquier tarea repetitiva que se pueda expresar como comandos en terminal.
A medida que vas ganando práctica, es habitual combinar Bash con otros lenguajes como Python o Perl donde haga falta, usando scripts del shell para orquestar llamadas a programas más complejos y pegarlos entre sí.
Herramientas de apoyo: paginadores, MC y registro de sesiones
Además de los comandos base, existen programas que facilitan mucho la vida. Uno de ellos es less, un paginador mejorado que permite buscar dentro del archivo, desplazarse fácilmente y mostrar colores si activas opciones adecuadas.
Otro muy interesante para principiantes es Midnight Commander (mc), un gestor de archivos de consola con dos paneles, menús tipo “Norton Commander” y visor y editor integrados. Es ideal para explorar el sistema sin memorizar tantos comandos de golpe.
Si quieres guardar todo lo que haces en una sesión de terminal, puedes utilizar el comando script, que graba entradas y salidas en un fichero de texto para revisarlas más tarde, perfecto cuando haces tareas delicadas de administración.
Para no perderte, es muy habitual personalizar el shell mediante el archivo ~/.bashrc, donde puedes definir alias, funciones, rutas de búsqueda (PATH), autocompletados y variables de entorno que se cargan cada vez que abres una shell interactiva.
Con el tiempo, tu entorno de shell se convertirá en una especie de “caja de herramientas personal”, afinada a tu manera de trabajar, y te permitirá ser mucho más rápido y eficiente en el día a día con Linux.
Aprender Linux a fondo es un proceso continuo, pero con todo lo que has visto aquí ya tienes las bases de sistema de archivos, permisos, usuarios, procesos, red, paquetes y scripting que marcan la diferencia entre usar el sistema “de pasada” y sentirte realmente cómodo administrándolo y aprovechando toda su potencia.