50+ Comandos Esenciales de Linux: Una Guía Completa

Nota: Este documento es una traducción al español de las descripciones del artículo original de DigitalOcean: 50+ Essential Linux Commands: A Comprehensive Guide. Los ejemplos y la sintaxis de los comandos se mantienen en su forma original para facilitar la práctica.

Introducción

Desbloquea todo el potencial de tu sistema Linux con esta guía completa de comandos esenciales. Ya seas un administrador experimentado o estés comenzando, dominar estos comandos es crucial para la gestión eficiente de servidores, la escritura de scripts y la resolución de problemas. En este tutorial, aprenderás los comandos más utilizados y poderosos para la gestión de archivos, el control de procesos, el acceso de usuarios, la configuración de red y la depuración del sistema.

Aprenderás más de 50 comandos de Linux que debes conocer y que te transformarán en un usuario avanzado. Desde lo básico hasta lo avanzado, estos comandos se convertirán en tus herramientas de referencia para abordar cualquier tarea que se te presente.

Puntos Clave

  • Los comandos de Linux están organizados por propósito: gestión de archivos (ls, cp, mv, rm), control de procesos (ps, kill, top), permisos de usuario (chmod, chown, sudo) y redes (ssh, ping, wget).
  • El comando man proporciona documentación integrada para cualquier comando de Linux y es la referencia principal cuando necesitas detalles de sintaxis u opciones.
  • Usa grep para buscar en la salida de texto o en archivos, head/tail para previsualizar el contenido de archivos, y diff/cmp para comparar archivos.
  • Los permisos de archivos se gestionan con chmod (cambiar los bits de modo) y chown (cambiar el propietario), que son críticos para la seguridad del servidor y el control de acceso.
  • Comandos como tar, zip y unzip manejan el archivado y la compresión; ssh y scp manejan el acceso remoto seguro y la transferencia de archivos.
  • Los comandos de gestión de procesos (ps, kill, killall, top) son esenciales para monitorear la salud del sistema y terminar procesos que no responden.

Prerrequisitos

Ejecutaremos estos comandos en un servidor Ubuntu, pero puedes seguirlos en cualquier distribución moderna de Linux. Puedes configurar un servidor Ubuntu para este tutorial siguiendo nuestra guía de Configuración Inicial del Servidor en Ubuntu.

¡Vamos directo al grano!

Comandos de Archivos y Directorios

ComandoDescripciónEjemplo
lsLista el contenido del directorio.ls
cdCambia de directorio.cd /ruta/al/directorio
pwdMuestra el directorio actual.pwd
mkdirCrea un nuevo directorio.mkdir nuevo_directorio
rmdirElimina un directorio vacío.rmdir directorio_vacio
rmElimina archivos o directorios.rm archivo.txt
touchCrea un archivo vacío.touch nuevo_archivo.txt
cpCopia archivos o directorios.cp archivo.txt /ruta/al/destino
mvMueve o renombra archivos.mv archivo.txt /ruta/nueva_ubicacion
catMuestra el contenido de un archivo.cat archivo.txt
nano / vimEdita archivos en la terminal.nano archivo.txt
findBusca archivos en una jerarquía de directorios.find . -name "archivo.txt"
grepBusca texto usando patrones.grep "patrón" archivo.txt
tarArchiva y comprime archivos.tar -cvf archivo.tar archivo1.txt archivo2.txt
dfMuestra el uso de disco de los sistemas de archivos.df
duMuestra el tamaño de directorios/archivos.du -sh /ruta/al/directorio
chmodCambia los permisos de archivos.chmod 755 archivo.txt
chownCambia el propietario de un archivo.chown usuario:grupo archivo.txt
mountMonta un sistema de archivos.mount /dev/sdb1 /mnt
umountDesmonta un sistema de archivos.umount /mnt

Comandos de Red

ComandoDescripciónEjemplo de Uso
pingPrueba la conectividad con un host.ping google.com
ifconfig / ip aMuestra las interfaces de red.ifconfig o ip a
netstat / ssMuestra las conexiones de red.netstat -tuln o ss -tuln
wgetDescarga archivos vía HTTP/FTP.wget http://ejemplo.com/archivo.zip
curlTransfiere datos usando sintaxis de URL.curl -O http://ejemplo.com/archivo.zip
nc (Netcat)Depuración de red y transferencia de datos.nc -zv 192.168.1.1 80
tcpdumpCaptura y analiza paquetes de red.tcpdump -i eth0
iptablesConfigura reglas de firewall.iptables -A INPUT -p tcp --dport 22 -j ACCEPT
tracerouteRastrea la ruta que toman los paquetes hacia un host de red.traceroute ejemplo.com
nslookupConsulta DNS para obtener la asignación de nombre de dominio o dirección IP.nslookup ejemplo.com
sshConecta de forma segura a un host remoto.ssh usuario@ejemplo.com

Comandos de Procesos y Monitoreo del Sistema

ComandoDescripciónComando de Ejemplo
psMuestra los procesos en ejecución.ps aux
topVisor dinámico de procesos.top
htopVersión mejorada de top.htop
killEnvía una señal a un proceso.kill <PID>
killallMata procesos por nombre.killall <nombre_proceso>
uptimeTiempo de actividad y carga del sistema.uptime
whoamiUsuario actualmente conectado.whoami
envMuestra las variables de entorno.env
straceRastrea las llamadas al sistema de un proceso.strace -p <PID>
systemctlGestiona servicios de systemd.systemctl status <nombre_servicio>
journalctlVisualiza los registros del sistema.journalctl -xe
freeMuestra el uso de memoria.free -h
vmstatInforma estadísticas de memoria virtual.vmstat 1
iostatInforma estadísticas de CPU y E/S.iostat
lsofLista los archivos abiertos por los procesos.lsof
dmesgImprime los mensajes del búfer de anillo del kernel.dmesg

Comandos de Gestión de Usuarios y Permisos

ComandoDescripciónComando de Ejemplo
passwdCambia la contraseña del usuario.passwd <nombre_usuario>
adduser / useraddAñade un nuevo usuario.adduser <nombre_usuario>
deluser / userdelElimina un usuario.deluser <nombre_usuario>
usermodModifica la cuenta de usuario.usermod -aG <grupo> <nombre_usuario>
groupsMuestra las membresías de grupo.groups <nombre_usuario>
sudoEjecuta comandos como root.sudo <comando>
chageCambia la información de expiración de la contraseña de usuario.chage -l <nombre_usuario>
idMuestra información de identidad del usuario.id <nombre_usuario>
newgrpInicia sesión en un nuevo grupo.newgrp <grupo>

Comandos de Transferencia y Sincronización de Archivos

ComandoDescripciónComando de Ejemplo
scpCopia archivos de forma segura sobre SSH.scp usuario@remoto:/ruta/al/archivo /destino/local
rsyncSincroniza archivos y directorios de manera eficiente.rsync -avz /directorio/local/ usuario@remoto:/ruta/destino
ftpTransfiere archivos usando el Protocolo de Transferencia de Archivos.ftp ftp.ejemplo.com
sftpTransfiere archivos de forma segura usando el Protocolo de Transferencia de Archivos SSH.sftp usuario@remoto:/ruta/al/archivo
wgetDescarga archivos de la web.wget http://ejemplo.com/archivo.zip
curlTransfiere datos desde o hacia un servidor.curl -O http://ejemplo.com/archivo.zip

Comandos de Procesamiento de Texto

ComandoDescripciónComando de Ejemplo
awkEscaneo y procesamiento de patrones.awk '{print $1}' archivo.txt
sedEditor de flujo para filtrar/modificar texto.sed 's/viejo/nuevo/g' archivo.txt
cutElimina secciones de líneas de texto.cut -d':' -f1 /etc/passwd
sortOrdena líneas de texto.sort archivo.txt
grepBusca patrones en texto.grep 'patrón' archivo.txt
wcCuenta palabras, líneas y caracteres.wc -l archivo.txt
pasteCombina líneas de archivos.paste archivo1.txt archivo2.txt
joinUne líneas de dos archivos en un campo común.join archivo1.txt archivo2.txt
headMuestra la primera parte de los archivos.head -n 10 archivo.txt
tailMuestra la última parte de los archivos.tail -n 10 archivo.txt

Comandos de Utilidades del Shell y Atajos

ComandoDescripciónComando de Ejemplo
aliasCrea atajos para comandos.alias ll='ls -la'
unaliasElimina un alias.unalias ll
historyMuestra los comandos introducidos previamente.history
clearLimpia la pantalla de la terminal.clear
rebootReinicia el sistema.reboot
shutdownApaga el sistema.shutdown now
dateMuestra o establece la fecha y hora del sistema.date
echoMuestra una línea de texto.echo "¡Hola, Mundo!"
sleepRetrasa durante un tiempo especificado.sleep 5
timeMide la duración de la ejecución de un comando.time ls
watchEjecuta un programa periódicamente, mostrando la salida en pantalla completa.watch -n 5 df -h

Descripciones Detalladas

El comando ls

El comando ls se utiliza para listar archivos y directorios en el directorio de trabajo actual. Este será uno de los comandos de Linux más utilizados que debes conocer.

El comando pwd

El comando pwd te permite imprimir el directorio de trabajo actual en tu terminal. Es un comando muy básico y cumple su propósito muy bien.

El comando cd

Mientras trabajas dentro de la terminal, moverte entre directorios es prácticamente una necesidad. El comando cd te ayudará a navegar a través de directorios.

root@ubuntu:~# cd <ruta del directorio>

El comando mkdir

El comando mkdir te permite crear directorios desde la terminal.

root@ubuntu:~# mkdir <nombre de carpeta>

Los comandos cp y mv

Los comandos cp y mv son equivalentes a los comandos de copiar-pegar y cortar-pegar en Windows. Como Linux no tiene un comando específico para renombrar, también usamos mv para renombrar archivos y carpetas.

root@ubuntu:~# cp <origen> <destino>
root@ubuntu:~# mv <origen> <destino>

El comando rm

El comando rm se utiliza para eliminar archivos y carpetas. Para eliminar un directorio, debes agregar el argumento -r.

root@ubuntu:~# rm <nombre de archivo>
root@ubuntu:~# rm -r <nombre de carpeta>

Nota: Es importante tener cuidado al usar rm con el flag -r, ya que puede eliminar rápida y permanentemente una gran cantidad de archivos. Es recomendable usar -i junto con -r para que te pida confirmación antes de eliminar cada archivo.

El comando touch

El comando touch crea un archivo vacío o actualiza la marca de tiempo de un archivo existente.

root@ubuntu:~# touch <nombre de archivo>

El comando ln

Para crear un enlace a otro archivo, usamos el comando ln. El flag -s crea un enlace simbólico (symlink) que actúa como atajo o puntero a otro archivo o directorio. Por defecto, ln crea enlaces duros.

root@ubuntu:~# ln -s <ruta de origen> <nombre del enlace>

Nota: Un enlace simbólico es solo un puntero al archivo original. Si eliminas el original, el enlace se rompe. Un enlace duro es una copia espejo con el mismo contenido; si eliminas el original, el enlace duro sigue funcionando.

El comando clear

El comando clear limpia la pantalla de la terminal. No elimina archivos, solo afecta la visualización.

root@ubuntu:~# clear
root@ubuntu:~# ls -l; clear

Los comandos cat, echo y less

cat muestra el contenido de un archivo. echo imprime texto en la terminal. less permite desplazarse por salidas largas usando las teclas enter o espacio. Se usa comúnmente con el operador de tubería (|).

root@ubuntu:~# cat <nombre de archivo>
root@ubuntu:~# echo <Texto a imprimir>
root@ubuntu:~# cat /boot/grub/grub.cfg | less

Nota: Usa -S con less para ajuste de línea y -N para mostrar números de línea. Ejemplo: less -SN.

El comando man

El comando man muestra la página del manual de un comando específico, incluyendo sintaxis, opciones y ejemplos.

root@ubuntu:~# man ls

Los comandos uname y whoami

uname muestra información sobre el kernel del sistema. whoami devuelve el nombre del usuario actual.

root@ubuntu:~# uname -a

Nota: Flags útiles de uname: -s (nombre del kernel), -n (hostname), -r (versión del kernel), -v (versión), -m (hardware).

Los comandos tar, zip y unzip

tar se usa para crear y extraer archivos archivados. zip y unzip son más sencillos y funcionan sin parámetros adicionales.

# Comprimir
root@ubuntu:~# tar -cvf <nombre> <archivos>
# Extraer
root@ubuntu:~# tar -xvf <nombre>
 
root@ubuntu:~# zip <nombre> <archivos>
root@ubuntu:~# unzip <nombre>

El comando grep

grep es una herramienta de búsqueda de texto que puede buscar patrones en archivos y filtrar la salida de otros comandos. Significa “global regular expression print”.

root@ubuntu:~# <comando con salida> | grep "<cadena a buscar>"

Los comandos head y tail

head y tail muestran el principio o el final de un archivo, respectivamente. Por defecto muestran 10 líneas; usa -n para cambiar el número.

root@ubuntu:~# head <nombre de archivo>
root@ubuntu:~# tail <nombre de archivo>

Los comandos diff, comm y cmp

Se usan para comparar archivos. diff muestra diferencias entre dos archivos. cmp muestra el primer byte diferente. comm compara dos archivos ordenados y muestra líneas únicas y comunes.

root@ubuntu:~# diff <archivo 1> <archivo 2>
root@ubuntu:~# cmp <archivo 1> <archivo 2>
root@ubuntu:~# comm <archivo 1> <archivo 2>

El comando sort

sort ordena líneas de texto. Por defecto usa secuencia ASCII; usa -n para orden numérico y -k para ordenar por campos.

root@ubuntu:~# sort <archivo>
root@ubuntu:~# sort -n archivo.txt
root@ubuntu:~# sort -k 2 archivo.txt

El comando export

export establece variables de entorno que pueden ser usadas por procesos o comandos en el mismo shell.

root@ubuntu:~# export <variable>=<valor>

El comando ssh

ssh establece una conexión de shell segura a un servidor remoto con encriptación.

root@ubuntu:~# ssh usuario@servidor-remoto

El comando service

service gestiona servicios del sistema (procesos en segundo plano). Permite iniciar, detener, reiniciar y verificar el estado.

root@ubuntu:~# service ssh status
root@ubuntu:~# service ssh stop
root@ubuntu:~# service ssh start

Los comandos ps, kill y killall

ps muestra información sobre los procesos en ejecución. kill envía una señal a un proceso por su PID. killall mata procesos por nombre.

root@ubuntu:~# ps -ef
root@ubuntu:~# ps -p PID
root@ubuntu:~# kill <PID>
root@ubuntu:~# killall <nombre del proceso>

Los comandos df y mount

df muestra el espacio en disco usado y disponible. mount monta un sistema de archivos o dispositivo en un directorio.

root@ubuntu:~# mount /dev/cdrom /mnt
root@ubuntu:~# df -h

Los comandos chmod y chown

chmod cambia los permisos de un archivo o directorio. chown cambia el propietario.

root@ubuntu:~# chmod +x loop.sh
root@ubuntu:~# chown root:root loop.sh

Los comandos ifconfig y traceroute

ifconfig muestra las interfaces de red con sus IPs y MACs. traceroute rastrea la ruta de los paquetes hacia un destino.

root@ubuntu:~# ifconfig
root@ubuntu:~# traceroute <dirección de destino>

El comando wget

wget descarga archivos desde la terminal. El flag -c permite reanudar una descarga interrumpida.

root@ubuntu:~# wget <enlace al archivo>
root@ubuntu:~# wget -c <enlace al archivo>

Los comandos ufw e iptables

Ambos gestionan firewalls. iptables pasa reglas directamente a Netfilter, mientras que ufw configura las reglas en iptables de forma más sencilla.

root@ubuntu:~# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
root@ubuntu:~# ufw allow 80

Gestores de Paquetes en Linux

Cada distribución usa un gestor diferente:

  • Debian y derivados: apt install <paquete>
  • Arch y derivados: pacman -S <paquete>
  • Red Hat y derivados: yum install <paquete>
  • Fedora y CentOS: yum install <paquete>

El comando sudo

sudo permite ejecutar comandos con privilegios elevados. Es equivalente a iniciar sesión como root según tus permisos.

non-root-user@ubuntu:~# sudo <comando>
Password:

El comando cal

cal muestra un calendario en la terminal.

root@ubuntu:~# cal
root@ubuntu:~# cal March 2024

El comando alias

alias crea atajos para comandos que usas frecuentemente.

root@ubuntu:~# alias lsl="ls -l"
root@ubuntu:~# alias rmd="rm -r"

El comando dd

dd se usa para copia y conversión de datos de bajo nivel. Puede crear USBs de arranque o hacer copias de discos completos. Es potente pero peligroso si no se usa con cuidado.

root@ubuntu:~# dd if=/dev/sdb of=/dev/sda

Los comandos whereis y whatis

whereis localiza el binario, código fuente y páginas del manual de un programa. whatis muestra una descripción corta de un comando.

root@ubuntu:~# whereis sudo
root@ubuntu:~# whatis sudo

El comando top

top es como el administrador de tareas de Windows pero en CLI. Muestra información en tiempo real sobre procesos y uso de recursos.

root@ubuntu:~# top -o MEM
root@ubuntu:~# top -p PID
root@ubuntu:~# top -n 1

Los comandos useradd y usermod

useradd (o adduser) crea un nuevo usuario. usermod modifica usuarios existentes.

root@ubuntu:~# useradd JournalDev -d /home/JD
root@ubuntu:~# usermod JournalDev -a -G sudo, audio, mysql

El comando passwd

passwd permite establecer o cambiar contraseñas de usuarios.

root@ubuntu:~# passwd
root@ubuntu:~# passwd username
root@ubuntu:~# passwd -f username

Errores Comunes y Depuración

1. Corregir errores “command not found”

Si recibes un error command not found, el comando no es reconocido por el sistema. Puede deberse a:

  • El comando no está instalado. Instálalo con tu gestor de paquetes:
apt-get install <nombre-paquete>
  • El comando no está en el PATH del sistema. Agrega el directorio:
export PATH=$PATH:/ruta/al/comando
  • Tienes un error tipográfico. Verifica la ortografía.

2. Resolver problemas de permisos con sudo

Si encuentras problemas de permisos, usa sudo para ejecutar con privilegios de superusuario:

sudo nombre_comando

3. Manejar conflictos de archivos

Los conflictos ocurren cuando varios usuarios o procesos modifican el mismo archivo. Soluciones:

  • Sistemas de control de versiones (VCS): Herramientas como Git ayudan a gestionar conflictos.
git merge <nombre_rama>
git add <archivo_resuelto>
git commit -m "Conflicto de merge resuelto"
  • Mecanismos de bloqueo: Usa flock para bloquear un archivo.
flock -x <archivo> -c "<comando>"
  • Operaciones atómicas: Usa mv o cp con flags de fuerza o interactivo.
mv -f file1 file2
cp -i file1 file2

4. Depurar cuellos de botella de rendimiento

  • Identifica el cuello de botella: Usa top, htop, vmstat, iostat.
  • Analiza los registros: Revisa logs del sistema y aplicaciones.
tail -f /var/log/syslog
  • Optimiza el código: Busca algoritmos ineficientes y fugas de memoria.
  • Perfila tu aplicación: Usa gprof, perf o valgrind.
gprof <ejecutable> gmon.out
  • Escala recursos: Considera ampliar hardware o usar balanceo de carga.

Preguntas Frecuentes

1. ¿Cuáles son los comandos de Linux más usados?

Los más usados incluyen cd, ls, mkdir, rm, cp, mv, echo, cat, grep, find, man, sudo, apt-get, ssh, ping, df, du, free, top, ps, kill, killall, service, systemctl, reboot, shutdown, whoami, uname, uptime, history y clear.

2. ¿Cómo listo todos los comandos disponibles en Linux?

Usa compgen -c para mostrar una lista de todos los comandos disponibles en tu sistema.

3. ¿Cómo encuentro un archivo en Linux?

Usa find. La sintaxis básica es find <ruta> -name "<nombre_archivo>". Ejemplo: find /home/user -name "example.txt".

4. ¿Cómo mato un proceso en Linux?

Usa kill con el PID del proceso. Primero encuentra el PID con ps o top. Ejemplo: kill 1234.

5. ¿Cuál es la diferencia entre cp y mv?

cp copia archivos o directorios, dejando el original intacto. mv mueve o renombra archivos o directorios, eliminándolo de la ubicación original.

6. ¿Cómo verifico el uso de memoria de mi sistema Linux?

Usa free. El flag -h muestra el uso en formato legible. Ejemplo: free -h.

Conclusión

En este tutorial, exploraste más de 50 comandos esenciales de Linux que cubren gestión de archivos y directorios, control de procesos, permisos de usuario, redes, procesamiento de texto y utilidades del shell. También trabajaste con ejemplos del mundo real, patrones de solución de problemas y comparaciones entre comandos relacionados.

Ahora puedes navegar por el sistema de archivos de Linux, gestionar procesos, configurar permisos y solucionar problemas comunes desde la línea de comandos. Estos comandos forman la base de la administración efectiva de sistemas Linux y la escritura de scripts.


Traducción del artículo original de DigitalOcean: 50+ Essential Linux Commands: A Comprehensive Guide. Este trabajo está licenciado bajo Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.