Developer Tools

Comandos Esenciales de la Línea de Comandos de Linux que Todo Desarrollador Debería Conocer

Una referencia práctica de los comandos de Linux más utilizados en el desarrollo diario: navegación del sistema de archivos, permisos, gestión de procesos, procesamiento de texto y redes.

9 min de lectura

Terminal con texto verde sobre pantalla oscura

La línea de comandos de Linux es la interfaz universal para servidores, contenedores, pipelines de CI y entornos de desarrollo. Ya sea que estés conectado por SSH a un servidor de producción a las 2 de la madrugada o depurando un contenedor Docker, el dominio de estos comandos marca la diferencia entre la confusión y la confianza.

# Navegar directorios
pwd                      # mostrar el directorio de trabajo actual
cd /var/log              # ruta absoluta
cd ..                    # subir un nivel
cd -                     # volver al directorio anterior
cd ~                     # directorio de inicio

# Listar archivos
ls                       # listado básico
ls -la                   # formato largo + archivos ocultos
ls -lh                   # tamaños de archivo legibles por humanos
ls -lt                   # ordenar por tiempo de modificación (más reciente primero)

# Crear, copiar, mover, eliminar
mkdir -p path/to/dir     # crear directorio + directorios padre
cp -r source/ dest/      # copia recursiva
mv oldname newname       # renombrar o mover
rm -rf directory/        # eliminar directorio y contenido (¡irreversible!)
touch file.txt           # crear archivo vacío / actualizar marca de tiempo

# Ver y navegar archivos
cat file.txt             # mostrar el archivo completo
less file.txt            # visor paginado (q para salir, / para buscar)
head -n 20 file.txt      # primeras 20 líneas
tail -n 20 file.txt      # últimas 20 líneas
tail -f /var/log/app.log # seguir el log en tiempo real

Permisos de archivos

Los permisos de Linux se expresan como tres conjuntos de bits de lectura/escritura/ejecución para el propietario, el grupo y otros:

-rwxr-xr--  1 alice devs  4096 Apr 8 10:00 script.sh

Lectura de la cadena de permisos: -rwxr-xr--

  • - — tipo de archivo (d = directorio, l = enlace simbólico)
  • rwx — propietario: lectura, escritura, ejecución
  • r-x — grupo: lectura, ejecución (sin escritura)
  • r-- — otros: solo lectura

chmod — cambiar permisos

# Notación simbólica
chmod u+x script.sh      # agregar ejecución para el propietario
chmod g-w file.txt       # quitar escritura para el grupo
chmod o=r file.txt       # establecer otros como solo lectura
chmod a+r file.txt       # agregar lectura para todos (a = all)

# Notación numérica (octal)
chmod 755 script.sh      # rwxr-xr-x (común para ejecutables)
chmod 644 file.txt       # rw-r--r-- (común para archivos)
chmod 600 ~/.ssh/id_rsa  # rw------- (requerido para claves SSH)
chmod 700 ~/.ssh/        # rwx------ (requerido para el directorio .ssh)

Usa nuestra Calculadora Chmod para construir cadenas de permisos visualmente y entender qué significa cada valor octal.

Búsqueda y procesamiento de texto

# Buscar archivos
find /var/log -name "*.log"               # buscar por nombre
find . -name "*.ts" -newer package.json   # archivos más nuevos que package.json
find . -type f -size +10M                 # archivos de más de 10MB
find . -name "node_modules" -prune        # excluir directorios

# Buscar en el contenido de archivos
grep "error" app.log                      # buscar en un archivo
grep -r "TODO" ./src                      # búsqueda recursiva
grep -i "error" app.log                   # sin distinción de mayúsculas
grep -n "error" app.log                   # mostrar números de línea
grep -v "DEBUG" app.log                   # líneas que NO coinciden
grep -E "error|warning" app.log           # regex: error O warning

# Procesamiento de texto en flujo
cat access.log | grep "404" | wc -l       # contar errores 404
cat data.csv | cut -d',' -f1,3            # extraer columnas 1 y 3
cat file.txt | sort | uniq                # ordenar y deduplicar
cat file.txt | sort | uniq -c | sort -rn  # contar ocurrencias, ordenar por frecuencia

awk — procesamiento basado en campos

# Imprimir campos específicos (separados por tabulación por defecto)
awk '{print $1, $3}' file.txt

# Procesar CSV (separado por comas)
awk -F',' '{print $2}' data.csv

# Sumar una columna
awk -F',' '{sum += $3} END {print sum}' data.csv

# Imprimir líneas que coincidan con un patrón
awk '/ERROR/ {print $0}' app.log

sed — editor de flujo

# Reemplazar texto
sed 's/foo/bar/' file.txt          # reemplazar primera ocurrencia por línea
sed 's/foo/bar/g' file.txt         # reemplazar todas las ocurrencias (global)
sed -i 's/foo/bar/g' file.txt      # edición en el archivo (modifica el archivo)

# Eliminar líneas
sed '/^#/d' file.txt               # eliminar líneas de comentarios
sed '5,10d' file.txt               # eliminar líneas 5-10

# Imprimir líneas específicas
sed -n '10,20p' file.txt           # imprimir líneas 10-20

Gestión de procesos

# Ver procesos en ejecución
ps aux                             # todos los procesos con detalles
ps aux | grep nginx                # buscar procesos nginx
top                                # visor interactivo de procesos
htop                               # visor interactivo mejorado (si está instalado)

# Control de procesos
kill PID                           # enviar SIGTERM (cierre ordenado)
kill -9 PID                        # enviar SIGKILL (forzar cierre)
pkill nginx                        # matar por nombre
killall node                       # matar todos los procesos que coincidan

# Trabajos en segundo plano
command &                          # ejecutar en segundo plano
jobs                               # listar trabajos en segundo plano
fg %1                              # traer el trabajo 1 al primer plano
nohup command &                    # ejecutar inmune a desconexiones (sobrevive al cierre de sesión)

# Recursos del sistema
free -h                            # uso de memoria
df -h                              # uso de espacio en disco
du -sh /var/log/                   # tamaño del directorio
lsof -i :3000                      # qué está usando el puerto 3000

Comandos de red

# Conectividad
ping google.com                    # probar conectividad
curl -I https://example.com        # solo cabeceras HTTP
curl -o file.zip https://example.com/file.zip  # descargar archivo
wget https://example.com/file.zip  # descargador alternativo

# Inspeccionar conexiones
ss -tulpn                          # puertos en escucha y procesos
netstat -tulpn                     # alternativa (sistemas más antiguos)
lsof -i :80                        # qué está en el puerto 80

# DNS
dig example.com                    # consulta DNS
dig example.com MX                 # registros MX
host example.com                   # consulta DNS simple
nslookup example.com               # consulta DNS interactiva

SSH y acceso remoto

# Conectarse a un servidor
ssh user@server.com
ssh -p 2222 user@server.com        # puerto no estándar
ssh -i ~/.ssh/id_rsa user@server.com  # clave específica

# Copiar archivos
scp file.txt user@server.com:~/    # copiar al directorio de inicio remoto
scp user@server.com:~/file.txt .   # copiar desde remoto
scp -r ./dist user@server.com:~/app/  # copia recursiva

# Túnel SSH (reenvío de puertos)
ssh -L 5432:localhost:5432 user@server.com  # conectar BD remota a puerto local

Genera pares de claves SSH para autenticación segura con nuestro Generador de Claves SSH.

Entorno y shell

# Variables de entorno
export API_KEY=abc123              # establecer para la sesión actual y procesos hijo
echo $API_KEY                      # mostrar variable
env                                # listar todas las variables de entorno
printenv PATH                      # mostrar variable específica
unset API_KEY                      # eliminar variable

# Historial del shell
history                            # listar comandos anteriores
!!                                 # repetir el último comando
!grep                              # repetir el último comando grep
Ctrl+R                             # búsqueda inversa en el historial (escribe para buscar)

# Atajos útiles
Ctrl+C                             # interrumpir el proceso actual
Ctrl+Z                             # suspender al segundo plano
Ctrl+L                             # limpiar pantalla (igual que clear)
Ctrl+A                             # ir al inicio de la línea
Ctrl+E                             # ir al final de la línea
Ctrl+U                             # borrar la línea antes del cursor

Tuberías y redirección

# Tuberías — encadenar comandos
ls -la | grep ".log" | wc -l

# Redirigir salida
command > file.txt                 # sobreescribir archivo con stdout
command >> file.txt                # agregar stdout al archivo
command 2> errors.txt              # redirigir stderr
command > all.txt 2>&1             # redirigir stdout + stderr al mismo archivo
command &> all.txt                 # forma abreviada de lo anterior

# /dev/null — descartar salida
command > /dev/null 2>&1           # descartar toda la salida (ejecutar en silencio)

Comandos de una línea útiles para desarrolladores

# Buscar y reemplazar en todos los archivos de un directorio
find . -name "*.tsx" | xargs sed -i 's/OldComponent/NewComponent/g'

# Obtener la IP pública
curl -s ifconfig.me

# Monitorear un archivo en busca de cambios
watch -n 2 "ls -la uploads/"

# Comprimir un directorio
tar -czf archive.tar.gz ./directory/

# Extraer un tar.gz
tar -xzf archive.tar.gz

# Mostrar los 10 archivos más grandes en el directorio actual
du -sh * | sort -rh | head -10

# Contar líneas de código por tipo de archivo
find . -name "*.ts" | xargs wc -l | sort -rn | head -20

La línea de comandos recompensa la inversión. Cada comando que aprendes se convierte en un bloque de construcción para combinaciones más potentes. Empieza con la navegación y grep, luego añade tuberías y después awk, y podrás resolver cualquier tarea de procesamiento de texto que se te presente.