Programación en Bash

Post on 23-Jun-2015

3.413 views 6 download

description

Introducción a la Programación en bash

Transcript of Programación en Bash

#!/bin/bash

Rafael BucioUniversidad Politecnica de Chiapas

Que es Bash ??

Bourne-Again SHell (otro shell bourne)

Haciendo un juego de palabras (born-again significa renacimiento)

Sobre el Bourne shell (sh) → que fue uno de los primeros intérpretes importantes de Unix.

Hacia 1978 el shell Bourne era el shell distribuido con el Unix Version 7.

Es un Interprete de comandos. no necesita compi lar :D

Como encontrarlo ??

Aplicaciones → accesorios → Terminal

Tecleamos:

locate bashlocate bash

Para ser mas exactos:

which bashwhich bash

¿Qué necesito?:¿Qué necesito?:

● Editor de texto, gedit, vim etc..Editor de texto, gedit, vim etc..

● Comandos Basicos Unix.Comandos Basicos Unix.

● Un poco de XMLUn poco de XML

Comandos BasicosComandos Basicos

$ $ cdcd → → Cambiar el directorio de trabajo (change directory)Cambiar el directorio de trabajo (change directory)

$$ ls ls →→ Listar el contenido de directorios (list)Listar el contenido de directorios (list)

$$ mkdir mkdir →→ Crear un directorio (make directory) Crear un directorio (make directory)

$$ rmdir rmdir →→ Borrar un directorio (remove directory)Borrar un directorio (remove directory)

$ $ cp cp →→ Copiar un archivo o directorio en el directorio especificado (copy)Copiar un archivo o directorio en el directorio especificado (copy)

$$ mv mv →→ Mover un archivo o directorio a un archivo o directorio. Se utiliza también para renombrar; Mover un archivo o directorio a un archivo o directorio. Se utiliza también para renombrar; el origen y destino es un archivo (move)el origen y destino es un archivo (move)

$ $ rm rm →→ Borrar archivos o directorios (remove):Borrar archivos o directorios (remove):

$ cat $ cat →→ Mostrar por pantalla el contenido de los archivos por la salida estándar.Mostrar por pantalla el contenido de los archivos por la salida estándar.

$ find $ find →→ Buscar archivos recorriendo árboles de directorios especificados por las rutas.Buscar archivos recorriendo árboles de directorios especificados por las rutas.

$ pwd $ pwd →→ Mostrar el nombre del directorio en el que uno se encuentra situado Mostrar el nombre del directorio en el que uno se encuentra situado

$chmod $chmod →→ Cambiar los permisos de el archivo.Cambiar los permisos de el archivo.

$echo$echo → → Sacar por la salida standard (la pantalla) lo que se le pasa por parámetro, puede ser texto o Sacar por la salida standard (la pantalla) lo que se le pasa por parámetro, puede ser texto o una variable una variable

Estructura.Estructura.

#!/bin/bash#!/bin/bash

##

# Esto es un comentario# Esto es un comentario

##

comandocomando

comandocomando

comandocomando

..........

#! Se conoce con el nombre de Sha Bang. /bin/bash Lo que vamos a usar ya sea bash o

perl (/usr/bin/perl)

HOLA MUNDOOOHOLA MUNDOOO

#!/bin/bash#!/bin/bash

echo ”Hola Mundo, cruel :'(”echo ”Hola Mundo, cruel :'(”

Cómo ejecutar.Cómo ejecutar.Primero damos permisos de ejecución

chmod +x script.sh

Ejecutamos

./script.sh

RED I R REC IONESREDIRREC IONES

ls -l > ejemplols-l.txtls -l > ejemplols-l.txtEsto hará que la salida de un programa se Esto hará que la salida de un programa se

escriba en un fichero.escriba en un fichero.

stdout a un ficherostdout a un fichero

TUBER ÍASTUBER ÍAS

Las tuberías le permiten utilizar la Las tuberías le permiten utilizar la salida de un programa como la salida de un programa como la entrada de otro.entrada de otro.

TUBER ÍASTUBER ÍAS

ls -l ls -l || sed -e "s/[aeio]/u/g" sed -e "s/[aeio]/u/g"

enlista enlista || entuba en sed e imprime en entuba en sed e imprime en pantalla, todo con solo U =)pantalla, todo con solo U =)

SCRIPTSSCRIPTS

VAR IABLESVAR IABLES

#!/bin/bash#!/bin/bash

nombrevariable=valornombrevariable=valor

VAR IABLESVAR IABLES

#!/bin/bash#!/bin/bash

Nombrevariable=´comando´Nombrevariable=´comando´

L LAMAR VAR IABLELLAMAR VAR IABLE

#!/bin/bash#!/bin/bash

nombrevariable=valornombrevariable=valor

$nombrevariable$nombrevariable

L LAMAR VAR IABLELLAMAR VAR IABLE

#!/bin/bash#!/bin/bash

nombrevariable=valornombrevariable=valor

echo $nombrevariableecho $nombrevariable

VAR IABLES INTRODUCIDAS POR EL TECLADOVAR IABLES INTRODUCIDAS POR EL TECLADO

#!/bin/sh#!/bin/sh

echo ”hola como te llamas”echo ”hola como te llamas”

readread nombre nombre

VAR IABLES INTRODUCIDAS POR EL TECLADOVAR IABLES INTRODUCIDAS POR EL TECLADO

#!/bin/sh#!/bin/sh

echo ”hola como te llamas”echo ”hola como te llamas”

read read nombrenombre

echo ”Hola echo ”Hola $nombre$nombre””

COMANDO READCOMANDO READ

readread [opciones][opciones] nombre_variable1 nombre_variable1 nombre_variable2 nombre_variableNnombre_variable2 nombre_variableN

readread -p-p “Introduce el nombre y los “Introduce el nombre y los apellidos” nombre apellidosapellidos” nombre apellidos

Condic ionesCondic iones

Operadores.Operadores.

OPERADORES RELACIONALES AR I TMET ICOSOPERADORES RELACIONALES AR I TMET ICOS

-lt (<)-lt (<)

-gt (>)-gt (>)

-le (<=)-le (<=)

-ge (>=)-ge (>=)

-eq (==)-eq (==)

-ne (!=) -ne (!=)

OPERADORES AR I TMET ICOSOPERADORES AR I TMET ICOS

+ (adición)+ (adición)

- (sustracción)- (sustracción)

* (producto)* (producto)

/ (división)/ (división)

% (módulo) % (módulo)

CONDIC IONES, BUCLES, C ICLOS.CONDIC IONES, BUCLES, C ICLOS.

( If – Then )( If – Then )

( While )( While )

(UNTIL)(UNTIL)

( FOR )( FOR )

I FI F

IfIf [condición] [condición]

thenthen

lista de comandoslista de comandos

elseelse

lista de comandos2lista de comandos2

fifi

I FI F

#!/bin/bash#!/bin/bash

echo ' Adivina el valor numerico de la variable'echo ' Adivina el valor numerico de la variable'

read Aread A

if [ $A = 1 ]if [ $A = 1 ]

thenthen

echo 'Acertaste'echo 'Acertaste'

exit 0exit 0

fifi

echo 'No acertaste'echo 'No acertaste'

exitexit

I F-ELSEIF-ELSE

#!/bin/bash#!/bin/bash

echo Cual es tu Edadecho Cual es tu Edad

read edadread edad

if [ $edad -ge 18 ]; thenif [ $edad -ge 18 ]; then

echo eres mayor de edadecho eres mayor de edad

elseelse

echo eres menor de edadecho eres menor de edad

fifi

FORFOREl bucle for es distinto a los de otros lenguajes de El bucle for es distinto a los de otros lenguajes de

programación. Básicamente, le permite iterar sobre una programación. Básicamente, le permite iterar sobre una serie de `palabras' contenidas dentro de una cadena.serie de `palabras' contenidas dentro de una cadena.

FORFOR

#!/bin/bash#!/bin/bash

for i in $( ls ); dofor i in $( ls ); do

echo item: $iecho item: $i

donedone

En la segunda línea declaramos i como la variable que recibirá los En la segunda línea declaramos i como la variable que recibirá los diferentes valores contenidos en $( ls ).diferentes valores contenidos en $( ls ).

'done' indica que el código que ha utilizado el valor de $i ha acabado e 'done' indica que el código que ha utilizado el valor de $i ha acabado e $i puede tomar el nuevo valor.$i puede tomar el nuevo valor.

WHILEWHILEEl bucle while ejecuta un trozo de códico si la expresión de El bucle while ejecuta un trozo de códico si la expresión de

control es verdadera, y sólo se para cuando es falsa (o se control es verdadera, y sólo se para cuando es falsa (o se encuentra una interrupción explícita dentro del código en encuentra una interrupción explícita dentro del código en ejecución).ejecución).

WHILE.WHILE.

while [ while [ condicióncondición ]; do ]; do

......

donedone

UNT I LUNT I LEl bucle until es casi idéntico al bucle loop, excepto en que el El bucle until es casi idéntico al bucle loop, excepto en que el

código se ejecuta mientras la expresión de control se evalúe código se ejecuta mientras la expresión de control se evalúe como falsa.como falsa.

UNTILUNTIL

#!/bin/bash #!/bin/bash

CONTADOR=20CONTADOR=20

until [ $CONTADOR -lt 10 ]; dountil [ $CONTADOR -lt 10 ]; do

echo CONTADOR $CONTADORecho CONTADOR $CONTADOR

let CONTADOR-=1let CONTADOR-=1

donedone

FUNCIONESFUNCIONES

Como en casi todo lenguaje de programación, puede utilizar funciones Como en casi todo lenguaje de programación, puede utilizar funciones para agrupar trozos de código de una manera más lógica, o practicar para agrupar trozos de código de una manera más lógica, o practicar el divino arte de la recursión.el divino arte de la recursión.

function mi_func { mi_código }. function mi_func { mi_código }.

FUNCIONESFUNCIONES 1 #!/bin/bash 1 #!/bin/bash

2 function salir {2 function salir {3 exit3 exit4 }4 }5 function hola {5 function hola {6 echo Hola6 echo Hola7 }7 }8 hola8 hola9 salir9 salir10 echo bushio 10 echo bushio

Primero se llama a la función 'hola', luego a la función 'quit', y el programa nunca llega a la línea 10.

SELECTSELECT #!/bin/bash

OPCIONES="Hola Salir" select opt in $OPCIONES; do if [ "$opt" = "Salir" ]; then echo done exit elif [ "$opt" = "Hola" ]; then echo Hola Mundo else clear echo opción errónea fi done

El sueño de un programador para hacer menús basados en texto.

Muy simi lar a la construcción 'for ' , só lo que en vez de interar para cada 'palabra' en $OPCIONES, se lo pide al usuario .

GTK-DIALOGGTK-DIALOG

GTK-DIALOGGTK-DIALOG

● Texto Atributos. (texto_atributos.sh) Texto Atributos. (texto_atributos.sh)

● Archivos de Entrada. (input.sh)Archivos de Entrada. (input.sh)

● Button (button.sh)Button (button.sh)

● CheckBox (check.sh, Checkb.sh, Combobox.sh)CheckBox (check.sh, Checkb.sh, Combobox.sh)

● ProgressBar (progresobar.sh, progresobarter.sh, ProgressBar (progresobar.sh, progresobarter.sh, progresobartest.sh)progresobartest.sh)

● Menu (Menu.sh, Menuicon.sh, Choo.sh)Menu (Menu.sh, Menuicon.sh, Choo.sh)

● Notebook (notebook.sh)Notebook (notebook.sh)

¿Preguntas?¿Preguntas?

Links:Links:http://bucio.com.mx/sobre/bash/http://bucio.com.mx/sobre/bash/

http://www.gnu.org/software/bash/manual/bashref.htmlhttp://www.gnu.org/software/bash/manual/bashref.html

http://www.linuxconfig.org/Bash_scripting_Tutorialhttp://www.linuxconfig.org/Bash_scripting_Tutorial

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.htmlhttp://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

http://bucio.com.mx/sobre/gtkdialog/http://bucio.com.mx/sobre/gtkdialog/