Dominando la Terminal: Tu Guía Esencial de Comandos Básicos
Aprende los comandos esenciales de la terminal para navegar, manipular archivos y automatizar tareas en tu sistema.
Introducción
La terminal es una de las herramientas más poderosas que tienes a tu disposición como desarrollador o usuario avanzado. Mientras que las interfaces gráficas limitan tus acciones a lo que alguien diseñó con botones y menús, la terminal te da acceso directo al sistema operativo, permitiéndote automatizar tareas, encadenar operaciones y trabajar con una velocidad que ninguna GUI puede igualar.
Sin embargo, la cantidad de comandos disponibles puede parecer intimidante al principio. En este artículo comparto los comandos esenciales que he utilizado a lo largo de mi experiencia para ayudarte a construir una base sólida y mejorar tu eficiencia en la terminal.
Navegación y gestión de directorios
man - Manual de comandos
Antes de buscar en internet, consulta la documentación integrada de cualquier comando. Presiona q para salir y usa /texto para buscar dentro del manual.
man ls # Manual del comando ls
man -k "copy" # Buscar comandos relacionados con "copy"
ls - Listar contenido
Lista el contenido de un directorio. Combinar flags te permite obtener exactamente la información que necesitas:
ls # Lista básica
ls -l # Vista detallada (permisos, tamaño, fecha)
ls -a # Incluye archivos ocultos (los que empiezan con .)
ls -lh # Tamaños legibles (KB, MB, GB)
ls -lt # Ordenado por fecha de modificación (más reciente primero)
ls -lS # Ordenado por tamaño (más grande primero)
ls -R # Lista recursiva (incluye subdirectorios)
Tip: En muchos sistemas modernos puedes usar
llcomo alias dels -la.
mkdir - Crear directorios
Crea directorios nuevos. La flag -p es especialmente útil porque crea toda la estructura de directorios intermedios sin error si ya existen:
mkdir mi-proyecto
mkdir -p proyecto/src/components # Crea toda la estructura de una vez
mkdir -p {frontend,backend}/src # Crea múltiples directorios en paralelo
cd - Cambiar directorio
Navega entre directorios. Dominar cd es fundamental para moverte con fluidez:
cd mi-proyecto # Entrar a un directorio
cd .. # Subir al directorio padre
cd ../.. # Subir dos niveles
cd ~ # Ir al directorio home
cd / # Ir a la raíz del sistema
cd - # Volver al directorio anterior (muy útil para alternar)
pushd / popd - Pila de directorios
Cuando necesitas saltar entre varios directorios frecuentemente, pushd y popd mantienen una pila que te permite volver sin recordar rutas:
pushd /var/log # Guardar directorio actual y cambiar a /var/log
pushd /etc # Apilar otro directorio
dirs # Ver la pila actual de directorios
popd # Volver al directorio anterior en la pila
pwd - Directorio actual
Muestra la ruta absoluta del directorio donde te encuentras. Útil en scripts o cuando pierdes la referencia:
pwd
# /home/usuario/proyectos
Operaciones con archivos
cp - Copiar
Copia archivos y directorios. Usa -r para copiar directorios completos y -i para confirmar antes de sobrescribir:
cp archivo.txt copia.txt
cp -r carpeta/ carpeta-backup/
cp -i importante.txt /destino/ # Pide confirmación si ya existe
cp -rp proyecto/ backup/ # Preserva permisos y fechas
mv - Mover o renombrar
Mueve o renombra archivos y directorios. A diferencia de cp, no duplica los datos:
mv archivo.txt nueva-ubicacion/
mv nombre-viejo.txt nombre-nuevo.txt
mv -i archivo.txt /destino/ # Confirmar antes de sobrescribir
mv *.log /var/logs/ # Mover todos los .log de una vez
rm - Eliminar
Elimina archivos y directorios. No hay papelera de reciclaje, así que usa con precaución:
rm archivo.txt # Eliminar archivo
rm -i archivo.txt # Pedir confirmación antes de eliminar
rm -r carpeta/ # Eliminar directorio y su contenido
rm -rf carpeta/ # Forzar eliminación sin confirmación
Advertencia: Nunca ejecutes
rm -rf /orm -rf *sin verificar en qué directorio estás. Un error puede ser irreversible.
touch - Crear archivos vacíos
Crea archivos vacíos o actualiza la fecha de modificación de archivos existentes:
touch nuevo-archivo.txt
touch archivo1.txt archivo2.txt archivo3.txt # Crear varios a la vez
cat - Ver contenido
Muestra el contenido completo de un archivo. Para archivos largos, considera usar less o head/tail:
cat archivo.txt
cat -n archivo.txt # Muestra con números de línea
cat archivo1.txt archivo2.txt > combinado.txt # Concatenar archivos
head / tail - Ver inicio o final
Examina las primeras o últimas líneas de un archivo sin abrirlo completo:
head -n 20 archivo.txt # Primeras 20 líneas
tail -n 20 archivo.txt # Últimas 20 líneas
tail -f /var/log/app.log # Seguir en tiempo real (ideal para logs)
echo - Imprimir texto
Imprime texto en la terminal o redirige salida a archivos:
echo "Hola mundo"
echo "contenido" > archivo.txt # Sobrescribe el archivo
echo "más contenido" >> archivo.txt # Agrega al final del archivo
echo $PATH # Mostrar variables de entorno
Búsqueda y filtrado
find - Buscar archivos
Busca archivos y directorios según distintos criterios como nombre, tipo, tamaño o fecha:
find . -name "*.log" # Buscar por nombre
find . -type d -name "node_modules" # Buscar solo directorios
find . -size +100M # Archivos mayores a 100MB
find . -mtime -7 # Modificados en los últimos 7 días
find . -name "*.tmp" -delete # Buscar y eliminar
grep - Buscar texto en archivos
Busca patrones de texto dentro de archivos. Indispensable para encontrar código, configuraciones o errores:
grep "error" archivo.log # Buscar texto en un archivo
grep -r "TODO" ./src/ # Búsqueda recursiva en directorio
grep -i "warning" archivo.log # Ignorar mayúsculas/minúsculas
grep -n "function" app.js # Mostrar números de línea
grep -c "error" *.log # Contar coincidencias por archivo
Tip: Si trabajas con repositorios de código,
grep -r --include="*.js" "import"filtra por extensión de archivo.
wc - Contar líneas, palabras y caracteres
Útil para obtener métricas rápidas de archivos:
wc archivo.txt # Líneas, palabras y caracteres
wc -l archivo.txt # Solo contar líneas
wc -l src/**/*.js # Contar líneas de código en archivos JS
Permisos y propiedad
chmod - Cambiar permisos
Modifica los permisos de lectura, escritura y ejecución de archivos:
chmod +x script.sh # Hacer ejecutable
chmod 755 script.sh # rwxr-xr-x (lectura y ejecución para todos)
chmod 644 archivo.txt # rw-r--r-- (solo el dueño puede escribir)
chmod -R 755 directorio/ # Aplicar recursivamente
chown - Cambiar propietario
Cambia el propietario y grupo de archivos o directorios:
chown usuario archivo.txt
chown usuario:grupo archivo.txt
chown -R usuario:grupo directorio/ # Cambiar recursivamente
Utilidades
openssl rand - Generar datos aleatorios
Genera cadenas aleatorias, útil para tokens, claves secretas y contraseñas:
# Generar string en base64 (32 bytes = 43 caracteres)
openssl rand -base64 32
# Generar string hexadecimal (32 bytes = 64 caracteres)
openssl rand -hex 32
which / whereis - Localizar comandos
Encuentra la ubicación de un comando instalado en el sistema:
which node # /usr/local/bin/node
which python3 # Ruta del ejecutable de Python
whereis git # Muestra binario, fuentes y manual
history - Historial de comandos
Consulta y reutiliza comandos que has ejecutado anteriormente:
history # Ver historial completo
history | grep "git" # Filtrar comandos de git
!! # Repetir el último comando
!42 # Ejecutar el comando número 42 del historial
Pipes y redirección
El verdadero poder de la terminal está en combinar comandos. El operador | (pipe) envía la salida de un comando como entrada del siguiente:
cat archivo.log | grep "error" | wc -l # Contar errores en un log
ls -la | sort -k5 -n # Listar archivos ordenados por tamaño
ps aux | grep node # Buscar procesos de Node.js
history | grep "docker" | tail -5 # Últimos 5 comandos de docker
clear - Limpiar pantalla
Limpia la pantalla de la terminal. También puedes usar el atajo Ctrl + L:
clear
Conclusión
Dominar estos comandos fundamentales acelera significativamente tu productividad en la terminal. No necesitas memorizar todo de una vez: empieza con los comandos de navegación y manipulación de archivos, y gradualmente incorpora búsqueda, permisos y pipes a tu flujo de trabajo.
Con la práctica, estas operaciones se vuelven segunda naturaleza y descubrirás que muchas tareas que antes hacías con varios clics se resuelven con un solo comando. La terminal no solo es más rápida, es más precisa y reproducible, cualidades esenciales en el desarrollo de software.