Agradecimientos
Sobre el autor
Sobre el revisor técnico
Introducción
Cómo surgió este libro
Quién debería leer este libro
Cuestiones e ideas
Parte I. Técnicas básicas de programación
1. Depurar scripts de consola
Opciones de traza de la consola
Sentencias de salida sencilla
Controlar la salida con niveles de depuración
Simplificar la comprobación de errores con una función
Ir paso a paso manualmente
2. Biblioteca estándar de funciones
El fichero de la biblioteca
Algunas funciones útiles
Cómo utilizar la biblioteca
3. Manipulación de fechas y horas
La fecha en días
Días desde el epoch
Alternativas para obtener la fecha en segundos
Calcular la fecha y la hora actuales
4. Comparaciones y test
Fundamentos de las comparaciones
5. Aceptar opciones, modificadores y parámetros desde la línea de comandos
6. Comprobar variables y asignar valores por defecto
Definir valores por defecto
Sustitución de variables
Sintaxis :=
Sintaxis =
Sintaxis :-
Sintaxis -
Sintaxis :?
Sintaxis ?
Sintaxis :+
Sintaxis +
7. Variables de referencia indirecta
Monitorizar los ficheros de registro con variables indirectas
El bucle del monitor principal
8. El árbol de procesos de la consola
Implementación del árbol de procesos empleando vectores
Implementación del árbol de procesos empleando variables indirectas
Implementación del árbol de procesos en una consola Bourne
9. Redireccionamiento de datos
Evitar las confusiones
Redireccionamientos habituales
Acceder a los indicadores de fichero especificados por el usuario
Acceder al descriptor desde la consola
10. Canalizar la entrada hacia un bucle read
Línea a línea (opción 1)
Línea a línea (opción 2)
Línea a línea (opción 3)
Línea a línea (opción 4)
Canalizar hacia read directamente
Procesar la entrada palabra a palabra
Parte II. Interacción con el sistema y técnicas avanzadas
11. Cálculos en la consola
expr
Cálculos internos de la consola
bc
dc
12. cron
Las entradas cron
Problemas de entorno
Redirección de la salida
13. Scripts autoenlazados
14. Control de los procesos en paralelo
Procesamiento en paralelo con ksh
Procesamiento en paralelo con bash
15. Edición de la línea de comandos e historial
Configurar la edición con vi
bash
ksh
Compleción de comandos y ficheros
16. Programar desde la línea de comandos
Algunos ejemplos
17. Automatizar la entrada del usuario con expect
Script de consola para personalizar los parámetros de un script expect
Script expect para automatizar telnet
18. Limitar el tiempo a la entrada del usuario
Método de límite temporal manual
Limitar el tiempo utilizando stty
Limitar el tiempo mediante una utilidad general
19. Respuesta instantánea del teclado
20. Copiar directorios
Cómo utilizar cp
Cómo utilizar tar
Cómo utilizar find
Cómo utilizar rsync
21. Un breve recorrido por el entorno visual X
El dispositivo de visualización
Conducir el tráfico de X a través de ssh
Aplicaciones de X a través de un sistema externo
Introducción del perfil del usuario
Introducción del perfil de root
Abrir una ventana temporal de root
22. X Navigation Window
Funcionamiento de la ventana de navegación
Configuración de la navegación
La ventana de navegación
23. Enviar correos con adjuntos desde la línea de comandos
uuencode
Codificación MIME
24. Procesar textos con una sola línea
Mostrar campos específicos
Especificar el separador de campos
Uso de patrones sencillos
Comparar campos con varios valores
Determinar el número de campos
Determinar el último campo
Determinar el antepenúltimo campo de la cadena
Pasarle variables a awk
Utilizar en una condición una de las variables pasadas a awk
Mostrar un rango de campos (método principal)
Mostrar un rango de campos (método alternativo)
Determinar la longitud de una cadena con awk
Determinar la longitud de una cadena con expr
Mostrar una subcadena con awk
Mostrar una subcadena con expr
Efectuar una búsqueda sencilla y reemplazarla con sed
Ignorar los comentarios y las líneas en blanco de un fichero
Efectuar una búsqueda y sustitución dual con sed
Filtrar líneas con sed
Buscar varias cadenas con egrep
Un método limpio para buscar en la tabla de procesos
Sumar columnas con awk
Generar números aleatorios con awk
Generar números aleatorios desde la consola
Mostrar campos de tipo carácter con sed
Marcar los caracteres especiales con secuencias de escape
Devolver las líneas que siguen al texto coincidente con grep
Devolver las líneas que preceden al texto coincidente con grep
25. Editar ficheros in situ
Búsquedas y sustituciones sencillas con ed
Búsquedas y sustituciones con ed, en detalle
Ejemplos de comandos de ed
Marcar los caracteres especiales de un fichero con secuencias de escape
26. Evaluar las variables de un fichero plano
27. Leer la entrada canalizada
28. Dar un formato libre a la salida con cat
29. Automatización de procesos interactivos
Parte III. Scripts útiles
30. Automatización del correo con procmail
El fichero .procmailrc
Ejemplos de uso
El código
31. Monitorizar la administración de procesos
32. Administración del recuento de ficheros
Monitor de recuento de ficheros
Probar métodos de recuento de ficheros
33. Procesos ejecutados desde inittab
34. RCS automático
35. Generar informes de /proc a color
36. Notificación de la vigencia de la contraseña
Inicialización del script
Comienza el procesamiento
Determinar la antigüedad de la contraseña
37. Un fichero pseudo-oculto
38. Creación de sistemas Linux maestros
39. Tomar instantáneas del sistema
El script de la instantánea
Promoción de las instantáneas
Crear la última instantánea
Reflexiones finales
40. Borrado de ficheros grandes y rotación del registro
41. Buscador de núcleos
42. Recuperación ante fallos de red
Comprobar la red
Cambio de interfaz
Parte IV. Apéndices
A. Modificadores de test
B. Parámetros especiales
C. Otras fuentes recomendadas
Las páginas del manual
Libros
Libros de programación
Libros complementarios
Información sobre consolas concretas
Recursos en línea
Índice alfabético
Esta obra cuenta con una amplia selección de los scripts y las técnicas que el autor ha utilizado y recopilado durante años como administrador de sistemas con el fin de profundizar más de lo que lo hacen los libros de programación de consolas para principiantes, explicando no sólo lo que hace el código, sino cómo y por qué se escogió una lógica concreta. Estos scripts serán una gran incorporación a su repertorio e incrementarán su habilidad para enfrentarse a los problemas y optar por una solución. Probablemente haya observado el gran número de libros sobre programación de consolas y de sitios Web que puede consultar para aumentar sus conocimientos en este terreno, pero la gran mayoría, son muy básicos.
El objetivo principal de este libro es combinar algunas de las herramientas, fragmentos de código y scripts más exclusivos, que están por encima del nivel de los scripts básicos. Tiene en sus manos un libro de recetas que incluye las menos conocidas y algunos algoritmos bastante avanzados que le resultarán de gran utilidad.