Taller de Shell Scripting

download Taller de Shell Scripting

If you can't read please download the document

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