Programación en Bash
-
Upload
rafael-bucio -
Category
Technology
-
view
3.413 -
download
6
description
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/