Autocompletado durante la ejecución de scripts en Bash

por | enero 20, 2015

En determinados scripts tendremos que introducir rutas de ficheros, o incluso el nombre mismo de un fichero como variable, como por ejemplo cuando tenemos:

echo -n "Introduce nombre del fichero: "
read FICHERO

Imaginemos que el nombre del fichero fuera del tipo:

...
access_log.2013-07-02.txt
access_log.2013-04-03.txt
access_log.2013-04-07.txt
...

El problema es que una vez se está ejecutando el script, si cuando nos pide el nombre del fichero intentamos hacer un autocompletado con la tecla TAB, simplemente no aparecería nada o bien caracteres extraños. El caso se puede complicar ya que en el ejemplo que he puesto, por lo menos los prefijos son comunes y resulta más sencillo de recordar, pero imagina ficheros que no sigan un patrón… tendríamos que apuntarlos previamente. Sería mucho más fácil ir escribiendo el nombre del fichero en el script, y poder autocompletar el resto con la tecla TAB, tal y como hacemos cuando estamos en una sesión interactiva de terminal y no nos acordamos, por ejemplo, de cómo se escribe un comando.

Hay una solución bastante sencilla para esto y la tenemos delante de nuestras narices: con la opción -e del programa read, cuando estemos introduciendo el valor de la variable, podremos utilizar el autocompletado. Crearemos el siguiente script de prueba en el directorio donde se encuentran los ficheros a leer:

#!/bin/bash
#
#############

echo -n "Introduce nombre del fichero: ";
read -e FICHERO

echo "El fichero que seleccionaste es: $FICHERO"

exit 0;

Dados los permisos de ejecución correspondientes, cuando al ejecutar el script aparezca «Introduce nombre del fichero: » podremos ir completando el nombre con TAB.