Taller de Shell Scripting

Post on 20-Jun-2015

2.275 views 2 download

description

Minitaller de shell scripting para el 2do. Debian Day, Montevideo, Uruguay

Transcript of Taller de Shell Scripting

  • 1. Shell Scripting - Introduccin Enrique Verdes SysAdmin UyLUG 2do. Debian Day

2. Breve presentacin: Quien es El G@llego?

  • Programador por formacin, SysAdmin por deformacin.
  • Certificado LPIC-1. 10 aos de experiencia usando Linux.
  • Socio fundador del UyLUG.
  • Miembro de varias asociaciones: Hispalinux, IEEE, Computer Society.
  • Profesor Adjunto de Administracin de Sistemas GNU/Linux en la Universidad ORT.

3. El shell interactivo

  • El shell es un ambiente de programacin capaz de automatizar casi cualquier cosa en su sistema Linux.
  • Una vez iniciado presenta unprompt($ #) para indicar que est listo para recibir instrucciones por laentrada estndar(usualmente el teclado).
  • El shell de uso ms comn en Linux esbash , pero existen otros.
  • El shell puede ser cualquier aplicacin de usuario.

4. Que nos ofrece el shell?

  • El shell provee:
    • Una interfase interactiva textual al sistema operativo.
    • Un ambiente operacional.
    • Facilidades para iniciar y administrar comandos y programas.
    • Un lenguaje de programacin.

5.

  • #!/bin/bash
  • clear
  • echo Hola Mundo

Un script muy sencillo... 6.

  • #!/bin/bash
  • clear
  • SALUDO="Hola Mundo"
  • echo $SALUDO

... lo complicamos con variables 7. Variables

  • De ambiente : Variables globales. Son pasadas a todos los procesos iniciados por el shell, incluyendo otros shells. Esto significa que los procesos hijoheredanel ambiente. Por convencin se expresan en maysculas.
  • De shell : Son variables locales. So especficas al shell corriente y no son heredadas por procesos hijo. Enbash , las variables de shell pasan a ser de ambiente cuando son exportadas.

8. Variables de ambiente

  • Muchas de las variables son necesarias para la ejecucin de programas.
  • Para que esas variables esten disponibles deben ser exportadas para convertirlas envariables de ambiente.
  • $ export MIVAR
  • Para listar las variables de ambiente:
  • $ env

9. Un poquito mas complicado ...

  • #!/bin/bash
  • HOLA=Hola
  • function hola {
    • local HOLA=Mundo
    • echo $HOLA
  • }
  • echo $HOLA
  • hola
  • echo $HOLA

10. Ahora con sustitucin de comandos.

  • #!/bin/bash
  • HOLA="Hola, hoy es el da $(date +%j) del ao."
  • echo $HOLA

11. Estructuras condicionales if .. then

  • #!/bin/bash
  • ...
  • if [ !$# ]; then
    • echo Hay parametros
  • fi
  • ...

12. Condicional if .. then .. else

  • #!/bin/bash
  • ...
  • if [ $(whoami) = root ]; then
    • return 0
  • else
    • return 1
  • fi
  • ...

13. Condicional if .. then .. elif

  • #!/bin/bash
  • ...
  • if [ $USER = root ]; then
  • echo El usuario es root
  • elif [ $(whoami) = gallego ]; then
    • echo El usuario es El G@llego
  • else
    • echo Vos quien sos?
  • fi
  • ...

14. Ahora un ejemplo con argumentos.

  • #!/bin/bash
  • FILE= $1
  • if [ -f $FILE ]; then
    • echo el archivo $FILE existe
  • else
    • echo archivo no encontrado
  • fi

15. Ciclos: for, while y until

  • Elfores distinto a los de otros lenguajes de programacin. Bsicamente, le permite iterar sobre una serie de `palabras' contenidas dentro de una cadena.
  • Elwhileejecuta un trozo de cdigo si la expresin de control es verdadera, y termina cuando es falsa (o se encuentra una interrupcin explcita dentro del cdigo en ejecucin).
  • Eluntiles casi idntico alwhile , excepto en que el cdigo se ejecuta mientras la expresin de control se evale como falsa.

16. Ejemplo de for...

  • #!/bin/bash
  • for i in $( ls ); do
    • echo item: $i
  • done

17. Ejemplo de while...

  • #!/bin/bash
  • CONTADOR=0
  • while [ $CONTADOR -lt 10 ]; do
  • echo El contador es $CONTADOR
  • let CONTADOR=CONTADOR+1
  • done

18. Ejemplo de until...

  • #!/bin/bash
  • CONTADOR=20
  • until [ $CONTADOR -lt 10 ]; do
  • echo CONTADOR $CONTADOR
  • let CONTADOR-=1
  • done

19. La instruccin case...

  • case $USER; in
  • root)
    • echo Usuario es root;;
  • gallego)
    • echo Usuario es el G@llego;;
  • *)
    • echo Y este quien es?;;
  • esac

20. Un pequeo ejemplo.

  • case "$1"; in
  • *start)
  • ;;
  • *)
  • gprintf "Usage: %s " "$(basename $0) {start}"
  • exit 1 ;;
  • esac

21. Ingresando informacin...

  • #!/bin/bash
  • echo Por favor, introduzca su nombre:
  • read NOMBRE
  • echo "Hola $NOMBRE!"

22. Uso de argumentos...

  • $0 : Nombre del programa script.
  • $# : Cantidad de argumentos.
  • $1..$n : Argumentos segn su posicin en la lnea de comandos.
  • $@ : Lista de argumentos.
  • $? : Resultado de la ejecucin del ultimo comando.
  • $$ : PID del shell actual.

23. Ejemplo de script con argumentos.

  • #!/bin/bash
  • if [ $# -ne 1 ]; then
    • echo uso: $0 archivo
    • exit 1
  • elif [ -f $1 ]; then
    • echo el archivo $1 existe
  • else
    • echo archivo no encontrado
  • fi

24. Operadores de cadenas de texto

  • [ s1 = s2 ]: s1 coincide con s2
  • [ s1 != s2 ]: s1 no coincide con s2
  • [ s1 < s2 ]: s1 es alfabticamente anterior a s2, con el locale actual
  • [ s1 > s2 ]: s1 es alfabticamente posterior a s2, con el locale actual
  • [ -n s1 ]: s1 no es nulo (contiene uno o ms caracteres)
  • [ -z s1 ] : s1 es nulo

25. Operadores aritmeticos

  • + (adicin)
  • - (sustraccin)
  • * (producto)
  • / (divisin)
  • % (mdulo)
  • ** (exponenciacin)

26. Operadores relacionales aritmeticos

  • [ a -lt b ] equivale a ((a < b))
  • [a -gt b ] equivale a ((a > b))
  • [a -le b ] equivale a ((a = b))
  • [a -eq b ] equivale a ((a == b))
  • [a -ne b ] equivale a ((a != b))

27. Operadores lgicos

  • && Y lgico (AND)
  • || O lgico (OR)

28. Operadores sobre archivos

    • darchivo : Verdadero siarchivoexiste y es un directorio
    • earchivo : Verdadero siarchivoexiste
    • farchivo : Verdadero siarchivoexiste y es un archivo comn
    • Larchivo : Verdadero siarchivoexiste y es un enlace simblico
    • rarchivo : Verdadero siarchivoexiste y puede leerse
    • sarchivo : Verdadero siarchivoexiste y tiene tamao mayor que 0
    • warchivo : Verdadero siarchivoexiste y es escribible
    • xarchivo : Verdadero siarchivoexiste y es ejecutable
    • arch1-otarch2 : Verdadero siarch1es ms viejo quearch2

29. Algunos ejemplos prcticos

  • Confeccin de Manual
  • Usuario que usa ms espacio en disco
  • Archivos con bit SUID

30. Para ampliar estos temas Bash Guide for Begginers - Matchtelt Garrels http://www.tldp.org/LDP/Bash-Beginners-Guide/html/index.html Visiten el Proyecto de Documentacin de Linux http://www.tldp.org