/
/

Comandos de Linux esenciales que todo usuario debería conocer

por Team Ninja
Essential Linux Commands Users Should Know blog banner image

Resumen instantáneo

Este post ofrece una lista completa de comandos CMD básicos y una inmersión profunda en los comandos de Windows, con más de 70 comandos cmd esenciales tanto para principiantes como para usuarios avanzados. Explica comandos prácticos del símbolo del sistema para la gestión de archivos, la navegación por directorios, la solución de problemas de red, las operaciones de disco y la automatización con ejemplos reales para mejorar la productividad. Tanto si estás aprendiendo los comandos básicos de cmd como si ya dominas las herramientas avanzadas de la CLI de Windows, esta guía te ayudará a utilizar el Símbolo del sistema de forma más eficaz.

Puntos clave

  • Los comandos básicos de Linux abarcan la navegación entre directorios, la gestión de archivos y la visualización o edición de ficheros, y son la base para trabajar directamente en la terminal.
  • Los comandos de administración del sistema te ayudan a gestionar usuarios y grupos, configurar permisos de archivos y controlar procesos.
  • Los comandos de red comprueban la conectividad, monitorizan el tráfico y permiten el acceso remoto seguro, algo clave cuando gestionas endpoints a distancia.
  • Los comandos de gestión de paquetes sirven para instalar, actualizar y eliminar software, según si tu distribución está basada en Debian o en RPM.
  • Los comandos para operaciones avanzadas cubren el archivado, el uso de disco, la programación de tareas y la personalización del shell.

Linux es un sistema operativo robusto y de código abierto que se ha convertido en una pieza fundamental de todo tipo de entornos informáticos, desde ordenadores personales hasta servidores empresariales. Desarrollado de forma colaborativa por miles de programadores de todo el mundo, Linux ofrece una plataforma flexible y segura que se puede adaptar a necesidades muy diversas. Al ser de código abierto, cualquiera puede acceder al código fuente, modificarlo y distribuir sus propias versiones, lo que impulsa la innovación y la personalización.

En este artículo repasamos los comandos de Linux esenciales que todo usuario debería conocer, organizados por categorías: navegación, gestión de archivos, administración del sistema, redes, gestión de paquetes, operaciones avanzadas y personalización. Cada comando se explica con ejemplos prácticos para que entiendas sus aplicaciones y sus ventajas. El objetivo es que adquieras los conocimientos necesarios para mejorar tu soltura con la línea de comandos y ganar eficiencia al gestionar sistemas Linux.

📌Antes de continuar, si prefieres ver una guía visual de todo esto, no te pierdas Comandos de Linux esenciales que todo usuario debería conocer.

La terminal sigue siendo imprescindible en un mundo de interfaces gráficas

Dominar la interfaz de línea de comandos (CLI) es esencial para cualquier usuario de Linux, porque ofrece un nivel de control y eficiencia sin igual. Con la CLI puedes realizar tareas complejas con comandos sencillos, automatizar procesos y resolver problemas de forma eficaz.

A diferencia de las interfaces gráficas, la CLI permite una interacción más directa con el sistema y además se puede programar en scripts, algo crucial para administradores de sistemas y desarrolladores que necesitan precisión y rapidez en su trabajo. Incluso en el uso diario, una invocación bien construida en la línea de comandos puede ahorrarte varios minutos de clics entre aplicaciones, y así también resulta sencillo lanzar trabajos por lotes.

Comandos básicos de Linux

Algunas notas prácticas:

  • Rutas absolutas frente a rutas relativas: en Linux, las rutas absolutas siempre empiezan por / y apuntan siempre a una carpeta o un archivo concretos del sistema de archivos; las rutas relativas no empiezan por / y siempre se interpretan respecto al directorio de trabajo actual.
  • Los sistemas de archivos y los nombres de archivo distinguen entre mayúsculas y minúsculas: por ejemplo, /home/user, /home/User y /home/USER son tres carpetas distintas.
  • Si te pierdes: pwd muestra el directorio de trabajo actual. (Técnicamente, envía el contenido de la variable de entorno PWD a STDOUT, salvo que se redirija a otro sitio.)
  • Para despejar el espacio de trabajo: si pulsas Ctrl+L en la terminal, se limpiará la pantalla conservando el comando que estuvieras escribiendo. Resulta útil cuando, por ejemplo, la salida de un comando anterior ha dejado la terminal hecha un desastre.
  • ¿Necesitas más ayuda?: el manual de Linux está ahí para eso. Solo tienes que ejecutar «man [comando]», por ejemplo man unzip, o buscar por palabra clave con «man -k [palabra clave]»: man -k firewall listará todas las páginas del manual que mencionan firewalls. Adelante: cada uno de los comandos que verás más abajo tiene muchísima más funcionalidad por descubrir.

Comandos de navegación (por ejemplo, cd, ls, pwd):

Los comandos de navegación son la base para moverse por el sistema de archivos de Linux.

  • cd: cambia de directorio. Los sistemas de archivos montados en un sistema Linux se integran en un único árbol de directorios mediante puntos de montaje. Por eso, cd puede llevarte a un directorio situado en otro sistema de archivos montado sin necesidad de un comando aparte para cambiar de dispositivo de almacenamiento. (Consulta pwd.)
    • cd [carpeta], por ejemplo cd /home/user/Documents, cambia tu directorio de trabajo actual al directorio Documents del usuario desde cualquier punto del sistema en el que estuvieras, precisamente por la diferencia entre rutas absolutas y relativas; cd Documents/ también funcionaría, siempre que tu directorio de trabajo actual sea /home/user/.
    • cd (sin parámetros) o cd ~ te devuelve siempre al directorio $HOME del usuario actual (normalmente /home/user/). En Bash, ~ (la virgulilla) equivale a la variable de entorno HOME del usuario actual.
    • cd – (guion) te devuelve al último directorio de trabajo que usaste antes de pasar al actual.
  • ls: lista el contenido de un directorio.
    • ls -l muestra información detallada sobre archivos y directorios.
    • ls -lart muestra información detallada sobre todos los archivos y directorios (incluidos los ocultos y del sistema) ordenados por fecha en orden inverso (es decir, del más antiguo al más reciente).
  • Pwd: muestra el directorio de trabajo actual. Técnicamente, envía el contenido de la variable de entorno $PWD a STDOUT, salvo que se redirija a otro sitio. (Consulta cd.)
    • pwd (sin parámetros) muestra la ruta absoluta de tu ubicación actual en el sistema de archivos (por ejemplo, /home/user/Documents).
    • pwd -P muestra la ruta física, resolviendo los enlaces simbólicos que haya por el camino, en lugar de la ruta lógica por la que realmente has navegado.

Comandos de gestión de archivos (por ejemplo, cp, mv, rm, touch):

Los comandos de gestión de archivos son imprescindibles para manejar archivos y directorios.

  • cp: copia archivos o directorios.
    • cp file1.txt /backups/ copia file1.txt al directorio /backups.
    • cp -vR directory1/ /path/to/target/ copia de forma recursiva directory1 (un subdirectorio del directorio de trabajo actual) a la ruta absoluta /path/to/target/directory1. El modificador -v hace que la copia sea detallada, lo que facilita el seguimiento y la depuración.
  • mv: mueve o renombra archivos y directorios. Conserva las fechas originales de creación y modificación.
    • mv oldname.txt newname.txt renombra el archivo.
    • mv -t [destino] [origen1] origen2 …, por ejemplo mv -t /bucket/ directory1 directory2 file1.txt …, mueve todos los argumentos de origen al directorio de destino.
  • rm: elimina archivos o directorios.
    • rm -r carpeta borra la carpeta y su contenido.
    • sudo rm -rf / borrará absolutamente todo lo que haya en el sistema, así que, por favor, no lo hagas.
  • touch: crea archivos vacíos o actualiza la marca de tiempo de archivos existentes.
    • touch newfile.txt crea un archivo nuevo llamado newfile.txt.

Visualizar y editar archivos (por ejemplo, cat, nano, vim, less):

Los comandos para ver y editar archivos permiten leer y modificar su contenido.

  • cat: concatena y muestra el contenido de un archivo.
    • cat file.txt muestra el contenido de file.txt; cat file1 file2 … concatena toda la salida en un único flujo. En la práctica ya no se usa para mostrar el contenido de los archivos. (Consulta less.)
  • nano: un editor de texto sencillo para editar archivos.
    • nano file.txt abre file.txt en el editor nano.
  • vim: un editor de texto potente para edición avanzada.
    • vim file.txt abre file.txt en el editor vim.
    • vim file.txt +20 abre file.txt en la línea 20.
    • :help (+ <Intro>) para obtener ayuda, :wq para guardar y salir, y :q! para salir sin guardar.
  • less: muestra el contenido de un archivo página a página y permite buscar dentro de la salida paginada.
    • less file.txt te permite desplazarte por file.txt.
    • Pulsa h o ? para obtener ayuda; PgUp/PgDn/Espacio/Retroceso desplazan el contenido y / busca; pulsa n para ir a la siguiente coincidencia y N para la anterior. Sal con q.

Comandos de administración del sistema

Gestión de usuarios y grupos (por ejemplo, adduser, usermod, passwd):

Gestionar usuarios y grupos es fundamental en la administración de sistemas.

  • adduser: añade nuevos usuarios al sistema. adduser newuser crea una cuenta de usuario nueva.
  • addgroup: añade nuevos grupos al sistema. addgroup newgroup crea un grupo nuevo.
  • usermod: modifica cuentas de usuario existentes. usermod -aG sudo user añade el usuario al grupo sudo.
  • passwd: cambia las contraseñas de los usuarios.
    • passwd sin parámetros cambia la contraseña de la cuenta actual. A los usuarios normales se les suele pedir primero su contraseña actual.
    • sudo passwd newuser establece una contraseña para la cuenta newuser. Ten cuidado al usar passwd como root o con sudo: en ese caso no se pedirá ninguna contraseña actual.

Permisos y propiedad de archivos (por ejemplo, chmod, chown, chgrp):

Controlar los permisos y la propiedad de los archivos garantiza la seguridad y un acceso adecuado.

  • chmod: cambia los permisos de los archivos.
    • chmod 755 script.sh establece los permisos de script.sh.
    • chmod +x file1.sh hace que file1.sh sea ejecutable.
  • chown: cambia la propiedad de los archivos.
    • chown user:group file.txt establece el usuario y el grupo propietarios de file.txt.
    • chown -R user:group Directory1/ establece de forma recursiva el usuario y el grupo propietarios de la carpeta Directory1.
  • chgrp: cambia el grupo propietario de los archivos. (En la práctica se usa más chown para esto, al ser una herramienta más versátil.)
    • chgrp newgroup file.txt asigna el grupo newgroup.

Gestión de procesos (por ejemplo, ps, top, kill, htop):

Los comandos de gestión de procesos permiten monitorizar y controlar los procesos en ejecución.

  • ps: muestra información sobre los procesos activos.
      • ps aux muestra todos los procesos en ejecución. (Para más detalle: ps auxw[ww].)
      • Ejemplo de uso: ps aux | grep -i [patrón] sirve para identificar procesos que coincidan con el patrón de búsqueda de grep (sin distinguir mayúsculas y minúsculas). Comprueba bien los procesos coincidentes antes de terminarlos.
  • top: ofrece una vista en tiempo real de los procesos del sistema. (Clásico, ligero e incluido en la mayoría de las distribuciones.)
  • htop: un visor de procesos interactivo; un top más moderno y agradable. (Pulsa h o ? para obtener ayuda.)
  • kill: termina procesos por su PID (el identificador de proceso que muestra ps) y envía otras muchas señales a las aplicaciones en ejecución. Entre esas señales están:
    • SIGHUP (1): envía una señal de «cuelgue» a la aplicación. Algunas la usan para releer sus archivos de configuración sin detener el servicio (por ejemplo, kill -s HUP <pid>).
    • SIGINT (2): interrumpe un proceso desde la terminal (Ctrl+C o kill -s INT <pid>). Se usa para detener un proceso en ejecución.
    • SIGQUIT (3): cierra un proceso y genera un volcado de memoria (Ctrl+\ o kill -s QUIT <pid>). Se usa para depurar.
    • SIGKILL (9): detiene un proceso por la fuerza; no se puede capturar ni ignorar y se usa cuando un proceso no responde; por ejemplo, kill -9 <pid>.
    • SIGTERM (15): solicita a un proceso que termine; es la señal predeterminada del comando kill y permite una limpieza ordenada antes de salir; por ejemplo, kill 1234 detiene el proceso con PID 1234.

Comandos de red

Configuración de red y resolución de problemas (por ejemplo, ifconfig, ping, netstat):

Los comandos de red son esenciales para configurar las conexiones y resolver incidencias.

  • ifconfig: configura las interfaces de red.
    • ifconfig eth0 up activa la interfaz eth0. (No funciona con interfaces de red gestionadas por NetworkManager.)
    • sudo ifconfig eth0:0 192.168.1.100 netmask 255.255.255.0 crea la interfaz de red alias eth0:0 con la IP 192.168.1.100 y la máscara de red 255.255.255.0 (útil, por ejemplo, si necesitas que una misma NIC responda en más de una subred).
  • ping: comprueba la conectividad con un host.
    • ping 1.1.1.1 hace ping a la dirección IP 1.1.1.1 sin intentar resolver el DNS.
    • ping google.com comprueba la conexión con Google. Usar un nombre de dominio permite comprobar de paso si la resolución DNS funciona.
  • netstat: muestra estadísticas de red y conexiones.
    • netstat -tulpen muestra información detallada según lo siguiente:
    • -t: muestra las conexiones TCP.
    • -u: muestra las conexiones UDP.
    • -l: muestra solo los sockets a la escucha.
    • -p: muestra el PID y el nombre del programa al que pertenece cada socket.
    • -e: muestra información ampliada, como el usuario propietario del socket.
    • -n: muestra direcciones numéricas en lugar de resolver los nombres de host.

Operaciones remotas seguras (por ejemplo, ssh, scp, sftp):

Los comandos remotos seguros permiten establecer conexiones cifradas y transferir archivos.

  • ssh: conecta de forma segura con servidores remotos. ssh user@hostname inicia sesión en el servidor remoto.
  • scp: copia archivos entre hosts de forma segura. Ideal para transferencias rápidas y sencillas. Destaca por su sintaxis y su velocidad.
    • scp file.txt user@hostname:/path transfiere file.txt a la ruta absoluta /path del servidor de destino.
    • scp file.txt user@hostname:path/ transfiere file.txt a /home/user/path en el servidor de destino; en scp, las rutas relativas se interpretan normalmente respecto al directorio personal del usuario remoto.
  • sftp: transfiere archivos de forma segura usando FTP sobre SSH. Mejor opción para sesiones interactivas en las que necesitas más control sobre las operaciones con archivos. sftp user@hostname inicia una sesión SFTP.

Monitorización del tráfico de red (por ejemplo, tcpdump, nmap):

Los comandos de monitorización ayudan a analizar el tráfico de red y la seguridad.

  • tcpdump: captura paquetes de red. tcpdump -i eth0 captura el tráfico de eth0.
  • nmap: escanea redes en busca de puertos abiertos y puede ayudar a detectar vulnerabilidades. nmap -sP 192.168.1.0/24 escanea la red local para identificar los hosts activos.

Gestión de paquetes

Instalar, actualizar y eliminar software (por ejemplo, apt, yum, dnf):

Los comandos de gestión de paquetes se encargan de instalar y actualizar software.

  • apt y dpkg: gestionan paquetes en sistemas basados en Debian. Requieren sudo. Requieren sudo para los cambios a nivel de sistema, como instalar, actualizar o eliminar paquetes.
    • apt install paquete instala un paquete.
    • dpkg -l lista los paquetes instalados.
    • aptitude sigue la sintaxis de apt para las operaciones por CLI; además ofrece un gestor de APT en modo texto si lo ejecutas sin parámetros, por ejemplo sudo aptitude.
  • yum, RPM y dnf: gestionan paquetes en sistemas basados en RPM. Desde RHEL8/CentOS8, los comandos yum son un alias de dnf por compatibilidad con versiones anteriores.
    • yum update actualiza todos los paquetes.
    • dnf remove paquete elimina un paquete.
    • rpm: gestiona paquetes RPM. rpm -qa consulta todos los paquetes instalados.

Operaciones avanzadas

Uso y gestión del disco (por ejemplo, df, du, fdisk):

Los comandos de gestión de discos permiten monitorizar y administrar el espacio disponible.

  • df: informa del uso del espacio en disco del sistema de archivos. df -h muestra el uso del disco en un formato legible para personas.
  • du: estima el espacio que ocupan archivos y directorios. du -sh * muestra de forma recursiva el espacio que ocupan los archivos y directorios visibles del directorio de trabajo actual y sus subdirectorios.
  • fdisk: manipula las tablas de particiones del disco. fdisk /dev/sda gestiona las particiones de sda.
  • cfdisk: una versión mejorada en modo texto de fdisk. cfdisk /dev/sda gestiona las particiones de sda en una cómoda interfaz de usuario basada en ncurses.
  • lsblk: lista [todos] los dispositivos de bloques a los que puede acceder el sistema o los de un dispositivo concreto.
    • lsblk muestra todos los dispositivos de bloques, normalmente en formato de árbol.
    • lsblk [-f/–fs] /dev/sda5 muestra información sobre un dispositivo de bloques concreto y su sistema de archivos, si lo tiene.

Archivado y compresión (por ejemplo, tar, gzip, zip):

Los comandos de archivado y compresión se encargan de los archivos comprimidos.

  • tar y gzip: archivan varios ficheros y comprimen el archivo resultante. tar combina varios ficheros en un único archivo, mientras que gzip comprime ese archivo (el llamado «tarball»).
    • tar -cvzf archive.tar file1 file2 crea un archivo .tar.gz que incluye file1 y file2 con compresión gzip.
    • Para usar compresión .bz2: usa -cvjf en lugar de -cvzf.
  • zip y unzip: crean y descomprimen archivos zip.
    • zip archive.zip file1 file2 crea un archivo zip.
    • unzip archive.zip descomprime un archivo zip.
  • atool: una navaja suiza que actúa como envoltorio de todos los backends de archivado que tengas instalados. El backend se selecciona automáticamente según la extensión del archivo que indiques al ejecutarlo.
    • apack archive.[extensión] file1 file2 … para empaquetar los ficheros elegidos en archive.tar.gz … o .zip, .rar, .7z, lo que necesites.
    • als archive.zip listará (ls) el contenido de archive.zip.
    • aunpack archive.7z descomprimirá el contenido de archive.7z en el directorio de trabajo actual. Si atool detecta que el archivo contiene muchos ficheros, extraerá automáticamente el contenido en un subdirectorio con el nombre del archivo.

Monitorización y registros del sistema (por ejemplo, dmesg, journalctl, tail, grep):

Los comandos de monitorización y registro permiten seguir la actividad del sistema y sus logs.

  • dmesg: muestra los mensajes del búfer circular del kernel. dmesg | grep error filtra los mensajes de error.
  • journalctl: consulta y muestra los registros de systemd.
    • journalctl -u apache2 muestra los registros del servicio Apache.
    • journalctl -xe: muestra los registros del journal de systemd empezando cerca del final, con mensajes explicativos adicionales cuando están disponibles.
  • tail: muestra el final de los archivos.
    • tail -n 10 file.txt muestra las últimas 10 líneas de file.txt.
    • tail -f /var/log/syslog muestra syslog de forma continua.
  • grep: busca texto mediante patrones. grep «pattern» file.txt busca la cadena exacta «pattern» (distinguiendo mayúsculas y minúsculas) en file.txt.
    • grep -i edit file.txt realiza una búsqueda en file.txt sin distinguir mayúsculas de minúsculas: edit, EDIT, Edit, etc.
    • grep ‘home\|boot’ /etc/fstab busca en el archivo /etc/fstab las líneas que coincidan con home O con boot.

Automatizar tareas con cron:

Cron programa scripts y comandos para que se ejecuten a horas determinadas.

  • Crear tareas de cron con crontab:
    • crontab -e edita la tabla de cron.
    • crontab -l lista (muestra) el crontab actual.
    • crontab -u [usuario] -e edita el crontab de otro usuario. Resulta útil, por ejemplo, para ejecutar aplicaciones de servidor sin privilegios de root.
  • Programar tareas con la sintaxis temporal: (consulta man 1 crontab y man 5 crontab para más información sobre la sintaxis).
    • 0 5 * * * /path/to/script.sh ejecuta un script todos los días a las 5 de la mañana.

Personalizar el entorno del shell (por ejemplo, .bashrc, .profile):

Personalizar el entorno del shell mejora mucho la experiencia de uso.

  • Modifica .bashrc para personalizar Bash: alias ll=’ls -la’ crea un alias.
  • Usa .profile para las variables de entorno: la línea export PATH=$PATH:/new/path amplía la variable PATH.

Gestiona endpoints Linux a gran escala con NinjaOne

Usar estos comandos de forma manual funciona bien cuando gestionas un endpoint a la vez, pero por sí solo no escala a una flota de servidores y estaciones de trabajo. La plataforma de gestión de endpoints de NinjaOne ofrece a los equipos de TI acceso remoto y control centralizado de los endpoints Linux, además de visibilidad en tiempo real del rendimiento, el hardware y el estado de los parches.

Los scripts de automatización nativos también se ejecutan en dispositivos Linux, así que puedes aplicar comandos como los que hemos visto aquí en muchos endpoints a la vez mediante políticas, en lugar de escribirlos máquina por máquina.

Pensar en modo terminal: todo un mundo por descubrir

Dominar los comandos de Linux te da más soltura y más control sobre el sistema. Estos comandos permiten navegar, gestionar y personalizar el entorno Linux de forma eficiente, lo que lo convierte en una herramienta potentísima tanto para quien empieza como para los usuarios con experiencia. Para seguir aprendiendo, aprovecha recursos como tutoriales online, foros y documentación oficial.

Participa en la comunidad Linux para pedir ayuda, intercambiar trucos y compartir conocimiento: la filosofía del código abierto hace que haya comunidades enteras con ganas de devolver el favor por todo el software libre y la ayuda que han recibido con el tiempo.

Y no tengas miedo de experimentar, siempre en un entorno seguro y no crítico. Practica estos comandos y sigue explorando. Probar comandos y aprender otros nuevos no solo ampliará tus conocimientos y mejorará tus habilidades: también te hará apreciar de otra manera lo que posiblemente sea la mejor interfaz de usuario jamás creada.

FAQs

Un sistema Linux típico incluye bastante más de mil comandos, pero la mayoría de la gente se apoya en un conjunto reducido de 30 a 50. Empieza por las categorías que hemos visto en esta guía y añade comandos según te los vayan pidiendo tus tareas, en lugar de intentar memorizar la lista completa de entrada.

El estándar actual es ip addr show, que ha sustituido al antiguo ifconfig en la mayoría de las distribuciones modernas. Si quieres un resumen rápido y sin adornos, hostname -I puede mostrarte la dirección IP asignada al sistema con muy poca información adicional.

El tiempo necesario para aprender la línea de comandos de Linux depende de tu experiencia y de con qué frecuencia la uses. Puedes empezar por los comandos de navegación y de archivos, mientras que coger confianza con los de administración del sistema y de redes suele requerir más práctica. El dominio completo es un proceso continuo

Sí, muchos comandos coinciden porque macOS está basado en Unix, así que herramientas como cd, ls, cp, mv, grep y ssh tienen una funcionalidad básica parecida. Algunas opciones varían entre las implementaciones de Linux y macOS, y la gestión de paquetes también es distinta: en macOS se suelen usar gestores de paquetes de terceros como Homebrew en lugar de herramientas de Linux como apt, yum o dnf

No hace falta que te aprendas de memoria la sintaxis completa de cada comando. Muchos usuarios de Linux tienen a mano una chuleta o una referencia guardada en marcadores para consultarla sobre la marcha. La sintaxis se queda cuanto más usas un comando, así que es normal consultar cosas con frecuencia, incluso con comandos que ejecutas a diario.

Quizá también te interese…

¿Listo para simplificar los aspectos más complejos de las TI?