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)

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

    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

    Se plantea el estudio de este aplicativo en lo que respecta al entorno de programación en dos fases:

Fase I:     Se introducirá al alumno en la metodología de la programación general, se verán conceptos básicos, se proporcionarán las piezas gráficas elementales para construir organigramas y se trabajará con ejemplos sencillos de propósito general, todo ello siguiendo los primeros capítulos y los primeros ejercicios del documento Diagramas de flujo. ejercicios y Problemas. La realización de los ejercicios seleccionados de este documento generará dos archivos:

    La codificación de los shell-script se resolverá estudiando los apartados adecuados de la página de manual de la Bash enlazados en el índice de más abajo.

   Se proporcionará al alumno un espacio en un servidor del departamento donde almacenar la producción de esta fase. Dicho espacio debe estar estructurado en una adecuada ramificación de directorios y archivos con nombres normalizados.

Fase II:     Alcanzado un nivel de madurez suficiente se trabajará en la implementación de los shel-script que den solución a los ejercicios planteados en el Bloque1 del primer trimestre de ASO, el cual, al igual que este director, está accesible en la plataforma moodle-centros.

    La codificación de los shell-script se resolverá estudiando los apartados adecuados de la página de manual de la Bash enlazados en el índice de más abajo.

   Se proporcionará al alumno un espacio en un servidor del departamento donde almacenar la producción de esta fase. Dicho espacio debe estar estructurado en una adecuada ramificación de directorios y archivos con nombres normalizados.

    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;




    Amplio repositorio de documentos para estudiantes y profesionales de TI