ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Programacion En Bash Linux

jesusubaldo20 de Septiembre de 2013

3.743 Palabras (15 Páginas)327 Visitas

Página 1 de 15

Taller de programación en Bash Shell

Este es el material de apoyo para el taller de programación shell organizado por la

Asociación de Usuarios de Software Libre de Elche, Kleenux, el 3 de Abril de 2004.

Esta es la revisión 1.

Autor: Juan J. Martínez <jjm@usebox.net>, con la colaboración de Paco Brufal

<pbrufal@mutoid.org>

Copyright © 2004 Juan J. Martínez y Paco Brufal. Se permite la copia textual y

distribución de este documento en su totalidad, por cualquier medio, siempre y cuando

se mantenga esta nota de copyright.

Más información sobre la Asociación de Usuarios de Software Libre de Elche en

http://www.kleenux.org.

Enlace del Manual: http://blackshell.usebox.net/pub/shell/taller_sh/t1.html#AEN10

Tabla de contenidos

1. Introducción: ¿Qué es un shell?

2. Manejo básico del shell

2.1. La linea de comandos

2.2. Patrones de sustitución

2.3. Redirección de ficheros

2.3.1. Redirección stdout a fichero

2.3.2. Redirección stderr a fichero

2.3.3. Redirección stdin a fichero

2.3.4. Añadir redirección a fichero

2.3.5. Redirección "documentos empotrados"

2.4. Tuberías

2.5. Control de procesos

3. Comandos UNIX

4. Programación shell

4.1. Mira mamá, soy un script!

4.2. Variables

4.3. Linea de comandos

4.4. La salida de los programas

4.5. Operaciones aritméticas

4.6. Condicionales

4.6.1. if ... then ... [ else ... ]

4.7. Bucles

4.7.1. for ... in ...

4.7.2. Rompiendo un bucle: break

4.7.3. while ...

A. Ejercicios resueltos

B. Inicio del CD-ROM del taller (Knoppix)

C. Documentación adicional

1. Introducción: ¿Qué es un shell?

Es una parte fundamental de todo sistema operativo que se encarga de ejecutar órdenes

básicas para el manejo del sistema.

Suelen incorporar características como:

· control de procesos

· redirección de ficheros

· leguaje para escribir pequeños programas

Hay muchos:

· command.com cmd.exe - DOS y derivados

· ksh - korn shell de UNIX

· chs - C shell, similar en sitaxis al lenguaje de programación C

· bsh - Bourne shell

· tcsh, zsh, ash, ...

· bash - Bourne Again shell, el shell mayoritario de sistemas Linux

2. Manejo básico del shell

Introduzcamos cuatro comandos básicos para ver esta parte:

· echo : repite los argumentos en la salida estándar (ej. pantalla)

· ls : lista el contenido de un directorio

· cat : muestra el contenido de un fichero

· more : muestra el contenido de un fichero haciendo pausas entre pantallas si el

fichero es muy largo

2.1. La linea de comandos

Escribimos:

$ ls

Pulsamos ENTER.

En la linea de comandos podemos usar las siguientes (combinaciones de) teclas:

IZQUIERDA

Se mueve a la izquierda (anda!)

DERECHA

Se mueve a la derecha

ARRIBA

Vamos hacia atrás en el historial de comandos

ABAJO

Volvemos hacia adelante en el historial de comandos

FIN

CTRL + e

Vamos al final de la linea

INICIO

CRTL + a

Vamos al principio de la linea

CRTL + d

Fin de fichero

CRTL + l

Borra la pantalla

Mayúsculas + RePag

Hace scroll hacia arriba en la pantalla

Mayúsculas + AvPag

Hace scroll hacia abajo en la pantalla

2.2. Patrones de sustitución

Hay ciertos caracteres que el shell sustituirá por otro contenido en base a unas reglas.

*

cualquier cadena de texto

Ejemplo:

$ echo /usr/*

?

un solo caracter cualquiera

Ejemplo:

$ echo /usr/?bin

$ echo /usr/????

[...]

cualquiera de los caracteres entre corchetes

Ejemplo:

$ echo /usr/[aeiou]*

2.3. Redirección de ficheros

Definición clásica: Un fichero informático es una entidad lógica compuesta por una

secuencia de bits, almacenada en un sistema de archivos ubicada en la memoria de un

ordenador.

En UNIX todo es un fichero. Es decir, se pueden aplicar a todos los objetos las acciones

que soporta un fichero en su definición clásica: abrir, cerrar, leer, escribir, etc.

Ficheros estándar que están abiertos para todo programa en ejecución:

· Entrada estándar /dev/stdin (ej. Teclado)

· Salida estándar /dev/stdout (ej. Pantalla)

· Salida de error /dev/stderr (ej. Pantalla)

Otros ficheros especiales:

· /dev/null -> "la nada de UNIX"

· /dev/zero -> fuente infinita de ceros

· /dev/random -> datos aleatorios

¿Qué pasa cuando ejecutamos ls?

2.3.1. Redirección stdout a fichero

$ ls > salida

$ cat salida

2.3.2. Redirección stderr a fichero

$ ls pirulotropical 2> error

$ cat error

2.3.3. Redirección stdin a fichero

$ cat < /dev/stdin

2.3.4. Añadir redirección a fichero

$ echo añadir datos >> salida

$ cat salida

$ ls uh 2>> error

$ cat error

2.3.5. Redirección "documentos empotrados"

$ cat << FINDOCUMENTO

Esto es un documento empotrado. El comando cat va a tomar un fichero

desde stdin que acaba cuando encuentra el delimitador...

FINDOCUMENTO

2.4. Tuberías

Una tubería es un fichero especial con dos extremos de, forma que lo que escribimos en

un lado de la tubería va a parar al otro. En inglés: pipe.

$ ls /usr/bin | more

La salida del comando ls /usr/bin va a parar a la entrada del comando more.

Las tuberías permiten combinar la funcionalidad de distintos comandos. Para ello la

mayor parte de los programas permiten acceder a sus funcionalidades desde la linea de

comandos.

2.5. Control de procesos

Un proceso es un programa en ejecución con características propias (memoria, pila,

puntero de programa, número identificador único, etc.).

En UNIX todo proceso es 'hijo' de otro, es decir, es creado por otro proceso,

considerado como el proceso 'padre'. Todos los procesos descienden de un proceso

principal llamado 'Init', que al iniciar el sistema tiene el numero de proceso 1. El

proceso 'init' es el único que no tiene 'padre'. Existe la posibilidad que un proceso 'padre'

termine de manera inesperada y errónea (debido a un fallo de programación, por

ejemplo), este proceso 'padre' terminaría, pero podría dejar procesos 'hijo' en ejecución.

Cuando un proceso 'hijo' queda descolgado del proceso 'padre', se dice que entra en un

estado 'zombie' porque su padre no está esperando cuando acaba.

Cuando ejecutamos un comando en el shell se crea un proceso que es hijo de ese shell y

el shell espera a que el proceso termine para volver a tomar el control.

También es importante destacar que cada nuevo proceso creado hereda ciertas

características de su padre, como: las variables de entorno y los ficheros abiertos.

[ shell ] - ejecuta ls -> [ ls : shell espera ] - fin ls -> [ shell ]

Desde el shell podemos, a parte de crear procesos, manipular a los hijos creados por ese

shell.

Control de procesos del shell:

CRTL + c

finaliza el proceso

comando &

permite ejecutar un comando en segundo plano

Ejemplo:

$ ls &

bin/ doc/ mail/ src/ tmp/

[1] 23704

[1] + Done ls -F

CTRL + z

parar un proceso en primer plano el shell toma el control y 'duerme'

al proceso que estaba en ejecución

Ejemplo:

$ ls /bin/ | more

CTRL + z

[1] + Done ls -F /bin/ |

Stopped more

jobs

muestra información sobre los procesos parados dependientes de este shell

Ejemplo:

$ jobs

[1] + Done ls -F /bin/ |

Stopped more

fg

continua un proceso parado, en primer plano. Si existen varios procesos parados,

podemos ponerle como argumento el índice que el comando jobs nos mostró.

bg

continua un proceso parado, en segundo plano. Si existen varios procesos parados,

podemos ponerle como argumento el índice que el comando jobs nos mostró.

3. Comandos UNIX

Hay más de 300 comandos UNIX distintos. Vamos a estudiar por encima las

características de unos cuantos, los suficientes como para poder hacer pequeños

programas.

Aunque los nombres de los comandos siguen una lógica, muchas veces esta se ha

perdido con el tiempo. En consecuencia tenemos muchos comandos que no sabemos lo

que hacen y, por lo tanto, no los utilizamos. No hay que saber como funcionan todos los

comandos, pero sí es interesante conocerlos y más o menos saber que hacen. Para un

uso más en profundidad consultaremos la página del manual.

ls

muestra el contenido de un directorio

echo

hace eco en pantalla

Ejemplo:

$ echo hola mundo!

cat

muestra

...

Descargar como (para miembros actualizados) txt (27 Kb)
Leer 14 páginas más »
Disponible sólo en Clubensayos.com