IES Miguel Romero Esteo - Departamento de
Informática - Linux/Unix
Bash shell y programación en Bash.
Documentación:
DOC: ¿Qué es un
lenguaje de programación?
DOC:
Metodología de la programación, una visión
general y práctica
DOC: Introducción
a la programación BASH
DOC:
BASH con ejemplos1
DOC:
BASH con ejemplos2
DOC:
BASH con ejemplos3
DOC: sed: expresiones
regulares con sed
DOC: The Linux
Command Line - Full
DOC:
Página de manual de la shell BASH (español -
comentada)
DOC: Versión
oficial y actualizada del manual de BASH (inglés)
DOC:
Página de manual: dialog
DOC:
Unix. Un entorno de programación
DOC: Guia
de programación Bash para principiantes (inglés)
DOC: Bash
scripting para novatos
DOC: Otra guia
de programación de scripts de administración de sistemas
GNU/Linux-Unix
BOOK:Diagramas
de flujo. Ejercicios y problemas
BOOK:Programación shell en Unix y
GNU/Linux
UTIL:
Herramienta en línea de confección de ordinogramas de
flujo
UTIL:
Herramienta en linea para detectar errores en el
código de un script.
UTIL: Display dialog boxes
from scripts
UTIL: O P E N W E
B I N A R S (Lista o itinerario -> ASIR:
Administración de SSOO)
UTIL: O P E N W E B I N
A R S (Curso
de Introducción a la programación con
Pseudocódigo)
Plan
director
Introducción
(no seas vago y leela)
bash es un programa perteneciente al grupo de las shells
de Unix-GNU/Linux que
por su versatilidad y estabilidad se ha convertido en la
interface más utilizada en la consola de comandos en estos
sistemas, tanto por usuarios como por administradores.
Proporciona una comunicación altamente funcional entre el
usuario y el sistema así como un potente entorno de
programación.
Se puede decir que es la herramienta maestra de un
administrador de sistemas Unix-GNU/Linux, por tanto, se merece
una atención especial por parte de los futuros profesionales
de estas plataformas.
Se
espera que el alumno ponga suficiente interés y que de la
mano del profesor comprenda la forma de trabajar de los
bloques funcionales de bash así como las
posibilidades que brinda el entorno de ejecución y sobre
todo de desarrollo.
Metodología
de las sesiones de clase
El objetivo único del trimestre es codificar los shell-scripts
que
den solución a los enunciados funcionales planteados
en el Bloque1 del primer trimestre de ASO, el cual, al
igual que este documento, está accesible en la plataforma
moodle-centros,
para ello, se estudiarán, junto con el profesor en las
sesiones de clase, y por cuenta del alumno en su domicilio,
los apartados adecuados de la página de manual de Bash
enlazados en el índice de más abajo.
Si bien es cierto que la página de manual
de Bash es el documento de referencia, es necesario que el
alumno acceda a todos los enlaces del principio ( DOC,s,
BOOK,s, UTIL,s) ya que le aportarán mucha luz en la tarea que
nos ocupa, sobre todo porque la página de manual de Bash está
redactada con un nivel muy técnico, pensado para programadores
avanzados.
Se proporcionará al alumno un espacio en un servidor del
departamento donde almacenar la producción de shell-scripts.
Algunos de los scripts propuestos en esta fase deben ser
ejecutados con privilegios de root. Teniendo en cuenta que
al sistema que provee el espacio arriba indicado se accede
con privilegios de usuario, para verificar el
funcionamiento de estos scripts, el alumno se dotará a si
mismo de un sistema GNU/Linux al que poder aceder con
privilegios de root, por ejemplo, una Máquina virtual con
un sistema GNU/linux idéntico al servidor del
departamento. Debe quedar claro que si el alumno pide
soporte, la VM debe ser accesible desde el puesto del
profesor, en caso contrario no se prestará soporte.
Indice de la manpage
de Bash.
A continuación se enlazan todos los apartados de la
página de manual de la shell Bash; se destacan con letra
cursiva los apartados de aprendizaje obligatorio. Se
trata de proporcionar al alumno un acceso directo a las
referencias del lenguaje que necesitará conocer para
construir los shell-script,s que se van a proponer
durante el presente trimestre y que serán la fuente de
inspiración de la PERA (Prueba de Evaluación de
Resultados de Aprendizaje) a realizar en la fecha que se
señale.
- NOMBRE
- SINOPSIS
- DERECHOS
DE COPIA
- DESCRIPCIÓN
- OPCIONES
- ARGUMENTOS
- LLAMADA
- DEFINICIONES
- PALABRAS
RESERVADAS
- GRAMÁTICA
DEL SHELL
-
- Órdenes
simples
- Tuberías
- Listas
- Órdenes
compuestas
- COMENTARIOS
- ENTRECOMILLADO
- PARÁMETROS
-
- Parámetros
posicionales
- Parámetros
especiales
- Variables
del shell
- Vectores
- EXPANSIÓN
-
- Expansión
de llaves
- Expansión
de tilde
- Expansión
de parámetro
- Sustitución
de orden
- Expansión
aritmética
- Sustitución
de proceso
- División
de palabras
- Expansión
de nombre de camino
- Patrones
- uso de expresiones regulares en la busqueda de
patrones en los valores de variables
Eliminación
de comillas
REDIRECCIÓN
- Redirección
de la entrada
- Redirección
de la salida
- Añadir
a la salida redirigida
- Redirección
de la salida estándar normal y de errores
- Documentos
internos
- Duplicación
de descriptores de fichero
- Apertura
de descriptores de ficheros para lectura y escritura
ALIAS
FUNCIONES
EVALUACIÓN
ARITMÉTICA
EXPRESIONES
CONDICIONALES
EXPANSIÓN
DE ORDEN SIMPLE
EJECUCIÓN
DE ÓRDENES
ENTORNO
DE EJECUCIÓN DE ÓRDENES
ENTORNO
ESTADO DE
SALIDA
SEÑALES
CONTROL
DE TRABAJOS
INDICADORES
READLINE
- Notación
de Readline
- Inicio
de Readline
- Definiciones
de teclas de Readline
- Variables
de Readline
- Construcciones
condicionales de Readline
- Búsquedas
- Nombres
de órdenes de Readline
- Órdenes
para el movimiento
- Órdenes
para manipular la lista de historia
- Órdenes
para cambiar el texto
- Cortar
y pegar
- Argumentos
numéricos
- Terminación
- Macros
de teclado
- Miscelánea
HISTORIA
EXPANSIÓN
DE HISTORIA
- Designadores
de eventos
- Designadores
de palabras
- Modificadores
ÓRDENES
INTERNAS DEL SHELL
SHELL
RESTRINGIDA
VÉASE
TAMBIÉN
FICHEROS
AUTORES
INFORMES
DE FALLOS
FALLOS
Script
escalar. "..Busca la excelencia en tu forma de programar"
Cada uno
de nosotros enfocamos y realizamos la codificación de un
mismo algoritmo de forma diferente. Es sorprendente la gran
diferencia que existe en el código generado por cada persona
en la implementación de una misma solución, pero todos
debemos tener presente el cumplimiento de unos mínimos de
estilo, rendimiento, seguridad y funcionalidad en el
resultado final.
En este apartado se muestran distintas
versiones de la codificación con lenguaje Bash del mismo
algoritmo (Sumar dos números e informar del
resultado). A medida que suben las versiones se mejora
la codificación en busca de una mayor calidad en la
implementación. Todas las versiones funcionan y todas
resuelven el problema pero las versiones inferiores
adolecen de lo que en el párrafo anterior hemos indicado
que debe ser característico de la codificación.
Versión 1. Ejecución descendente sin
control del flujo. No se aplican condiciones. No se aplican
filtros a los datos. No se informa al usuario de las
acciones a realizar. No se filtran los errores de ejecución:
v1
Version 2. Uso de la estructura condicional
if
(con/sin anidamiento). Se aplican condiciones
(simples/compuestas). No se
aplican filtros a los datos de entrada. Se informa al
usuario de las acciones a realizar. No se filtran los
errores de ejecución. v2.1; v2.1.1;
v2.2;
v2.2.1
Versión 3. Uso de la estructura iterativa while.
Mejora la funcionalidad ya que da la oportunidad de repetir
la captura de datos en caso de no cumplirse las condiciones
de rango. Se aplican condiciones compuestas. No se aplican
filtros a los datos de entrada. Se informa al usuario de las
acciones a realizar. No se filtran los errores de ejecución. v3;
Versión 4. Uso de la estructura iterativa until.
Mejora la funcionalidad ya que da la oportunidad de repetir
la captura de datos en caso de no cumplirse las condiciones
de rango. Se aplican condiciones compuestas. No se aplican
filtros a los datos de entrada. Se informa al usuario de las
acciones a realizar. No se filtran los errores de ejecución. v4;