El Shell Korn. Manual de Usuario y Program Ad or - 00-Contenido

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 23

EL

SHELL KORN
MANUAL DE USUARIO
Y PROGRAMADOR

EL
SHELL KORN
MANUAL DE USUARIO
Y PROGRAMADOR

Francisco Maci Prez


Antonio Soriano Pay

Departamento de Tecnologa
Informtica y Computacin

Universidad de Alicante

Las palabras mueven, pero los ejemplos arrastran.


Adagio latino

Saber que se sabe lo que se sabe y que no se sabe lo


que no se sabe; he aqu el verdadero saber.
Confucio (551-479 a. C.); filsofo chino.

Resumen del contenido

INTRODUCCIN A LOS SHELLS,


EL SHELL KORN,

17

TIPOS DE DATOS,

41

SUSTITUCIONES,

65

CLCULOS ARITMTICOS,

107

CONDICIONES Y COMPROBACIONES,
SENTENCIAS DE CONTROL,
FUNCIONES,

127

143

169

ENTRADAS Y SALIDAS,
GESTIN DE PROCESOS,
REFERENCIA RPIDA,

195
233
255

vii

Contenido
PRLOGO .................................................................................................. xvii
CONVENIOS UTILIZADOS EN EL LIBRO ......................................................xix
PARTES DEL LIBRO .....................................................................................xxi
AGRADECIMIENTOS ................................................................................. xxiii

CAPTULO 1
INTRODUCCIN A LOS SHELLS

QU PODEMOS ESPERAR DE UN SHELL ......................................................... 1


SUSTITUCIN DE COMODINES .................................................................. 1
EJECUCIN EN SEGUNDO PLANO ............................................................. 2
REDIRECCIN DE LA ENTRADA Y DE LA SALIDA ..................................... 2
COMUNICACIN MEDIANTE TUBERAS .................................................... 3
ALIAS DE COMANDO ................................................................................ 3
ARCHIVO HISTRICO DE COMANDOS ....................................................... 4
SUSTITUCIN DE VARIABLES DE SHELL ................................................... 4
CONTROL DEL FLUJO DE EJECUCIN DE LOS COMANDOS ........................ 4
EJECUCIN DE SHELL SCRIPTS ................................................................. 5
SHELLS DISPONIBLES ..................................................................................... 5
HAY UN SLO SHELL? ............................................................................ 5
EL SHELL DE INICIO ................................................................................. 6
EL SHELL POR DEFECTO ........................................................................... 6
TERMINOLOGA DEL SHELL .......................................................................... 7
BLANCO ................................................................................................... 7
PALABRA ................................................................................................. 7
METACARCTER...................................................................................... 7
CARCTER COMODN ............................................................................... 7
IDENTIFICADOR ....................................................................................... 8
VARIABLE DE SHELL ................................................................................ 8
COMENTARIO ........................................................................................... 9
COMANDO................................................................................................ 9
COMANDO SIMPLE ................................................................................... 9
LISTA DE ASIGNACIN DE PARMETROS ............................................... 10
ESTADO DE SALIDA ................................................................................ 10
PIPELINES O TUBERAS........................................................................... 10
COMANDO ESPECIAL O IMPLCITO ......................................................... 11
LISTA DE COMANDOS............................................................................. 11
SUBSHELL .............................................................................................. 11

ix

Contenido

SHELL SCRIPTS ............................................................................................ 12


RECETA PARA LA CREACIN Y EJECUCIN DE UN SCRIPT..................... 12
QU SHELL EJECUTA MI SCRIPT................................................................. 13
QU OCURRE CON LAS MODIFICACIONES EN EL ENTORNO ................... 15

CAPTULO 2
EL SHELL KORN

17

CARACTERSTICAS PRINCIPALES DEL SHELL KORN ................................. 17


ELEMENTOS DE LA SINTAXIS DEL SHELL KORN ....................................... 18
METACARCTER ................................................................................... 18
LISTA .................................................................................................... 19
COMENTARIO ........................................................................................ 23
PALABRA RESERVADA .......................................................................... 24
COMANDO ESPECIAL ............................................................................. 24
COMANDO COMPUESTO ........................................................................ 26
EL ENTORNO DEL SHELL............................................................................. 27
VARIABLES DE ENTORNO ...................................................................... 29
OPCIONES DEL SHELL............................................................................ 29
ALIAS .................................................................................................... 30
ARRANQUE Y TERMINACIN DEL SHELL ................................................... 32
ARRANQUE DEL SHELL ......................................................................... 32
EL SHELL DE INICIO............................................................................... 33
EL SHELL EN MODO RESTRINGIDO ........................................................ 35
TERMINACIN DEL SHELL ..................................................................... 35
INDICADOR DE COMANDOS DEL SHELL ...................................................... 36
ESTADO DE SALIDA...................................................................................... 37
LOS ERRORES MS COMUNES ..................................................................... 39

CAPTULO 3
TIPOS DE DATOS

41

QU SON LOS TIPOS DE DATOS? ............................................................... 41


POR QU DECLARAR EL TIPO DE DATOS? ................................................ 42
CADENAS ...................................................................................................... 42
DECLARACIN DE CADENAS ................................................................. 43

Contenido

xi

MANIPULACIN DE CADENAS ................................................................ 45


ENTEROS....................................................................................................... 55
DECLARACIN DE ENTEROS .................................................................. 55
REPRESENTACIN DE ENTEROS ............................................................. 57
ARRAYS......................................................................................................... 58
DECLARACIN DE ARRAYS DE CADENAS .............................................. 59
DECLARACIN DE ARRAYS DE ENTEROS ............................................... 60
CONSTANTES ................................................................................................ 61
DECLARACIN DE CONSTANTES ............................................................ 61
CMO ELIMINAR UNA VARIABLE ............................................................ 62
LOS ERRORES MS COMUNES ..................................................................... 63

CAPTULO 4
SUSTITUCIONES

65

TIPOS DE SUSTITUCIONES ............................................................................ 66


SUSTITUCIN DE PARMETROS O VARIABLES ....................................... 66
SUSTITUCIN DE COMANDOS................................................................. 67
SUSTITUCIN DE EXPRESIONES ARITMTICAS ....................................... 67
SUSTITUCIN DE NOMBRES DE ARCHIVO............................................... 68
SUSTITUCIN DE TILDE .......................................................................... 69
SUSTITUCIN DE VARIABLES....................................................................... 69
${VARIABLE} | $VARIABLE................................................................... 70
VARIABLES POSICIONALES .................................................................... 70
${#VARIABLE} ...................................................................................... 72
${#VARIABLE[*]} ................................................................................. 73
${VARIABLE:-CADENA}........................................................................ 73
${VARIABLE:=CADENA} ....................................................................... 74
${VARIABLE:?CADENA} ....................................................................... 74
${VARIABLE:+CADENA} ....................................................................... 75
${VARIABLE#PATRN} | ${VARIABLE##PATRN} .............................. 76
${VARIABLE%PATRN} | ${VARIABLE%%PATRN} .......................... 76
GENERALIDADES ................................................................................... 77
VARIABLES ESPECIALES ........................................................................ 78
VARIABLES RESERVADAS ...................................................................... 86
SUSTITUCIN DE COMANDOS ...................................................................... 91
SUSTITUCIN DE EXPRESIONES ARITMTICAS .......................................... 94
SUSTITUCIN DE NOMBRES DE ARCHIVO ................................................... 95
PATRONES DE NOMBRE DE ARCHIVO ..................................................... 95
LISTA DE PATRONES .............................................................................. 98
PATRONES COMPUESTOS ....................................................................... 98

xii

Contenido

GENERALIDADES .................................................................................. 99
DESACTIVACIN DE LA SUSTITUCIN DE NOMBRES ........................... 100
SUSTITUCIN DE TILDE ............................................................................. 101
INTERPRETACIN DE ESPACIOS EN BLANCO ........................................... 103
LOS ERRORES MS COMUNES ................................................................... 105

CAPTULO 5
CLCULOS ARITMTICOS

107

EL COMANDO LET .................................................................................... 111


EL COMANDO (())....................................................................................... 112
SUMAS, RESTAS Y MULTIPLICACIONES .................................................... 112
DIVISIONES ................................................................................................ 113
OPERACIONES LGICAS Y RELACIONALES.............................................. 114
OPERADORES RELACIONALES Y DE IGUALDAD .................................. 114
OPERADORES LGICOS ....................................................................... 114
OPERACIONES A NIVEL DE BITS................................................................ 116
OPERADOR COMPLEMENTO A UNO ..................................................... 117
OPERADORES LGICOS A NIVEL DE BITS............................................. 117
OPERADOR DE DESPLAZAMIENTO ....................................................... 119
BASES NUMRICAS .................................................................................... 120
ESPECIFICACIN DEL NMERO DE DGITOS ............................................ 122
AGRUPACIN DE EXPRESIONES ................................................................ 123
LOS ERRORES MS COMUNES ................................................................... 125

CAPTULO 6
CONDICIONES Y COMPROBACIONES

127

EL COMANDO [[ ]] ...................................................................................... 127


COMPARACIN DE NMEROS ................................................................... 128
COMPARACIN DE NMEROS UTILIZANDO [[ ]] .................................. 128
COMPARACIN DE NMEROS UTILIZANDO (( )) .................................. 129
COMPARACIN DE CADENAS .................................................................... 130
COMPARACIN DE CADENAS UTILIZANDO [[ ]] ................................... 130
COMPARACIN DE CADENAS UTILIZANDO [ ] Y TEST ......................... 131

Contenido

xiii

COMPROBACIN DE ATRIBUTOS DE ARCHIVOS ....................................... 132


COMPROBACIN DE ATRIBUTOS DEL SHELL............................................ 134
COMPOSICIN DE CONDICIONES .............................................................. 136
EL OPERADOR NOT (!) ........................................................................ 137
EL OPERADOR AND (&&) ................................................................... 137
EL OPERADOR OR (||) ........................................................................... 138
LOS ERRORES MS COMUNES ................................................................... 139
CAPTULO 7
SENTENCIAS DE CONTROL

143

CONDICIONALES ........................................................................................ 143


EL COMANDO IF ................................................................................... 143
EL COMANDO CASE .............................................................................. 148
EL COMANDO SELECT .......................................................................... 153
BUCLES ....................................................................................................... 159
EL COMANDO FOR ............................................................................... 159
LOS COMANDOS WHILE Y UNTIL......................................................... 161
COMANDOS DE RUPTURA DE SECUENCIA ................................................. 164
BREAK ................................................................................................. 164
CONTINUE ............................................................................................ 164
LOS ERRORES MS COMUNES ................................................................... 166

CAPTULO 8
FUNCIONES

169

SINTAXIS ..................................................................................................... 169


SEMEJANZAS Y DIFERENCIAS CON OTROS LENGUAJES DE
PROGRAMACIN......................................................................................... 171
ORGANIZAR UN SCRIPT EN FUNCIONES .................................................... 172
PASO DE ARGUMENTOS.............................................................................. 174
PASO DE ARRAYS A UNA FUNCIN ....................................................... 176
VARIABLES GLOBALES Y LOCALES ........................................................... 178
VALORES DE RETORNO DE UNA FUNCIN ................................................ 180

xiv

Contenido

UTILIZANDO RETURN Y $? .................................................................. 180


UTILIZANDO PRINT Y $() ..................................................................... 181
TERMINAR LA EJECUCIN DE UN SCRIPT ................................................ 183
RECURSIVIDAD .......................................................................................... 184
CLCULO DE FACTORIALES ................................................................ 184
LAS TORRES DE HANOI ....................................................................... 186
DESARROLLO DE LIBRERAS DE FUNCIONES EXTERNAS......................... 189
LOS ERRORES MS COMUNES ................................................................... 192

CAPTULO 9
ENTRADAS Y SALIDAS
LOS ARCHIVOS Y SUS DESCRIPTORES

195
195

SALIDAS SENCILLAS UTILIZANDO EL COMANDO PRINT .......................... 198


ENTRADAS SENCILLAS CON EL COMANDO READ..................................... 201
OTRAS OPCIONES DEL COMANDO READ .............................................. 203
REDIRECCIONAMIENTOS DE ENTRADAS Y SALIDAS ................................ 205
REDIRECCIONAMIENTO DE LA SALIDA ESTNDAR ............................. 205
REDIRECCIONAMIENTO DE LA ENTRADA ESTNDAR .......................... 208
DOCUMENTOS "EN LNEA" .................................................................. 209
REDIRECCIONAMIENTO DE LA SALIDA DE ERROR ESTNDAR............. 211
REDIRECCIN DE OTROS DESCRIPTORES DE ARCHIVOS ...................... 212
DUPLICACIN DE DESCRIPTORES DE ARCHIVOS ................................. 214
REDIRECCIONAMIENTOS CON COPROCESOS ....................................... 216
REDIRECCIN DE LA SALIDA ESTNDAR A UNA VARIABLE ................ 217
ENTRADAS COMPLEJAS UTILIZANDO BUCLES ......................................... 218
LECTURA DESDE LA ENTRADA ESTNDAR.......................................... 218
REDIRECCIN DE LA ENTRADA ESTNDAR ......................................... 219
REDIRECCIN DE LA ENTRADA DIRECTAMENTE A UN BUCLE ............. 220
TRATAMIENTO DE ARCHIVOS ................................................................... 221
ABRIR ARCHIVOS ................................................................................ 221
CERRAR ARCHIVOS ............................................................................. 222
ENTRADAS Y SALIDAS SOBRE MLTIPLES ARCHIVOS ......................... 223
TUBERAS ................................................................................................... 225
TABLA RESUMEN ....................................................................................... 229
LOS ERRORES MS COMUNES ................................................................... 231

Contenido

xv

CAPTULO 10
GESTIN DE PROCESOS

233

COMPONENTES DE UN PROCESO ............................................................... 233


PROCESOS EN PRIMER Y SEGUNDO PLANO ............................................... 234
COPROCESOS.............................................................................................. 235
PREVENIR LA FINALIZACIN DE PROCESOS EN SEGUNDO PLANO .......... 237
ESPECIFICACIN DE LOS RECURSOS DE UN PROCESO ............................. 238
CONTROL DE TRABAJOS ............................................................................ 239
IDENTIFICACIN DE LOS TRABAJOS ..................................................... 239
OBTENER LOS TRABAJOS EN EJECUCIN ............................................. 241
FINALIZAR UN TRABAJO ...................................................................... 241
REANUDAR TRABAJOS EN PRIMER PLANO ........................................... 242
REANUDAR TRABAJOS EN SEGUNDO PLANO ........................................ 242
SUSPENDER UN TRABAJO ..................................................................... 243
SINCRONIZAR PROCESOS ..................................................................... 244
FORMAS DE REFERENCIAR LOS TRABAJOS........................................... 244
MANEJO DE SEALES ................................................................................. 246
EL COMANDO KILL............................................................................... 247
EL COMANDO TRAP .............................................................................. 250

CAPTULO 11
REFERENCIA RPIDA

255

MODOS DE EDICIN ................................................................................... 255


MODALIDAD DE EDICIN EMACS ......................................................... 256
MODALIDAD DE EDICIN VI................................................................. 261
GUA DE REFERENCIA RPIDA DEL KSH ................................................... 267
CARACTERES ENTRE COMILLAS .......................................................... 268
COMANDOS COMPUESTOS DEL SHELL KORN ....................................... 270
LISTA DE COMANDOS COMPUESTOS DEL SHELL KORN........................ 270
PALABRAS RESERVADAS ..................................................................... 273
FUNCIONES .......................................................................................... 273
EXPRESIONES CONDICIONALES ........................................................... 274
COMANDOS ESPECIALES DEL SHELL KORN ......................................... 277
DESCRIPCION DE LOS COMANDOS ESPECIALES.................................... 277
DEPURACIN DE SCRIPTS .......................................................................... 299

Prlogo

La experiencia intensa y dilatada de los autores administrando


mquinas UNIX (las de la Universidad y de los departamentos
especficos de informtica), anula toda posibilidad de sorpresa al leer
el manuscrito: lo han logrado.
El shell Korn. Manual de usuario y programador, est concebido
como un libro de eminente contenido aplicado para el gran colectivo
de usuarios de UNIX y para el sector, ms avanzado, de
programadores.
La motivacin principal que llev a los autores a plantearse la
elaboracin de este libro, hace ya cuatro aos, fue tratar de evitar el
dispendio de horas que cualquiera necesita para llegar a entender y
aprovechar las caractersticas que proporciona el shell Korn. Por eso,
el libro est plagado de ejemplos que ilustran cualquier caracterstica
del shell, por pequea que sea. Junto con este enfoque prctico, resalta
el tratamiento de lenguaje de programacin que se da al shell, muy
adecuado a lo esquemas perceptivos de los destinatarios.
Con todo esto, es conveniente poseer nociones de programacin en
cualquier lenguaje, aunque preferiblemente en lenguaje C o Pascal, y
tener conocimientos, al menos de usuario, del sistema operativo
UNIX.
El pragmatismo se ha llevado a ese nivel de equilibrio con la
elegancia que produce texto ameno, que comunica tanto lo dicho
explcitamente como lo sugerido. El abundante goteo de ejemplos, de
pruebas y de ejemplos antiejemplares (casos de malhacer o de hacer
indebido) atrapa al lector interesado y confiere al libro universalidad
de pblico destinatario. A ttulo particular, reconozco haber disfrutado
leyendo el manuscrito y haber aprendido no poco sobre muchos
asuntos recnditos del shell Korn.

xvii

xviii

Contenido

El libro tiene todas las caractersticas de un buen libro; tambin la de


vivacidad, tanto que ya estn siendo elaboradas algunas partes que se
incorporn a la siguiente edicin; porque mi experiencia me dice que
habr segunda edicin y muy pronto. En esa lnea, sirva este prrafo
para comprometer a los autores.
Me cabe el honor de ser el primero en felicitar a todos los lectores
porque tenemos la suerte de que haya expertos tan generosos como
Antonio y Paco, que nos regalan con el fruto de su habilidad y de su
ingenio. Tambin a ellos les felicito.

JUAN MANUEL GARCA CHAMIZO


DIRECTOR DEL DEPARTAMENTO DE
TECNOLOGA INFORMTICA
Y COMPUTACIN DE LA
UNIVERSIDAD DE ALICANTE

Convenios utilizados en el libro


Convenios tipogrficos
Convenio

Descripcin

No proporcional

Ejemplos cortos de cdigo fuente. Salidas por


la terminal.

No proporcional
negrita

Ejemplos cortos de cdigo fuente. Entradas


introducidas por el usuario.

... (elipsis)

En sentencias de sintaxis, indica que se


pueden repetir los elementos anteriores.

[corchetes]

En sentencias de sintaxis, indica que los


elementos que encierra son opcionales.

En sentencias de sintaxis, separa los distintos


elementos.

No proporcional entre
lneas

Archivos completos con ejemplos de cdigo


fuente.

Cursiva

Se utiliza cuando se refiere a trminos con


entidad propia que estn definidos en el
propio libro.

Negrita

Nombre de archivos, comandos, palabras


reservadas y variables.

MAYSCULAS

Indica un nombre de variable reservada o un


acrnimo.

{TECLA}

Denota la pulsacin de una tecla determinada.


Por ejemplo: {INTRO}, {ESC} o {F1}.

{TECLA}+{TECLA} Denota la pulsacin simultnea de teclas. Por


ejemplo: {CTRL}+{F1}.

xix

xx

Convenios utilizados en el libro

Iconos
Icono

Descripcin
Indica una nota o, en general, cualquier aspecto sobre
el que se desea que se preste una especial atencin.
Seala el resultado de la ejecucin de un determinado
script.
Se utiliza para resaltar una definicin de cualquier
tipo o, simplemente, una definicin que se considera
importante para la comprensin del prrafo.
Se utiliza este icono cuando se desea que se recuerde
una definicin debido a que puede utilizarse en otras
partes de libro de forma implcita. Es decir,
asumiendo que ya se conoce.
Indica una posible situacin de error, conflicto, etc.,
tanto por accin como por omisin.
Indica una sugerencia que permite sacar el mximo
partido a una funcionalidad del shell.

Similar al anterior punto. Se utilizar este icono


cuando la sugerencia sea algn tipo de invencin de
cosecha propia: un fragmento de cdigo, etc.

Este icono identifica una referencia cruzada a otra


parte del libro en la que el trmino o concepto se
detalla con ms detenimiento.
Ms vale prevenir. Este es el icono que identifica esta
seccin que aparece al final de casi todos los
captulos y en la que se llama la atencin sobre los
errores ms comunes que pueden encontrarse.

Partes del libro


Introduccin a los shells
Este captulo define qu es un shell y cules son las ventajas ms
inmediatas que pueden proporcionar al usuario. Tambin introduce
algunos de los trminos ms corrientes utilizados en el entorno de los
shell con el fin de proporcionar un vocabulario bsico con el que
trabajar el resto del libro. Finalmente, en este captulo se definen los
shell scripts que permiten la ejecucin de comandos por lotes.

El Shell Korn
Este captulo sirve como introduccin a las caractersticas especficas
que pude proporcionar el shell Korn. En l se definen conceptos
bsicos del shell, mtodo para la creacin de scripts de shell, opciones
de la lnea de comandos, etc.

Tipos de datos
En este captulo se introducen los tipos de datos que soporta el shell
Korn, su utilidad y la conveniencia de su aplicacin para conseguir un
cdigo ms fcil de depurar y ms optimizado.

Sustituciones
Se trata de una de las piedras angulares de los shells de UNIX y el
shell Korn la lleva hasta sus ltimas consecuencias. Gracias a las
sustituciones se pueden realizar de forma muy sencilla un sinfn de
operaciones que requeriran muchas lneas de cdigo en un lenguaje
comn. Los tipos de sustituciones bsicos que se tratan son: la
sustitucin de variables, de comandos y funciones, de nombres de
archivos y de expresiones aritmticas.

Clculos aritmticos
Introduce las operaciones aritmticas que se pueden realizar con el
shell Korn. Aunque limitadas al tipo de datos entero, las operaciones
son prcticamente las mismas que las que soporta el lenguaje C.

xxi

xxii

Partes del libro

Condiciones y comprobaciones
Explica cmo se pueden realizar comprobaciones sobre atributos de
los archivos, comparaciones entre cadenas, comprobaciones sobre sus
atributos, etc.

Sentencias de control
Mediante las sentencias de control se puede gestionar el flujo de
ejecucin de nuestro script. El shell Korn proporciona las estructuras
ms tpicas como las condicionales y los bucles.

Funciones
Proporciona la mejor forma de dividir nuestro shell script en mdulos
independientes que permiten generar un cdigo ms estructurado y
fcil de mantener, pudindose incluso llegar a crear libreras de cdigo
completas.

Entradas y Salidas
Cualquier shell moderno proporciona caractersticas bsicas que
permiten la entrada y salida de datos desde o hacia algn dispositivo,
su gestin y la redireccin de entradas y salidas. El shell Korn,
adems, proporciona caractersticas ms complejas como la entrada y
salida sobre mltiples descriptores de archivos de forma simultnea,
comunicacin con coprocesos, etc.

Procesos
La gestin de procesos nos permite controlar de forma muy precisa
cualquier comando o programa que se lance con el shell, de forma que
se convierte en el complemento imprescindible para obtener el
mximo partido de nuestro sistema con el menor nmero posible de
lneas de cdigo.

Gua de referencia rpida


Se proporciona en este ltimo captulo una gua de referencia rpida
con los comandos que posee el shell Korn, tanto los utilizados durante
el libro, como con los que no se han utilizado en el mismo.
Tambin se proporciona una pequea referencia sobre los distintos
modos de edicin y comandos que utiliza el shell Korn.

Agradecimientos
Los autores agradecen a todos aqullos que les han animado a llevar a
cabo este libro, bien por simple amistad, bien porque se mostraban
muy interesados en poseer una copia del mismo (lo cual ayudaba a
hinchar nuestro ego), bien porque terminsemos de una vez (lo que
compensa el anterior punto).
Gracias a nuestras familias que han tenido que soportar horas y horas
de espera con la excusa de que esta sera la ltima vez.
Finalmente, nos gustara dar las gracias especialmente a Gins Lpez
Sevilla, quiz la persona que ms entienda sobre el tema en toda la
Universidad de Alicante, por los incontables consejos, crticas,
fuentes, revisiones y horas perdidas que ha dedicado a este libro.
Estamos seguros que esta obra no podra estar en sus manos si Gins
no hubiera andado por en medio.

LOS AUTORES

xxiii

También podría gustarte