Este es otro de mis pequeños scripts que suelo utilizar y/o adaptar para diferentes circunstancias. Un script sencillo, escrito para Korn Shell pero fácilmente portable a Bash u otro similar.
Para ser ciertos, más que scripting, este ejemplo es una clase de find, un comando tan potente que casi que nos permite “programar” con find
Antes de pasar a ver el código, comento un poco la necesidad que dió origen a este pequeño ejemplar para que tu puedas interpretarlo y, por que no, adaptarlo a tu necesidad.
La cuestión es así, mis aplicaciones y procesos sin logs no tienen razón de ser, todo se loguea, con fines de detectar anomalías, ver errores de software e incluso para hacer auditorias.
Esta publicación es pequeña pero muy efectiva, básicamente se trata de un script para buscar en la wikipedia desde la consola, valiéndose simplemente del comando dig.
En alguna ocasión, puede resultar útil trappear señales en los shell scripts. Un ejemplo clásico de señal a trapear es el famoso Ctrl+C (^C).
Trappear una señal es fácil, simplemente debemos definir una acción (o función) que se ejecutará al momento de recibir la señal, y luego definir las señales a trappear con el comando trap.
No suele ser costumbre utilizar la instrucción declare en Bash, de echo, hasta algunos quizás no la conozcan. Lo cierto es que Bash, al no ser un lenguaje fuertemente tipado y no requerir la declaración explícita de variables, nos permite prescindir de su utilización.
No obstante esto, si declaramos las variables podemos lograr algunos beneficios para casos puntuales, hasta incluso evitar errores de ejecución.
A continuación veremos algunos ejemplos para saber de que estamos hablando con esto de declarar las variables en Bash.
Requisito de un tema laboral fue crear de urgencia unos backups full e incrementales de un repositorio. Como siempre estos requerimientos se requieren para ayer y son para salvar cabezas cuando las papas queman.
Debido al gran volumen de datos, como estrategia de backups se decidió realizar un backup full mensualmente y un backup incremental diario.
A tal fin, se escribieron dos scripts, el primero de ellos, que dado un directorio crea un tar comprimido del mismo. Y el segundo, el que se ejecuta diariamente, que se encarga de verificar la fecha de modificación del último backup full del directorio y a partir de la misma crea un tar comprimido con los cambios desde entonces.
Nada de otro mundo, dos scripts sencillos, pero que se dejan a vuestra disposición por si las moscas.
En alguna ocasión ya hemos hablado de realizar backups de MySQL en Linux o cualquier otro clon de UNIX utilizando mysqldump y un pequeño shell script que se ejecute por el cron.
Ahora ¿si debemos hacer lo mismo pero en Windows?
Básicamente el proceso es el mismo, general un script (en Windows escribiremos un .bat) y configuraremos la ejecución del mismo en el Programador de Tareas.
Muchas veces el poco conocimiento acerca de la programación de shell scripts y el propio intérprete de comandos hace que hagamos el doble de trabajo para trabajos simples que se pueden resolver con un sencillo script.
Por tal motivo y con ánimo a conocer un poco más acerca de algún shell de Unix, veremos algunos ejemplos cuidadosamente explicados de como hacer loops en Bash (el shell sucesor del Bourne y escrito para el proyecto GNU).
Con un poco de ayuda de links (una alternativa a lynx para la navegación web por consola) hoy veremos un pequeño script, que dada una palabra se encarga de buscarla en algún diccionario online (como el de la Real Academia Española) y volcar los resultados a la consola.
La lógica del script es muy sencilla y no requiere mucha explicación. Basicamente, el script se encarga de revisar que se haya pasado una palabra como argumento y luego vuelca a pantalla la respuesta del browser de consola (links), este último habiendo recibido en la URL el argumento pasado al script.
Veamos el ejemplo, que es mucho más fácil que explicarlo con palabras:
La línea de comandos fue la primera forma en que los humanos le decían a las que hacer, pero con la llegada y el incremento de las interfaces gráficas la línea de comandos, o terminal, se transformó en un arma secreta para usuarios privilegiados.
A continuación, echamos un vistazo por un top 10 (de mayor a menor) de comandos de terminal, seleccionados por Lifehacker:
Si acostumbras a utilizar mucho la terminal, es probable que ya te resulte algo engorroso tipear una y otra vez lo mismo. Una forma de reducir la cantidad de caracteres tipeados es utilizar los alias. Un alias, es un comando de Unix que te permite ahorrar el tipeo de comandos largos, asignándole un nombre corto.
Sin ir más allá, en Ubuntu, cuando tipeamos ls en una terminal bash, nos encontramos que, para distinguir los diferentes tipos de archivos y/o carpetas, aparecen en colores. Pero en realidad, para lograr esto hay que ejecutar ls –color, pero… entonces ¿por que es que por defecto aparecen en colores? Esto sucede porque hay definido un alias ls, con el valor ‘ls –color=auto’. Sin dudas de esto, ingresa el comando alias en una terminal y el mismo realizará un listado de todos los alias definidos.