El Shell es la interfaz que permite al usuario interactuar con el sistema: recoge las órdenes, las procesa y genera la salida correspondiente, aislando durante todo el proceso al usuario del Kernel del sistema, lo que dota a los entornos GNU/Linux de una gran seguridad.
Existen distintos lenguajes Shell, pero esta obra se centra en Bash, dado que se trata del intérprete de comandos más utilizado en los sistemas GNU/Linux e incluye un completo lenguaje de programación estructurada y gran variedad de funciones internas.
El objetivo de esta obra es introducir al lector de una forma teórico-práctica en la programación Shell, desde los aspectos más básicos de la misma hasta elementos más complejos, que le permitan trabajar de un modo seguro y eficiente con entornos GNU/Linux, desde equipos personales a servidores.
Por ello, a lo largo del libro se presentan múltiples ejemplos, los cuales aumentan de complejidad a medida que se van adquiriendo los conocimientos necesarios, al tiempo que se reta al lector a aplicar los conocimientos adquiridos para resolver distintos problemas propuestos, todos ellos de indudable naturaleza práctica real.
Temas incluidos:
- Introducción a la programación Shell. Tipos de Shell, características de Bash, personalización del entorno de trabajo y modos de ejecución de comandos. CAPÍTULO 1. INTRODUCCIÓN A LA PROGRAMACIÓN SHELL CAPÍTULO 2. SHELL DEL SISTEMA CAPÍTULO 3. PROGRAMACIÓN BÁSICA CAPÍTULO 4. PROGRAMACIÓN ESTRUCTURADA CAPÍTULO 5. PROGRAMACIÓN DE TAREAS CAPÍTULO 6. ADMINISTRACIÓN DEL SISTEMA CAPÍTULO 7. DEPURACIÓN DE SCRIPTS ÍNDICE ALFABÉTICO
- El Shell del sistema. La línea de comandos, Entradas/Salidas, redirecciones y AWK.
- Programación básica. Variables y expresiones.
- Programación estructurada. Estructuras condicionales, bucles, funciones y recursividad.
- Programación de tareas. Programación de tareas mediante las utilidades de Linux: cron, anacron, at y batch.
- Administración del sistema. Administración de usuarios y grupos, el sistema de ficheros, gestión de permisos, conexiones remotas y transferencia de ficheros.
- Depuración de scripts. Buenas prácticas de programación, opciones de depuración y desarrollo de un depurador Bash.
1.1.1 Tipos de Shell
1.1.2 Shell del sistema
1.1.3 Estableciendo el Shell por defecto
1.2 BASH
1.3 MODOS DE EJECUCIÓN DE COMANDOS
1.3.1 Comandos empotrados (built-in)
1.3.2 Línea de comandos
1.3.3 Script
1.3.4 Metacaracteres
1.3.5 Variables de entorno
1.4 PERSONALIZAR EL ENTORNO
1.4.1 Ficheros de configuración de Bash
1.4.2 Alias
1.4.3 Opciones de Bash
1.4.4 Coloreando el Shell
1.5 CARACTERÍSTICAS ESPECIALES
1.5.1 Programas interactivos
1.5.2 Control de trabajos
1.5.3 Intérprete de uso restringido
1.6 APLICANDO CONOCIMIENTOS
1.7 EJERCICIOS PROPUESTOS
2.1 LÍNEA DE COMANDOS
2.1.1 Editor de línea de comandos
2.1.2 Moverse por la línea de comandos
2.1.3 Borrar partes de la línea de comandos
2.1.4 Historial de comandos
2.1.5 Autocompletar con el tabulador
2.1.6 Ejecutar la línea de comandos
2.2 ENTRADA Y SALIDA ESTÁNDAR
2.2.1 Terminal como archivo
2.2.2 Redirigir la salida estándar
2.2.3 Redirigir la entrada estándar
2.2.4 Noclobber: evitar la sobrescritura de ficheros
2.2.5 Concatenando la salida estándar a un fichero
2.2.6 /dev/null: haciendo desaparecer datos
2.2.7 Cauces
2.2.8 Filtros
2.2.9 Tee: enviar la salida en dos direcciones
2.3 TRATAMIENTO DE DATOS
2.4 INTRODUCCIÓN A GAWK (GNU AWK)
2.4.1 Imprimiendo en awk
2.4.2 Dando formato a la salida en awk
2.4.3 Uso de expresiones regulares
2.4.4 Patrones especiales
2.4.5 Separador de campos de entrada
2.4.6 Separador de campos de salida
2.4.7 Número de registros procesados
2.5 APLICANDO CONOCIMIENTOS
2.6 EJERCICIOS PROPUESTOS
3.1 INTRODUCCIÓN
3.2 MI PRIMER SCRIPT
3.3 VARIABLES Y EXPRESIONES
3.3.1 Variables
3.3.2 Expresiones
3.3.3 Entrecomillado y expansión
3.4 APLICANDO CONOCIMIENTOS
3.5 EJERCICIOS PROPUESTOS
4.1 INTRODUCCIÓN
4.2 ESTRUCTURAS CONDICIONALES
4.2.1 Condición simple (if. then)
4.2.2 Condiciones compuestas (if. then. else)
4.2.3 Condiciones anidadas (if, then y elif)
4.2.4 Condiciones múltiples (case)
4.3 BUCLES
4.3.1 Bucle for
4.3.2 Bucle for in
4.3.3 Bucle while
4.3.4 Bucle until
4.3.5 Interrumpiendo bucles: break y continue
4.3.6 Select
4.4 FUNCIONES
4.5 RECURSIVIDAD
4.6 APLICANDO CONOCIMIENTOS
4.7 EJERCICIOS PROPUESTOS
5.1 ASPECTOS BÁSICOS
5.2 CRON
5.2.1 Iniciar cron
5.2.2 Configuración de cron
5.2.3 Operadores
5.2.4 Directorios predefinidos
5.2.5 Control de acceso a cron
5.2.6 Log de cron
5.2.7 Deshabilitar el envío de e-mails
5.2.8 Instalar crontab desde archivo
5.3 ANACRON
5.3.1 Configuración de las tareas de anacron
5.3.2 Iniciar y finalizar el servicio
5.4 AT Y BATCH
5.4.1 Configuración de tareas at
5.4.2 Control de acceso a at y batch
5.4.3 Iniciar y finalizar el servicio
5.5 APLICANDO CONOCIMIENTOS
5.6 EJERCICIOS PROPUESTOS
6.1 INTRODUCCIÓN
6.2 ADMINISTRACIÓN DE USUARIOS
6.2.1 Tipos de usuarios
6.2.2 Comandos de administración de usuarios
6.2.3 Comandos de administración de contraseñas
6.2.4 Comandos de administración de grupos
6.2.5 Ficheros involucrados
6.2.6 Archivos de inicialización
6.2.7 Archivos de configuración del usuario
6.2.8 Comunicación con los usuarios
6.3 SISTEMA DE ARCHIVOS
6.3.1 Comandos básicos
6.3.2 Búsqueda de ficheros
6.3.3 Copias de seguridad
6.4 PERMISOS
6.4.1 Establecer permisos
6.4.2 Establecer el usuario y el grupo propietario
6.5 COMUNICACIONES
6.5.1 Conexión remota mediante SSH
6.5.2 Transferencia de ficheros
6.6 APLICANDO CONOCIMIENTOS
6.7 EJERCICIOS PROPUESTOS
7.1 INTRODUCCIÓN
7.2 CÓMO IMPLEMENTAR BUENOS SCRIPTS
7.2.1 Estructura
7.2.2 Recomendaciones de programación
7.3 OPCIONES DE BASH PARA DEPURACIÓN
7.4 SEÑALES FALSAS
7.4.1 Señal SIGEXIT
7.4.2 Señal SIGERR
7.4.3 Señal SIGDEBUG
7.4.4 Señal SIGRETURN
7.5 UN DEPURADOR BASH
7.5.1 Estructura del depurador
7.5.2 El preámbulo
7.6 FUNCIONES DEL DEPURADOR
7.6.1 Avanzar paso a paso
7.6.2 El menú de comandos
7.6.3 Puntos de ruptura por número de línea
7.6.4 Puntos de ruptura condicionales
7.6.5 Trazar la ejecución
7.7 EJEMPLO DE EJECUCIÓN
7.8 EJERCICIOS PROPUESTOS