Diferencia entre revisiones de «Bash scripting»

De Hacklab La Paz - r00thouse
Sin resumen de edición
Sin resumen de edición
Línea 11: Línea 11:
Es más, es posible hacer que otro script llame o ejecute otro script para automatizar aún mas las tareas.
Es más, es posible hacer que otro script llame o ejecute otro script para automatizar aún mas las tareas.


Para la tarea de iniciar la interfaz gráfica, por ejemplo el script que se ejecuta para ello es <code>/etc/init.d/gdm</code> si el computador usa <code>gdm</code> como gestor de inicio de sesion
Para la tarea de iniciar la interfaz gráfica, por ejemplo el script que se ejecuta para ello es <code>/etc/init.d/gdm</code> si el computador usa <code>gdm</code> como gestor de inicio de sesion.
 
== Bash scripting<br/> ==
 
Como en este curso hemos usado la shell '''bash''', los scripts a continuación son bash scripts por que se ejecutan usando el programa bash.
 
=== Primer script ===
 
La línea de comandos:
 
<source lang="bash">echo "Hola mundo" </source> Muestra en la pantalla:
<pre>"Hola mundo"</pre>
Imaginen que queremos mostrar este mismo mensaje cada 2 segundos 2 veces, la siguiente línea lo hará:
 
<source lang="bash">sleep 2; echo "Hola mundo" ; sleep 2 ; echo "Hola Mundo"</source>
 
Ahora si quisiéramos seguir introduciendo más líneas deberíamos seguir con los&nbsp;; después de cada oden. Esto no es factible para muchas líneas y además no nos da un mayor control como por ejemplo usar ''variables''.
 
El siguiente script hace que el script termine en el numero de segundos que se introduzca: Lo primero que hay que hacer es abrir un nuevo archivo de texto y escribir: <source lang="bash">
#!/bin/bash
echo "Introduzca el tiempo (numero):"
read TEMP
echo "pausa de $TEMP segundos"
sleep $TEMP
echo "FIN"
 
exit 0
</source>
 
Hay que notar la primera linea <source lang="bash">#!/bin/bash</source> Esta línea es muy necesaria ya que le dice al intérprete de comandos que use el programa ubicado en: <code>/bin/bash</code> que es el intérprete '''bash'''
 
Para ejecutar el script:
 
*Guardar ese archivo con el nombre <code>sp1.sh</code> (por ejemplo).
*Darle permisos de ejecución al script:
 
  <source lang="bash">chmod +x sp1.sh</source>
 
*Ejecutar el script desde la línea de órdenes con:
 
<source lang="bash">./sp1.sh</source>
 
 


== Más información ==
== Más información ==


#[http://www.tldp.org/LDP/abs/abs-guide.pdf http://www.tldp.org/LDP/abs/abs-guide.pdf]
#[http://www.tldp.org/LDP/abs/abs-guide.pdf http://www.tldp.org/LDP/abs/abs-guide.pdf]

Revisión del 18:05 1 nov 2014

La idea de los scripts es colocar en archivos de texto (scripts) , suceciones de comandos o instrucciones que normalmente se colocarían a través de la línea de comandos. Estos scripts no sólo permiten colocar series de comandos, también proporcionan la posiblidad de hacer que estas órdenes se ejecuten de acuerdo a condiciones dentro o fuera del sistema tal como un lenguaje de programación.

Utilidad de los scripts

Imaginémos que necesitamos inciar la interfaz gráfica en el sistema operativo. Una forma de hacerlo sería; escribiendo órdenes una a una según el computador para llamar a los programas adecuados y de la forma adecuada para realizar esta tarea.

Este es por así decirlo un trabajo tedioso si introduciríamos las órdenes una a una y más aún hacerlo cada vez que necesitemos la interfaz gráfica...

Afortunadamente, existe la posibilidad de realizar este tipo de tareas repetitivas y/o tediosas a través de scripts que una vez escritos y probados reducirán el trabajo de por ejemplo iniciar la interfaz gráfica a ejecutar el script que realiza la tarea.

Es más, es posible hacer que otro script llame o ejecute otro script para automatizar aún mas las tareas.

Para la tarea de iniciar la interfaz gráfica, por ejemplo el script que se ejecuta para ello es /etc/init.d/gdm si el computador usa gdm como gestor de inicio de sesion.

Bash scripting

Como en este curso hemos usado la shell bash, los scripts a continuación son bash scripts por que se ejecutan usando el programa bash.

Primer script

La línea de comandos:

echo "Hola mundo"

Muestra en la pantalla:

"Hola mundo"

Imaginen que queremos mostrar este mismo mensaje cada 2 segundos 2 veces, la siguiente línea lo hará:

sleep 2; echo "Hola mundo" ; sleep 2 ; echo "Hola Mundo"

Ahora si quisiéramos seguir introduciendo más líneas deberíamos seguir con los ; después de cada oden. Esto no es factible para muchas líneas y además no nos da un mayor control como por ejemplo usar variables.

El siguiente script hace que el script termine en el numero de segundos que se introduzca: Lo primero que hay que hacer es abrir un nuevo archivo de texto y escribir:

#!/bin/bash
echo "Introduzca el tiempo (numero):"
read TEMP
echo "pausa de $TEMP segundos"
sleep $TEMP
echo "FIN"

exit 0

Hay que notar la primera linea

#!/bin/bash

Esta línea es muy necesaria ya que le dice al intérprete de comandos que use el programa ubicado en: /bin/bash que es el intérprete bash

Para ejecutar el script:

  • Guardar ese archivo con el nombre sp1.sh (por ejemplo).
  • Darle permisos de ejecución al script:
chmod +x sp1.sh
  • Ejecutar el script desde la línea de órdenes con:
./sp1.sh


Más información

  1. http://www.tldp.org/LDP/abs/abs-guide.pdf