Introducción a la programación en Bash

Mauro Parra-Miranda
Mauro Parra-MirandaSoftware Developer at Appcelerator
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
1 of 96

Recommended

Taller de Shell Scripting by
Taller de Shell ScriptingTaller de Shell Scripting
Taller de Shell ScriptingEnrique Verdes
1.4K views30 slides
The linux shell. Shell Scripting desde 0 by
The linux shell. Shell Scripting desde 0The linux shell. Shell Scripting desde 0
The linux shell. Shell Scripting desde 0Remigio Salvador Sánchez
1.8K views44 slides
Scripts by
ScriptsScripts
ScriptsDavid Tapia
1K views35 slides
Los scripts de linux by
Los scripts de linuxLos scripts de linux
Los scripts de linuxFernando Muñoz
622 views14 slides
Shell script en linux by
Shell script en linuxShell script en linux
Shell script en linuxCarlos Antonio Leal Saballos
1.9K views20 slides
Creacion de scripts en linux by
Creacion de scripts en linuxCreacion de scripts en linux
Creacion de scripts en linuxGabriel Calderon
10K views12 slides

More Related Content

What's hot

ATIX05 by
ATIX05ATIX05
ATIX05AtixLibre Fundacion
287 views58 slides
El shell-bash by
El shell-bashEl shell-bash
El shell-bashlluera
1.5K views41 slides
Introducción a shell script by
Introducción a shell scriptIntroducción a shell script
Introducción a shell scriptPablo Macon
630 views34 slides
11 suplemments by
11 suplemments11 suplemments
11 suplemmentscyberleon95
855 views24 slides
REPLs by
REPLsREPLs
REPLsAntonio Ognio
707 views33 slides
Lenguaje de programacion_c(2) by
Lenguaje de programacion_c(2)Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)gadiel1515
91 views6 slides

What's hot(20)

El shell-bash by lluera
El shell-bashEl shell-bash
El shell-bash
lluera1.5K views
Introducción a shell script by Pablo Macon
Introducción a shell scriptIntroducción a shell script
Introducción a shell script
Pablo Macon630 views
Lenguaje de programacion_c(2) by gadiel1515
Lenguaje de programacion_c(2)Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)
gadiel151591 views
Quasi - scripts-linux by degarden
Quasi - scripts-linuxQuasi - scripts-linux
Quasi - scripts-linux
degarden1.4K views
Exposicion de php by angie barre
Exposicion de phpExposicion de php
Exposicion de php
angie barre2.5K views
Instalar Python 2.7 y 3 en Windows (Anaconda) by CAChemE
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)
CAChemE20.9K views
Introducción a PHP by jdaniel_7ez
Introducción a PHPIntroducción a PHP
Introducción a PHP
jdaniel_7ez2.1K views
Estructuras de control by Lismirabal
Estructuras de controlEstructuras de control
Estructuras de control
Lismirabal945 views
Programacinenshell linux by usupr2014
Programacinenshell linuxProgramacinenshell linux
Programacinenshell linux
usupr2014322 views

Viewers also liked

Curso Bash 1 by
Curso Bash 1Curso Bash 1
Curso Bash 1Antonio Durán
1.3K views71 slides
Programación en Bash by
Programación en BashProgramación en Bash
Programación en BashRafael Bucio
1.5K views40 slides
Linux basico-8.PDF by
Linux basico-8.PDFLinux basico-8.PDF
Linux basico-8.PDFULEAM
889 views25 slides
Conceptos básicos del shell by
Conceptos básicos del shellConceptos básicos del shell
Conceptos básicos del shellgschuldt23
1.1K views8 slides
bash by
bashbash
bashJeCg CeGa
1.1K views71 slides
Primeros Programas Shell Script by
Primeros Programas Shell ScriptPrimeros Programas Shell Script
Primeros Programas Shell ScriptPablo Macon
1K views21 slides

Viewers also liked(11)

Programación en Bash by Rafael Bucio
Programación en BashProgramación en Bash
Programación en Bash
Rafael Bucio1.5K views
Linux basico-8.PDF by ULEAM
Linux basico-8.PDFLinux basico-8.PDF
Linux basico-8.PDF
ULEAM889 views
Conceptos básicos del shell by gschuldt23
Conceptos básicos del shellConceptos básicos del shell
Conceptos básicos del shell
gschuldt231.1K views
Primeros Programas Shell Script by Pablo Macon
Primeros Programas Shell ScriptPrimeros Programas Shell Script
Primeros Programas Shell Script
Pablo Macon1K views
Comandos GNU/Linux-Unix y programación shell. by Alan Resendiz
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 Resendiz5.8K views
Shell Scripting in Linux by Anu Chaudhry
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in Linux
Anu Chaudhry14.6K views

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

Script presentacion by
Script presentacionScript presentacion
Script presentacionVanne Napa
5K views43 slides
Programacion by
ProgramacionProgramacion
ProgramacionDelfys Solo YO
235 views49 slides
Programacion by
ProgramacionProgramacion
Programaciontelmalj
250 views49 slides
METODOS DE ELEMENTOS DE PROGRAMACIÒN by
METODOS DE ELEMENTOS DE PROGRAMACIÒNMETODOS DE ELEMENTOS DE PROGRAMACIÒN
METODOS DE ELEMENTOS DE PROGRAMACIÒNFreddy Cedeño
279 views49 slides
Lenguajes de Programacion by
Lenguajes de ProgramacionLenguajes de Programacion
Lenguajes de ProgramacionAdrianGalarza
221 views49 slides
Programacion by
ProgramacionProgramacion
Programacionleonadan
62 views49 slides

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

Script presentacion by Vanne Napa
Script presentacionScript presentacion
Script presentacion
Vanne Napa5K views
Programacion by telmalj
ProgramacionProgramacion
Programacion
telmalj250 views
METODOS DE ELEMENTOS DE PROGRAMACIÒN by Freddy Cedeño
METODOS DE ELEMENTOS DE PROGRAMACIÒNMETODOS DE ELEMENTOS DE PROGRAMACIÒN
METODOS DE ELEMENTOS DE PROGRAMACIÒN
Freddy Cedeño279 views
Lenguajes de Programacion by AdrianGalarza
Lenguajes de ProgramacionLenguajes de Programacion
Lenguajes de Programacion
AdrianGalarza221 views
Programacion by leonadan
ProgramacionProgramacion
Programacion
leonadan62 views
Presentación lenguajes de programación by zanahoria2015
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programación
zanahoria2015585 views
Presentación lenguajes de programación by zanahoria2015
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programación
zanahoria2015153 views
Presentación lenguajes de programación by zanahoria2015
Presentación lenguajes de programaciónPresentación lenguajes de programación
Presentación lenguajes de programación
zanahoria2015105 views
Estructura sintactica de los lenguajes by Efrain Godoy
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajes
Efrain Godoy203 views
Estructura sintactica de los lenguajes by Efrain Godoy
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajes
Efrain Godoy287 views
Programacion Orientada a Objetos by Manuel Antonio
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
Manuel Antonio748 views
Backup of quick basic by Pablo Acosta
Backup of quick basicBackup of quick basic
Backup of quick basic
Pablo Acosta2.3K views
Estructura sintactica de los lenguajes by Efrain Godoy
Estructura sintactica de los lenguajesEstructura sintactica de los lenguajes
Estructura sintactica de los lenguajes
Efrain Godoy384 views
Script Y Comandos De Linux by silvanetorres
Script Y Comandos De LinuxScript Y Comandos De Linux
Script Y Comandos De Linux
silvanetorres3.8K views
Urso de pascal por nacho cabanes by Erick653
Urso de pascal por nacho cabanesUrso de pascal por nacho cabanes
Urso de pascal por nacho cabanes
Erick6531.7K views
rafael reyesdiapositivas programacion de lenguajes basic by Andres Torres
rafael reyesdiapositivas programacion de lenguajes basicrafael reyesdiapositivas programacion de lenguajes basic
rafael reyesdiapositivas programacion de lenguajes basic
Andres Torres298 views

More from Mauro Parra-Miranda

Configuraciones inseguras by
Configuraciones insegurasConfiguraciones inseguras
Configuraciones insegurasMauro Parra-Miranda
55 views10 slides
Cloudevel - Microsoft Azure - 101 by
Cloudevel - Microsoft Azure - 101Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Mauro Parra-Miranda
38 views46 slides
¿Cómo crear un dream team de ciberseguridad? by
¿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
121 views14 slides
Startuplie - un ejercicio de sinceridad en español by
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
69 views28 slides
Usando azure para escalar tu producto by
Usando azure para escalar tu productoUsando azure para escalar tu producto
Usando azure para escalar tu productoMauro Parra-Miranda
77 views21 slides
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk by
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
173 views13 slides

More from Mauro Parra-Miranda(20)

Startuplie - un ejercicio de sinceridad en español by Mauro Parra-Miranda
Startuplie - un ejercicio de sinceridad en españolStartuplie - un ejercicio de sinceridad en español
Startuplie - un ejercicio de sinceridad en español
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk by Mauro Parra-Miranda
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkAWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
Cómo crear un dream team técnico - CPMX4 - 2013 by Mauro Parra-Miranda
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
Desarrollando Apps móviles con Titanium Studio by Mauro Parra-Miranda
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium Studio
Mauro Parra-Miranda1.9K views
Desarrollando Apps móviles con Titanium Studio by Mauro Parra-Miranda
Desarrollando Apps móviles con Titanium StudioDesarrollando Apps móviles con Titanium Studio
Desarrollando Apps móviles con Titanium Studio
Mauro Parra-Miranda2.9K views

Recently uploaded

Los principios de la Antropometria y Ergonomia.pdf by
Los principios de la Antropometria y Ergonomia.pdfLos principios de la Antropometria y Ergonomia.pdf
Los principios de la Antropometria y Ergonomia.pdfBenisBorges
6 views11 slides
EM.020 INSTALACIONES DE COMUNICACIONES.pdf by
EM.020 INSTALACIONES DE COMUNICACIONES.pdfEM.020 INSTALACIONES DE COMUNICACIONES.pdf
EM.020 INSTALACIONES DE COMUNICACIONES.pdfgilberenriquedavila
7 views4 slides
Fundamentos De Electricidad y Electrónica equipo 5.pdf by
Fundamentos De Electricidad y Electrónica equipo 5.pdfFundamentos De Electricidad y Electrónica equipo 5.pdf
Fundamentos De Electricidad y Electrónica equipo 5.pdfcoloradxmaria
14 views14 slides
proyecto lavadora.docx by
proyecto lavadora.docxproyecto lavadora.docx
proyecto lavadora.docxpaulavallejo21
11 views2 slides
PRESENTACIÓN.pptx by
PRESENTACIÓN.pptxPRESENTACIÓN.pptx
PRESENTACIÓN.pptxsusanaasotoleiva
6 views1 slide
Presentación: El impacto y peligro de la piratería de software by
Presentación: El impacto y peligro de la piratería de softwarePresentación: El impacto y peligro de la piratería de software
Presentación: El impacto y peligro de la piratería de softwareEmanuelMuoz11
17 views66 slides

Recently uploaded(20)

Los principios de la Antropometria y Ergonomia.pdf by BenisBorges
Los principios de la Antropometria y Ergonomia.pdfLos principios de la Antropometria y Ergonomia.pdf
Los principios de la Antropometria y Ergonomia.pdf
BenisBorges6 views
Fundamentos De Electricidad y Electrónica equipo 5.pdf by coloradxmaria
Fundamentos De Electricidad y Electrónica equipo 5.pdfFundamentos De Electricidad y Electrónica equipo 5.pdf
Fundamentos De Electricidad y Electrónica equipo 5.pdf
coloradxmaria14 views
Presentación: El impacto y peligro de la piratería de software by EmanuelMuoz11
Presentación: El impacto y peligro de la piratería de softwarePresentación: El impacto y peligro de la piratería de software
Presentación: El impacto y peligro de la piratería de software
EmanuelMuoz1117 views
Tecnologías para la enseñanza virtual.pptx by exprosaavedra
Tecnologías para la enseñanza virtual.pptxTecnologías para la enseñanza virtual.pptx
Tecnologías para la enseñanza virtual.pptx
exprosaavedra14 views
Fundamentos de Electricidad y Electronica 9-3 (1).docx by Samuel709479
Fundamentos de Electricidad y Electronica 9-3 (1).docxFundamentos de Electricidad y Electronica 9-3 (1).docx
Fundamentos de Electricidad y Electronica 9-3 (1).docx
Samuel7094797 views
MVelazco_Internet, Origenes y Evolucion.pptx by al223915
MVelazco_Internet, Origenes  y Evolucion.pptxMVelazco_Internet, Origenes  y Evolucion.pptx
MVelazco_Internet, Origenes y Evolucion.pptx
al2239156 views
Fundamentos de electricidad y electrónica.docx by DilanTabares
Fundamentos de electricidad y electrónica.docxFundamentos de electricidad y electrónica.docx
Fundamentos de electricidad y electrónica.docx
DilanTabares5 views
Fundamentos de Electricidad y Electronica 9-3 (1).docx by Samuel709479
Fundamentos de Electricidad y Electronica 9-3 (1).docxFundamentos de Electricidad y Electronica 9-3 (1).docx
Fundamentos de Electricidad y Electronica 9-3 (1).docx
Samuel7094795 views
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docx by MaraJos722801
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docxactividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docx
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docx
MaraJos7228015 views
fundamentos de electricidad electronica by Kevin619029
fundamentos de electricidad electronicafundamentos de electricidad electronica
fundamentos de electricidad electronica
Kevin6190295 views
Tecnologías para la enseñanza virtual_cdc.pptx by CarmenerdelHuasco
Tecnologías para la enseñanza virtual_cdc.pptxTecnologías para la enseñanza virtual_cdc.pptx
Tecnologías para la enseñanza virtual_cdc.pptx
Tecnologías para la enseñanza virtual by mpachecocodem
Tecnologías para la enseñanza virtual Tecnologías para la enseñanza virtual
Tecnologías para la enseñanza virtual
mpachecocodem9 views
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx by dreadlockp5
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptxCÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx
dreadlockp58 views

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