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
manproporciona documentación integrada para cualquier comando de Linux y es la referencia principal cuando necesitas detalles de sintaxis u opciones. - Usa
greppara buscar en la salida de texto o en archivos,head/tailpara previsualizar el contenido de archivos, ydiff/cmppara comparar archivos. - Los permisos de archivos se gestionan con
chmod(cambiar los bits de modo) ychown(cambiar el propietario), que son críticos para la seguridad del servidor y el control de acceso. - Comandos como
tar,zipyunzipmanejan el archivado y la compresión;sshyscpmanejan 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
| Comando | Descripción | Ejemplo |
|---|---|---|
ls | Lista el contenido del directorio. | ls |
cd | Cambia de directorio. | cd /ruta/al/directorio |
pwd | Muestra el directorio actual. | pwd |
mkdir | Crea un nuevo directorio. | mkdir nuevo_directorio |
rmdir | Elimina un directorio vacío. | rmdir directorio_vacio |
rm | Elimina archivos o directorios. | rm archivo.txt |
touch | Crea un archivo vacío. | touch nuevo_archivo.txt |
cp | Copia archivos o directorios. | cp archivo.txt /ruta/al/destino |
mv | Mueve o renombra archivos. | mv archivo.txt /ruta/nueva_ubicacion |
cat | Muestra el contenido de un archivo. | cat archivo.txt |
nano / vim | Edita archivos en la terminal. | nano archivo.txt |
find | Busca archivos en una jerarquía de directorios. | find . -name "archivo.txt" |
grep | Busca texto usando patrones. | grep "patrón" archivo.txt |
tar | Archiva y comprime archivos. | tar -cvf archivo.tar archivo1.txt archivo2.txt |
df | Muestra el uso de disco de los sistemas de archivos. | df |
du | Muestra el tamaño de directorios/archivos. | du -sh /ruta/al/directorio |
chmod | Cambia los permisos de archivos. | chmod 755 archivo.txt |
chown | Cambia el propietario de un archivo. | chown usuario:grupo archivo.txt |
mount | Monta un sistema de archivos. | mount /dev/sdb1 /mnt |
umount | Desmonta un sistema de archivos. | umount /mnt |
Comandos de Red
| Comando | Descripción | Ejemplo de Uso |
|---|---|---|
ping | Prueba la conectividad con un host. | ping google.com |
ifconfig / ip a | Muestra las interfaces de red. | ifconfig o ip a |
netstat / ss | Muestra las conexiones de red. | netstat -tuln o ss -tuln |
wget | Descarga archivos vía HTTP/FTP. | wget http://ejemplo.com/archivo.zip |
curl | Transfiere 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 |
tcpdump | Captura y analiza paquetes de red. | tcpdump -i eth0 |
iptables | Configura reglas de firewall. | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
traceroute | Rastrea la ruta que toman los paquetes hacia un host de red. | traceroute ejemplo.com |
nslookup | Consulta DNS para obtener la asignación de nombre de dominio o dirección IP. | nslookup ejemplo.com |
ssh | Conecta de forma segura a un host remoto. | ssh usuario@ejemplo.com |
Comandos de Procesos y Monitoreo del Sistema
| Comando | Descripción | Comando de Ejemplo |
|---|---|---|
ps | Muestra los procesos en ejecución. | ps aux |
top | Visor dinámico de procesos. | top |
htop | Versión mejorada de top. | htop |
kill | Envía una señal a un proceso. | kill <PID> |
killall | Mata procesos por nombre. | killall <nombre_proceso> |
uptime | Tiempo de actividad y carga del sistema. | uptime |
whoami | Usuario actualmente conectado. | whoami |
env | Muestra las variables de entorno. | env |
strace | Rastrea las llamadas al sistema de un proceso. | strace -p <PID> |
systemctl | Gestiona servicios de systemd. | systemctl status <nombre_servicio> |
journalctl | Visualiza los registros del sistema. | journalctl -xe |
free | Muestra el uso de memoria. | free -h |
vmstat | Informa estadísticas de memoria virtual. | vmstat 1 |
iostat | Informa estadísticas de CPU y E/S. | iostat |
lsof | Lista los archivos abiertos por los procesos. | lsof |
dmesg | Imprime los mensajes del búfer de anillo del kernel. | dmesg |
Comandos de Gestión de Usuarios y Permisos
| Comando | Descripción | Comando de Ejemplo |
|---|---|---|
passwd | Cambia la contraseña del usuario. | passwd <nombre_usuario> |
adduser / useradd | Añade un nuevo usuario. | adduser <nombre_usuario> |
deluser / userdel | Elimina un usuario. | deluser <nombre_usuario> |
usermod | Modifica la cuenta de usuario. | usermod -aG <grupo> <nombre_usuario> |
groups | Muestra las membresías de grupo. | groups <nombre_usuario> |
sudo | Ejecuta comandos como root. | sudo <comando> |
chage | Cambia la información de expiración de la contraseña de usuario. | chage -l <nombre_usuario> |
id | Muestra información de identidad del usuario. | id <nombre_usuario> |
newgrp | Inicia sesión en un nuevo grupo. | newgrp <grupo> |
Comandos de Transferencia y Sincronización de Archivos
| Comando | Descripción | Comando de Ejemplo |
|---|---|---|
scp | Copia archivos de forma segura sobre SSH. | scp usuario@remoto:/ruta/al/archivo /destino/local |
rsync | Sincroniza archivos y directorios de manera eficiente. | rsync -avz /directorio/local/ usuario@remoto:/ruta/destino |
ftp | Transfiere archivos usando el Protocolo de Transferencia de Archivos. | ftp ftp.ejemplo.com |
sftp | Transfiere archivos de forma segura usando el Protocolo de Transferencia de Archivos SSH. | sftp usuario@remoto:/ruta/al/archivo |
wget | Descarga archivos de la web. | wget http://ejemplo.com/archivo.zip |
curl | Transfiere datos desde o hacia un servidor. | curl -O http://ejemplo.com/archivo.zip |
Comandos de Procesamiento de Texto
| Comando | Descripción | Comando de Ejemplo |
|---|---|---|
awk | Escaneo y procesamiento de patrones. | awk '{print $1}' archivo.txt |
sed | Editor de flujo para filtrar/modificar texto. | sed 's/viejo/nuevo/g' archivo.txt |
cut | Elimina secciones de líneas de texto. | cut -d':' -f1 /etc/passwd |
sort | Ordena líneas de texto. | sort archivo.txt |
grep | Busca patrones en texto. | grep 'patrón' archivo.txt |
wc | Cuenta palabras, líneas y caracteres. | wc -l archivo.txt |
paste | Combina líneas de archivos. | paste archivo1.txt archivo2.txt |
join | Une líneas de dos archivos en un campo común. | join archivo1.txt archivo2.txt |
head | Muestra la primera parte de los archivos. | head -n 10 archivo.txt |
tail | Muestra la última parte de los archivos. | tail -n 10 archivo.txt |
Comandos de Utilidades del Shell y Atajos
| Comando | Descripción | Comando de Ejemplo |
|---|---|---|
alias | Crea atajos para comandos. | alias ll='ls -la' |
unalias | Elimina un alias. | unalias ll |
history | Muestra los comandos introducidos previamente. | history |
clear | Limpia la pantalla de la terminal. | clear |
reboot | Reinicia el sistema. | reboot |
shutdown | Apaga el sistema. | shutdown now |
date | Muestra o establece la fecha y hora del sistema. | date |
echo | Muestra una línea de texto. | echo "¡Hola, Mundo!" |
sleep | Retrasa durante un tiempo especificado. | sleep 5 |
time | Mide la duración de la ejecución de un comando. | time ls |
watch | Ejecuta 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
rmcon el flag-r, ya que puede eliminar rápida y permanentemente una gran cantidad de archivos. Es recomendable usar-ijunto con-rpara 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; clearLos 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 | lessNota: Usa
-Sconlesspara ajuste de línea y-Npara 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 lsLos comandos uname y whoami
uname muestra información sobre el kernel del sistema. whoami devuelve el nombre del usuario actual.
root@ubuntu:~# uname -aNota: 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.txtEl 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-remotoEl 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 startLos 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 -hLos 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.shLos 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 80Gestores 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 2024El 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/sdaLos 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 sudoEl 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 1Los 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, mysqlEl comando passwd
passwd permite establecer o cambiar contraseñas de usuarios.
root@ubuntu:~# passwd
root@ubuntu:~# passwd username
root@ubuntu:~# passwd -f usernameErrores 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_comando3. 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
flockpara bloquear un archivo.
flock -x <archivo> -c "<comando>"- Operaciones atómicas: Usa
mvocpcon flags de fuerza o interactivo.
mv -f file1 file2
cp -i file1 file24. 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,perfovalgrind.
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.