Programacion En Bash Linux
Enviado por jesusubaldo • 20 de Septiembre de 2013 • 3.743 Palabras (15 Páginas) • 311 Visitas
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
...