Detalle del libro
Ver Índice
Introducción
1. Definición del shell
2. Características de un intérprete de comandos
3. Intérpretes de comando (shells)
3.1 Historia
3.2 ¿ Con qué shell hay que programar ?
3.2.1 Scripts de inicio
3.2.2 Otros scripts
3.3 Nombre de los ejecutables
4. Shells tratados en este libro
Mecanismos esenciales del shell
1. Comandos internos y externos
1.1 Comandos externos
1.2 Comandos internos
1.3 Implementación interna e implementación externa
2. Impresión por pantalla
2.1 El comando echo
2.1.1 El carácter "\n"
2.1.2 El carácter "\c"
2.1.3 El carácter "\t"
2.1.4 Listado de caracteres de escape
2.2 Los comandos print y printf
3. El carácter ~ (tilde) 304. El comando interno cd
5. Sustitución de nombres de archivos
5.1 Expresiones básicas
5.1.1 El carácter *
5.1.2 El carácter ?
5.1.3 Los caracteres [ ]
5.2 Expresiones complejas
5.2.1 ? (expresión)
5.2.2 *(expresión)
5.2.3 +(expresión)
5.2.4 @(expresión)
5.2.5 !(expresión)
5.2.6 Alternativas
5.3 Interpretación del shell
6. Separador de comandos
7. Redirecciones
7.1 Entrada y salidas estándar de los procesos
7.1.1 Entrada estándar
7.1.2 Salida estándar
7.1.3 Salida de error estándar
7.2 Herencia
7.3 Redirección de las salidas en escritura
7.3.1 Salida estándar
7.3.2 Salida de error estándar
7.3.3 Salida estándar y salida de error estándar
7.3.4 Protección ante borrado involuntario de un archivo
7.3.5 Eliminar las impresiones por pantalla
7.3.6 Mecanismo interno
7.4 Redirección de la entrada estándar
7.5 Redirecciones avanzadas
7.5.1 Redirigir los descriptores 1 y 2 hacia el mismo archivo
7.5.2 La redirección doble en lectura
7.5.3 Cierre de un descriptor
8. Tuberías de comunicación
8.1 Comandos que no leen su entrada estándar
8.2 Comandos que leen su entrada estándar
8.2.1 Ejemplos triviales
8.2.2 Caso de los filtros
8.3 Complementos
8.3.1 Encadenar tuberías
8.3.2 Duplicar las salidas
8.3.3 Enviar la salida estándar y la salida de error estándar por la tubería
9. Agrupación de comandos
9.1 Paréntesis
9.2 Las llaves
9.3 Conclusión
10. Procesos en segundo plano
11. Ejercicios
11.1 Funcionalidades varias
11.1.1 Ejercicio 1: comandos internos y externos
11.1.2 Ejercicio 2: generación de nombres de archivo
11.1.3 Ejercicio 3: separador de comandos
11.2 Redirecciones
11.2.1 Ejercicio 1
11.2.2 Ejercicio 2
11.2.3 Ejercicio 3
11.2.4 Ejercicio 4
11.2.5 Ejercicio 5
11.2.6 Ejercicio 6
11.3 Tuberías de comunicación
11.3.1 Ejercicio 1
11.3.2 Ejercicio 2
11.3.3 Ejercicio 3
11.3.4 Ejercicio 4
Configuración del entorno de trabajo
1. Variables de entorno
1.1 Listado de variables
1.2 Mostrar el valor de una variable
1.3 Modificación del valor de una variable
1.4 Variables principales
1.4.1 HOME
1.4.2 PATH
1.4.3 PWD
1.4.4 PS1
1.4.5 PS2
1.4.6 TMOUT
1.4.7 TERM
1.4.8 LOGNAME
1.4.9 Procesos y variables de entorno
1.5 Exportación de variables
1.5.1 Listado de variables exportadas
1.5.2 Variables que deben exportarse
1.5.3 Exportar una variable
2. Las opciones del
2.1 Activar y desactivar una opción del shell
2.2 Visualizar la lista de opciones
2.3 Opciones principales
2.3.1 ignoreeof
2.3.2 noclobber
2.3.3 emacs y vi
2.3.4 xtrace
3. Los alias
3.1 Definir un alias
3.2 Visualizar la lista de alias
3.2.1 Visualizar todos los alias
3.2.2 Visualizar un alias en particular
3.3 Eliminar un alias
4. Histórico de comandos
4.1 Configurar la recuperación de comandos en ksh
4.1.1 Opción vi
4.1.2 Opción emacs
4.2 Configurar la recuperación de comandos en bash
4.3 Completar nombres de archivo
4.3.1 Completar en bash
4.3.2 Completar en ksh
4.3.3 Tabla resumen
5. Los archivos de entorno
5.1 Características de los archivos de entorno
5.1.1 Shell de conexión
5.1.2 Archivos de entorno leídos por el shell de conexión
5.2 Sesión utilizando un Bourne Shell
5.3 Sesión utilizando un Korn Shell
5.4 Sesión utilizando un Bourne Again Shell
6. Ejercicios
6.1 Variables de entorno
6.1.1 Ejercicio 1
6.1.2 Ejercicio 2
6.2 Alias de comando
6.2.1 Ejercicio 1
6.2.2 Ejercicio 2
Las bases de la programación shell
1. Las variables de usuario
1.1 Poner nombre a una variable
1.2 Definir una variable
1.2.1 Asignar un valor a una variable
1.2.2 Asignar un valor con al menos un espacio
1.2.3 Variable indefinida
1.2.4 Borrar la definición de una variable
1.2.5 Aislar el nombre de una variable
1.2.6 Variables numéricas
1.2.7 Variables complejas
1.3 Sustitución de variables
2. Sustitución de comandos
3. Caracteres de protección
3.1 Las comillas simples
3.2 El carácter \
3.3 Las comillas dobles
4. Recapitulación
5. Interpretación de una línea de comandos
6. Escritura y ejecución de un script en shell
6.1 Definición
6.2 Ejecución de un script por un shell hijo
6.3 Ejecución de un script por el shell actual
6.4 Comentarios
7. Variables reservadas del shell
7.1 Los parámetros posicionales
7.2 El comando shift
7.2.1 Sintaxis
7.2.2 Principio
7.3 Código de retorno de un comando
7.3.1 La variable $ ?
7.3.2 El comando exit
7.4 Otras variables especiales
7.4.1 PID del shell intérprete
7.4.2 PID del último proceso ejecutado en segundo plano
8. El comando read
8.2 Lecturas del teclado
8.3 Código de retorno
8.4 La variable IFS
9. Ejecución de verificaciones
9.1 Introducción
9.2 El comando test
9.2.1 Sintaxis
9.2.2 Verificaciones de archivos
9.2.3 Verificaciones de cadenas de caracteres
9.2.4 Verificaciones de números
9.2.5 Los operadores
9.2.6 Ejemplo concreto de uso
9.3 El comando [[ ]]
10. Los operadores del shell
10.1 Evaluación del operador &&
10.2 Evaluación del operador
11. Aritmética
11.1 El comando expr
11.1.1 Sintaxis
11.1.2 Operadores
11.2 El comando (( ))
11.2.1 Sintaxis
11.2.2 Uso
11.3 El comando let
11.4 Aritmética de punto flotante
11.4.2 Otros shells
12. Sustitución de expresiones aritméticas
13. Corrección de un script
13.1 Opción -x
13.2 Otras opciones
14. Las estructuras de control
14.1 if
14.2 case
14.2.1 Sintaxis
14.2.2 Principio
14.2.3 Uso
14.3 Bucle for
14.4 Bucle while
14.4.1 Sintaxis
14.4.2 Uso
14.4.3 Bucle infinito
14.5 until
14.5.1 Sintaxis
14.5.2 Uso
14.6 break y continue
15. Ejercicios
15.1 Variables, caracteres especiales
15.1.1 Ejercicio 1: variables
15.1.2 Ejercicio 2: variables
15.1.3 Ejercicio 3: sustitución de comando
15.1.4 Ejercicio 4: caracteres de protección
15.2 Variables, visualización y lectura del teclado
15.2.1 Ejercicio 1: variables
15.2.2 Ejercicio 2: parámetros posicionales
15.2.3 Ejercicio 3: lectura de teclado
15.3 Tests y aritmética
15.3.1 Ejercicio 1: tests a los archivos
15.3.2 Ejercicio 2: tests de cadenas de caracteres
15.3.3 Ejercicio 3: tests numéricos
15.3.4 Ejercicio 4: aritmética
15.3.5 Ejercicio 5: operadores lógicos de los comandos [ ], [[ ]] y operadores lógicos
del shell
15.4 Estructuras de control if, case, bucle for
15.4.1 Ejercicio 1: los comandos [ ] y [[ ]], la estructura de control if
15.4.2 Ejercicio 2: estructura de control case, bucle for
15.5 Bucles
15.5.1 Ejercicio 1: bucle for, comando tr
15.5.2 Ejercicio 2: bucle for, aritmética
15.5.3 Ejercicio 3: bucles for, while
Aspectos avanzados de la programación shell
1. Comparación de las variables $* y $@
1.1 Uso de $* y de $@
1.2 Uso de "$*"
1.3 Uso de "$@"
2. Sustitución de variables
2.1 Longitud del valor contenido en una variable
2.2 Manipulación de cadenas de caracteres
2.2.1 Eliminar el fragmento más pequeño de la izquierda
2.2.2 Eliminar el fragmento más grande de la izquierda
2.2.3 Eliminar el fragmento más pequeño de la derecha
2.2.4 Eliminar el fragmento más grande de la derecha
Este libro de programación shell va dirigido a usuarios y administradores de sistemas Unix/Linux que desean aprender a programar scripts shell. Se detallan las funcionalidades de tres shells usados habitualmente (Bourne Shell, ksh 88 y 93, bash) y sus diferencias. Los conceptos se presentan de manera progresiva y pedagógica, convirtiendo este libro en un soporte ideal destinado tanto a la formación profesional como a la autoformación.
Los primeros capítulos se destinan al funcionamiento del shell: ejecución de un comando, caracteres especiales del shell usados habitualmente (redirecciones, tuberías,...), configuración del entorno de trabajo del usuario (variables y archivos de entorno,...).
Los mecanismos internos se explican detalladamente y se ilustran con múltiples esquemas.
A continuación, el libro se centra en la programación propiamente dicha. Las bases de la programación (variables, estructuras de control, comandos de verificación y cálculo,...) se presentan e ilustran mediante una gran cantidad de ejemplos y, más adelante, se detallan los aspectos avanzados de la programación shell (gestión de archivos, funciones,...).
La última parte trata sobre las utilidades anexas indispensables para el tratamiento de cadenas de caracteres y de archivos de texto: las expresiones regulares básicas y extendidas, el editor no interactivo sed, una visión extendida del lenguaje awk y los principales comandos filtro de los sistemas unix.
Los ejercicios permitirán al lector practicar la escritura de scripts Shell a lo largo de todo el libro.
Los ejemplos de scripts shells incluidos en el libro se pueden descargar en www.ediciones-eni.com.