Extraiga el nombre base del archivo en Bash
- Uso de la expansión de parámetros de subcadena para extraer el nombre base del archivo en Bash
-
Uso del comando
basename
para extraer el nombre base del archivo en Bash
Este tutorial muestra diferentes formas de extraer el nombre base del archivo mediante la expansión de parámetros de subcadena y el comando nombrebase
.
Uso de la expansión de parámetros de subcadena para extraer el nombre base del archivo en Bash
Los parámetros en Bash son elementos que almacenan valores. La expansión consiste en sustituir una referencia de parámetro con su valor.
Para hacer la expansión de parámetros en Bash, anteponga el nombre del parámetro con un carácter $
. Es opcional encerrar el nombre del parámetro entre llaves.
Las dos notaciones para la expansión de parámetros se muestran a continuación.
$parameter
${parameter}
Dentro de las llaves de expansión de parámetros, se pueden agregar algunos operadores junto con sus argumentos. Los operadores se colocan después del nombre del parámetro y antes de la llave de cierre.
Podemos usar estos operadores para condicionales, subcadenas, subconjuntos, listados de prefijos, conteo de elementos y expansión de modificación de casos. Estos operadores solo modifican el parámetro sin modificar el valor del parámetro.
La siguiente secuencia de comandos utiliza la expansión de parámetros de subcadena para extraer una subcadena mediante la coincidencia de patrones de cadena. La sintaxis utilizada es ${parameter##pattern}
.
El ##
especifica que el patrón debe coincidir desde el lado izquierdo de la cadena y el */
es el patrón en nuestro caso. El ${path##*/}
coincide con el último /
de la variable path
y devuelve la subcadena restante, file1.txt
, en este caso.
path=/home/delftstack/test/file1.txt
echo "${path##*/}"
La ejecución del script imprime el nombre del archivo en la salida estándar.
file1.txt
Uso del comando basename
para extraer el nombre base del archivo en Bash
El basename
es un comando en Linux que devuelve el último elemento dado una ruta de archivo como argumento. En el siguiente script, el comando basename
recibe la variable path
que tiene la ruta del archivo como argumento. El script ejecuta el comando basename
utilizando la sustitución de comandos.
La sustitución de comandos es una característica de Bash que nos permite ejecutar comandos de Linux y almacenar la salida del comando en una variable. Una vez que se ejecuta un comando con esta característica, la salida estándar del comando reemplaza el comando, y se eliminan los saltos de línea finales.
La salida del comando basename
reemplaza el comando en sí y se asigna a la variable fname
. El comando printf
se usa para mostrar el contenido de la variable fname
en la salida estándar.
path=/home/delftstack/test/file1.txt
fname=$(basename "$path")
printf $fname
printf "\n"
El script muestra el siguiente resultado después de ejecutarlo.
file1.txt