Usando el comando basename en scripts de Bash

Popular:
¡MEJORA LA CONFIGURACIÓN DE TU SERVIDOR! APLICAR AVA Y LANZA CON UN 15% DE DESCUENTO
USA EL CÓDIGO PROMOCIONAL:

Usando el comando basename en scripts de Bash

En la programación de Bash, una de las tareas más comunes es manipular rutas de archivos, especialmente cuando quieres extraer solo el nombre del archivo de una ruta completa. Ahí es donde entra el comando basename. Aunque parece simple, basename tiene casos de uso potentes cuando se utiliza correctamente en scripts más complejos, herramientas de automatización, hosting services y entornos CI/CD.

¿Qué es basename?

El comando basename elimina la ruta del directorio y, opcionalmente, quita una extensión de archivo, dejando solo el nombre base (el componente final de una ruta de archivo).

🔧 Sintaxis básica:

✅ Ejemplos simples:

¿Por qué usar basename en scripts?

Aquí hay solo algunos ejemplos de necesidades reales de scripting:

 Casos de uso prácticos en scripts de Bash

📁 1. Recorrer archivos con registro

Este script recorre archivos .log, extrae el nombre sin extensión y registra cada acción. basename simplifica el manejo de nombres de archivo sin cortes complejos de cadenas.

📂 2. Usar basename para rutas de archivo dinámicas

Supongamos que recibes rutas completas desde la entrada del usuario u otro proceso:

Usar basename en tu script garantiza flexibilidad al trabajar con rutas de archivo dinámicas, especialmente en entornos como un Linux VPS donde los logs, archivos de configuración y copias de seguridad pueden residir en diferentes directorios. Esto hace que tu script sea robusto independientemente de si se le pasa una ruta completa como /var/log/syslog o un archivo relativo como ./config.txt.

🧪 3. Combinar basename con dirname

Úsalos juntos para aislar elementos de la ruta:

 Eliminar extensiones de archivo con basename

Si quieres eliminar extensiones conocidas:

⚠️ Nota: Esto solo funciona si el sufijo coincide exactamente. Así que .txt funciona, pero .TXT o .tar.gz no, a menos que se especifique explícitamente.

Para múltiples extensiones, combina basename con otras herramientas:

O:

basename vs Parameter Expansion

Aunque basename es intuitivo, crea un subprocess. Para scripts críticos en rendimiento o bucles grandes, prefiere alternativas de pure Bash:

Equivalente nativo de Bash:

Eliminar la extensión con Bash nativo: