SlideShare una empresa de Scribd logo
1 de 96
Descargar para leer sin conexión
Shell: aquel desconocido
                             API de shell
                        Manos a la obra!




   Introducci´n a la programaci´n en Bash
             o                 o

                         Mauro Parra Miranda
                         mauropm@gmail.com


                           November 19, 2005




Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                      o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Qu´ es un shell
  e




      El shell es un interprete de comandos




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Qu´ es un shell
  e




      El shell es un interprete de comandos
      Pero tambien es un lenguaje




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Qu´ es un shell
  e




      El shell es un interprete de comandos
      Pero tambien es un lenguaje
      El conjunto de comandos es un script




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Qu´ es un shell
  e




      El shell es un interprete de comandos
      Pero tambien es un lenguaje
      El conjunto de comandos es un script
      Un script sirve como ’pegamento’ de diversos comandos
      sencillos, que en conjunto son considerablemente poderosos.




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Por qu´ aprender a programarlo?
      e


      Te evita hacer tareas repetitivas




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Por qu´ aprender a programarlo?
      e


      Te evita hacer tareas repetitivas
      Es bueno conocerlos, alg´n dia resolver´ algun problema como
                               u             a
      con los scripts en /etc/rc.d




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Por qu´ aprender a programarlo?
      e


      Te evita hacer tareas repetitivas
      Es bueno conocerlos, alg´n dia resolver´ algun problema como
                               u             a
      con los scripts en /etc/rc.d
      Es facil de aprender: piensa que quieres hacer - escribelo -
      revisalo (ahora ponlo todo en un archivo o script)




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Por qu´ aprender a programarlo?
      e


      Te evita hacer tareas repetitivas
      Es bueno conocerlos, alg´n dia resolver´ algun problema como
                               u             a
      con los scripts en /etc/rc.d
      Es facil de aprender: piensa que quieres hacer - escribelo -
      revisalo (ahora ponlo todo en un archivo o script)
      Usualmente no tienes que debugear mucho, es como si
      vaciaras lo que harias en el prompt de comandos, pero escrito
      en un archivo.




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Por qu´ aprender a programarlo?
      e


      Te evita hacer tareas repetitivas
      Es bueno conocerlos, alg´n dia resolver´ algun problema como
                               u             a
      con los scripts en /etc/rc.d
      Es facil de aprender: piensa que quieres hacer - escribelo -
      revisalo (ahora ponlo todo en un archivo o script)
      Usualmente no tienes que debugear mucho, es como si
      vaciaras lo que harias en el prompt de comandos, pero escrito
      en un archivo.
      Es ideal para hacer algunos prototipos




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Por qu´ aprender a programarlo?
      e


      Te evita hacer tareas repetitivas
      Es bueno conocerlos, alg´n dia resolver´ algun problema como
                               u             a
      con los scripts en /etc/rc.d
      Es facil de aprender: piensa que quieres hacer - escribelo -
      revisalo (ahora ponlo todo en un archivo o script)
      Usualmente no tienes que debugear mucho, es como si
      vaciaras lo que harias en el prompt de comandos, pero escrito
      en un archivo.
      Es ideal para hacer algunos prototipos
      Es muy *nix: Keep It Simple Stupid! (divide y venceras)


       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


No se use en caso de...


       Hacer matem´ticas intensas - Use Fortran (si aun existe)
                  a




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


No se use en caso de...


       Hacer matem´ticas intensas - Use Fortran (si aun existe)
                  a
       Requerir super portabilidad - Use Java, .NET o ’C’




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


No se use en caso de...


       Hacer matem´ticas intensas - Use Fortran (si aun existe)
                  a
       Requerir super portabilidad - Use Java, .NET o ’C’
       Aplicaciones complejas - Por ejemplo, que requieran
       estructuras mas elaboradas




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


No se use en caso de...


       Hacer matem´ticas intensas - Use Fortran (si aun existe)
                  a
       Requerir super portabilidad - Use Java, .NET o ’C’
       Aplicaciones complejas - Por ejemplo, que requieran
       estructuras mas elaboradas
       Aplicaciones de misi´n critica
                           o




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


No se use en caso de...


       Hacer matem´ticas intensas - Use Fortran (si aun existe)
                  a
       Requerir super portabilidad - Use Java, .NET o ’C’
       Aplicaciones complejas - Por ejemplo, que requieran
       estructuras mas elaboradas
       Aplicaciones de misi´n critica
                           o
       Requerir estructuras de datos ’elegantes’ - Listas ligadas,
       arboles




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


No se use en caso de...


       Hacer matem´ticas intensas - Use Fortran (si aun existe)
                  a
       Requerir super portabilidad - Use Java, .NET o ’C’
       Aplicaciones complejas - Por ejemplo, que requieran
       estructuras mas elaboradas
       Aplicaciones de misi´n critica
                           o
       Requerir estructuras de datos ’elegantes’ - Listas ligadas,
       arboles
       Crear Aplicaciones propietarias - Es dificil de ofuscar :)




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


API del shell




       Todo comando de *nix puede ser invocado




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


API del shell




       Todo comando de *nix puede ser invocado
       Comandos de testing




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


API del shell




       Todo comando de *nix puede ser invocado
       Comandos de testing
       loops - ciclos




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


API del shell




       Todo comando de *nix puede ser invocado
       Comandos de testing
       loops - ciclos
       Tus propios programas o scripts son parte del API!




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


C´mo creo un script?
 o




      Crea un archivo miscript.sh con tu editor de textos favorito




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


C´mo creo un script?
 o




      Crea un archivo miscript.sh con tu editor de textos favorito
      Dale permisos de ejecuci´n: chmod +x miscript.sh
                              o




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


C´mo creo un script?
 o




      Crea un archivo miscript.sh con tu editor de textos favorito
      Dale permisos de ejecuci´n: chmod +x miscript.sh
                              o
      Ejecutalo: ./miscript.sh




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


C´mo creo un script?
 o




      Crea un archivo miscript.sh con tu editor de textos favorito
      Dale permisos de ejecuci´n: chmod +x miscript.sh
                              o
      Ejecutalo: ./miscript.sh
      Listo!




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


C´mo creo un script?
 o




      Crea un archivo miscript.sh con tu editor de textos favorito
      Dale permisos de ejecuci´n: chmod +x miscript.sh
                              o
      Ejecutalo: ./miscript.sh
      Listo!
      En serio, eso es todo. :)




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Hola mundo!




  #!/bin/bash
  echo ’Hello world’




      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Corriendo el script




       Guardarlo en el archivo script.sh




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Corriendo el script




       Guardarlo en el archivo script.sh
       chmod +x script.sh




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Corriendo el script




       Guardarlo en el archivo script.sh
       chmod +x script.sh
       ./script.sh




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Respaldo




   #!/bin/bashLimpieza
   DATE=‘date +%d-%m-%y‘
   USER=foobar
   echo ’Comenzando el backup’
   tar cjvf /tmp/$USER-$DATE.tbz /home/foobar
   echo ’Backup terminado’




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Redireccionando




      Redireccionar stdout a un archivo




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Redireccionando




      Redireccionar stdout a un archivo
      Redireccionar stderr a un archivo




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Redireccionando




      Redireccionar stdout a un archivo
      Redireccionar stderr a un archivo
      Redireccionar stdout a stderr




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Redireccionando




      Redireccionar stdout a un archivo
      Redireccionar stderr a un archivo
      Redireccionar stdout a stderr
      Redireccionar stderr a stdout




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Redireccionando




      Redireccionar stdout a un archivo
      Redireccionar stderr a un archivo
      Redireccionar stdout a stderr
      Redireccionar stderr a stdout
      Redireccionar stdout y stderr a un archivo




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Ejemplo de redireccionamiento




   ls -l >ls-l.txt




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Ejemplo de redireccionamiento




   grep da * 2> grep-errors.txt




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Ejemplo de redireccionamiento




   grep da * 1>&2 grep-errors.txt




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Ejemplo de redireccionamiento




   grep * 2>&1




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Ejemplo de redireccionamiento




   rm -f $(find / -name core) &> /dev/null




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Tuberias o Pipes




      Una tuberia sirve para redireccionar la salida de un comando a
      la entrada de otro




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Tuberias o Pipes




      Una tuberia sirve para redireccionar la salida de un comando a
      la entrada de otro
      Por omision, la salida estandar sera redireccionada a la
      entrada estandar del otro programa




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Ejemplo de tuberia




   ls -l | grep ‘‘.txt$’’




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Variables




       Las variables no necesitan ser declaradas




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Variables




       Las variables no necesitan ser declaradas
       Son dinamicas ademas (no tienes que ’alojar’ memoria)




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Hola mundo! meet variables




   #!/bin/bash
   STR=’’Hello world!’’
   echo $STR




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Respaldo




   #!/bin/bash
   OF=/var/my-backup-$(date +%Y%m%d).tgz
   tar -cZf $OF /home/me/#!/bin/bash




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Hola mundo!



  #!/bin/bash
  HELLO=Hello
  function hello {
           local HELLO=World
           echo $HELLO
  }
  echo $HELLO
  hello
  echo $HELLO




      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Condicionales




      Tenemos if’s en bash! Con diferentes sabores




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Condicionales




      Tenemos if’s en bash! Con diferentes sabores
      if expression then statement




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Condicionales




      Tenemos if’s en bash! Con diferentes sabores
      if expression then statement
      if expression then statement1 else statement2




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Condicionales




      Tenemos if’s en bash! Con diferentes sabores
      if expression then statement
      if expression then statement1 else statement2
      if expression1 then statement1 else if expression2 then
      statement2 else statement3




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Ejemplo de if-then




   #!/bin/bash
   if [ ‘‘foo’’ = ‘‘foo’’ ]; then
      echo ‘‘Cierto, foo == foo’’
   fi




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Ejemplo de if-then-else




   #!/bin/bash
   if [ ‘‘foo’’ = ‘‘foo’’ ]; then
      echo ‘‘Cierto, foo == foo’’
   else
      echo ‘‘Era falsa’’
   fi




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Cuando las variables y condicionales se encuentran



   #!/bin/bash
   T1=’’foo’’
   T2=’’bar’’
   if [ $T1 = $T2 ]; then
      echo ‘‘Cierto, ‘‘$T1’’== ‘‘$T2
   else
      echo ‘‘No es cierto’’
   fi




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                     API de shell
                                Manos a la obra!


–Fruit– Loops err... ciclos



       for - es un poco diferente, puedes iterar sobre cadenas o
       palabras en las cadenas




        Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                              o                 o
Shell: aquel desconocido
                                     API de shell
                                Manos a la obra!


–Fruit– Loops err... ciclos



       for - es un poco diferente, puedes iterar sobre cadenas o
       palabras en las cadenas
       while - ejecuta un pedazo de codigo si una condicion se
       cumple, y para cuando es falsa




        Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                              o                 o
Shell: aquel desconocido
                                     API de shell
                                Manos a la obra!


–Fruit– Loops err... ciclos



       for - es un poco diferente, puedes iterar sobre cadenas o
       palabras en las cadenas
       while - ejecuta un pedazo de codigo si una condicion se
       cumple, y para cuando es falsa
       until - ejecuta un pedazo de codigo, hasta que una expresion
       sea falsa




        Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                              o                 o
Shell: aquel desconocido
                                     API de shell
                                Manos a la obra!


–Fruit– Loops err... ciclos



       for - es un poco diferente, puedes iterar sobre cadenas o
       palabras en las cadenas
       while - ejecuta un pedazo de codigo si una condicion se
       cumple, y para cuando es falsa
       until - ejecuta un pedazo de codigo, hasta que una expresion
       sea falsa
       Cuide sus expresiones, no vaya a caer en un ciclo infinito




        Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                              o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Mi primer for




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




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Mira mam´, como en C
        a




  #!/bin/bash
  for i in ‘seq 1 10‘;
  do
     echo $i
  done




      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


El while




   #!/bin/bash
   COUNTER=0
   while [ $COUNTER -lt 10 ]; do
    echo The counter is $COUNTER
    let COUNTER=COUNTER+1
   done




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


hey! que era eso de let?




       Note el uso de let, let lo que hace es evaluar arithmeticamente
       la expresion que sigue




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


hey! que era eso de let?




       Note el uso de let, let lo que hace es evaluar arithmeticamente
       la expresion que sigue
       Para mas en expresiones aritmeticas, da: ’man bash’ y busca
       ARITHMETIC EVALUATION




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                        API de shell
                                   Manos a la obra!


El until



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




           Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                                 o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Funciones




      Para hacer los programas ordenados




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Funciones




      Para hacer los programas ordenados
      Para reusar codigo




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Funciones




      Para hacer los programas ordenados
      Para reusar codigo
      Para ser recursivo




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Ejemplo de funcion


   #!/bin/bash
   function quit {
     exit
   }
   function hello {
     echo Hello!
   }
   hello
   quit
   echo foo



       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Ejemplo de funciones con argumentos


   #!/bin/bash
   function quit {
      exit
   }
   function e {
      echo $1
   }
   e Hello
   e World
   quit
   echo foo


       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Haciendo un men´
               u




      Podemos hacer un menu en shell!




      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Menu simple

  #!/bin/bash
  OPTIONS=’’Hello Quit’’
  select opt in $OPTIONS; do
    if [ ‘‘$opt’’ = ‘‘Quit’’ ]; then
       echo done
       exit
    elif [ ‘‘$opt’’ = ‘‘Hello’’ ]; then
       echo Hello World
    else
       clear
       echo bad option
    fi
  done

      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Revisando argumentos




      Para completar el menu, tenemos forma de revisar los
      argumentos!




      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Mira mam´, con argumentos!
        a


  #!/bin/bash
  if [ -z ‘‘$1’’ ]; then
     echo usage: $0 directory
     exit
  fi
  SRCD=$1
  TGTD=’’/var/backups/’’
  OF=home-$(date +%Y%m%d).tgz
  tar -cZf $TGTD$OF $SRCD
  done



      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Leyendo entradas de los usuarios




      Podemos leer entradas ’interactivas’ del usuario




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Leyendo entradas de los usuarios




      Podemos leer entradas ’interactivas’ del usuario
      Notan que podemos hacer un facil juego en BASH?




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Leyendo entradas de los usuarios




      Podemos leer entradas ’interactivas’ del usuario
      Notan que podemos hacer un facil juego en BASH?
      Si, un juego en texto :)




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


read




   #!/bin/bash
   echo Por favor, meta su nombre
   read NAME
   echo ‘‘Hi $NAME!’’




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


+ reads




   #!/bin/bash
   echo Por favor, meta su nombre y apellido
   read FN LN
   echo ‘‘Hi! $LN, $FN !’’




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Usando bash como calculadora


      Uno puede hacer uso del sistema de expresiones aritmeticas de
      bash




      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Usando bash como calculadora


      Uno puede hacer uso del sistema de expresiones aritmeticas de
      bash
      Si hacen algo como: echo 1+1 - no obtendran los resultados
      adecuados (bash interpretara 1+1 como cadena, y como tal,
      la imprimira)




      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Usando bash como calculadora


      Uno puede hacer uso del sistema de expresiones aritmeticas de
      bash
      Si hacen algo como: echo 1+1 - no obtendran los resultados
      adecuados (bash interpretara 1+1 como cadena, y como tal,
      la imprimira)
      Se puede hacer: echo $((1+1))




      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Usando bash como calculadora


      Uno puede hacer uso del sistema de expresiones aritmeticas de
      bash
      Si hacen algo como: echo 1+1 - no obtendran los resultados
      adecuados (bash interpretara 1+1 como cadena, y como tal,
      la imprimira)
      Se puede hacer: echo $((1+1))
      Se puede hacer: echo $[1+1]




      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                   API de shell
                              Manos a la obra!


Usando bash como calculadora


      Uno puede hacer uso del sistema de expresiones aritmeticas de
      bash
      Si hacen algo como: echo 1+1 - no obtendran los resultados
      adecuados (bash interpretara 1+1 como cadena, y como tal,
      la imprimira)
      Se puede hacer: echo $((1+1))
      Se puede hacer: echo $[1+1]
      Solo funciona con enteros. Si necesita algo mas alla de ello,
      use bc



      Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                            o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Si necesita uno debugear




      Use #!/bin/bash -x




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Mas recursos


      BASH Prog howto - http://www.tldp.org/HOWTO/Bash-
      Prog-Intro-HOWTO.html




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Mas recursos


      BASH Prog howto - http://www.tldp.org/HOWTO/Bash-
      Prog-Intro-HOWTO.html
      man bash




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Mas recursos


      BASH Prog howto - http://www.tldp.org/HOWTO/Bash-
      Prog-Intro-HOWTO.html
      man bash
      Advanced Programming -
      http://www.tldp.org/LDP/abs/html/




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Mas recursos


      BASH Prog howto - http://www.tldp.org/HOWTO/Bash-
      Prog-Intro-HOWTO.html
      man bash
      Advanced Programming -
      http://www.tldp.org/LDP/abs/html/
      shc - http://www.datsi.fi.upm.es/ frosal/




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Mas recursos


      BASH Prog howto - http://www.tldp.org/HOWTO/Bash-
      Prog-Intro-HOWTO.html
      man bash
      Advanced Programming -
      http://www.tldp.org/LDP/abs/html/
      shc - http://www.datsi.fi.upm.es/ frosal/
      http://www.mechulk.com/docs/bash.pdf




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Mas recursos


      BASH Prog howto - http://www.tldp.org/HOWTO/Bash-
      Prog-Intro-HOWTO.html
      man bash
      Advanced Programming -
      http://www.tldp.org/LDP/abs/html/
      shc - http://www.datsi.fi.upm.es/ frosal/
      http://www.mechulk.com/docs/bash.pdf
      irc.freenode.org #lidsol




       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                    API de shell
                               Manos a la obra!


Mas recursos


      BASH Prog howto - http://www.tldp.org/HOWTO/Bash-
      Prog-Intro-HOWTO.html
      man bash
      Advanced Programming -
      http://www.tldp.org/LDP/abs/html/
      shc - http://www.datsi.fi.upm.es/ frosal/
      http://www.mechulk.com/docs/bash.pdf
      irc.freenode.org #lidsol
      mauropm@gmail.com



       Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                             o                 o
Shell: aquel desconocido
                                     API de shell
                                Manos a la obra!


Gracias por resistir hasta aqui!




       Tienen mas preguntas?




        Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                              o                 o
Shell: aquel desconocido
                                     API de shell
                                Manos a la obra!


Gracias por resistir hasta aqui!




       Tienen mas preguntas?
       man bash




        Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                              o                 o
Shell: aquel desconocido
                                     API de shell
                                Manos a la obra!


Gracias por resistir hasta aqui!




       Tienen mas preguntas?
       man bash
       http://www.mechulk.com/docs/bash.pdf




        Mauro Parra Miranda mauropm@gmail.com       Introducci´n a la programaci´n en Bash
                                                              o                 o

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

ATIX05
ATIX05ATIX05
ATIX05
 
El shell-bash
El shell-bashEl shell-bash
El shell-bash
 
Introducción a shell script
Introducción a shell scriptIntroducción a shell script
Introducción a shell script
 
11 suplemments
11 suplemments11 suplemments
11 suplemments
 
REPLs
REPLsREPLs
REPLs
 
Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)
 
Quasi - scripts-linux
Quasi - scripts-linuxQuasi - scripts-linux
Quasi - scripts-linux
 
Exposicion de php
Exposicion de phpExposicion de php
Exposicion de php
 
Dev c++
Dev c++Dev c++
Dev c++
 
Especialista Web J9 Php
Especialista Web J9  PhpEspecialista Web J9  Php
Especialista Web J9 Php
 
04.3.asterisk agi
04.3.asterisk agi04.3.asterisk agi
04.3.asterisk agi
 
Php Basico
Php BasicoPhp Basico
Php Basico
 
Conociendo PHP
Conociendo PHPConociendo PHP
Conociendo PHP
 
Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)
 
Php
PhpPhp
Php
 
Php curso03
Php   curso03Php   curso03
Php curso03
 
Introducción a PHP
Introducción a PHPIntroducción a PHP
Introducción a PHP
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Curso php y_my_sql
Curso php y_my_sqlCurso php y_my_sql
Curso php y_my_sql
 
Programacinenshell linux
Programacinenshell linuxProgramacinenshell linux
Programacinenshell linux
 

Destacado

Programación en Bash
Programación en BashProgramación en Bash
Programación en BashRafael Bucio
 
Linux basico-8.PDF
Linux basico-8.PDFLinux basico-8.PDF
Linux basico-8.PDFULEAM
 
Conceptos básicos del shell
Conceptos básicos del shellConceptos básicos del shell
Conceptos básicos del shellgschuldt23
 
Primeros Programas Shell Script
Primeros Programas Shell ScriptPrimeros Programas Shell Script
Primeros Programas Shell ScriptPablo Macon
 
Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Alan Resendiz
 
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASHCOMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASHUniversidad de Guayaquil
 
Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in LinuxAnu Chaudhry
 

Destacado (11)

Curso Bash 1
Curso Bash 1Curso Bash 1
Curso Bash 1
 
Programación en Bash
Programación en BashProgramación en Bash
Programación en Bash
 
Linux basico-8.PDF
Linux basico-8.PDFLinux basico-8.PDF
Linux basico-8.PDF
 
Conceptos básicos del shell
Conceptos básicos del shellConceptos básicos del shell
Conceptos básicos del shell
 
bash
bashbash
bash
 
Primeros Programas Shell Script
Primeros Programas Shell ScriptPrimeros Programas Shell Script
Primeros Programas Shell Script
 
Curso Bash 2
Curso Bash 2Curso Bash 2
Curso Bash 2
 
Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.
 
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASHCOMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
COMANDOS SHELL Y PROGRAMACIÓN EN LA SHELL DEL BASH
 
Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in Linux
 
Shell programming
Shell programmingShell programming
Shell programming
 

Similar a Introducción a la programación en Bash

Script presentacion
Script presentacionScript presentacion
Script presentacionVanne Napa
 
Programacion
ProgramacionProgramacion
Programaciontelmalj
 
METODOS DE ELEMENTOS DE PROGRAMACIÒN
METODOS DE ELEMENTOS DE PROGRAMACIÒNMETODOS DE ELEMENTOS DE PROGRAMACIÒN
METODOS DE ELEMENTOS DE PROGRAMACIÒNFreddy Cedeño
 
Lenguajes de Programacion
Lenguajes de ProgramacionLenguajes de Programacion
Lenguajes de ProgramacionAdrianGalarza
 
Programacion
ProgramacionProgramacion
Programacionleonadan
 
Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programaciónzanahoria2015
 
Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programaciónzanahoria2015
 
Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programaciónzanahoria2015
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEfrain Godoy
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEfrain Godoy
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a ObjetosManuel Antonio
 
Backup of quick basic
Backup of quick basicBackup of quick basic
Backup of quick basicPablo Acosta
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEfrain Godoy
 
Script Y Comandos De Linux
Script Y Comandos De LinuxScript Y Comandos De Linux
Script Y Comandos De Linuxsilvanetorres
 
Urso de pascal por nacho cabanes
Urso de pascal por nacho cabanesUrso de pascal por nacho cabanes
Urso de pascal por nacho cabanesErick653
 

Similar a Introducción a la programación en Bash (20)

Script presentacion
Script presentacionScript presentacion
Script presentacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
METODOS DE ELEMENTOS DE PROGRAMACIÒN
METODOS DE ELEMENTOS DE PROGRAMACIÒNMETODOS DE ELEMENTOS DE PROGRAMACIÒN
METODOS DE ELEMENTOS DE PROGRAMACIÒN
 
Lenguajes de Programacion
Lenguajes de ProgramacionLenguajes de Programacion
Lenguajes de Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Karel el robot c6. p2. i2.
Karel el robot c6. p2. i2.Karel el robot c6. p2. i2.
Karel el robot c6. p2. i2.
 
Karel el robot c7. p2. i2.
Karel el robot c7. p2. i2.Karel el robot c7. p2. i2.
Karel el robot c7. p2. i2.
 
Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programación
 
Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programación
 
Presentación lenguajes de programación
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programación
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajes
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajes
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Backup of quick basic
Backup of quick basicBackup of quick basic
Backup of quick basic
 
Estructura sintactica de los lenguajes
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajes
 
Script Y Comandos De Linux
Script Y Comandos De LinuxScript Y Comandos De Linux
Script Y Comandos De Linux
 
Urso de pascal por nacho cabanes
Urso de pascal por nacho cabanesUrso de pascal por nacho cabanes
Urso de pascal por nacho cabanes
 
2 poo u1 2 Hola mundo
2 poo u1 2 Hola mundo2 poo u1 2 Hola mundo
2 poo u1 2 Hola mundo
 
Rafael reyes
Rafael reyesRafael reyes
Rafael reyes
 

Más de Mauro Parra-Miranda

Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Mauro Parra-Miranda
 
¿Cómo crear un dream team de ciberseguridad?
¿Cómo crear un dream team de ciberseguridad?¿Cómo crear un dream team de ciberseguridad?
¿Cómo crear un dream team de ciberseguridad?Mauro Parra-Miranda
 
Startuplie - un ejercicio de sinceridad en español
Startuplie - un ejercicio de sinceridad en españolStartuplie - un ejercicio de sinceridad en español
Startuplie - un ejercicio de sinceridad en españolMauro Parra-Miranda
 
Usando azure para escalar tu producto
Usando azure para escalar tu productoUsando azure para escalar tu producto
Usando azure para escalar tu productoMauro Parra-Miranda
 
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkAWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkMauro Parra-Miranda
 
Del startup al negocio, the missing manual
Del startup al negocio, the missing manualDel startup al negocio, the missing manual
Del startup al negocio, the missing manualMauro Parra-Miranda
 
Cómo crear un dream team técnico - CPMX4 - 2013
Cómo crear un dream team técnico - CPMX4 - 2013Cómo crear un dream team técnico - CPMX4 - 2013
Cómo crear un dream team técnico - CPMX4 - 2013Mauro Parra-Miranda
 
Programando Windows Phone con Phonegap
Programando Windows Phone con PhonegapProgramando Windows Phone con Phonegap
Programando Windows Phone con PhonegapMauro Parra-Miranda
 
Mercado de Móviles: Una visión global
Mercado de Móviles: Una visión globalMercado de Móviles: Una visión global
Mercado de Móviles: Una visión globalMauro Parra-Miranda
 
Desarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioMauro Parra-Miranda
 
Desarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioMauro Parra-Miranda
 

Más de Mauro Parra-Miranda (20)

Configuraciones inseguras
Configuraciones insegurasConfiguraciones inseguras
Configuraciones inseguras
 
Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101
 
¿Cómo crear un dream team de ciberseguridad?
¿Cómo crear un dream team de ciberseguridad?¿Cómo crear un dream team de ciberseguridad?
¿Cómo crear un dream team de ciberseguridad?
 
Startuplie - un ejercicio de sinceridad en español
Startuplie - un ejercicio de sinceridad en españolStartuplie - un ejercicio de sinceridad en español
Startuplie - un ejercicio de sinceridad en español
 
Usando azure para escalar tu producto
Usando azure para escalar tu productoUsando azure para escalar tu producto
Usando azure para escalar tu producto
 
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkAWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
 
Fractura Sismo
Fractura SismoFractura Sismo
Fractura Sismo
 
Del startup al negocio, the missing manual
Del startup al negocio, the missing manualDel startup al negocio, the missing manual
Del startup al negocio, the missing manual
 
AppHack GDL 2013
AppHack GDL 2013AppHack GDL 2013
AppHack GDL 2013
 
Cómo crear un dream team técnico - CPMX4 - 2013
Cómo crear un dream team técnico - CPMX4 - 2013Cómo crear un dream team técnico - CPMX4 - 2013
Cómo crear un dream team técnico - CPMX4 - 2013
 
NodeJS @ ACS
NodeJS @ ACSNodeJS @ ACS
NodeJS @ ACS
 
Alloy Preview
Alloy PreviewAlloy Preview
Alloy Preview
 
Programando Windows Phone con Phonegap
Programando Windows Phone con PhonegapProgramando Windows Phone con Phonegap
Programando Windows Phone con Phonegap
 
Mercado de Móviles: Una visión global
Mercado de Móviles: Una visión globalMercado de Móviles: Una visión global
Mercado de Móviles: Una visión global
 
Economía de las Apps
Economía de las AppsEconomía de las Apps
Economía de las Apps
 
Mobileads
MobileadsMobileads
Mobileads
 
Frameworks iOS
Frameworks iOSFrameworks iOS
Frameworks iOS
 
Desarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium Studio
 
Desarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium Studio
 
Moviles
MovilesMoviles
Moviles
 

Último

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 

Último (10)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Introducción a la programación en Bash

  • 1. Shell: aquel desconocido API de shell Manos a la obra! Introducci´n a la programaci´n en Bash o o Mauro Parra Miranda mauropm@gmail.com November 19, 2005 Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 2. Shell: aquel desconocido API de shell Manos a la obra! Qu´ es un shell e El shell es un interprete de comandos Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 3. Shell: aquel desconocido API de shell Manos a la obra! Qu´ es un shell e El shell es un interprete de comandos Pero tambien es un lenguaje Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 4. Shell: aquel desconocido API de shell Manos a la obra! Qu´ es un shell e El shell es un interprete de comandos Pero tambien es un lenguaje El conjunto de comandos es un script Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 5. Shell: aquel desconocido API de shell Manos a la obra! Qu´ es un shell e El shell es un interprete de comandos Pero tambien es un lenguaje El conjunto de comandos es un script Un script sirve como ’pegamento’ de diversos comandos sencillos, que en conjunto son considerablemente poderosos. Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 6. Shell: aquel desconocido API de shell Manos a la obra! Por qu´ aprender a programarlo? e Te evita hacer tareas repetitivas Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 7. Shell: aquel desconocido API de shell Manos a la obra! Por qu´ aprender a programarlo? e Te evita hacer tareas repetitivas Es bueno conocerlos, alg´n dia resolver´ algun problema como u a con los scripts en /etc/rc.d Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 8. Shell: aquel desconocido API de shell Manos a la obra! Por qu´ aprender a programarlo? e Te evita hacer tareas repetitivas Es bueno conocerlos, alg´n dia resolver´ algun problema como u a con los scripts en /etc/rc.d Es facil de aprender: piensa que quieres hacer - escribelo - revisalo (ahora ponlo todo en un archivo o script) Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 9. Shell: aquel desconocido API de shell Manos a la obra! Por qu´ aprender a programarlo? e Te evita hacer tareas repetitivas Es bueno conocerlos, alg´n dia resolver´ algun problema como u a con los scripts en /etc/rc.d Es facil de aprender: piensa que quieres hacer - escribelo - revisalo (ahora ponlo todo en un archivo o script) Usualmente no tienes que debugear mucho, es como si vaciaras lo que harias en el prompt de comandos, pero escrito en un archivo. Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 10. Shell: aquel desconocido API de shell Manos a la obra! Por qu´ aprender a programarlo? e Te evita hacer tareas repetitivas Es bueno conocerlos, alg´n dia resolver´ algun problema como u a con los scripts en /etc/rc.d Es facil de aprender: piensa que quieres hacer - escribelo - revisalo (ahora ponlo todo en un archivo o script) Usualmente no tienes que debugear mucho, es como si vaciaras lo que harias en el prompt de comandos, pero escrito en un archivo. Es ideal para hacer algunos prototipos Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 11. Shell: aquel desconocido API de shell Manos a la obra! Por qu´ aprender a programarlo? e Te evita hacer tareas repetitivas Es bueno conocerlos, alg´n dia resolver´ algun problema como u a con los scripts en /etc/rc.d Es facil de aprender: piensa que quieres hacer - escribelo - revisalo (ahora ponlo todo en un archivo o script) Usualmente no tienes que debugear mucho, es como si vaciaras lo que harias en el prompt de comandos, pero escrito en un archivo. Es ideal para hacer algunos prototipos Es muy *nix: Keep It Simple Stupid! (divide y venceras) Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 12. Shell: aquel desconocido API de shell Manos a la obra! No se use en caso de... Hacer matem´ticas intensas - Use Fortran (si aun existe) a Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 13. Shell: aquel desconocido API de shell Manos a la obra! No se use en caso de... Hacer matem´ticas intensas - Use Fortran (si aun existe) a Requerir super portabilidad - Use Java, .NET o ’C’ Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 14. Shell: aquel desconocido API de shell Manos a la obra! No se use en caso de... Hacer matem´ticas intensas - Use Fortran (si aun existe) a Requerir super portabilidad - Use Java, .NET o ’C’ Aplicaciones complejas - Por ejemplo, que requieran estructuras mas elaboradas Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 15. Shell: aquel desconocido API de shell Manos a la obra! No se use en caso de... Hacer matem´ticas intensas - Use Fortran (si aun existe) a Requerir super portabilidad - Use Java, .NET o ’C’ Aplicaciones complejas - Por ejemplo, que requieran estructuras mas elaboradas Aplicaciones de misi´n critica o Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 16. Shell: aquel desconocido API de shell Manos a la obra! No se use en caso de... Hacer matem´ticas intensas - Use Fortran (si aun existe) a Requerir super portabilidad - Use Java, .NET o ’C’ Aplicaciones complejas - Por ejemplo, que requieran estructuras mas elaboradas Aplicaciones de misi´n critica o Requerir estructuras de datos ’elegantes’ - Listas ligadas, arboles Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 17. Shell: aquel desconocido API de shell Manos a la obra! No se use en caso de... Hacer matem´ticas intensas - Use Fortran (si aun existe) a Requerir super portabilidad - Use Java, .NET o ’C’ Aplicaciones complejas - Por ejemplo, que requieran estructuras mas elaboradas Aplicaciones de misi´n critica o Requerir estructuras de datos ’elegantes’ - Listas ligadas, arboles Crear Aplicaciones propietarias - Es dificil de ofuscar :) Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 18. Shell: aquel desconocido API de shell Manos a la obra! API del shell Todo comando de *nix puede ser invocado Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 19. Shell: aquel desconocido API de shell Manos a la obra! API del shell Todo comando de *nix puede ser invocado Comandos de testing Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 20. Shell: aquel desconocido API de shell Manos a la obra! API del shell Todo comando de *nix puede ser invocado Comandos de testing loops - ciclos Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 21. Shell: aquel desconocido API de shell Manos a la obra! API del shell Todo comando de *nix puede ser invocado Comandos de testing loops - ciclos Tus propios programas o scripts son parte del API! Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 22. Shell: aquel desconocido API de shell Manos a la obra! C´mo creo un script? o Crea un archivo miscript.sh con tu editor de textos favorito Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 23. Shell: aquel desconocido API de shell Manos a la obra! C´mo creo un script? o Crea un archivo miscript.sh con tu editor de textos favorito Dale permisos de ejecuci´n: chmod +x miscript.sh o Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 24. Shell: aquel desconocido API de shell Manos a la obra! C´mo creo un script? o Crea un archivo miscript.sh con tu editor de textos favorito Dale permisos de ejecuci´n: chmod +x miscript.sh o Ejecutalo: ./miscript.sh Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 25. Shell: aquel desconocido API de shell Manos a la obra! C´mo creo un script? o Crea un archivo miscript.sh con tu editor de textos favorito Dale permisos de ejecuci´n: chmod +x miscript.sh o Ejecutalo: ./miscript.sh Listo! Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 26. Shell: aquel desconocido API de shell Manos a la obra! C´mo creo un script? o Crea un archivo miscript.sh con tu editor de textos favorito Dale permisos de ejecuci´n: chmod +x miscript.sh o Ejecutalo: ./miscript.sh Listo! En serio, eso es todo. :) Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 27. Shell: aquel desconocido API de shell Manos a la obra! Hola mundo! #!/bin/bash echo ’Hello world’ Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 28. Shell: aquel desconocido API de shell Manos a la obra! Corriendo el script Guardarlo en el archivo script.sh Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 29. Shell: aquel desconocido API de shell Manos a la obra! Corriendo el script Guardarlo en el archivo script.sh chmod +x script.sh Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 30. Shell: aquel desconocido API de shell Manos a la obra! Corriendo el script Guardarlo en el archivo script.sh chmod +x script.sh ./script.sh Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 31. Shell: aquel desconocido API de shell Manos a la obra! Respaldo #!/bin/bashLimpieza DATE=‘date +%d-%m-%y‘ USER=foobar echo ’Comenzando el backup’ tar cjvf /tmp/$USER-$DATE.tbz /home/foobar echo ’Backup terminado’ Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 32. Shell: aquel desconocido API de shell Manos a la obra! Redireccionando Redireccionar stdout a un archivo Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 33. Shell: aquel desconocido API de shell Manos a la obra! Redireccionando Redireccionar stdout a un archivo Redireccionar stderr a un archivo Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 34. Shell: aquel desconocido API de shell Manos a la obra! Redireccionando Redireccionar stdout a un archivo Redireccionar stderr a un archivo Redireccionar stdout a stderr Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 35. Shell: aquel desconocido API de shell Manos a la obra! Redireccionando Redireccionar stdout a un archivo Redireccionar stderr a un archivo Redireccionar stdout a stderr Redireccionar stderr a stdout Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 36. Shell: aquel desconocido API de shell Manos a la obra! Redireccionando Redireccionar stdout a un archivo Redireccionar stderr a un archivo Redireccionar stdout a stderr Redireccionar stderr a stdout Redireccionar stdout y stderr a un archivo Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 37. Shell: aquel desconocido API de shell Manos a la obra! Ejemplo de redireccionamiento ls -l >ls-l.txt Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 38. Shell: aquel desconocido API de shell Manos a la obra! Ejemplo de redireccionamiento grep da * 2> grep-errors.txt Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 39. Shell: aquel desconocido API de shell Manos a la obra! Ejemplo de redireccionamiento grep da * 1>&2 grep-errors.txt Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 40. Shell: aquel desconocido API de shell Manos a la obra! Ejemplo de redireccionamiento grep * 2>&1 Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 41. Shell: aquel desconocido API de shell Manos a la obra! Ejemplo de redireccionamiento rm -f $(find / -name core) &> /dev/null Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 42. Shell: aquel desconocido API de shell Manos a la obra! Tuberias o Pipes Una tuberia sirve para redireccionar la salida de un comando a la entrada de otro Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 43. Shell: aquel desconocido API de shell Manos a la obra! Tuberias o Pipes Una tuberia sirve para redireccionar la salida de un comando a la entrada de otro Por omision, la salida estandar sera redireccionada a la entrada estandar del otro programa Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 44. Shell: aquel desconocido API de shell Manos a la obra! Ejemplo de tuberia ls -l | grep ‘‘.txt$’’ Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 45. Shell: aquel desconocido API de shell Manos a la obra! Variables Las variables no necesitan ser declaradas Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 46. Shell: aquel desconocido API de shell Manos a la obra! Variables Las variables no necesitan ser declaradas Son dinamicas ademas (no tienes que ’alojar’ memoria) Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 47. Shell: aquel desconocido API de shell Manos a la obra! Hola mundo! meet variables #!/bin/bash STR=’’Hello world!’’ echo $STR Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 48. Shell: aquel desconocido API de shell Manos a la obra! Respaldo #!/bin/bash OF=/var/my-backup-$(date +%Y%m%d).tgz tar -cZf $OF /home/me/#!/bin/bash Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 49. Shell: aquel desconocido API de shell Manos a la obra! Hola mundo! #!/bin/bash HELLO=Hello function hello { local HELLO=World echo $HELLO } echo $HELLO hello echo $HELLO Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 50. Shell: aquel desconocido API de shell Manos a la obra! Condicionales Tenemos if’s en bash! Con diferentes sabores Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 51. Shell: aquel desconocido API de shell Manos a la obra! Condicionales Tenemos if’s en bash! Con diferentes sabores if expression then statement Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 52. Shell: aquel desconocido API de shell Manos a la obra! Condicionales Tenemos if’s en bash! Con diferentes sabores if expression then statement if expression then statement1 else statement2 Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 53. Shell: aquel desconocido API de shell Manos a la obra! Condicionales Tenemos if’s en bash! Con diferentes sabores if expression then statement if expression then statement1 else statement2 if expression1 then statement1 else if expression2 then statement2 else statement3 Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 54. Shell: aquel desconocido API de shell Manos a la obra! Ejemplo de if-then #!/bin/bash if [ ‘‘foo’’ = ‘‘foo’’ ]; then echo ‘‘Cierto, foo == foo’’ fi Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 55. Shell: aquel desconocido API de shell Manos a la obra! Ejemplo de if-then-else #!/bin/bash if [ ‘‘foo’’ = ‘‘foo’’ ]; then echo ‘‘Cierto, foo == foo’’ else echo ‘‘Era falsa’’ fi Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 56. Shell: aquel desconocido API de shell Manos a la obra! Cuando las variables y condicionales se encuentran #!/bin/bash T1=’’foo’’ T2=’’bar’’ if [ $T1 = $T2 ]; then echo ‘‘Cierto, ‘‘$T1’’== ‘‘$T2 else echo ‘‘No es cierto’’ fi Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 57. Shell: aquel desconocido API de shell Manos a la obra! –Fruit– Loops err... ciclos for - es un poco diferente, puedes iterar sobre cadenas o palabras en las cadenas Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 58. Shell: aquel desconocido API de shell Manos a la obra! –Fruit– Loops err... ciclos for - es un poco diferente, puedes iterar sobre cadenas o palabras en las cadenas while - ejecuta un pedazo de codigo si una condicion se cumple, y para cuando es falsa Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 59. Shell: aquel desconocido API de shell Manos a la obra! –Fruit– Loops err... ciclos for - es un poco diferente, puedes iterar sobre cadenas o palabras en las cadenas while - ejecuta un pedazo de codigo si una condicion se cumple, y para cuando es falsa until - ejecuta un pedazo de codigo, hasta que una expresion sea falsa Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 60. Shell: aquel desconocido API de shell Manos a la obra! –Fruit– Loops err... ciclos for - es un poco diferente, puedes iterar sobre cadenas o palabras en las cadenas while - ejecuta un pedazo de codigo si una condicion se cumple, y para cuando es falsa until - ejecuta un pedazo de codigo, hasta que una expresion sea falsa Cuide sus expresiones, no vaya a caer en un ciclo infinito Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 61. Shell: aquel desconocido API de shell Manos a la obra! Mi primer for #!/bin/bash for i in $( ls ); do echo item: $i done Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 62. Shell: aquel desconocido API de shell Manos a la obra! Mira mam´, como en C a #!/bin/bash for i in ‘seq 1 10‘; do echo $i done Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 63. Shell: aquel desconocido API de shell Manos a la obra! El while #!/bin/bash COUNTER=0 while [ $COUNTER -lt 10 ]; do echo The counter is $COUNTER let COUNTER=COUNTER+1 done Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 64. Shell: aquel desconocido API de shell Manos a la obra! hey! que era eso de let? Note el uso de let, let lo que hace es evaluar arithmeticamente la expresion que sigue Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 65. Shell: aquel desconocido API de shell Manos a la obra! hey! que era eso de let? Note el uso de let, let lo que hace es evaluar arithmeticamente la expresion que sigue Para mas en expresiones aritmeticas, da: ’man bash’ y busca ARITHMETIC EVALUATION Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 66. Shell: aquel desconocido API de shell Manos a la obra! El until #!/bin/bash COUNTER=20 until [ $COUNTER -lt 10 ]; do echo COUNTER $COUNTER let COUNTER-=1 done Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 67. Shell: aquel desconocido API de shell Manos a la obra! Funciones Para hacer los programas ordenados Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 68. Shell: aquel desconocido API de shell Manos a la obra! Funciones Para hacer los programas ordenados Para reusar codigo Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 69. Shell: aquel desconocido API de shell Manos a la obra! Funciones Para hacer los programas ordenados Para reusar codigo Para ser recursivo Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 70. Shell: aquel desconocido API de shell Manos a la obra! Ejemplo de funcion #!/bin/bash function quit { exit } function hello { echo Hello! } hello quit echo foo Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 71. Shell: aquel desconocido API de shell Manos a la obra! Ejemplo de funciones con argumentos #!/bin/bash function quit { exit } function e { echo $1 } e Hello e World quit echo foo Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 72. Shell: aquel desconocido API de shell Manos a la obra! Haciendo un men´ u Podemos hacer un menu en shell! Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 73. Shell: aquel desconocido API de shell Manos a la obra! Menu simple #!/bin/bash OPTIONS=’’Hello Quit’’ select opt in $OPTIONS; do if [ ‘‘$opt’’ = ‘‘Quit’’ ]; then echo done exit elif [ ‘‘$opt’’ = ‘‘Hello’’ ]; then echo Hello World else clear echo bad option fi done Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 74. Shell: aquel desconocido API de shell Manos a la obra! Revisando argumentos Para completar el menu, tenemos forma de revisar los argumentos! Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 75. Shell: aquel desconocido API de shell Manos a la obra! Mira mam´, con argumentos! a #!/bin/bash if [ -z ‘‘$1’’ ]; then echo usage: $0 directory exit fi SRCD=$1 TGTD=’’/var/backups/’’ OF=home-$(date +%Y%m%d).tgz tar -cZf $TGTD$OF $SRCD done Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 76. Shell: aquel desconocido API de shell Manos a la obra! Leyendo entradas de los usuarios Podemos leer entradas ’interactivas’ del usuario Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 77. Shell: aquel desconocido API de shell Manos a la obra! Leyendo entradas de los usuarios Podemos leer entradas ’interactivas’ del usuario Notan que podemos hacer un facil juego en BASH? Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 78. Shell: aquel desconocido API de shell Manos a la obra! Leyendo entradas de los usuarios Podemos leer entradas ’interactivas’ del usuario Notan que podemos hacer un facil juego en BASH? Si, un juego en texto :) Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 79. Shell: aquel desconocido API de shell Manos a la obra! read #!/bin/bash echo Por favor, meta su nombre read NAME echo ‘‘Hi $NAME!’’ Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 80. Shell: aquel desconocido API de shell Manos a la obra! + reads #!/bin/bash echo Por favor, meta su nombre y apellido read FN LN echo ‘‘Hi! $LN, $FN !’’ Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 81. Shell: aquel desconocido API de shell Manos a la obra! Usando bash como calculadora Uno puede hacer uso del sistema de expresiones aritmeticas de bash Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 82. Shell: aquel desconocido API de shell Manos a la obra! Usando bash como calculadora Uno puede hacer uso del sistema de expresiones aritmeticas de bash Si hacen algo como: echo 1+1 - no obtendran los resultados adecuados (bash interpretara 1+1 como cadena, y como tal, la imprimira) Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 83. Shell: aquel desconocido API de shell Manos a la obra! Usando bash como calculadora Uno puede hacer uso del sistema de expresiones aritmeticas de bash Si hacen algo como: echo 1+1 - no obtendran los resultados adecuados (bash interpretara 1+1 como cadena, y como tal, la imprimira) Se puede hacer: echo $((1+1)) Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 84. Shell: aquel desconocido API de shell Manos a la obra! Usando bash como calculadora Uno puede hacer uso del sistema de expresiones aritmeticas de bash Si hacen algo como: echo 1+1 - no obtendran los resultados adecuados (bash interpretara 1+1 como cadena, y como tal, la imprimira) Se puede hacer: echo $((1+1)) Se puede hacer: echo $[1+1] Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 85. Shell: aquel desconocido API de shell Manos a la obra! Usando bash como calculadora Uno puede hacer uso del sistema de expresiones aritmeticas de bash Si hacen algo como: echo 1+1 - no obtendran los resultados adecuados (bash interpretara 1+1 como cadena, y como tal, la imprimira) Se puede hacer: echo $((1+1)) Se puede hacer: echo $[1+1] Solo funciona con enteros. Si necesita algo mas alla de ello, use bc Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 86. Shell: aquel desconocido API de shell Manos a la obra! Si necesita uno debugear Use #!/bin/bash -x Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 87. Shell: aquel desconocido API de shell Manos a la obra! Mas recursos BASH Prog howto - http://www.tldp.org/HOWTO/Bash- Prog-Intro-HOWTO.html Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 88. Shell: aquel desconocido API de shell Manos a la obra! Mas recursos BASH Prog howto - http://www.tldp.org/HOWTO/Bash- Prog-Intro-HOWTO.html man bash Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 89. Shell: aquel desconocido API de shell Manos a la obra! Mas recursos BASH Prog howto - http://www.tldp.org/HOWTO/Bash- Prog-Intro-HOWTO.html man bash Advanced Programming - http://www.tldp.org/LDP/abs/html/ Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 90. Shell: aquel desconocido API de shell Manos a la obra! Mas recursos BASH Prog howto - http://www.tldp.org/HOWTO/Bash- Prog-Intro-HOWTO.html man bash Advanced Programming - http://www.tldp.org/LDP/abs/html/ shc - http://www.datsi.fi.upm.es/ frosal/ Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 91. Shell: aquel desconocido API de shell Manos a la obra! Mas recursos BASH Prog howto - http://www.tldp.org/HOWTO/Bash- Prog-Intro-HOWTO.html man bash Advanced Programming - http://www.tldp.org/LDP/abs/html/ shc - http://www.datsi.fi.upm.es/ frosal/ http://www.mechulk.com/docs/bash.pdf Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 92. Shell: aquel desconocido API de shell Manos a la obra! Mas recursos BASH Prog howto - http://www.tldp.org/HOWTO/Bash- Prog-Intro-HOWTO.html man bash Advanced Programming - http://www.tldp.org/LDP/abs/html/ shc - http://www.datsi.fi.upm.es/ frosal/ http://www.mechulk.com/docs/bash.pdf irc.freenode.org #lidsol Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 93. Shell: aquel desconocido API de shell Manos a la obra! Mas recursos BASH Prog howto - http://www.tldp.org/HOWTO/Bash- Prog-Intro-HOWTO.html man bash Advanced Programming - http://www.tldp.org/LDP/abs/html/ shc - http://www.datsi.fi.upm.es/ frosal/ http://www.mechulk.com/docs/bash.pdf irc.freenode.org #lidsol mauropm@gmail.com Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 94. Shell: aquel desconocido API de shell Manos a la obra! Gracias por resistir hasta aqui! Tienen mas preguntas? Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 95. Shell: aquel desconocido API de shell Manos a la obra! Gracias por resistir hasta aqui! Tienen mas preguntas? man bash Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o
  • 96. Shell: aquel desconocido API de shell Manos a la obra! Gracias por resistir hasta aqui! Tienen mas preguntas? man bash http://www.mechulk.com/docs/bash.pdf Mauro Parra Miranda mauropm@gmail.com Introducci´n a la programaci´n en Bash o o