Dominando la Terminal: Tu Guía Esencial de Comandos Básicos

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.

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 ll como alias de ls -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 / o rm -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.