Comandos Linux · 3 min read · Sep 17, 2025

Tutorial del comando basename de Linux para principiantes (con ejemplos)

A veces, mientras trabajas en la línea de comandos (especialmente al tratar con scripts de shell), podrías estar interesado solo en el nombre del archivo, pero lo que tienes disponible es la ruta completa del archivo. Por lo tanto, la necesidad es eliminar el componente del directorio de la ruta.

El comando basename en Linux es una utilidad utilizada para extraer el nombre base de una ruta de archivo o directorio, eliminando efectivamente cualquier componente de directorio anterior y sufijos opcionales. Cuando se proporciona una ruta completa, basename devuelve solo el nombre del archivo o el último segmento de la ruta, lo que lo hace útil en tareas de scripting y manipulación de archivos. Por ejemplo, dada la ruta /home/user/document.txt, basename devolvería document.txt. Además, los usuarios pueden especificar un sufijo a eliminar, como .txt, dejando solo document. Este comando simplifica el manejo de nombres de archivos y rutas en scripts, mejorando la automatización y agilizando varios procesos de gestión de archivos.

Este tutorial explicará los conceptos básicos de ‘basename’ utilizando ejemplos fáciles de entender. Pero antes de entrar en eso, vale la pena mencionar que todos los ejemplos aquí han sido probados en una máquina Ubuntu 24.04 LTS.

Comando basename de Linux explicado

El comando basename te permite eliminar componentes de los nombres de archivo que no son necesarios. A continuación se muestra la sintaxis de la herramienta:

basename NAME [SUFFIX]  
basename OPTION... NAME...

Y esto es lo que dice la página del manual sobre él:

basename - strip directory and suffix from filenames  
  
Print NAME with any leading directory components removed. If specified, also remove a trailing   
SUFFIX.

A continuación se presentan algunos ejemplos en formato de preguntas y respuestas que deberían darte una buena idea de cómo funciona el comando basename.

P1. ¿Cómo funciona el comando basename?

Por defecto, si ejecutas el comando ‘basename’ con una ruta completa a un archivo como entrada, el comando devuelve el nombre del archivo como salida. Por ejemplo, cuando ejecuté el siguiente comando:

basename /home/himanshu/Downloads/analytics.pdf

Obtuve la siguiente salida:

analytics.pdf

P2. ¿Puede basename manejar múltiples entradas?

Sí, puede. Pero para que esto suceda, debes usar la opción de línea de comandos -a. Por ejemplo, cuando ejecuté el siguiente comando:

basename -a /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png

Y aquí está la salida que obtuve:

analytics.pdf  
test.png

P3. ¿Cómo hacer que basename elimine la extensión del archivo también?

A veces, solo podrías querer obtener el nombre del archivo pero no su extensión. Esto se puede hacer utilizando la opción de línea de comandos -s (que requiere que pases el sufijo como entrada).

Por ejemplo, el siguiente comando:

basename -s .pdf /home/himanshu/Downloads/analytics.pdf

produjo esta salida:

analytics

P4. ¿Cómo hacer que cada línea de salida termine con NUL?

Por defecto, se utiliza el carácter de nueva línea como separador en la salida. Sin embargo, puedes forzar a basename a usar NUL como separador si lo deseas. Esto se puede hacer utilizando la opción de línea de comandos -z.

Por ejemplo:

basename -az /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png

Y aquí está la salida:

analytics.pdftest.png

Así que no ves el carácter NUL aquí. Necesitas redirigir la salida a un archivo y luego abrir el archivo en un editor como vim. Esto es lo que mostró vim:

Conclusión

Como puedes ver, basename no es un comando muy rico en características: sus opciones son limitadas, y la mayoría de ellas se han discutido aquí en este tutorial. Una vez que hayas terminado de practicar estos, dirígete a la página del manual de la herramienta para aprender más sobre ella.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.