Cómo escribir un pequeño script bash
Seguro que todos los que leéis MuyLinux usáis regularmente la consola, pero ¿cuántos sois capaces de escribir un buen script bash? Estos archivos permiten automatizar tareas y acceder a potentes funciones, y su puesta en marcha no es tan complicada.
Lo demuestra un artículo de Linux.com en el que se nos da una introducción con los primeros pasos a la hora de crear un script bash, algo que no es tan complicado y que poco a poco nos permitirá sacarle mucho partido a nuestra distribución Linux.
Esto es una adaptación del artículo de Linux.com permitirá a aquellos que se sienten incómodos con el inglés poder seguir estos sencillos pasos.
En primer lugar, todos los scripts bash comienzan con lo mismo
#!/bin/bashEsos dos primeros caracteres tienen un nombre popular, shebang, y permiten determinar qué intérprete se encargará de ejecutar el resto del script. En lugar de bash podríamos usar otros intérpretes de comandos como tcsh, zsh, pero también otros como Perl o Python. A continuación podremos incluir algún comentario:
#!/bin/bash # Un script simple
Y ahora vamos con el meollo. Supongamos que queremos ejecutar un comando rsync para realizar una copia de seguridad de una de nuestras carpetas.
#!/bin/bash # rsync script rsync -avh --exclude="*.bak" /home/user/Documents/ /media/diskid/user_backup/Documents/
Ahora tendremos que salvar ese fichero que acabamos de editar (con el nombre que queramos, por ejemplo, copiaseguridad) y atención, cambiar los permisos para poder ejecutarlo, con un cómodo:
chmod 700 copiaseguridad
Variables
El script anterior es interesante, pero dispone de rutas permanentes, y sería interesante poder contar con rutas variables, como por ejemplo sucede con este otro script:
#!/bin/bash # rsync using variables SOURCEDIR=/home/user/Documents/ DESTDIR=/media/diskid/user_backup/Documents/ rsync -avh --exclude="*.bak" $SOURCEDIR $DESTDIR
Eso permite establecer dos variables que luego podremos reutilizar a lo largo de todo el script.
Entrada de datos
Los scripts también pueden ser interactivos, y nos pueden pedir un dato (por ejemplo, un ruta) para luego tomar esa variable para el resto del script. Si queremos pedir un argumento haríamos lo siguiente:
#!/bin/bash echo $1
Y eso aplicándolo a un script sencillo podría resultar en un pequeño script que nos pregunte el nombre:
#!/bin/bash echo -e "Escribe tu nombre, por favor: " read nombre echo "Encantado de saludarte, $nombre"
Ese script esperará a que introduzcamos algo y pulsemos Enter para luego tomar nota de esa variable y usarla para el resto del script. Eso, aplicado a la idea inicial del rsync, serviría para algo como esto:
#!/bin/bash echo -e "De que directorio quieres hacer el backup?" read directory DESTDIR=user@host.rsync.net:$directory/ rsync --progress -avze ssh --exclude="*.iso" $directory $DESTDIR
Este script leerá de la entrada el directorio en el que queremos hacer el backup, para luego copiarlo en la máquina del ejemplo (host.rsync.net) y el directorio especificado (directory).
Fácil, ¿verdad? Como indican en el artículo de Linux.com, podéis obtener más información sobre este tipo de scripts en la Bash Guide for Beguinners, aunque hay muchos más recursos también en español, como este blog con scripts ya avanzaditos o esta documentación en formato wiki y en nuestro idioma.












muy interesante….he aprendido un par de cosas nuevas hoy y eso que apenas comienzo el dia :)
me gustaria que me ayudaseis sobre una duda en este script de copiaseguridad
mi pregunta es ¿como haria para hacer una copia de una carpeta compartida en samba?, tal que estaria en \\192.168.1.93\copia ………. tendria que montar la unidad en mi ubuntu, o podria ejecutar la copia directamente en samba.
gracias
me parece que para copiar algo por red, tendrias que usar una ruta tipo
smb://nombrePCremoto/carpetacompartida/
Muy interesante, muchísimas gracias por la entrada.
Un blog muy interesante sobre scripts de bash y linea de comandos:
http://los-pajaros-de-hogano.blogspot.com/
Busquen “Conversaciones con HAL”, esta muy bien escrito y con un enfoque diferente a los manuales tecnicos. shaludos y felicitaciones por el post
Me gusta más crearlas con mi gambas2..x :DDDDDDD
#!/bin/python
muy chulo el post, y bastante claro!
yo si creo scripts para mi smartphone,me da mucha satisfaccion cuando funciona,despues lo comparto en los foros :)
Yo ya sé hacer scripts sencillos, lo que me gustaría hacer es convinarlo con zenity, alguno sabe como?
Puedes probar leyendo el manual…
http://library.gnome.org/users/zenity/stable/index.html.es
Está lleno de ejemplos, y abarca todas las posibilidades de uso.
Aprender Bash Scripting me parecio ser muy sencillo, hace poco hice uno para mandar a twitter o identi.ca frases de fortune.
Fortune2Twitter
No sabia lo del ‘read’, muy interesante el tema, y creo que es la primera ves que ponen algo así por aquí, ¿no?.
Gracias Picajoso!!
[...] | Muy Linux Etiquetado con: basico, crear, script Deja un comentario Comentarios (0) Trackbacks (0) [...]
Incrfeíble que es BAsh! me has picado!
En verdad la programación es algo que siempre he querido aprender, y ahora que veo estos ejemplos tan sencillos en Bash (para mí, más sencillos que otros lenguajes/intérpretes que haya visto), me dan ganas de hacer mini programas con ayuda gráfica de Zenity (y Shellementary :D)
Me recuerda que un pequeñe gran programa, Prey fué escrito entero con Bash y Cron ;)
Saludos!
JaD!
PD: Para los que no sabían, Prey es una herramienta multiplataforma de código abierto para rastreo de laptops – http://jado92mx.wordpress.com/2009/08/16/prey-no-necesitas-rezar-para-recuperar-tu-laptop/
Queee??? Eso es un script sencillo??