Un script buscador
Hace unas semanas me inicié en la programación en GTK+, desde GNU/Linux con C++, y me surgió la necesidad de buscar en que headers estaban declaradas algunas constantes.
khronos@khronos-netbook:~$ ls /usr/include/gtk-2.0/gtk
gtkaboutdialog.h
gtkhandlebox.h
gtkscalebutton.h
gtkaccelgroup.h
gtkhbbox.h
gtkscale.h
gtkaccellabel.h
...
Tengo algunas nociones de bash scripting, y sabía que el problema se podría resolver facilmente combinando el programa cat con grep.
khronos@khronos-netbook:/usr/include/gtk-2.0/gtk$ cat gtkwindow.h | grep GTK_WIN_POS_CENTER
Este comando buscaría la cadena "GTK_WIN_POS_CENTER" en el fichero gtkwindow.h. Ahora solo faltaba hacer esto en todos los archivos de la carpeta gtk/ para saber en que header estaba definido. Hacerlo uno a uno sería una ardua tarea, por lo que programé este pequeño script:
#!/bin/bash
if [ $# = 1 ]; then
for i in $( ls $PWD ); do
if [ -f "$PWD/$i" ]; then
if [ $(cat "$PWD/$i" | grep $1) != "" ]; then
echo "Se encontró $1 en el fichero $i"
fi
fi
done
else
echo "Error. Uso searchin [cadena]"
fi
Al final, el script me resultó muy útil, así que lo copié a la carpeta /bin para poder usarlo desde cualquier carpeta.khronos@khronos-netbook:~/bash$ sudo cp searchin.sh /bin/searchin
Para probarlo, sólo hay que ejecutar "searchin" y la cadena a buscar.
khronos@khronos-netbook:~$ cd /usr/include/gtk-2.0/gtk
khronos@khronos-netbook:/usr/include/gtk-2.0/gtk$ searchin GTK_WIN_POS_CENTER
Se encontró GTK_WIN_POS_CENTER en el fichero gtkenums.h
Se le pueden añadir más funciones al script como búsqueda recursiva, incluir archivos ocultos, que no haga distinción de mayúsculas y minúsculas, etc.. Se puede jugar con los parámetros del comando ls y grep para añadirle más funcionalidades al script que se podrían pasar como parámetros.
0 Response to "Un script buscador"
Publicar un comentario