por
pobrecito hablador
el Martes, 17 Febrero de 2009, 03:57h
(#1128163)
Cuando hayas acabado con la Bash Guide for Beginners, te recomiendo;-) que pases a la Advanced Bash-Scripting Guide [tldp.org], que básicamente tiene todo lo que se puede necesitar. Y por último, en plan referencia, pues el propio manual de Bash. Por cierto, un libro muy reciente y bastante recomendable es Beginning Portable Shell Scripting [amazon.com] (para el que quiera echarle un ojo, comento que circula por las páginas de descargas directas).
Con respecto al script te comento alguna cosilla...
El script falla con los ficheros y directorios cuyos nombres tengan espacios en blanco. Eso es porque bash, al ir asignando valores a la variable 'i' del for, trocea la salida de find no solo en los carateres nueva línea sino también en los espacios en blanco. Una forma de solucionarlo es hacer que solo trocee en los caracteres nueva línea. Para ello hay que redefinir la variable IFS [blogspot.com], que es la que especifica los separadores de campos.
Otra cosa, los sed del final fallan cuando el nombre del directorio acaba por '/' (cuando pulsas TAB para completar un nombre, bash siempre añade '/' a los directorios). Esa posible barra la omites si expandes el argumento así: ${1%/}. Igualmente, el sed que utilizas para eliminar el path de los nombres es prescindible al ser algo que puede hacerse directamente con las opciones [tldp.org] de expansion de variables... sería: ${i##*/}
Muchas gracias por tus recomendaciones. Voy a revisar de nuevo el script para ver si puedo arreglar los problemas que me comentas, iré poco a poco porque no creas que terminé de comprender lo que dijiste. De verdad muchas gracias.
Más recomendaciones
(Puntos:3, Informativo)Con respecto al script te comento alguna cosilla...
El script falla con los ficheros y directorios cuyos nombres tengan espacios en blanco. Eso es porque bash, al ir asignando valores a la variable 'i' del for, trocea la salida de find no solo en los carateres nueva línea sino también en los espacios en blanco. Una forma de solucionarlo es hacer que solo trocee en los caracteres nueva línea. Para ello hay que redefinir la variable IFS [blogspot.com], que es la que especifica los separadores de campos.
Otra cosa, los sed del final fallan cuando el nombre del directorio acaba por '/' (cuando pulsas TAB para completar un nombre, bash siempre añade '/' a los directorios). Esa posible barra la omites si expandes el argumento así: ${1%/}. Igualmente, el sed que utilizas para eliminar el path de los nombres es prescindible al ser algo que puede hacerse directamente con las opciones [tldp.org] de expansion de variables... sería: ${i##*/}
Creo que nada más
:D
Disfruta con bash
Re:Más recomendaciones
(Puntos:1)( Última bitácora: Martes, 12 Enero de 2010, 19:47h )
Re:Más recomendaciones
(Puntos:1)( Última bitácora: Martes, 12 Enero de 2010, 19:47h )