BASH(1) General Commands Manual BASH(1) NOMBRE bash - GNU Bourne-Again SHell (la shell de Bourne otra vez, de GNU) SINOPSIS bash [opciones] [orden | achivo] COPYRIGHT Bash is Copyright (C) 1989-2022 by the Free Software Foundation, Inc. DESCRIPCION Bash es un interprete de lenguage de script compatible con sh que ejecuta ordenes recibidas desde la entrada estandar o desde un archivo. Bash tambien incorpora funcionalidades tomadas de otras shell como Korn y C (ksh y csh). Bash esta pensado para ser una implementacion conforme con la especificacion POSIX de Shell y Herramientas, de la IEEE (Grupo de Trabajo 1003.2 de la IEEE). Bash puede configurarse para ser conforme a POSIX por defecto. OPCIONES La shell puede ejecutarse con cualquiera de las opciones descritas en la descripcion de la orden interna set, incluso la opcion -o. Ademas, bash tambien interpreta las siguientes opciones cuando se ejecuta: -c Con la opcion -c, las ordenes se empiezan a leer a partir del primer argumento orden que no sea una opcion. Si hay algun argumento despues de orden, el primero de ellos se asignara a $0 y el resto a los parametros posicionales. La asignaciona $0 define el nombre de la shell que se usara en los mensajes de error y avisos. -i Si la opcion -i esta presente, la shell es interactivo. -l Hace que bash actue como si se le hubiera llamado como una shell de entrada (consulte LLAMADA mas adelante). -r Si la opcion -r esta presente, entonces la shell se pone en modo restringido (consulte SHELL RESTRINGIDA mas adelante). -s Si la opcion -s esta presente, o si no quedan argumentos tras el procesado de las opciones, entonces las ordenes se leen desde la entrada estandar. Esta opcion permite definir los parametros posicionales cuando se llama a una shell interactiva o cuando se reciban datos mediante una tuberia. -D Se muestra en la salida estandar una lista de cadenas de caracteres entrecomilladas precedidas por $. Estas cadenas son las que estan sujetas a traduccion cuando la localizacion en curso no es C ni POSIX. Esta opcion implica tambien la -n; no se ejecuta ninguna orden. [-+]O [opcion_shopt] opcion_shopt representa una de las opciones de la shell aceptadas por la orden nativa shopt (consulte ORDENES NATIVAS DE LA SHELL a continuacion). Si esta presente opcion_shopt, -0 definira el valor de dicha opcion y +0 anulara esa definicion. Si no esta presente opcion_shopt, se muestran en pantalla una lista con los nombres y los valores de las opciones aceptadas por shopt. Si se invoca con la opcion +0, se muestra una lista apta para su reutilizacion. -- Un -- senala el fin de las opciones e inhabilita cualquier posterior procesado de opciones. Cualesquier argumentos tras -- se tratan como nombres de fichero y argumentos. Un argumento - es equivalente a --. Bash tambien interpreta una variedad de opciones multi-caracter. Estas opciones deben aparecer en la linea de ordenes antes de las opciones monocaracter para que puedan ser reconocidas. --debugger Ejecuta el depurador antes del inicio de la shell. Activa el modo de depuracion ampliado (consulte la descripcion de la opcion extdebug de la orden nativa shopt a continuacion). --dump-po-strings Equivalente a -D, pero la salida es en el formato de un fichero po (objeto portable), del gettext de GNU. --dump-strings Equivalente a -D. --help Muestra un mensaje de ayuda y termina. --init-file archivo --rcfile archivo Ejecuta ordenes desde fichero en lugar de hacerlo desde el archivo de inicio personal estandar ~/.bashrc si la shell es interactiva (consulte LLAMADA mas adelante). --login Equivale a -l. --noediting No utiliza la biblioteca de GNU readline para leer lineas de ordenes en modo interactivo. --noprofile No lee ni el fichero de arranque de sistema /etc/profile ni ninguno de los ficheros de inicio personales ~/.bash_profile, ~/.bash_login, ni ~/.profile. Por omision, bash lee estos ficheros cuando se le llama como una shell de entrada (vea LLAMADA mas adelante). --norc No lee ni ejecuta el archivo de inicio personal ~/.bashrc si la shell es interactiva. Esta opcion esta activa de forma predeterminada si la shell se ejecuta mediante la orden sh. --posix Cambia el comportamiento de bash cuando el funcionamiento difiera del estandar POSIX 1003.2, de forma que concuerde con este(posix mode). Consulte VEASE TAMBIEN mas delante si quiere leer un documento donde se detalla la influencia del modo posix sobre el funcionamiento de bash. --restricted la shell se pone en modo restringido (consulte SHELL RESTRINGIDA mas adelante). --verbose Equivale a -v. --version Muestra informacion acerca de la version de esta instancia de bash y finaliza. ARGUMENTOS Si quedan argumentos tras el procesado de las opciones, y no se han dado ni la opcion -c ni la -s, se supondra que el primer argumento es el nombre de un archivo que contiene ordenes de la shell. Si bash se llama de esta manera, $0 se define con el nombre del archivo, y los parametros posicionales se definen con los restantes argumentos. Bash lee y ejecuta ordenes de este archivo y despues finaliza. El estado de salida de bash es el de la ultima orden ejecutada en el script. Si no se ejecuta ninguna orden, el estado de salida es 0. Primero se intenta abrir el archivo en el directorio actual, si no se encunetra ninguno entonces se buscara en los directorios definidos en el PATH para el script. LLAMADA Una shell de entrada es aquella cuyo primer caracter del argumento cero es un -, o que ha sido llamada con la opcion --login. Una shell interactiva es aquella que se inicio sin argumentos sin opciones (salvo que se especifique -s) y sin la opcion -c cuya entrada y error estandar estan conectadas a terminales (segun se determina en isatty(3)), o uno iniciado con la opcion -i. PS1 esta definido y $- incluye i si bash es interactivo, permitiendo asi a un script de shell o a un archivo de inicio la comprobacion de este estado. Los siguientes parrafos describen como bash ejecuta sus archivos de inicio. Si cualquiera de los archivo existe pero no puede leerse, bash informa de un error. Las tildes de la n se expanden en nombres de archivos como se describe mas adelante en Expansion de la tilde en la seccion EXPANSION. Cuando bash se llama como una shell de entrada interactiva, primero lee y ejecuta ordenes desde el archivo /etc/profile, si es que existe. Tras leer este archivo, buscara ~/.bash_profile, ~/.bash_login, y ~/.profile, en ese orden, ejecutando las ordenes del primero de ellos que exista y se pueda leer. La opcion --noprofile evitara estas acciones. Cuando una shell de entrada termina o una shell de entrada no interactiva ejecuta la orden nativa exit, bash ejecutara las ordenes contenidas en ~/.bash_logout, si existiese. Cuando se inicia una shell interactiva que no es de entrada, bash lee y ejecuta ordenes desde ~/.bashrc, si es que existe. Esto puede evitarse mediante la opcion --norc. La opcion --rcfile fichero forzara a bash a leer y ejecutar ordenes desde fichero en vez de ~/.bashrc. Cuando bash se arranque de forma no interactiva, por ejemplo para ejecutar un script de la shell, busca la variable BASH_ENV en el entorno, expande su valor si esta definida, y utiliza el valor expandido como el nombre de un fichero a leer y ejecutar. Bash se comporta como si se ejecutaran las siguientes ordenes: if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi pero el valor de la variable PATH no se emplea para buscar el nombre del fichero. Si bash se ejecuta con con el nombre sh, intentara imitar el comportamiento de arranque de versiones antiguas de sh tanto como sea posible, pero sin salirse del estandar POSIX. Cuando se ejecuta como una shell interactiva de entrada, primero intentara ejecutar las ordenes de /etc/profile y ~/.profile, en ese orden. La opcion --noprofile anulara esta accion. Cuando se ejecuta como una shell interactiva con el nombre sh, bash busca la variable ENV, expande su valor si esta definida, y emplea el valor expandido como el nombre de un archivo a ejecutar. Como una shell llamada como sh no intentara ejecutar ordenes desde cualquier otro archivo de inicio, la opcion --rcfile no tiene efecto. Una shell no interactiva ejecutada con el nombre sh no intenta leer ningun archivo de inicio. Cuando se ejecuta como sh, bash entra en modo posix despues de leer los ficheros de inicio. Cuando bash se inicia en modo posix, como ocurre cuando se da la opcion de linea de ordenes --posix, sigue el estandar POSIX para los ficheros de arranque. En este modo, los shells interactivos expanden la variable ENV y se leen y ejecutan ordenes desde el fichero cuyo nombre es el valor expandido de dicha variable. No se lee ningun otro fichero de arranque. Bash attempts to determine when it is being run with its standard input connected to a network connection, as when executed by the historical remote shell daemon, usually rshd, or the secure shell daemon sshd. If bash determines it is being run non-interactively in this fashion, it reads and executes commands from ~/.bashrc, if that file exists and is readable. It will not do this if invoked as sh. The --norc option may be used to inhibit this behavior, and the --rcfile option may be used to force another file to be read, but neither rshd nor sshd generally invoke the shell with those options or allow them to be specified. Si se inicia la shell con un id de usuario (o grupo) efectivo distinto del id de usuario (o grupo) real y no se indica la opcion -p, no se leera ningun archivo de inicio, no se heredaran las funciones de la shell del entorno, si estan presentes en el entorno se ignoraran las variables SHELLOPTS, BASHOPTS, CDPATH y GLOBIGNORE y el id de usuario efectivo sera el mismo del usuario real. Si se indica la opcion -p, se hara lo mismo salvo que el id de usuario efectivo no se cambia. DEFINICIONES Las siguientes definiciones se usan a traves del resto de este documento. blanco Un espacio en blanco o tabulacion (tab). palabra Una secuencia de caracteres considerados por la shell como una sola unidad. Tambien se conoce como un lexema (token). nombre Una palabra que consiste solamente en caracteres alfanumericos y subrayados, y comienza con un caracter alfabetico o un subrayado. Tambien se llama identificador. metacaracter Un caracter que, cuando no esta entrecomillado, separa palabras. Uno de los siguientes: | & ; ( ) < > space tab newline operador de control Un lexema que realiza una funcion de control. Es uno de los siguientes simbolos: || & && ; ;; ;& ;;& ( ) | |& PALABRAS RESERVADAS Las Palabras reservadas son palabras que tienen un significado especial para la shell. Las siguientes palabras se reconocen como reservadas cuando no van entrecomilladas y/o son la primera palabra de una orden simple (vea GRAMATICA DE LA SHELL a continuacion) o la tercera palabra de una orden case o select (solo seria valido in) o de la orden for (solo in y do serian validos): ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] GRAMATICA DE LA SHELL Esta seccion describe la sintaxis de diversas formas de ordenes de la shell. Ordenes simples Una orden simple es una secuencia de asignaciones opcionales de variables seguida por palabras separadas por blancos y redirecciones, y terminadas por un operador de control. La primera palabra especifica la orden a ser ejecutada, se pasa como argumento cero. Las palabras restantes se pasan como argumentos a la orden invocada. El valor devuelto de una orden simple es su estado de salida, o 128+n si la orden ha terminado debido a la senal n. Tuberias Una tuberia es una secuencia de una o mas ordenes separadas por uno de los operadores de control | o |&. El formato de una tuberia es: [time [-p]] [ ! ] orden1 [ [|||&] orden2 ... ] La salida estandar de orden1 esta conectada mediante una tuberia a la entrada estandar de orden2. Dicha conexion se reliza antes de cualquier redireccion que defina la orden1 (consulte REDIRECCION mas adelante). Si se emplea |& la salida de error estandar de orden1 tambien se conectara a la entrada estandar de orden2 junto con su salida estandar a traves de la tuberia; esto es una abreviatura de 2>&1 |. Esta redireccion implicita de la salida de error estandar hacia la salida estandar se realiza despues de cualquier redireccion definida mediante orden1. El estado de salida de una tuberia sera el de la ultima orden salvo que la opcion pipefail este activada, en cuyo caso el estado de salida sera el de la ultima (mas a la derecha) orden que conforme la tuberia. Si se precede la tuberia de la palabra reservada !, su estado de salida sera la negacion logica del estado de salida descrito para los casos anteriores. La shell esperara que finalice la ejecucion de la ultima orden para devolver un estado de salida. Si la palabra reservada time precede una tuberia, se informa del tiempo transcurrido, asi como del de usuario y sistema, consumido en la ejecucion de la tuberia, cuando esta termina. La opcion -p cambia el formato de salida al especificado por POSIX. Cuando la shell esta en modo posix, no reconoce time como palabra reservada si el siguiente conjunto de opciones comienza por "-". La variable TIMEFORMAT puede definir la forma en que se muestran las temporizaciones. Consulte TIMEFORMAT en el apartado Variables de la Shell. Cuando la shell esta en modo posix, time puede ir seguido de un salto de linea. En cuyo caso, se muestra la totalidad del tiempo de usuario y sistema consumido por la shell y sus descendientes. Puede usarse la variable TIMEFORMAT para definir el formato de la informacion de tiempo. Cada orden que forme parte de una tuberia se ejecuta en un proceso separado, es decir, en una subshell. Consulte ENTORNO DE EJECUCION DE ORDENES si precisa informacion acerca del entorno en una subshell. Si la opcion lastpipe esta activada mediante la orden nativa shopt (vea la descripcion de shopt a continuacion), el ultimo elemento de una tuberia puede ser ejecutado por la propia shell cuando no esta activado el control de tareas. Listas Una lista es una secuencia de una o mas tuberias separadas por uno de los operadores ;, &, &&, o ||, y terminada opcionalmente por uno de ;, &, o . De estos operadores de listas, && y || tienen igual precedencia. Le siguen ; y &, que tambien tienen igual precedencia. Puede aparece uno o varios saltos de linea en lugar de un punto y coma para delimitar ordenes en una lista Si una orden se termina mediante el operador de control &, la shell ejecuta la orden en segundo plano en una subshell. La shell no espera que la orden acabe, y el estado de salida sera 0. Esto es lo que se denomina ordenes asincronas. Las ordenes separadas por un ; se ejecutan secuencialmente; la shell espera que cada orden termine, por orden. En este caso, el estado de salida sera el de la ultima orden ejecutada. Las listas AND y OR son secuencias formadas por una o mas tuberias separadas por los operadores de control && y ||, respectivamente. Se comienzan a interpretar por la izquierda. Una lista AND tiene el siguiente formato: orden1 && orden2 orden2 se ejecuta si y solo si orden1 devuelve un estado de salida 0. Una lista O tiene el siguiente formato orden1 || orden2 orden2 se ejecuta si y solo si orden1 devuelve un estado de salida distinto de cero. El estado de salida de las listas Y y O es el de la ultima orden ejecutada en la lista. Ordenes Compuestas Una orden compuesta es una de las siguientes. En la mayoria de los casos, una lista en la descripcion de una orden puede ir separada del resto de la orden por uno o mas saltos de linea y puede ir seguido de un salto de linea en lugar de un punto y coma. (lista) lista se ejecuta en una subshell (consulte ENTORNO DE EJECUCION DE ORDENES mas adelante). Despues de que la orden finaliza su ejecucion, las asignaciones a variables y ordenes nativas que afectaran al entorno de la shell no siguen vigentes. El estado de retorno es el de salida de lista. { lista; } lista se ejecuta en el entorno actual de la shell, debera finalizar con un salto de linea o un punto y coma. Esto se conoce como un grupo de ordenes. El estado de salida es el de lista. Observe que a diferencia de los metacaracteres ( y ), los metacaracteres { y } son palabras reservadas y solo deberian utilizarse donde dichas palabras se reconozcan como tales. Como no pueden causar una division de palabra, deben separarse de la lista mediante espacio o mediante otro metacaracter de la shell. ((expresion)) La expresion se evalua de acuerdo a las reglas descritas mas adelante bajo la seccion EVALUACION ARITMETICA. Si el valor de la expresion es distinto de cero, el estado de retorno es 0; de otro modo el estado de retorno es 1. La expresion esta sujeta a la misma expansion que tendria estnado entre comillas dobles, salvo que dichas comillas no seria tratadas como caracteres especiales y se eliminarian. [[ expresion ]] Devuelve un estado de 0 o 1 dependiendo de la evaluacion de la expresion condicional expresion. Las expresiones se componen de las primarias descritas mas adelante en el apartado EXPRESIONES CONDICIONALES. No tienen lugar division de palabras ni expansion de nombres de ruta en las palabras entre el [[ y el ]]; si se realizan la expansion de tilde, expansion de parametros y variables, expansion aritmetica, sustitucion de orden, sustitucion de proceso y eliminacion de comillas en dichas palabras (la expansion que ocurriria si las palabras estuviesen entre comillas dobles). Deben eliminarse las comillas de los operadores condicionales como -f para que sean reconocidos como primarios. Cuando se emplean con [[, los operadores < y > ordenan lexicograficamente en base a la configuracion del idioma actual. Cuando se emplean los operadores == y !=, la cadena a la derecha del operador se considera un patron y se hace concordar de acuerdo a las reglas descritas mas adelante bajo el epigrafe Concordancia de patrones, tal como si estuviese activa la opcion extglob de la shell. El operador == equivale a =. Si esta activada la opcion nocasematch de la shell, se buscara la concordancia sin diferenciar entre mayusculas y minusculas. El valor devuelto es 0 si la cadena concuerda (==) o no concuerda (=0 )con el patron, respectivamente, y 1 en otro caso. Cualquier parte del patron puede entrecomillarse para forzar la concordancia como una cadena de caracteres pura. Dispone de otro operador binario: =~. Tiene la misma prevalencia que == y !=. Al usarlo, la cadena a la derecha se considerara una expresion regular ampliada POSIX y concordada adecuadamente (mediante las interfaces POSIX regcomp y regexec generalmente descritas en regex(3). El valor devuelto sera 0 si la cadena concuerda con el patron y 1 en caso contrario. Si la expresion regular contiene algun error de sintaxis se devolvera el valor 2. Si la opcion nocasematch esta activa, se buscara la concordancia sin distinguir entre mayusculas y minusculas. Si se entrecomilla una parte del patron, dicha parte concordara literalmente. Debe tenerse especial cuidado con el uso de corchetes ya que las comillas normales pierden su especial significado entre ellos. El patron concordara si lo hace cualquier parte de la cadena. Para hacer que concuerde la cadena completa, puede rodear el patron con los operadores de expresiones regulares ^ y $. La variable vectorial BASH_REMATCH registra la parte de la cadena que concordo con el patron. El elemento de BASH_REMATCH con indice 0 contendra el fragemento de la cadena que concuerda con toda la expresion regular. Las subcadenas que concuerdan con subexpresiones entre parentesis se guardan en los indices de BASH_REMATCH donde el indice n es la parte de la cadena que concuerda con la nesima subexpresion entre parentesis. Bash define BASH_REMATCH con un alcance general, declararla como una variable local puede dar lugar a resultados indeseados. Las expresiones pueden combinarse mediante los siguientes operadores, listados en orden decreciente de precedencia: ( expresion ) Devuelve el valor de expresion. Esto puede emplearse para cambiar la precedencia normal de los operadores. ! expresion Verdadero si expresion es falsa. expresion1 && expresion2 Verdadero si ambas expresion1 y expresion2 son verdaderas. expresion1 || expresion2 Verdadera si al menos una de expresion1 o expresion2 es verdadera. Los operadores && y || no evaluan la expresion2 si el valor de expresion1 es suficiente para determinar el valor de retorno de toda la expresion condicional. for nombre [ [ in palabra ...; ] ] do lista ; done La lista de palabras que va detras de in se expande, generando una lista de elementos. La variable nombre se define como cada elemento de la lista en cada iteracion, y lista se ejecuta cada vez. Si la palabra de in se omite, la orden for ejecuta lista una vez para cada parametro posicional que este definido (consulte PARAMETROS mas adelante). El estado de retorno es el de salida de la ultima orden que se ejecuta. Si la expansion de los elementos despues del in resulta en una lista vacia, no se ejecuta ninguna orden y el estado de salida es 0. for (( expr1 ; expr2 ; expr3 )) ; do lista ; done Primeramente se evaluara la expresion aritmetica expr1 en base a las reglas definidas mas adelante en la seccion EVALUACION ARITMETICA. Despues se evalua la expresion expr2 repetidamente hasta que el resultado sea cero. Cada vez que expr2 se evalue con un resultado diferente a cero, se ejecutara lista y se evaluara expr3. Si se omite alguna de las expresiones, se considerara el valor 1 como resultado de su evaluacion. El valor retornado es el estado de salida de la ultima orden de lista ejecutada o falso si alguna de las expresiones no es valida. select nombre [ in palabra ] ; do lista ; done La lista de palabras que sigue a in se expande, generando una lista de elementos. El conjunto de palabras expandidas se muestra en la salida estandar de errores, cada una precedida por un numero. Si la palabra del in se omite, se muestran los parametros posicionales (consulte PARAMETROS mas adelante). Entonces se muestra el indicador PS3 y se lee una linea desde la entrada estandar. Si la linea consiste en un numero correspondiente a una de las palabras mostradas, entonces el valor de nombre se pone a esa palabra. Si la linea esta vacia, las palabras y el indicador se muestran de nuevo. Si se lee EOF, la orden select se completa y devuelve 1. Cualquier otro valor leida hace que nombre se defina como un valor vacio. La linea leida se guarda en la variable REPLY. La lista se ejecuta tras cada seleccion hasta que se ejecute una orden break. El estado de salida de select es el de la ultima orden ejecutada en lista o cero si no se ha ejecutado ninguna orden. case palabra in [ [(] patron [ | patron ] ... ) lista ;; ] ... esac Una orden case expandira primero palabra y buscara si concuerda con cada uno de los patrones en base a las reglas de concordancia descritas mas adelante en Concordancia. La palabra se expandira empleando expansion de tilde, expansion de parametros y variables, expansion aritmetica, sustitucion de ordenes, sustitucion de procesos y eliminacion de comillas. Cada patron examinado se expande empleando expansion de tilde, expansion de parametros y variables, expansion aritmetica, sustitucion de ordenes, sustitucion de procesos y eliminacion de comillas. Si esta activa la opcion nocasematch, se buscara la concordancia sin distinguir entre mayusculas y minusculas. Cada vez que se encuentre una concordancia, se ejecutara la correspondiente lista. Si se emplea el operador ;;, una vez encontrada una concordancia, no se seguiran buscando mas. Si se emplea ;& en lugar de ;;, la ejecucion continuara con la lista asociada con el siguiente conjunto de patrones. Si se utiliza ;;& en lugar de ;; hara que la shell pruebe el siguiente conjunto de patrones, si lo hubiese, ejecutando las listas de una concordancia, siguiendo con la ejecucion de la estructura 'case' como si no hubiese habido concordancia alguna. El valor de salida sera cero si no existen concordancias con ningun patron. En cualquier otro caso, sera el estado de salida correspondiente a la ultima orden ejecutada en lista. if lista; then lista; [ elif lista; then lista; ] ... [ else lista; ] fi La lista if se ejecuta. Si su estado de salida es cero, se ejecuta la lista then. De otro modo, se ejecuta por turno cada lista elif, y si su estado de salida es cero, se ejecuta la lista then correspondiente y la orden se completa. Si no, se ejecuta la lista then si esta presente. El estado de salida es el de la ultima orden ejecutada, o cero si ninguna condicion fue verdadera. while lista-1; do lista-2; done until lista-1; do lista-2; done La orden while ejecuta continuamente la lista lista-2 siempre que la ultima orden de lista-1 devuelva un estado de salida cero. La orden until es identica a la while, salvo que la comprobacion es a la inversa: la lista-2 se ejecuta mientras que la ultima orden en lista-1 devuelva un estado de salida distinto de cero. El estado de salida de las ordenes while y until es el de la ultima orden de la lista-2 ejecutada, o cero si no se ejecuto ninguna orden. Coprocesos Un coproceso es una orden de la shell precedida de la palabra reservada coproc. Un coproceso se ejecuta de modo asincrono en una subshell, de igual modo que si la orden fuese seguida del operador de control &, con una tuberia bidireccional entre la shell y el coproceso. La sintaxis de un coproceso es la siguiente: coproc [NOMBRE] orden [redirecciones] Esto creara un coproceso llamado NOMBRE. orden puede ser un orden simple o compuesta. NOMBRE sera una variable de la shell. Si no se da ningun NOMBRE, por defecto se asignara el de COPROC. El formato recomendado de un coproceso es el siguiente: coproc NOMBRE { orden [redirecciones]; } Esta forma es recomendable porque las ordenes simples haran que el coproceso siempre se llame COPROC, siendo mas sencillo su uso y mas completo que las otras ordenes compuestas. Si orden es una orden compuesta, NOMBRE sera opcional. La palabra que siga a coproc determinara si dicha palabra debe interpretarse como el nombre de una variable: se considerara como el valor de NOMBRE si no es una palabra reservada que introduzca una orden compuesta. Si orden es una orden simple, NOMBRE no esta permitido; esto se hace para evitar confusiones entre NOMBRE y la primera palabra de la orden compuesta. Cuando se ejecuta un coproceso, la shell crea una variable vectorial (consulte vectores mas adelante) llamada NOMBRE dentro de la shell que lo ejecuta. La salida estandar de orden esta unida a un descriptor de archivo de la shell mediante una tuberia, asignandose este a NOMBRE[0]. La entrada estandar de la orden tambien esta conectada mediante una tuberia a otro descriptor de archivo de la shell asignado a NOMBRE[1]. Esta tuberia se define antes de cualquier redireccion definida en la orden (consulte REDIRECCIONES mas adelante). Estos descriptores de archivo pueden emplearse como argumentos en ordenes y redirecciones mediante epansion de palabra. Salvo aquellos creados durante la ejecucion de ordenes y la sustitucion de procesos, los descriptores de archivo no estan disponibles en subshells. El identificador de proceso de la shell abierta para ejecutar el coproceso se almacena en el valor de la variable NAME_PID. La orden nativa wait puede emplearse para esperar la finalizacion del coproceso. Como el coproceso se creo como una orden asincrona, la orden coproc siempre tiene una valor de salida de exito. El valor de salida de un coproceso es el de orden. Definicion de Funciones de la Shell Una funcion de la shell es un objeto que se invoca de igual manera que las ordenes simples y pero ejecutan una orden compuesta con un conjunto propio de parametros posicionales. Las funciones de la shell se declaran del siguiente modo: nombre_funcion () orden_incluida [redireccion] function nombrefuncion [()] orden-compuesta [redireccion] Define una funcion llama nombrefuncion. La palabra reservada function es opcional, si se indica pueden omitirse los parentesis. El cuerpo de la funcion sera la orden compuesta (consulte Ordenes Compuestas mas atras). Esta orden suele consistir en una lista de ordenes entre { y }, pero puede ser cualquier orden que figure bajo Ordenes Compuestas con una unica excepcion: si se emplea la palabra reservada function sin parentesis, son recomendables las llaves. orden-compuesta se ejecutara siempre y cuando nombrefuncion se especifique como el nombre de una orden simple. Si estamos en modo posix, nombrefuncion debera ser un nombre de shell valido y no podra ser una de las ordenes nativas de POSIX. En el modo por defecto, podra emplearse cualquier palabra de la shell sin entrecomillar como nombre de una funcion (simpre que no contenga $. Cualquier redireccion que se haga cuando se define una funcion se llevara a cabo cuando se ejecute la funcion. El estado de salida al definir una funcion sera cero salvo que se incurra en un error de sintaxis o ya exista una funcion de solo-lectura con el mismo nombre. El estado de salida de la ejecucion de una funcion viene dado por el de la ultima orden ejecutada. Consulte FUNCIONES mas adelante. COMENTARIOS En una shell no interactiva, o en una interactiva en el que la opcion interactive_comments de la orden nativa shopt esta activa (consulte ORDENES NATIVAS DE LA SHELL mas adelante), una palabra que empiece por # hace que esa palabra y todos los caracteres que queden en esa linea no sean tenidos en cuenta. Una shell interactiva sin la opcion interactive_comments habilitada, no admite comentarios. La opcion interactive_comments esta activa por defecto en shells interactivas. ENTRECOMILLADO El entrecomillado se emplea para quitar el significado especial para la shell de ciertos metacaracteres o palabras. Puede emplearse para que no se traten caracteres especiales de forma especial, para que palabras reservadas no sean reconocidas como tales, y para evitar la expansion de parametros. Cada uno de los metacaracteres listados a continuacion bajo el epigrafe DEFINICIONES tiene un significado especial para la shell y deben ser protegidos o entrecomillados si quieren referirse a si mismos. Cuando se utilizan la funciones de expansion de historial (consulte EXPANSION DEL HISTORIAL a continuacion), tiene que entrecomillarse el caracter de expansion del historial, generalmente ! si se desea evitar dicha expansion. Existen tres metodos de entrecomillado: El caracter de escape, comillas simples y comillas dobles. Una barra inclinada inversa no entrecomillada (\) es el caracter de escape. Preserva el valor literal del siguiente caracter que lo acompana, con la excepcion de . Si aparece un par \ y la barra invertida no esta ella misma entre comillas, el \ se trata como una continuacion de linea (esto es, se quita del flujo de entrada y no se tiene efectivamente en cuenta). Encerrar caracteres entre apostrofes preserva el valor literal de cada caracter entre las comillas. Una comilla simple no puede estar entre comillas simples, ni siquiera precedida de una barra invertida. Encerrar caracteres entre comillas dobles preserva el valor literal de todos los caracteres de dentro de las comillas, con la excepcion de $, `, y \, si esta activa la expansion del historial, tambien !. Cuando la shell esta en modo posix, ! no tiene un significado especial si va entre dobles comillas aunque este activa la expansion del historial. Los caracteres $ y ` mantienen sus significados especiales dentro de comillas dobles. La barra invertida mantiene su significado especial solamente cuando esta seguida por uno de los siguientes caracteres: $, `, "", \, o . Una comilla doble puede ser entrecomillada entre otras comillas dobles precediendola de una barra invertida. Si esta activa, la expansion del historial se realizara salvo que un ! entre comillas dobles se escape con una barra invertida. No se elimina la barra invertida si precede a !. Los parametros especiales * y @ tienen un significado especial cuando estan entre comillas dobles (consulte PARAMETROS mas adelante). Las secuencias de caracteres de la forma $'cadena' se consideran como una forma espcial de comillas simples. La secuencia se expande a cadena, con los caracteres de cadena que esten protegidos por una barra invertida reemplazados segun especifica el estandar ANSI de C. Las secuencias de escape con barra invertida, si estan presentes, se descodifican como sigue: \a alerta (pitido) \b espacio-atras \e \E un caracter de escape (ESC) \f nueva pagina \n nueva linea \r retorno de carro \t tabulacion horizontal \v tabulacion vertical \\ barra invertida \' comillas simples \" comillas dobles \? signo de interrogacion \nnn el caracter de 8-bits cuyo codigo es el valor octal nnn (de uno a tres digitos octales) \xHH el caracter de 8-bits cuyo codigo es el valor hexadecimal HH (uno o dos digitos hexadecimales) \uHHHH caracter Unicode (ISO/IEC 10646) cuyo valor hexadecimal es HHHH (de uno a cuatro caracteres hexadecimales) \UHHHHHHHH caracter Unicode (ISO/IEC 10646) cuyo valor hexadecimal es HHHHHHHH (de uno a ocho caracteres hexadecimales) \cx un caracter de control -x El resultado de la expansion es entrecomillado con comillas simples, como si el signo de dolar no hubiera estado presente. Una cadena entre comillas dobles precedida por un signo de dolar ($"cadena") hara que la cadena se traduzca segun la localizacion actual.gettext buscara su traduccion en el catalogo de mensajes mediante las variables de la shell LC_MESSAGES, TEXTDOMAINDIR y TEXTDOMAIN. Si la localizacion actual es C o POSIX, la cadena no estuviese traducida o no hubiese ninguna traduccion disponible, el signo de dolar no se tiene en cuenta. Esta es una manera de entrecomillado doble ya que la cadena preserva las dobles comillas por defecto ya sea traducida o no. Si se activa la opcion noexpand_translation mediante la orden nativa shopt, las cadenas traducidas tendran comillas simples en lugar de dobles. Consulte la descripcion de shopt mas adelante en el aprtado ORDENES NATIVAS DE LA SHELL. PARAMETROS Un parametro es una entidad que almacena valores. Puede ser un nombre, un numero, o uno de los caracteres especiales listados a continuacion bajo el epigrafe Parametros especiales. Una variable es un parametro que se denota mediante un nombre, puede tener un valor de cero o mas atributos. Dichos atributos se asigna mediante la orden nativa declare (consulte declare mas adelante en la seccion ORDENES NATIVAS DE LA SHELL). Un parametro esta definido si se le ha asignado un valor. La cadena vacia es un valor valido. Una vez que una variable esta definida, solo puede quitarse de la lista de variables mediante la orden nativa unset (consulte ORDENES NATIVAS DE LA SHELL mas adelante). A una variable se le puede asignar un valor mediante una sentencia de la forma nombre=[valor] Si no se da el valor, a la variable se asigna la cadena vacia. Todos los valores estan sujetos a expansion de tilde, de parametros y de variables, sustitucion de ordenes, expansion aritmetica, y eliminacion de comillas (consulte EXPANSION mas adelante). Si la variable tiene activado su atributo integer entonces valor se evaluara como una expresion aritmetica incluso si no se emplea la expansion $((...)) (consulte Expansion aritmetica mas adelante). No se realiza la division de palabras ni la expansion de nombres de ruta. Las asignaciones tambien pueden figurar como argumentos de las ordenes nativas alias, declare, typeset, export, readonly y local (ordenes de declaracion). En modo posix estas ordenes nativas puede aparecer en una orden despues de una o mas instancias de la orden nativa y mantener las propiedades de la asignacion. En el contexto en el que una declaracion de asignacion asigna un valor a una variable de la shell o indice vectorial, el operador += puede emplearse para agregar o incluir en el valor anterior de la variable. Esto incluye argumentos para ordenes nativas como declare que acepten declaraciones de asignacion (ordenes de declaracion). Cuando se aplica += a una variable que se definido como numero entero (integer), su valor se calcula como una expresion aritmetica y se suma al valor actual de la variable, que tambien se calcula. Cuando += se aplica a una variable vectorial mediante asignacion compuesta (consulte Vectores a continuacion), el valor de la variable no se anula (como sucede cuando se usa =), y los nuevos valores se agregan al vector a partir de uno mayor que el indice maximo del mismo (caso de vectores indexados) o agregados como pares clave-valor adicionales si es un vector asociativo. Cuando se aplica a una variable con valor de cadena, el valor se expande y se agrega al valor de la variable. A una variable se le puede asignar el atributo nameref ejecutando las ordenes nativas declare o local con la opcion -n (consulte las descripciones de declare y local a continuacion) para crear un nameref, o una referencia a otra variable. Esto permite que las variables sean manipuladas de forma indirecta. Cada vez que se hace referencia a la variable nameref, se asigna, se anula o se modifican sus atributos (no usando o cambiando el atributo nameref en si), la operacion se realizara sobre la variable definida por el valor de la variable nameref. Una referencia de nombre (nameref) suele usarse dentro de las funciones de shell para referirse a una variable cuyo nombre se pasa como argumento a la funcion. Por ejemplo, si se pasa un nombre de variable a una funcion de shell como su primer argumento, ejecutando declare -n ref=$1 dentro de la funcion se creara una variable ref cuyo valor es el nombre de la variable pasado como primer argumento. Las referencias y asignaciones a ref, y los cambios en sus atributos, se tratan como referencias, asignaciones y modificaciones de atributos a la variable cuyo nombre se paso como $1. Si la variable de control en un bucle for tiene el atributo nameref, la lista de palabras puede ser una lista de variables de shell, y se establecera una referencia de nombre para cada palabra en la lista, cada vez que se ejecute el ciclo. A las variables vectoriales no se les puede asignar el atributo nameref. Sin embargo, las variables nameref pueden hacer referencia a variables vectoriales y variables vectoriales con subindice. Las referencias de nombre se pueden desactivar mediante la opcion -n en la orden nativa unset. De lo contrario, si se ejecuta unset con el nombre de una variable nameref como argumento, la variable a la que hace referencia se desactivara. Parametros Posicionales Un parametro posicional es un parametro denotado por uno o mas digitos, distintos del simple 0. Los parametros posicionales se asignan a partir de los argumentos de la shell cuando este es llamado, y pueden ser reasignados mediante la orden nativa set. Los parametros posicionales no pueden ser asignados con sentencias de asignacion. Los parametros posicionales se reemplazan temporalmente cuando se ejecuta una funcion de la shell (consulte FUNCIONES mas adelente). Cuando un parametro posicional consistente en mas de un solo digito se expande, debe rodearse por llaves (consulte EXPANSION mas adelante). Parametros Especiales la shell trata de forma especial a ciertos parametros. Estos solo pueden referenciarse; no se permite asignarles nada. * Se expande a los parametros posicionales, empezando por 1. Cuando la expansion no ocurre entre comillas dobles, cada parametro posicional se expande a una palabra separada. En los contextos en los que se realiza, estas palabras pueden ser objeto de separacion y de expansion del nombre de ruta. Cuando dicha expansion ocurren dentro de un entrecomillado doble, esta se expande a una sola palabra con el valor de cada parametro separado por el primer caracter de la variable especial IFS. Esto es, "$*" es equivalente a "$1c$2c...", donde c es el primer caracter del valor de la variable IFS. Si IFS no esta definida, los parametros se separan por espacios. Si IFS es la cadena vacia, los parametros se juntan sin ningun separador. @ Se expande a los parametros posicionales, comenzando desde el uno. En donde se realiza la division de palabras, se expande cada parametro posicional a una palabra separada; si no estan entrecomillada con comillas dobles, estas palabras estaran sujetas a division de palabra. Donde no se realiza la division de palabra, se expande a una sola palabra con cada parametro posicional separado por un espacio. Cuando la expansion ocurre entre comillas dobles, cada parametro se expande a una palabra separada. Es decir, "$@" es equivalente a '$1' '$2'... Si la expansion entre comillas dobles ocurre dentro de una palabra, la expansion del primer parametro se une con la parte inicial de la palabra original y la expansion del ultimo parametro se une con la ultima parte de la palabra original. Cuando no hay parametros posicionales, '$@'y $@ se eliminan (se expande a 'nada'). # Se expande al numero en base 10 de parametros posicionales. ? Se expande al estado de salida de la tuberia mas recientemente ejecutada en primer plano. - Se expande a las opciones de la shell activas actualmente segun se hayan especificado en la llamada, mediante la orden nativa set, o las que haya puesto el mismo shell (como la opcion -i). $ Se expande al PID de la shell. En una subshell, se expande al PID de la shell actual, no al del subshell. ! Se expande al PID del proceso mas recientemente ejecutado en segundo plano ya fuese ejecutado como una orden asincrona o mediante la orden nativa bg. Consulte CONTROL DE TAREAS mas adelante. 0 Se expande al nombre de la shell o script de la shell. Este parametro se pone en el inicio de la shell. Si bash se llama con un fichero de ordenes, $0 se pone al nombre de ese fichero. Si bash se inicia con la opcion -c, entonces $0 se pone al primer argumento tras la cadena que se va a ejecutar, si hay alguno presente. Si no, se pone al nombre de fichero empleado para llamar a bash, como se da en el argumento cero. Variables de la Shell la shell define automaticamente las siguientes variables: _ Al inicio de la shell, adopta el valor de la ruta con la que se inicio dicha shell o el script que se ejecute tal como se indico en el entorno en los argumentos. Por lo tanto se expandira al ultimo argumento de la anterior orden ejecutada en primer plano despues de la expansion. Tambien adopta el valor de la ruta completa empleada para invocar cada orden ejecutada, se pone en el entorno exportado para esa orden. En el caso de la lectura de correo electronico, esta variable adopta el valor del nombre del archivo de correo leido en cada instante. BASH Se expande al nombre completo del fichero empleado para llamar a esta instancia de bash. BASHOPTS Una lista, de elementos separados por dos puntos, de opciones activas de la shell. Cada palabra en la lista es un argumento valido para la opcion -s de la orden nativa shopt (consulte ORDENES NATIVAS DE LA SHELL mas adelante). Las opciones que aparecen en BASHOPTS son aquellas que aparecen como on en shopt. Si esta variable esta en el entorno cuando se inicia bash, cada opcion de la shell en la lista se activara antes de cargar cualquier archivo de inicio. Es una variable de solo lectura. BASHPID Se expande al ID del proceso en ejecucion de bash. Esto difiere de $$ en ciertos casos, como las subshells que no requieren una reinicializacion de bash. No se consideran las asignaciones de BASHPID. Si se anula el valor definido a BASHPID, esta pierde sus propiedades especiales aunque se vuelva a definir posteriormente. BASH_ALIASES Una variable vectorial asociativa cuyos miembros pertenecen a la lista interna de alias tal como la gestiona la orden nativa alias. Los elementos agregados a este vector aparecen en la lista de los alias; sin embargo, desactivar elementos del vector no hara que los alias se eliminen de dicha lista. Si se desactiva BASH_ALIASES, perdera sus propiedades especiales, incluso si se reactiva posteriormente. BASH_ARGC Una variable vectorial formada por el numero de parametros en cada marco de la pila de llamadas de la actual ejecucion de bash. El numero de parametros de la subrutina actual (funcion o script ejecutado mediante . o source) se encuentra en la parte superior de la pila. Cuando se ejecuta una subrutina, se envian los parametros a BASH_ARGC. La shell activa BASH_ARGC solo cuando esta en modo de depuracion ampliado (consulte mas adelante la descripcion de la opcion extdebug de la orden nativa shopt). La activacion de extdebug despues de iniciar la ejecucion de un script, o hacer referencia a esta variable cuando no se ha configurado, puede dar lugar a resultados inconsistentes. BASH_ARGV Una variable vectorial que contiene todos los parametros de la pila de llamadas de la ejecucion actual de bash. El parametro final de la ultima llamada a la subrutina esta en la parte superior de la pila; el primer parametro de la llamada inicial esta en la parte inferior. Cuando se ejecuta una subrutina, los parametros proporcionados se envian a BASH_ARGV. La shell activa BASH_ARGV solo cuando esta en modo de depuracion ampliado (consulte a continuacion la descripcion de la opcion extdebug de la orden nativa shopt). Activar extdebug despues del inicio de la ejecucion de un script, o hacer referencia a el cuando no se ha configurado, puede generar valores inconsistentes. BASH_ARGV0 Esta variable se expande al nombre de la shell o del script (igual que $0, consulte al descripcion del parametro especial 0 anteriormente). Los valores asignados a BASH_ARGV0, tambien se asignan automaticamente a $0. Si se desactiva BASH_ARGV0, perdera sus propiedades especiales aunque posteriormente sea reactivado. BASH_CMDS Variable vectorial asociativa cuyos miembros corresponden al hash de la tabla interna de ordenes tal como la gestiona la orden nativa hash. Los elementos que se anadan a ese vector apareceran en dicha tabla, sin embargo los elementos que se desactiven si que seguiran apareciendo. Si se desactiva BASH_CMDS, perdera sus propiedades especiales aunque se vuelva a reactivar posteriormente. BASH_COMMAND La orden que esta siendo ejecutada en ese instante o que va a serlo, excepto cuando se ejecute una orden marcada en una tramp (trap) e cuyo caso equivaldria a dicha orden. Si se anula la definicion de BASH_COMMAND, pierde sus propiedades especiales aunque se vuelva a definir con posterioridad. BASH_EXECUTION_STRING La orden dada como argumento al ejecutar con la opcion -c. BASH_LINENO Variable vectorial cuyos miembros corresponden a los numeros de linea de codigo fuente donde se invoco FUNCNAME. ${BASH_LINENO[$i]} sera el numero de linea en el archivo de codigo fuente (${BASH_SOURCE[$i+1]}) donde se invoco ${FUNCNAME[$i]} (o bien ${BASH_LINENO[$i-1]} si esta referenciado en el seno de otra funcion de la shell). El numero de linea actual puede obtenerse mediante LINENO. BASH_LOADABLES_PATH Lista de directorios separados entre si po dos puntos en los cuales la shell busca ordenes nativas cargables dinamicamente definidas por la orden enable. BASH_REMATCH Variable vectorial cuyos miembros se asignan mediante el operador =~ a la orden condicional [[. El elemento con indice 0 correspondera a la parte de la cadena que concuerda con la totalidad de la expresion regular. El elemento con indice n correspondera a la porcion de cadena que concuerda con la nesima subexpresion entre parentesis. BASH_SOURCE Variable vectorial cuyos miembros lo forman los nombres de los archivos de codigo fuente donde se definen los nombres de las funciones de la shell de la variable vectorial FUNCNAME. La funcion de la shell ${FUNCNAME[$i]} se define en el archivo ${BASH_SOURCE[$i]} y se invoca desde ${BASH_SOURCE[$i+1]}. BASH_SUBSHELL Se incrementa en una unidad dentro de cada subshell o cada entorno de subshell cuando la shell se incia en el. El valor inicial es 0. Si se desactiva BASH_SUBSHELL, esta perdera su propiedades especiales aunque luego se vuelva a definir. BASH_VERSINFO Una variable vector de lectura exclusiva cuyos miembros contienen informacion de version para esta instancia de bash. Los valores asignados a los miembros del vector son como sigue: BASH_VERSINFO[0] El numero mayor de version (la distribucion). BASH_VERSINFO[1] El numero menor de version (la version). BASH_VERSINFO[2] El nivel de parcheo. BASH_VERSINFO[3] La version de compilacion. BASH_VERSINFO[4] El estado de la distribucion (por ejemplo, beta1). BASH_VERSINFO[5] El valor de MACHTYPE. BASH_VERSION Se expande a una cadena que describe la version de esta instancia de bash. COMP_CWORD Indice en ${COMP_WORDS} de la palabra que contiene la posicion actual del cursos. Esta variable solo esta disponible en las funciones de la shell invocadas por las utilidades de autocompletado. Consulte Autocompletado Programable a continuacion. COMP_KEY La clave (o ultima clave de una secuencia de claves) empleada para invocar la actual funcion de autocompletado. COMP_LINE Linea de ordenes actual. Esta variable solo estara disponible para las funciones de la shell y ordenes externas invocadas por las utilidades de autocompletado programable. Consulte Autocompletado Programable a continuacion. COMP_POINT Indice de la posicion actual del cursor respecto del comienzo de la orden actual. Si el cursor esta al final de dicha orden, el valor de esta variable sera igual a ${#COMP_LINE}. Esta variable solo estara disponible en funciones de la shell y ordenes externas invocadas durante autocompletados. Consulte Autocompletado Programable mas adelante. COMP_TYPE Definida como un entero segun el tipo de completado provoco la llamada a una funcion de autocompletado: TAB para un autocompletado normal, ? para mostrar autocompletados despues de varias tabulaciones, ! para mostrar las alternativas disponibles en autocompletados parciales, @ para mostrar alternativas disponibles cuando se modifico la palabra en cuestion o % para los menus. Esta variable solo estara disponible en funciones de la shell y ordenes externas invocadas durante autocompletados. Consulte Autocompletado Programable mas adelante. COMP_WORDBREAKS Conjunto de caracteres que la biblioteca readline considera separadores de palabras durante el autocompletado. Si se desactiva COMP_WORDBREAKS, perdera sus caracteristicas especiales aunque se reactive de nuevo. COMP_WORDS Una variable vectorial (consulte Vectores mas adelante) que consta de palabras individuales en la actual linea de ordenes. La linea se divide en palabras como lo haria readline, usando COMP_WORDBREAKS tal como se describe anteriormente. Esta variable esta disponible solo en las funciones de la shell invocadas mediante autocompletado (consulte Autocompletado Progamable a continuacion). COPROC Variable vectorial (consulte Vectores mas adelante) creada para contener los descriptores de archivo de entrada/salida de un coproceso cualquiera (consulte Coprocesos anteriormente. DIRSTACK Una variable vector (consulte Vectores mas adelante) que aloja los contenidos actuales de la pila de directorios. Los directorios aparecen en la pila en el orden en el que se muestran con la orden nativa dirs. La asignacion a miembros de este vector puede emplearse para modificar directorios que ya esten en la pila, pero entonces deben utilizarse las ordenes nativas pushd y popd para anadir y quitar directorios. La asignacion a esta variable no cambiara el directorio de trabajo. Si DIRSTACK no esta definido, pierde sus propiedades especiales, incluso si posteriormente es redefinido. EPOCHREALTIME Este parametro se sustituira por una cifra de coma flotante con el numero de segundos desde el Inicio (Epoch) de Unix (consulte time(3)) medidos en microsegundos. No se tienen en cuenta las asignaciones a EPOCHREALTIME. Si EPOCHREALTIME no esta definido, pierde sus propiedades especiales, incluso si posteriormente es redefinido. EPOCHSECONDS Cada vez que este parametro es referenciado, se devuelve en el el numero de segundos transcurridos desde el Inicio (Epoch) de Unix (consulte time(3)). No se tendra en cuenta ninguna asignacion de un valor a EPOCHSECONDS. Si EPOCHSECONDS no esta definido, pierde sus propiedades especiales, incluso si posteriormente es redefinido. EUID Se expande al UID efectivo del usuario actual, puesta en el incio de la shell. Esta variable es de solo lectura. FUNCNAME Una matriz variable que contiene todas las funciones de la shell que estan en la pila de ejecucion en ese instante. El elemento con indice 0 es el nombre de cualquier funcion de la shell que se este ejecutando. El ultimo elemento (aquel con el indice mas elevado) es "main". Esta variable solo existe cuando se esta ejecutando un funcion de la shell. No se tendra en cuenta ninguna asignacion en a FUNCNAMES. Si FUNCNAMES no esta definido, pierde sus propiedades especiales, incluso si posteriormente es redefinido. Esta variable puede emplearse con BASH_LINENO y con BASH_SOURCE. Cada elemento de FUNCNAME se corresponde con otros en BASH_LINENO y BASH_SOURCE para describir la pila de llamadas. Por ejemplo: ${FUNCNAME[$i]} se invoca desde el archivo ${BASH_SOURCE[$i+1]} en el numero de linea ${BASH_LINENO[$i]}. La funcion interna caller muestra la invocacion actual en base a esta informacion. GROUPS Una matriz variable que contiene la lista de grupos a los que pertenece el usuario actual. No se tendra en cuenta ninguna asignacion en a GROUPS. Si GROUPS no esta definido, pierde sus propiedades especiales, incluso si posteriormente es redefinido. HISTCMD El numero de historial o indice en el historial de la orden actual. No se consideran asignaciones a HISTCMD. Si HISTCMD no esta definido, pierde sus propiedades especiales, incluso si posteriormente es redefinido. HOSTNAME Asignados automaticamente al nombre del anfitrion (equipo) actual. HOSTTYPE Asignado automaticamente a una cadena que describe de forma univoca el tipo de maquina en la que bash se esta ejecutando. El valor predefinido depende del sistema. LINENO Cada vez que este parametro es referenciado, la shell sustituye un numero en base 10 representando el numero de linea secuencial actual (empezando por 1) dentro de un script o funcion. Si no estamos en un script o funcion, no se garantiza que el valor sustituido tenga significado. Si LINENO no esta definido, pierde sus propiedades especiales, incluso si posteriormente es redefinido. MACHTYPE Asignado automaticamente a una cadena que describe completamente el tipo de sistema en el que bash se esta ejecutando, en el formato estandar de GNU cpu-compania-sistema. El valor predefinido depende del sistema. MAPFILE Una matriz variable (consulte Matrices a continuacion) creada para incluir el texto captado por la orden nativa mapfile cuando no se indica ningun nombre de variable. OLDPWD El directorio de trabajo anterior como lo puso la orden cd. OPTARG El valor del ultimo argumento que es una opcion procesado por la orden nativa getopts (consulte ORDENES NATIVAS DE LA SHELL a continuacion). OPTIND El indice del siguiente argumento a ser procesado por la orden nativa getopts (consulte ORDENES NATIVAS DE LA SHELL mas adelante). OSTYPE Asignado automaticamente a una cadena que describe el sistema operativo en el que bash se esta ejecutando. El valor predefinido depende del sistema. PIPESTATUS Una variable vector (consulte Vectores mas adelante) que contiene una lista de valores de estado de salida de los procesos en la tuberia en primer plano ejecutada mas recientemente (que puede contener una sola orden). PPID El PID del proceso padre de la shell. Esta variable es de lectura exclusiva. PWD El directorio de trabajo actual como lo pone la orden cd. RANDOM Cada vez que este parametro sea referenciado, se genera un entero aleatorio entre 0 y 32767. Si se asigna un valor a RANDOM se inicia (se 'siembra') la secuencia de numeros aleatorios. Si RANDOM no esta definido, pierde sus propiedades especiales, incluso si posteriormente es redefinido. READLINE_ARGUMENT Cualquier argumento numerico dado un una orden Readline definido mediante "bind -x" (consulte ORDENES NATIVAS DE LA SHELL a continuacion) cuando se ha invocado. READLINE_LINE Contenido del buffer de linea de readline, para emplear con "bind -x" (consulte ORDENES NATIVAS DE LA SHELL a continuacion). READLINE_MARK Posicion de la marca (punto de insercion) en la linea guardad de readline para emplear con "bind -x" (consulte ORDENES NATIVAS DE LA SHELL mas adelante). Los caracteres situadoes entre el punto de insercion y la marca suelen denominarse region. READLINE_POINT Posicion del punto de insercion en la linea guardada de readline, para emplear con "bind -x" (consulte ORDENES NATIVAS DE LA SHELL a continuacion). REPLY La linea de entrada leida por la orden nativa read cuando no se le dan argumentos. SECONDS Cada vez que este parametro es referenciado, se devuelve en el el numero de segundos transcurridos desde la llamada al shell. Si se asigna un valor a SECONDS, el valor devuelto en posteriores referencias es el numero de segundos desde la asignacion mas el valor asignado. La cantidad de segundos transcurridos hasta la llamada de la shell y hasta el momento actual vienen dados por el reloj del sistema. Si SECONDS no esta definido, pierde sus propiedades especiales, incluso si posteriormente es redefinido. SHELLOPTS Una lista, de elementos separados por dos puntos, de opciones activas del shell. Cada palabra en la lista es un argumento valido para la opcion -o de la orden nativa set (consulte ORDENES NATIVAS DE LA SHELL mas adelante). Las opciones que aparecen en SHELLOPTS son aquellas que aparecen como on en set -o. Si esta variable esta en el entorno cuando bash empieza, cada opcion de la shell en la lista se activara antes de leer cualquier archivo de inicio. Esta variable es de lectura exclusiva. SHLVL Se incrementa en uno cada vez que se inicia una nueva instancia de bash. SRANDOM Esta variable se expande en un numero pseudo-aleatorios de 32-bits cada vez que es referenciada. El generador de numeros aleatorios no es lineal en los sistemas con soporte para /dev/urandom o arc4random por lo que cada numero generado no tendra ninguna relacion con los anteriores. No es posible 'sembrar' el generador por lo que no tendran ningun efecto las asignaciones a esta variable. Si SRANDOM no esta definido, pierde todas sus propiedades aunque se redefina posteriormente. UID Se expande al UID del usuario en curso, puesta en el inicio de la shell. Esta variable es de solo lectura. la shell hace uso de las siguientes variables. En algunos casos, bash asigna un valor predeterminado a una variable; estos casos se indican a continuacion. BASH_COMPAT Este valor define el nivel de compatibilidad de la shell. Mas adelante en MODO DE COMPATIBILIDAD DE LA SHELL puede leer la descripcion de los distintos niveles de compatibilidad y sus efectos. Su valor puede ser un numero decimal (p.ej: 4.2) o un entero (p.ej: 42) debiendo corresponder al nivel de compatibilidad deseado. Si BASH_COMPAT no esta definido o lo esta como una cadena vacia, el nivel de compatibilidad se establecera al de la version actual. Si se define a un valor invalido (no coincida con ningun valor valido de compatibilidad), la shell mostrara un mensaje de error y definira el nivel de compatibilidad por defecto al de la version actual. Los valores validos de compatibilidades se definen mas adelante bajo el epigrafe MODO DE COMPATIBILIDAD DE LA SHELL. Ejemplos de valores validos serian 4.2 o 42, ambos correspondientes a la opcion compat42 shopt definiendo el nivel de compatibilidad a 42. La version actual tambien es un nivel de compatibilidad valido. BASH_ENV Si este parametro esta definido cuando bash esta ejecutando un script de shell, su valor se interpreta como un nombre de archivo que contiene ordenes para iniciar la shell, como en ~/.bashrc. El valor de BASH_ENV esta sujeto a expansion de parametros, sustitucion de ordenes y expansion aritmetica, antes de ser interpretado como un nombre de archivo. PATH no se usa para buscar el nombre de archivo resultante. BASH_XTRACEFD Si se le asigna un numero entero cuyo valor coincida con un descriptor de archivo valido, bash anotara la salida generada cuando set -x esta activada para este descriptor de archivo. El descriptor de archivo se cerrara cuando BASH_XTRACEFD se desactive o se le asigne un valor nuevo. Si se desactiva o se le asigne una cadena vacia, la salida de la traza se envia a la salida de error estandar. Observe que si se define a 2 el valor de BASH_XTRACEFD (descriptor de archivo de error estandar) y a continuacin de desactiva se provocara el cierre de la salida de error estandar. CDPATH Ruta de busqueda para la orden cd. Es una lista de directorios separados por dos puntos en los cuales la shell busca directorios destino especificados por la orden cd. Un valor de muestra es ".:~:/usr". CHILD_MAX Define el valor numerico del estado de salida del descendiente para ser recordado por la shell. Bash no permitira que este valor se reduzca mas alla de lo definido por POSIX, el valor maximo (actualmente 8192) tampoco puede ser excedido. El valor minimo varia segun el sistema. COLUMNS Utilizado por la orden compuest select para determinar el ancho del terminal al imprimir listas de seleccion. Si la opcion checkwinsize esta activada o si, estando en una shell interactiva, se recibe una senal SIGWINCH, seactivara automaticamente. COMPREPLY Variable vectorial donde bash leera las diferentes posibilidades de autocompletado que genere una funcion de la shell invocada por la utilidad de autocompletado programable (consulte Autocompletado Programable mas adelante). Cada elemento del vector contiene una posibilidad de autocompletado. EMACS Si bash encuentra esta variable en el entorno cuando se inicia con el valor "t", interpretara que se esta ejecutando dentro de un buffer de Emacs y deshabilitara la edicion de linea. ENV Se expande y ejecuta de modo similar a BASH_ENV (consulte INVOCACION anteriormente) cuando se invoa en modo posix una shell interactiva. EXECIGNORE Lista de patrones de la shell separados por comas (consulte Concordancia de Patrones) que definen nombres de archivos que cualquier orden debe ignorarse al realizar busquedas mediante PATH. Aquellos archivos cuyo nombre completo (ruta incluida) concuerden con alguno de estos patrones no se consideraran archivos ejecutables a efectos de autocompletado de ordenes y ejecucion de ordenes a traves de busquedas mediantes PATH. Esto no afecta al comportamiento de las ordenes [,test ni [[. Los nombres de ruta completos en la tabla hash de ordenes no estan sujetos a EXECIGNORE. Esta variable debe usarse para ignorar bibliotecas compartidas marcadas como ejecutables pero que no lo son. La concordancia de patrones tiene en cuenta la opcion de la shell extglob. FCEDIT El editor predeterminado para la orden nativa fc. FIGNORE Una lista de sufijos separados por dos puntos que no hay que tener en cuenta cuando se realice una terminacion de nombres de ficheros (consulte READLINE mas adelante). Un nombre de archivo cuyo sufijo concuerde con una de las entradas en FIGNORE se excluye de la lista de nombres de archivo a completar. Un valor de muestra es ".o:~". FUNCNEST Si se le asigna un valor mayor de cero, definira el maximo nivel de anidamiento. Las funciones que se invoquen con un nivel mayor provocaran que se interrumpa la ejecucion de la orden en curso. GLOBIGNORE Una lista de patrones separados por dos puntos que definen en conjunto de nombres de ficheros que no hay que tener en cuenta en la expansion de nombres de ruta. Si un nombre de fichero que concordaba en un patron de expansion de nombres de rutas tambien concuerda con uno de los patrones en GLOBIGNORE, se quita de la lista de concordancias. HISTCONTROL Lista de valores separados por comas que gestiona la forma en que las ordenes se guardan en el historico. Si esta lista contiene ignorespace, no se guardaran en el historico las lineas que comiencen por un espacio. Un vale de ignoredups hara que no se guarden las lineas que coincidan con la entrada inmediatamente anterior. ignoreboth es una combinacion de ignorespace e ignoredups. erasedups hara que se borren todas las entradas anteriores que coincidan con la linea actual antes de insertarse esta. Cualquier valor distinto de los anteriores sera ignorado. Si HISTCONTROL no esta definido o no contiene un valor valido se guardaran en el historico todas las lineas leidas por la shell, siempre segun el valor de HISTIGNORE. La segunda y subsiguientes lineas de una orden compuesta multilinea no se chequean y por lo tanto, se guardan en el historico independientemente del valor de HISTCONTROL. HISTFILE El nombre del archivo en el que se guarda el historial de ordenes (consulte HISTORIAL mas adelante). El valor predeterminado es ~/.bash_history. Si no esta definido, no se guarda el historial de ordenes cuando se finalice una shell interactivo. HISTFILESIZE El numero maximo de lineas contenidas en el historial. Cuando se asigna un valor a esta variable, el historial se trunca, si es menester, para evitar sobrepasar dicho numero de lineas. El valor predeterminado es 500. El historial se trunca tambien a este tamano cuando finaliza una shell interactiva. HISTIGNORE Una lista de patrones separados por dos puntos empleados para decidir que lineas de ordenes deben guardarse en el historial. Cada patron se ancla al principio de la linea y debe especificar la linea completamente (no se anade ningun `*'). Cada patron se comprueba con la linea tras aplicarse las comprobaciones especificadas por HISTCONTROL. Ademas de los caracteres normales de concordancia de patrones de la shell, `&' concuerda con la linea de historia anterior. `&' puede protegerse empleando una barra inversa. Esta se quita antes de intentarse una concordancia. La segunda linea y siguientes de una orden compuesta multi-linea no se comprueban, y se anaden a la historia sin importar el valor de HISTIGNORE. La concordancia de patrones depende de la configuracion de la opcion de la shell extglob. HISTSIZE Cantidad de ordenes que debe guardar el historial (Consulte HISTORIAL mas adelante). Si el valor es cero, no se guardaran las ordenes en el historial. Cualquier valor negativo hara que se guarden todas las ordenes sin limite alguno. Por defecto, la shell guarda 500 ordenes despues de leer los archivos de inicio. HISTTIMEFORMAT Si esta variable esta definida y no es nula, su valor se usa como una cadena de formato para strftime(3) para mostrar la marca temporal asociada con cada entrada del historial mostrado por la orden nativa history. Si se establece esta variable, las marcas temporales se escriben en el historial para que puedan conservarse en las sesiones de la shell. Se utiliza el caracter de comentario del historial para distinguir las marcas temporales de otras lineas del historial. HOME El directorio inicial de trabajo del usuario en curso; el argumento predeterminado para la orden nativa cd. El valor de esta variable se usa tambien cuando se realiza la expansion de tilde. HOSTFILE Contiene el nombre de un fichero con el mismo formato que /etc/hosts que deberia leerse cuando la shell necesite completar un nombre de equipo. El archivo puede ser modificado durante la ejecucion de la shell; la siguiente vez que se intente completar un nombre de equipo, bash anade el contenido del nuevo archivo a la base de datos ya existente. Si esta definida la variable HOSTFILE pero no tiene ningun valor asignado o tiene asignado el nombre de un archivo que no se puede leer, bash intentara leer /etc/hosts para conseguir la lista de posibles nombres de equipo. Si se resetea el valor de HOSTFILE se vacia la lista de nombres de equipo. IFS El Separador Interno de Campo que se emplea para la division de palabras tras la expansion y para dividir lineas en palabras con la orden nativa read. El valor predeterminado es "". IGNOREEOF Controla la accion de una shell interactiva al recibir un caracter EOF como sola entrada. Si esta definido, el valor es el numero de caracteres EOF consecutivos que deben teclearse como los primeros caracteres de una linea de entrada antes de que bash acabe. Si la variable existe pero no tiene un valor numerico, o ninguno, el valor predeterminado es 10. Si no existe, EOF significa el final de la entrada para la shell. INPUTRC El nombre de fichero para el de inicio de readline, en vez del predeterminado ~/.inputrc (consulte READLINE mas adelante). INSIDE_EMACS Si esta presente esta variable cuando se inicia la shell, bash asume que se esta ejecutando en el buffer de una shell de Emacs y podra deshabilitar la edicion en linea segun el valor de TERM. LANG Empleado para determinar la categoria de localizacion ("escenario") para cualquier categoria no seleccionada especificamente con una variable de las que empiezan por LC_. LC_ALL Esta variable tiene preferencia sobre el valor de LANG y de cualquier otra variable de las que empiecen por LC_ especificando una categoria de localizacion. LC_COLLATE Esta variable determina el orden de clasificacion empleado cuando se ordene el resultado de una expansion de nombres de rutas, y determina el comportamiento de expresiones de intervalo, clases de equivalencia, y secuencias de clasificacion dentro de expansiones de nombres de rutas y concordancia de patrones. LC_CTYPE Esta variable determina la interpretacion de caracteres y el comportamiento de clases de caracteres dentro de expansiones de nombres de rutas y concordancia de patrones. LC_MESSAGES Esta variable determina la localizacion empleada para traducir cadenas entrecomilladas con comillas dobles precedidas por un $. LC_NUMERIC Esta variable determina la localizacion empleada para el formato de los numeros. LC_TIME Esta variable determina la localizacion empleada para el formato de fecha y hora. LINES Utilizada por la orden compuesta select para determinar la longitud de la columna para mostrar listas de seleccion. Definida automaticamente siempre que la opcion checkwinsize esta activada o cuando se reciba una senal SIGWINCH en una shell interactiva. MAIL Si este parametro esta puesto a un nombre de archivo y la variable MAILPATH no esta definida, bash informa al usuario de la llegada de correo en el archivo definido o con formato Maildir. MAILCHECK Define la frecuencia (en segundos) a la que bash comprueba si hay correo nuevo. El valor predeterminado es 60 s. Si es hora de comprobar si hay correo, la shell lo hace antes de mostrar el indicador primario. Si esta variable no esta definida, o lo esta con un valor inferior a cero, la shell no comprueba si hay correo nuevo. MAILPATH Una lista de nombres de fichero separados por dos puntos donde hay que comprobar si hay correo nuevo. El mensaje que haya que mostrar cuando llegue correo a un fichero particular puede especificarse separando el nombre de fichero del mensaje con un '?'. Cuando se use en el texto del mensaje, $_ se expande al nombre del fichero de correo en curso. Ejemplo: MAILPATH='/var/mail/bfox?"Tienes carta":~/shell-mail?"!$_ tiene carta!"' Bash proporciona un valor predeterminado para esta variable, pero la localizacion de los archivos de correo del usuario que emplea, dependera del sistema (p.ej. /var/mail/$USER). OPTERR Si se pone al valor 1, bash muestra mensajes de error generados por la orden nativa getopts (consulte ORDENES NATIVAS DE LA SHELL mas adelante). OPTERR se inicia a 1 cada vez que se llama al shell o cuando se ejecuta un script de la shell. PATH La ruta de busqueda para ordenes, programas ejecutables. Es una lista de directorios separados entre si por dos puntos en los cuales la shell busca ordenes (consulte EJECUCION DE ORDENES a continuacion). La ruta predeterminada depende del sistema siendo definida por el administrador que instala bash. Un valor habitual es ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''. POSIXLY_CORRECT Si esta variable esta en el entorno cuando de inicie bash, la shell entrara en modo posix antes de cargar los archivos de inicio igual que si se emplease la opcion --posix. Si se define una vez que la shell se esta ejecutando, bash activara el modo posix tal como si la orden set -o posix se hubiese ejecutado. Cuando la shell entra en modo posix, definira esta variable si no lo esta ya. PROMPT_COMMAND si esta variable esta definida (y es vectorial), se ejecutara el valor de cada elemento como una orden antes de emitir cada prompt primario. Si esta definido pero no es una variable vectorial, se usara ese valor como orden para ejecutar. PROMPT_DIRTRIM Si su valor es un numero mayor que cero, su valor definira la cantidad de componentes finales de directorios que se retienen al expandir las cadenas de escape \w y \W del indicador (prompt) (sonsulte PROMPTING mas adelante). Los caracteres eliminados se sustituyen por una elipsis. PS0 El valor de este parametro se expande (consulte INDICADORES mas adelante) y lo muestran las shells interactivas despues de leer una orden y despunes de que sea ejecutada. PS1 El valor de este parametro se expande (consulte INDICADORES mas adelante) y se emplea como la cadena del indicador primario. El valor predeterminado es "\s-\v\$ ". PS2 El valor de este parametro se expande como con PS1 y se emplea como la cadena del indicador secundario. El valor predeterminado es "> ". PS3 El valor de este parametro se emplea como el indicador para la orden select (consulte GRAMATICA DE LA SHELL anteriormente). PS4 El valor de este parametro se expande como con PS1 y el valor se imprime antes de cada orden que bash muestra durante una traza de ejecucion. El primer caracter de PS4 se replica multiples veces, tantas como sean necesarias, para indicar multiples niveles de indireccion. El valor predeterminado es "+ ". SHELL Se expande al nombre completo de la ruta de la shell. Si no esta definida al inicio de la shell, bash le asignara la ruta completa de la shell de inicio actual del usuario. TIMEFORMAT El valor de este parametro se emplea como una cadena de formato para especificar como debe mostrarse la informacion de tiempos para tuberias precedidas por la palabra reservada time. El caracter % introduce una secuencia de escape que se expande a un valor de tiempo o a otra informacion. Las secuencias de escape y sus significados son como sigue; los corchetes denotan partes opcionales. %% Un % literal. %[p][l]R El tiempo total transcurrido en segundos. %[p][l]U El numero de segundos de CPU gastados en modo usuario. %[p][l]S El numero de segundos de CPU gastados en modo sistema. %P El porcentaje de CPU, computado como (%U + %S) / %R. La p opcional es un digito que especifica la precision, el numero de decimales. Un valor de 0 hace que no se muestre ningun decimal, ni el punto o coma decimal. Como mucho se pueden especificar tres decimales; valores de p mayores de 3 se cambian a 3. Si p no se especifica, se usa precisamente el valor 3. La l opcional especifica un formato mas largo, incluyendo minutos, en la forma MMmSS.FFs. El valor de p determina si se incluye o no la fraccion. Si esta variable no esta definida, bash actua como si tuviera el valor $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'. Si el valor es nulo, no se muestra ninguna informacion de tiempos. Se anade un salto de linea al final cuando se muestra la cadena de formato. TMOUT Si se define a un valor mayor que cero, TMOUT se interpreta como la cantidad de segundos de timout de la orden nativa read. Si se espera alguna entrada desde un terminal, la orden select finaliza si esta no llega transcurridos TMOUT segundos. En una shell interactiva, este valor representa la cantidad de segundos a esperar por una entrada; si este no llega, se muestra el indicador primario. Bash finalizara transcurrida dicha cantidad de segundos no llega una linea completa de entrada.ue hay que esperar una entrada despues de mostrarse el indicador primario. Bash termina despues de esperar ese numero de segundos si no recibe ninguna entrada. TMPDIR Si esta definido, bash empleara su valor como nombre del directorio en el que creara los archivos temporales necesario para su el uso de la shell. auto_resume Esta variable controla como la shell interactua con el usuario para el control de tareas. Si esta variable esta definida, las ordenes simples de una palabra sin redireccion se tratan como candidatas para reanudar una tarea existente detenida. No se permite ninguna ambiguedad; si hay mas de una tarea que empiece con la cadena tecleada, se selecciona la que se ha accedido mas recientemente. El nombre de una tarea detenida, en este contexto, es la linea de ordenes empleada para iniciarlo. Si se define al valor exact, la cadena suministrada debe concordar exactamente con el nombre de una tarea detenida; si se define como substring, la cadena suministrada necesita concordar con una subcadena del nombre de una tarea detenida. El valor substring proporciona una funcionalidad analoga a la del identificador de tarea %? (consulte CONTROL DE TAREAS mas adelante). Si se pone a cualquier otro valor, la cadena suministrada debe ser un prefijo del nombre de una tarea detenida; esto proporciona una funcionalidad analoga a la del identificador de tarea %cadena. histchars Los dos o tres caracteres que controlan la expansion y separacion en lexemas de la historia (consulte EXPANSION DEL HISTORIAL a continuacion). El primer caracter es el caracter de expansion del historial, el caracter que senala el comienzo de una expansion de historia, normalmente `!'. El segundo caracter es el caracter de sustitucion rapida, que se usa como una abreviatura para reejecutar la orden anterior, sustituyendo una cadena por otra en la orden. El valor predeterminado es `^'. El tercer caracter, opcional, es el caracter que indica que el resto de la linea es un comentario cuando se encuentra como el primer caracter de una palabra, normalmente es `#'. El caracter de comentario de historia hace que la sustitucion de historia se salte en el resto de palabras de la linea. No hace que necesariamente el analizador lexico de la shell trate al resto de la linea como un a un comentario. Vectores Bash proporciona variables vectores monodimensionales, indexados y asociativos. Cualquier variable puede usarse como un vector indexado; la orden nativa declare declarara un vector de forma expresa. No hay un limite maximo en el tamano de un vector, ni ningun requisito para que los miembros se indexen o asignen de forma contigua. Los vectores se indexan empleando enteros (incluso expresiones aritmeticas) y su primer elemento es el de indice cero, los vectores asociativos se referencian empleando cualquier cadena. Salvo que se indique expresamente lo contrario, los indices de los vectores indexados deberan ser siempre enteros positivos. Un vector indexado se crea automaticamente si se asigna algo a una variable con la sintaxis nombre[indice]=valor. El indice se trata como una expresion aritmetica que debe evaluarse a un numero. Para declarar un vector explicitamente, emplee declare -a nombre (consulte ORDENES NATIVAS DE LA SHELL mas adelante). Tambien se acepta declare -a nombre[indice], donde el indice no se tiene en cuenta. Los vectores asociativos se crean mediante declare -A nombre. Se pueden definir atributos para una variable vectorial utilizando las ordenes nativas declare y readonly. Cada atributo se aplica a todos los componentes de un vector. Los vectores se asignan mediante asignaciones compuestas en la forma nombre=(valor1 ... valorn), donde cada valor puede tener la forma [subindice]=cadena. Las asignaciones de vectores indexados no requieren nada mas que cadenas. Cada valor de la lista se expande utilizando todas las expansiones de shell que se describen a continuacion en EXPANSION. Al asignar a matrices indexadas, si se proporcionan los corchetes y el subindice opcionales, ese indice se asigna; sino, el indice del elemento asignado es el ultimo indice asignado por la declaracion mas uno. La indexacion comienza en cero. Cuando se asignana a un vector asociativo, las palabras en una asignacion compuesta pueden ser declaraciones de asignacion, para las cuales se requiere el subindice, o una lista de palabras que se interpreta como una secuencia de claves y valores alternos:nombre=( clave1 valor1 clave2 valor2 ...). Estos se tratan de manera identica a nombre=( [clave1]=valor1 [clave2]=valor2 ... ). La primera palabra de la lista determina como se interpretan las palabras restantes; todas las asignaciones en una lista deben ser del mismo tipo. Cuando se utilizan pares clave/valor, las claves no pueden faltar ni estar vacias; si falta cualquier valor, se trata como una cadena vacia. Esta sintaxis tambien es aceptada por la orden nativa declare . Se pueden asignar elementos de individuales de un vector utilizando la sintaxis nombre [subindice]=valor introducida anteriormente. Al asignar a un vector indexado, si nombre tiene un subindice de un numero negativo, ese numero se interpreta como relativo a uno mayor que el indice maximo de nombre, por lo que los indices negativos cuentan hacia atras desde el final de la matriz y un indice de -1 hace referencia al ultimo elemento. El operador += realizara anadidos a una variable vectorial cuando se haga con la sintaxis adecuada. Consulte PARAMETROS anteriormente. Cualquier elemento de un vector puede referenciarse mediante ${nombre[indice]}. Las llaves son necesarias para evitar conflictos con la expansion de nombres de rutas. Si indice es @ o *, la palabra se expande a todos los miembros de nombre. Estos indices difieren solamente cuando la palabra aparece entre comillas dobles. Si la palabra esta entre comillas dobles, ${nombre[*]} se expande a una sola palabra con el valor de cada miembro del vector separados por el primer caracter de la variable especial IFS, y ${nombre[@]} expande cada elemento de nombre a una palabra separada. Cuando no hay miembros del vector, ${nombre[@]} se expande a nada. Si la expansion entre dobles comillas ocurre dentro de una palabra, la expansion del primer parametro se une al inicio de la palabra original y la expansion del ultimo se une al final de dicha palabra. Esto es analogo a la expansion de los parametros especiales * y @ (consulte Parametros especiales anteriormente). ${#nombre[indice]} se expande a la longitud de ${nombre[indice]}. Si indice es * o @, la expansion es el numero de elementos del vector. Si indice empleado para referirse a un elemento de un vector indexado equivale a un numero menor que cero se entendera como un numero mayor que el maximo indice del vector, un indice de -1 se referira al ultimo elemento. Referenciar la variable de un vector sin un subindice equivale a hacerlo con el subindice cero. Es aceptable cualquier referencia a una variable usando un subindice valido. bash creara un vector si necesario. Se considera definidad a aquella variable de un vector si se asigno un valor a un subindice. La cadena vacia es un valor valido. Es posible obtener las claves (indices) de un vector asi como los valores. ${!nombre[@]} y ${!nombre[*]} se expande a los indices asignados en la variable vectorial nombre . El tratamiento entre comillas dobles es similar a la expansion de los parametros especiales @ y * entre comillas dobles. La orden nativa unset se emplea para eliminar vectores. unset nombre[indice] elimina el elemento del vector con el indice definido tanto en vectores asociativos como indexados. Los indices negativos en vectores indexados se interpretan tal como se describio anteriormente. Aunque se desactive el ultimo elemento de una variable vectorial, no se desactivara dicha variable. unset nombre, donde nombre es un vector, eliminara por completo dicho vector. unset nombre[indice], donde indice es * o @, tendra un comportamiento diferente segun sea un vector asociativo o indexado. Si nombre es un vector asociativo, desactivara el elemento con indice * o @. Si nombre es un vector indexado, se eliminaran todos los elementos, no asi el propio vector. Cuando se utiliza un nombre de variable con un subindice como argumento para una orden, tal como unset , sin utilizar la sintaxis de expansion de palabras descrita anteriormente, el argumento esta sujeto a la expansion del nombre de ruta. Para evitar la expansion del nombre de la ruta, se debe citar el argumento. Las ordenes nativas declare, local, y readonly aceptan cada una una opcion -a para especificar un vector indexado (indexed array) y la opcion -A para especificad un vector asociativo (asociative array). Si se define ambas opciones, prevalecera -A. La orden nativa read acepta una -a para asignar una lista de palabras leidas desde la entrada estandar a un vector. Las ordenes nativas set y declare muestran valores de un vector en una manera tal que les permite ser reutilizadas como asignaciones. EXPANSION La expansion se realiza en la linea de ordenes una vez que la orden ha sido dividida en palabras. Hay siete clases de expansion: expansion de llaves, expansion de tilde, expansion de parametro y variable, sustitucion de orden, expansion aritmetica, division de palabras, expansion de nombre de ruta. La orden de las expansiones es: expansion de llaves, de tilde, de parametro, variable y aritmetica, y sustitucion de orden (hechas de izquierda a derecha), division de palabras, y expansion de nombre de ruta. En sistemas que puedan admitirla, hay una expansion adicional disponible: sustitucion de proceso. Esta se realiza al mismo tiempo que la expansion de llaves, de tilde, de parametro, variable y aritmetica, y sustitucion de orden. Despues de realizar estas expansiones, se eliminan las comillas de la palabra original salvo que estas hayan sido entrecomilladas (eliminacion de comillas). Solo la expansion de llaves, la division de palabras y la expansion de nombre de ruta, pueden cambiar el numero de palabras de la expansion; las otras expanden una palabra simple a otra palabra simple. Las unicas excepciones a esto son las expansiones de "$@" y "${nombre[@]}" y en muchos casos $* y ${name[*]} como se ha explicado mas anteriormente (consulte PARAMETROS). Expansion de Llaves La expansion de llaves es un mecanismo por el cual pueden generarse cadenas arbitrarias. Este mecanismo es similar a la expansion de nombre de ruta, pero los nombres de archivo creados no necesitan existir. Los patrones a ser expandidos con la expansion de llaves toman la forma de un preambulo opcional seguido por bien por una serie de cadenas separadas por comas entre un par de llaves o por una expresion secuencial entre llaves, seguido por un post scriptum opcional. El preambulo sirve de prefijo a cada cadena de entre las llaves, y el post scriptum se anade luego a cada cadena resultante, expandiendo de izquierda a derecha. Las expansiones de llaves pueden anidarse. Los resultados de cada cadena expandida no se ordenan; se preserva el orden de izquierda a derecha. Por ejemplo, a{d,c,b}e se expande a `ade ace abe'. Una expresion de secuencia toma la forma {x..y[..incr]}, donde x e y son numeros enteros o letras individuales, e incr un incremento opcional, es un numero entero. Cuando se proporcionan numeros enteros, la expresion se expande a cada numero entre x e y, inclusive. Los numeros enteros proporcionados pueden tener el prefijo 0 para forzar que cada termino tenga el mismo tamano. Cuando x o y comienzan con un cero, la shell intenta forzar que todos los terminos generados contengan el mismo numero de digitos, relenando con ceros donde sea necesario. Cuando se proporcionan letras, la expresion se expande lexicograficamente a cada caracter entre x e y, inclusive, utilizando la el locale C. Nota que tanto x como y deben ser del mismo tipo (numero entero o letra). Cuando se indica el incremento, se utiliza como la diferencia entre cada termino. El incremento por defecto es 1 o -1 segun corresponda. La expansion de llaves se realiza antes que cualquier otra, y cualquier caracter especial para otras expansiones se preserva en el resultado. Es estrictamente textual. Bash no aplica ninguna interpretacion sintactica al contexto de la expansion ni al texto entre las llaves. Una expansion de llaves correctamente formada debe contener llaves de apertura y cierre sin entrecomillar, y al menos una coma sin entrecomillar o una secuencia valida. Cualquier expansion de llaves formada incorrectamente se deja inalterada. Una { o , puede protegerse con una barra invertida para evitar que sea considerada como parte de una expansion de llaves. Para evitar conflictos con la expansion de parametros, la cadena ${ no puede incorporarse en una expansion de llaves y evita que se ocurra hasta la llave de cierre }. Esta construccion se emplea normalmente como una abreviatura cuando el prefijo comun de las cadenas a generar es mayor que en el ejemplo de antes: mkdir /usr/local/src/bash/{old,new,dist,bugs} o chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} La expansion de llaves introduce una pequena incompatibilidad con versiones anteriores de sh. sh no considera como caracteres especiales a las llaves de apertura o cierre cuando aparecen como parte de una palabra, y las deja en la entrada. Bash quita las llaves de palabras, como una consecuencia de la expansion de llaves. Por ejemplo, una palabra introducida a sh como fichero{1,2} aparece asi mismo en la entrada. La misma palabra se muestra como fichero1 fichero2 tras la expansion hecha por bash. Si se desea una compatibilidad estricta con sh, inicie bash con la opcion +B o inhabilite la expansion de llaves con la opcion +B de la orden nativa set (consulte ORDENES NATIVAS DE LA SHELL mas adelante). Expansion de Tilde Si una palabra comienza con un caracter tilde de la n sin entrecomillar (`~'), todos los caracteres que precedan a la primera barra inclinada sin entrecomillar (o todos los caracteres, si no hay ninguna barra inclinada sin proteger), se consideran un prefijo-tilde. Si ninguno de los caracteres en el prefijo-tilde estan protegidos, los caracteres en el prefijo-tilde que siguen a la tilde se tratan como un posible nombre de entrada de usuario (login). Si este nombre de entrada es la cadena vacia, la tilde se reemplaza con el valor del parametro de la shell HOME. Si HOME no esta definida, se sustituye en su lugar el directorio de trabajo inicial del usuario que esta ejecutando la shell. De otra forma, el prefijo-tilde se reemplaza con el directorio de trabajo inicial (de casa) asociado con el nombre de entrada especificado. Si el prefijo-tilde es un `~+', el valor de la variable de la shell PWD reemplaza al prefijo-tilde. Si el prefijo-tilde es un `~-', el valor de la variable de la shell OLDPWD, si esta definido, se sustituye. Si los caracteres que siguen a la tilde en el prefijo-tilde consisten en un numero N, prefijado opcionalmente por un `+' o un `-', el prefijo-tilde se reemplaza con el elemento correspondiente de la pila de directorios, como lo mostraria la orden nativa dirs llamada con el prefijo-tilde como argumento. Si los caracteres tras la tilde en el prefijo-tilde consisten en un numero sin un `+' ni `-' iniciales, se supone `+'. Si el nombre de entrada es invalido, o si la expansion de tilde falla, la palabra se deja tal cual. A cada asignacion de variable se comprueba si hay prefijos-tilde sin entrecomillar inmediatamente tras un : o el primer =. En estos casos, la expansion de tilde tambien tiene lugar. Consecuentemente, uno puede usar nombres de ficheros con tildes en asignaciones a PATH, MAILPATH, y CDPATH, y la shell asigna el valor expandido. Bash tambien realiza expansion de tilde en palabras que satisfacen las condiciones de asignaciones variables (descrito anteriormente en el apartado PARAMETROS) cuando aparecen como argumentos de ordenes simples. Bash no hace esto, salvo para la declaracion de las ordenes listadas anteriormente, cuando esta en modo posix. Expansion de Parametro El caracter `$' introduce la expansion de parametro, sustitucion de orden, o expansion aritmetica. El nombre de parametro o simbolo a ser expandido puede estar encerrado entre llaves, que son opcionales pero sirven para proteger a la variable en la expansion de caracteres que la sigan y puedan interpretarse como parte de su nombre. Cuando se empleen llaves, la de cierre es la primera `}' no protegida con una barra invertida o en una cadena entrecomillada, y no dentro de una expansion aritmetica empotrada, sustitucion de orden, o expansion de parametro. ${parametro} Se sustituye el valor de parametro. Se requieren llaves cuando parametro es un parametro posicional de mas de un digito, o cuando parametro viene seguido por un caracter que no debe interpretarse como parte de su nombre. El parametro es un parametro de la shell tal como se describe en la seccion PARAMETROS o una referencia a un vector (Vectores). Si el primer caracter del parametro es un signo de exclamacion (!) y el parametro no es un nameref, introduce un nivel de direccionamiento indirecto. Bash usa el valor formado expandiendo el resto del parametro como el nuevo parametro; esto luego se expande y ese valor se usa en el resto de la expansion, en lugar del expansion del parametro original. Esto se conoce como expansion indirecta. El valor esta sujeto a expansion de tilde, expansion de parametros, sustitucion de ordenes y expansion aritmetica. Si el parametro es un nameref, esto se expande al nombre del parametro al que hace referencia el parametro en lugar de realizar la expansion indirecta completa. Las excepciones a esto son las expansiones de ${!prefix*} y ${!name[@]} que se describen a continuacion. El signo de exclamacion debe seguir inmediatamente a la llave izquierda para introducir la direccion indirecta. En cada uno de los casos descritos a continuacion, sobre palabra se aplican expansion de tilde, expansion de parametro, sustitucion de orden y expansion aritmetica. Cuando no se realiza la expansion de subcadenas, mediantes alguna de las formas documentadas a continuacion (por ejemplo, :-), bash prueba si un parametro no esta definido o es nulo. Omitir los dos puntos da como resultado una prueba solo para un parametro que no esta definido. ${parametro:-palabra} Emplear valores predeterminados. Si parametro no esta definido o esta vacio, se sustituye la expansion de palabra. De otro modo, se sustituye el valor de parametro. ${parametro:=palabra} Asignar valores predeterminados. Si parametro no esta definido o es nulo, la expansion de palabra se asigna a parametro. Luego, el valor de parametro se sustituye. No se puede asignar nada de esta manera a los parametros posicionales ni a los especiales. ${parametro:?palabra} Muestra un error si no esta definido o esta vacio. Si parametro es nulo o no esta definido, la expansion de palabra (o un mensaje a tal efecto si palabra no esta presente) se escribe en la salida estandar de errores y la shell, si no es interactivo, acaba. De otra manera, se sustituye el valor de parametro. ${parametro:+palabra} Emplear un valor alternativo. Si parametro esta vacio o no esta definido, no se sustituye nada; de otro modo, se sustituye la expansion de palabra. ${parametro:desplazamiento} ${parametro:desplazamiento:longitud} Expansion de subcadena. Se expande hasta longitud caracteres del valor de parametro comenzando en el caracter especificado en desplazamiento. Si parametro es @ o *, un vector indexado con un subindice @ o *, o un nombre de vector asociativo, los resultados difieren como se describe a continuacion. Si longitud se omite, se expande a la subcadena del valor de parametro comenzando en el caracter especificado por offset y extendiendose hasta el final de el valor. longitud e desplazamiento son expresiones aritmeticas (ver EVALUACION ARITMETICA a continuacion). Si desplazamiento se evalua como un numero menor que cero, el valor se utiliza como desplazamiento en caracteres desde el final del valor de parametro. Si longitud se evalua como un numero menor que cero, se interpreta como desplazamiento en caracteres desde el final del valor de parametro en lugar del numero de caracteres, y la expansion son los caracteres entre desplazamiento y ese resultado. Tenga en cuenta que un desplazamiento negativo debe separarse de los dos puntos por al menos un espacio para evitar confundirse con la expansion :- Si parametro es @ o *, el resultado es longitud parametros posicionales que comienzan en desplazamiento. Un desplazamiento negativo se toma relativo a uno mayor que el mayor parametro posicional, por lo que un desplazamiento de -1 evalua hasta el ultimo parametro posicional. Es un error de expansion si longitud se evalua como un numero menor que cero. Si parametro es un nombre de vector indexado con subindice '@' o '*', el resultado seran los miembros longitud de la matriz que comienzan con ${parametro[desplazamiento]}. Se toma un desplazamiento negativo en relacion con uno mayor que el indice maximo del vector especificado. Sera un error de expansion si longitud se evalua como un numero menor que cero. La expansion de subcadena aplicada sobre un vector asociativo produce resultados inesperados. La indexacion de subcadenas se inicia en el cero a menos que se utilicen parametros posicionales, en cuyo caso la indexacion comienza en 1 de forma predeterminada. Si desplazamiento es 0, y se utilizan los parametros posicionales, se anade el prefijo $0 a la lista ${!prefijo*} ${!prefijo@} Nombres que coinciden con el prefijo. Se expande a los nombres de las variables cuyos nombres comienzan con prefijo, separados por el primer caracter de la variable especial IFS. Cuando se usa @ y la expansion aparece entre comillas dobles, cada nombre de variable se expandira a una palabra separada. ${!nombre[@]} ${!nombre[*]} Lista de claves del vector.Si nombre es una variable vectorial, se expande a la lista de indices del vector (las claves) asignados en nombre. Si nombre no es un vector, se expandira a 0 si nombre esta definido y sino sera nulo. Cuando se usa @ y la expansion aparece entre comillas dobles, cada clave se expande a una palabra separada. ${#parametro} Parameter length. The length in characters of the value of parameter is substituted. If parameter is * or @, the value substituted is the number of positional parameters. If parameter is an array name subscripted by * or @, the value substituted is the number of elements in the array. If parameter is an indexed array name subscripted by a negative number, that number is interpreted as relative to one greater than the maximum index of parameter, so negative indices count back from the end of the array, and an index of -1 references the last element. ${parametro#palabra} ${parametro##palabra} Remove matching prefix pattern. The word is expanded to produce a pattern just as in pathname expansion, and matched against the expanded value of parameter using the rules described under Pattern Matching below. If the pattern matches the beginning of the value of parameter, then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the "#" case) or the longest matching pattern (the "##" case) deleted. If parameter is @ or *, the pattern removal operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with @ or *, the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list. ${parametro%palabra} ${parametro%%palabra} Remove matching suffix pattern. The word is expanded to produce a pattern just as in pathname expansion, and matched against the expanded value of parameter using the rules described under Pattern Matching below. If the pattern matches a trailing portion of the expanded value of parameter, then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the "%" case) or the longest matching pattern (the "%%" case) deleted. If parameter is @ or *, the pattern removal operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with @ or *, the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list. ${parametro/patron/cadena} ${parametro//patron/cadena} ${parametro/#patron/cadena} ${parametro/%patron/cadena} Pattern substitution. The pattern is expanded to produce a pattern just as in pathname expansion. Parameter is expanded and the longest match of pattern against its value is replaced with string. string undergoes tilde expansion, parameter and variable expansion, arithmetic expansion, command and process substitution, and quote removal. The match is performed using the rules described under Pattern Matching below. In the first form above, only the first match is replaced. If there are two slashes separating parameter and pattern (the second form above), all matches of pattern are replaced with string. If pattern is preceded by # (the third form above), it must match at the beginning of the expanded value of parameter. If pattern is preceded by % (the fourth form above), it must match at the end of the expanded value of parameter. If the expansion of string is null, matches of pattern are deleted. If string is null, matches of pattern are deleted and the / following pattern may be omitted. Si la opcion de shell pathsub_replacement esta activada mediante shopt, cualquier instancia de & sin entrecomillar contenida en cadena sera sustituida por la parte concordante de patron. Citar cualquier parte de cadena inhibe el reemplazo en la expansion de laparte citada, incluidas las cadenas de reemplazo almacenadas en variables de shellLa barra invertida escapara de & en cadena; la barra invertida se elimina para permitir el caracter & en la cadena de reemplazo. La barra invertida tambien puede ser usada para escapar otra barra invertida; \\ da como resultado el caracter de barra invertida en reemplazo. Los usuarios deben tener precaucion si cadena esta entre comillas dobles para evitar interacciones no deseadas entre la barra invertida y las comillas dobles, porque la barra invertida tiene un significado especial entre comillas dobles. Sustitucion de patron realiza la comprobacion de & sin comillas despues de expandir cadena; los programadores de la shell deben entrecomillar los caracteres & que quieran que se interpretenliteralmente y asegurarse que no este entrecomillado cualquier caracter & que quieranque sea reemplazado. If the nocasematch shell option is enabled, the match is performed without regard to the case of alphabetic characters. If parameter is @ or *, the substitution operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with @ or *, the substitution operation is applied to each member of the array in turn, and the expansion is the resultant list. ${parametro^patron} ${parametro^^patron} ${parametro,patron} ${parametro,,patron} Modificacion en la capitalizacion. Esta expansion modifica la capitalizacion de caracteres en parametro. El patron se expande para producir un patron al igual que en la expansion del nombre de ruta. Cada caracter en el valor expandido de parametro se prueba con patron y, si coincide con el patron, se convierte su capitalizacion. El patron no debe intentar coincidir mas de un caracter. El operador ^ convierte letras minusculas, que coinciden con patron, a mayusculas; el operador , convierte las mayusculas coincidentes en minusculas. Las expansiones ^^ y ,, convierten cada coincidencia en el valor expandido; las expansiones ^ y , coinciden y convierte solo el primer caracter del valor expandido. Si se omite patron, se considerara como ?, que coincide con todos los caracteres. Si parametro es @ o *, la modificacion de capitalizacionse aplica a cada parametro posicional por turno, y la expansion es la lista resultanteSi parametro es una variable de matriz con el subindice @ o *, la modificacion de capitalizacion se aplica a cada miembro de la matriz por turno y la expansion es la lista resultante ${parametro:operador} Transformacion de parametros. La expansion puede ser una transformacion del valor de parametro o informacion sobre el propio parametro dependiendo del valor del operador. Cada operador consta de una unica letra: U La expansion sera una cadena formada por el valor del parametro con sus letras minusculas pasadas a mayusculas. u La expansion sera una cadena formada por el valor de parametro con su primer caracter en mayusculas, siempre que sea una letra. L La expansion sera una cadena formada por el valor de parametros con sus letras mayusculas convertidas en minusculas. Q La expansion es una cadena formada por el valor de parametro en un formato adecuado para ser utilizado como valor de entrada. E La expansion sera una cadena formada por el valor de parametro expandiendo las barras invertidas de forma analoga al sistema de comillas $'...'. P La expansion sera una cadena formada por el resultado de expandir el valor de parametro como si fuera un indicador de la shell (consulte INDICADORES mas adelante). A La expansion es una cadena en forma de declaracion de asignacion o orden nativa declare que, si se evalua, recreara parametro con su valor y atributos K Produce una version posiblemente entrecomillada del valor de parametro, salvo que mostrara los valores de vectores indexados y asociativos como una secuencia de pares clave-valor entrecomillados (consulte Vectores). a La expansion sera una cadena formada por los valores de opciones que representan los atributos de parametro. k Igual que la transformacion K, salvo que expande las claves y los valores de los vectores asociativos e indexados en palabras separadas despues de la division de palabra. Si parametro es @ o *, la operacion se aplicara a cada parametro posicional por turnos, y la expansion es la lista resultante. Si parametro es una variable vectorial indexada con @ o *, la operacion de borrado del patron se aplica a cada miembro del vector por orden, y la expansion es la lista resultante. El resultado de la expansion puede posteriormente ser objeto de division de palabra y expansion del nombre de ruta tal como se describe mas adelante. Sustitucion de Orden La sustitucion de orden permite a la salida de una orden reemplazar al nombre de la orden. Hay dos formas: $(orden) o `orden` Bash realiza la expansion ejecutando orden en una subshell y reemplazando la sustitucion de orden con la salida estandar de la orden, quitando los saltos de linea finales. Los saltos de linea empotrados no se borran, pero pueden ser eliminados durante la division de palabras. La sustitucion de orden $(cat archivo) puede reemplazarse por lo equivalente pero mas rapido $(< archivo). Cuando se emplea la forma de sustitucion al viejo estilo con las comillas inversas, la barra invertida mantiene su significado literal excepto cuando es seguida por $, `, o \. La primera comilla inversa no precedida por una barra invertida termina la sustitucion de orden. Cuando se emplea la forma $(orden), todos los caracteres entre los parentesis forman parte de la orden; ninguno se considera como especial. Las sustituciones de orden pueden anidarse. Para anidar cuando se emplee la forma de comillas inversas, proteja las comillas inversas internas con barras inversas. Si la sustitucion aparece dentro de las dobles comillas, la division de palabras y la expansion de nombres no se realiza en los resultados. Expansion Aritmetica La expansion aritmetica permite la evaluacion de una expresion aritmetica y la sustitucion del resultado. El formato para la expansion aritmetica es: $((expresion)) La expresion se trata como si estuviera entre comillas dobles, pero un signo de doble comilla en expresion no se considera un caracter especial y se elimina. Todos los lexemas en la expresion estan sujetos a expansion de parametro, expansion de cadena, sustitucion de orden, y eliminacion de comillas. El resultado se tratara coma la expansion aritmetica a evaluar, dichas expansiones pueden anidarse. La evaluacion se realiza de acuerdo a las reglas listadas mas adelante en EVALUACION ARITMETICA. Si expresion no es valida, bash imprime un mensaje indicando el fallo y no ocurre ninguna sustitucion. Sustitucion de Proceso Process substitution allows a process's input or output to be referred to using a filename. It takes the form of <(list) or >(list). The process list is run asynchronously, and its input or output appears as a filename. This filename is passed as an argument to the current command as the result of the expansion. If the >(list) form is used, writing to the file will provide input for list. If the <(list) form is used, the file passed as an argument should be read to obtain the output of list. Process substitution is supported on systems that support named pipes (FIFOs) or the /dev/fd method of naming open files. Cuando este disponible, se realiza la sustitucion de proceso simultaneamente con la expansion de parametro y variable, sustitucion de orden y expansion aritmetica. Division de Palabra la shell examina los resultados de la expansion de parametro, sustitucion de orden y expansion aritmetica que no ocurrieron dentro de comillas dobles para realizar la division de palabras. The shell treats each character of IFS as a delimiter, and splits the results of the other expansions into words using these characters as field terminators. If IFS is unset, or its value is exactly , the default, then sequences of , , and at the beginning and end of the results of the previous expansions are ignored, and any sequence of IFS characters not at the beginning or end serves to delimit words. If IFS has a value other than the default, then sequences of the whitespace characters space, tab, and newline are ignored at the beginning and end of the word, as long as the whitespace character is in the value of IFS (an IFS whitespace character). Any character in IFS that is not IFS whitespace, along with any adjacent IFS whitespace characters, delimits a field. A sequence of IFS whitespace characters is also treated as a delimiter. If the value of IFS is null, no word splitting occurs. Explicit null arguments ("" or '') are retained and passed to commands as empty strings. Unquoted implicit null arguments, resulting from the expansion of parameters that have no values, are removed. If a parameter with no value is expanded within double quotes, a null argument results and is retained and passed to a command as an empty string. When a quoted null argument appears as part of a word whose expansion is non-null, the null argument is removed. That is, the word -d'' becomes -d after word splitting and null argument removal. Observe que si no hay expansion, tampoco se realiza la division de palabras. Expansion de Nombres de Ruta After word splitting, unless the -f option has been set, bash scans each word for the characters *, ?, and [. If one of these characters appears, and is not quoted, then the word is regarded as a pattern, and replaced with an alphabetically sorted list of filenames matching the pattern (see Pattern Matching below). If no matching filenames are found, and the shell option nullglob is not enabled, the word is left unchanged. If the nullglob option is set, and no matches are found, the word is removed. If the failglob shell option is set, and no matches are found, an error message is printed and the command is not executed. If the shell option nocaseglob is enabled, the match is performed without regard to the case of alphabetic characters. When a pattern is used for pathname expansion, the character "." at the start of a name or immediately following a slash must be matched explicitly, unless the shell option dotglob is set. In order to match the filenames "." and "..", the pattern must begin with "." (for example, ".?"), even if dotglob is set. If the globskipdots shell option is enabled, the filenames "." and ".." are never matched, even if the pattern begins with a ".". When not matching pathnames, the "." character is not treated specially. When matching a pathname, the slash character must always be matched explicitly by a slash in the pattern, but in other matching contexts it can be matched by a special pattern character as described below under Pattern Matching. See the description of shopt below under SHELL BUILTIN COMMANDS for a description of the nocaseglob, nullglob, globskipdots, failglob, and dotglob shell options. La variable de la shell GLOBIGNORE puede utilizarse para restringir el conjunto de nombres de archivo que concuerden con un patron. Si GLOBIGNORE esta definido, cada nombre de archivo concordante que tambien coincida con uno de los patrones en GLOBIGNORE se quita de la lista de concordancias. Los nombres de archivo "." y ".." nunca son tenidos en cuenta, incluso cuando GLOBIGNORE este puesto. Sin embargo, definir GLOBIGNORE activa la opcion de la shell dotglob, de modo que todos los otros nombres de archivo que comiencen con un "." concordaran. Para obtener el comportamiento anterior de no hacer caso de nombres de archivo que comienzan con un ".", haga que ".*" sea uno de los patrones de GLOBIGNORE. La opcion dotglob esta deshabilitada cuando GLOBIGNORE no esta definido. La concordancia de patrones depende de la configuracion de la opcion de la sehll extglob. Concordancia Cualquier caracter que aparezca en un patron, aparte de los especiales descritos mas adelante, concuerda consigo mismo. El caracter NUL no puede estar en un patron. Una barra invertida protege al siguiente caracter y no se tiene en cuenta durante la busqueda de concordancias. Los caracteres de patron especiales deben protegerse si han de concordar literalmente consigo mismos. Los caracteres de patron especiales tienen los siguientes significados: * Coincide con cualquier cadena, incluso si es nula. Cuando esta activada la opcion de shell globstar y * se usa para expandir un nombre de ruta, dos * adyacentes usados como un patron unico coincidiran con todos los archivos y con cero o mas directorios y subdirectorios. Si le sigue una /, dos * adyacentes coincidiran solo con directorios y subdirectorios. ? Concuerda con un solo caracter cualquiera. [...] Matches any one of the enclosed characters. A pair of characters separated by a hyphen denotes a range expression; any character that falls between those two characters, inclusive, using the current locale's collating sequence and character set, is matched. If the first character following the [ is a ! or a ^ then any character not enclosed is matched. The sorting order of characters in range expressions, and the characters included in the range, are determined by the current locale and the values of the LC_COLLATE or LC_ALL shell variables, if set. To obtain the traditional interpretation of range expressions, where [a-d] is equivalent to [abcd], set value of the LC_ALL shell variable to C, or enable the globasciiranges shell option. A - may be matched by including it as the first or last character in the set. A ] may be matched by including it as the first character in the set. Dentro de [ y ], se pueden especificar clases de caracteres mediante la sintaxis [:clase:], donde clase es una de las siguientes clases definidas en el estandar POSIX: alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit Una clase de caracteres concuerda con cualquier caracter que pertenezca a esa clase El caracter word concordara con letras, cifras y el caracter '_'. Dentro de [ y ], una clase de equivalencia se puede especificar empleando la sintaxis [=c=], que concuerda con todos los caracteres con el mismo peso de clasificacion (tal como lo defina la localizacion en curso) que el caracter c. Dentro de [ y ], la sintaxis [.simbolo.] concuerda con el simbolo de clasificacion simbolo. Si la opcion de la shell extglob se activa mediante la orden nativa shopt, se reconocen algunos operadores de patrones avanzados. En la siguiente descripcion, una lista-patron es una lista de uno o mas patrones separados por el caracter |. Se pueden formar patrones compuestos usando uno o mas de los siguientes sub-patrones: ?(lista-patron) Concuerda con ninguna o una ocurrencia de los patrones dados *(lista-patron) Concuerda con ninguna o mas ocurrencias de los patrones dados +(lista-patron) Concuerda con una o mas ocurrencias de los patrones dados @(lista-patron) Concuerda con uno de los patrones dados !(lista-patron) Concuerda con cualquier cosa excepto con uno de los patrones dados La opcion extglob modifica el funcionamiento del analizador, ya que los parentesis suelen tratarse como operadores con significado sintactico. Para asegurarse de que los patrones de concordancia extendidos se analicen correctamente, asegurese de que extglob este habilitado antes de analizar construcciones que contienen dichos patrones, incluidas funciones de shell y sustituciones de ordenes. Al hacer coincidir nombres de archivos, la opcion de shell dotglob determina el conjunto de nombres de archivos que se probaran: cuando dotglob esta habilitado, el conjunto de nombres de archivos incluye todos los archivos que comienzan por ".", excepto "." y ".." debe coincidir con un patron o subpatron que comience por un punto; cuando esta deshabilitado, el conjunto no incluye ningun nombre de archivo que comience por "." a menos que el patron o subpatron comience con ".". Como arriba, "." solo tiene un significado especial cuando coincide con nombres de archivos. La comparacion de patrones extendidos complejos con cadenas largas es lenta, especialmente cuando los patrones contienen alternancias y las cadenas contienen multiples concordancias. El uso de concordancias separadas para cadenas mas cortas, o usar vectores de cadenas en lugar de una sola cadena larga, puede ser mas rapido. Eliminacion de Comillas Tras las expansiones precedentes, todas las ocurrencias no entrecomilladas de los caracteres \, ', y " que no resulten de una de las expansiones anteriores, se eliminan. REDIRECCION Before a command is executed, its input and output may be redirected using a special notation interpreted by the shell. Redirection allows commands' file handles to be duplicated, opened, closed, made to refer to different files, and can change the files the command reads from and writes to. Redirection may also be used to modify file handles in the current shell execution environment. The following redirection operators may precede or appear anywhere within a simple command or may follow a command. Redirections are processed in the order they appear, from left to right. Cada redireccion que puede ir precedida por un numero de descriptor de archivo tambien puede ir precedida por una palabra del formato {nombrevariable}. En este caso, para cada operador de redireccion excepto >&- y <&-, la shell asignara un descriptor de archivo mayor o igual a 10 y lo asignara a nombrevariable. Si >&- o <&- esta precedido por {nombrevariable}, este define el descriptor de archivo que se cerrara. Si se proporciona {nombrevariable}, la redireccion persiste mas alla del alcance de la orden, lo que permite al programador de shell administrar la vida util del descriptor de archivo manualmente. La opcion de shell varredir_close gestiona esta funcionalidad. En las descripciones siguientes, si se omite el numero del descriptor de fichero, y el primer caracter del operador de redireccion es <, la redireccion se refiere a la entrada estandar (descriptor de fichero 0). Si el primer caracter del operador de redireccion es >, la redireccion se refiere a la salida estandar (descriptor de fichero 1). La palabra tras el operador de redireccion en las descripciones siguientes, a menos que se diga otra cosa, esta sujeta a la expansion de llaves, expansion de tilde, expansion de parametro, sustitucion de orden, expansion aritmetica, eliminacion de comillas, division de palabra y expansion de nombre de ruta. Si se expande a mas de una palabra, bash informa de un error. Observe que el orden de las redirecciones es significativo. Por ejemplo, la orden ls > listadir 2>&1 dirige la salida estandar normal y la de errores, ambas, al fichero listadir, mientras que la orden ls 2>&1 > listadir dirige solamente la salida estandar al archivo listadir, porque la salida de errores estandar se ha duplicado como salida estandar antes de que esta se redirigiera a listadir. Bash maneja varios nombres de archivos especialmente cuando se usan en redirecciones, como se describe en la siguiente tabla. Si el sistema operativo en el que se ejecuta bash proporciona estos archivos especiales, se usaran; sino se emularan internamente con la funcionalidadque se describe a continuacion. /dev/fd/fd Si fd es un entero valido, el decriptor de archivo fd se duplica. /dev/stdin El descriptor de archivo 0 se duplica. /dev/stdout El descriptor de archivo 1 se duplica. /dev/stderr El descriptor de archivo 2 se duplica. /dev/tcp/equipo/puerto Si equipo es un nombre de equipo valido o una direccion de internet y puerto es un numero entero correspondiente a un numero de puerto o nombre de servicio, bash intentara abrir el conector TCP correspondiente. /dev/udp/equipo/puerto Si equipo es un nombre de equipo valido o una direccion de internet y puerto es un numero entero correspondiente a un numero de puerto o nombre de servicio, bash intentara abrir el conector UDP correspondiente. Un fallo en la apertura o creacion de un fichero hace que la redireccion fracase. Deben usarse con cautela las redicrecciones con descriptores de archivo mayores que 9 ya que pueden entrar en conflicto con los empleados internamente por la propia shell. Redireccion de la Entrada La redireccion de la entrada hace que el fichero cuyo nombre resulte de la expansion de palabra se abra para lectura en el descriptor de fichero n, o la entrada estandar (descriptor de fichero 0) si no se especifico n. El formato general para la redireccion de la entrada es: [n]palabra Si el operador de redireccion es >, y la opcion noclobber de la orden nativa set ha sido activada, la redireccion fallara si el nombre de fichero resultante de la expansion de palabra existiera y fuera un fichero regular. Si el operador de redireccion es >|, o es > y la opcion noclobber de la orden nativa set no esta activada, la redireccion se intenta incluso si el archivo nombrado por palabra existe. Anadir a la Salida Redirigida La redireccion de la salida en esta forma hace que el fichero cuyo nombre resulte de la expansion de palabra se abra para anadir en el descriptor de fichero n, o la salida estandar (descriptor de fichero 1) si n no se especifico. Si el fichero no existe, se crea. El formato general para anadir a la salida es: [n]>>palabra Redireccion de las Salidas Estandar y de Errores Este constructo permite que ambas salidas estandares, la normal (descriptor de archivo 1) y la de errores (descriptor de archivo 2) se redirijan hacia el archivos cuyo nombre sea la expansion de palabra con esta construccion. hay dos formatos para la redireccion de la salida estandar y la salida de errores: &>palabra y >&palabra De las dos formas, es preferible la primera. Esta es semanticamente equivalente a >palabra 2>&1 Cuando se utiliza la segunda forma, palabra no puede expandirse a un numero o -. Si es asi, se aplican otros operadores de redireccion (consulte Duplicacion de descriptores de archivos mas adelante) en aras de la compatibilidad. Uniendo las Salidas Estandar y Error Este constructo permite que ambas salidas estandares, la normal (descriptor de archivo 1) y la de errores (descriptor de fichero 2) se redirijan hacia el archivo cuyo nombre sea la expansion de palabra. el formato para unir la redireccion de la salida estandar y la salida de errores seria el siguiente: &>>palabra Esta es semanticamente equivalente a >>palabra 2>&1 (consulte Duplicacion de descriptores de fichero mas adelante). Documentos Internos Este tipo de redireccion indica a la shell que lea la entrada desde la fuente actual hasta que vea una linea que contenga solamente separador (sin espacios en blanco al final). Todas las lineas leidas hasta ese punto se emplean como la entrada estandar de una orden. El formato de los documentos internos es: [n]<<[-]palabra documento-interno delimitador No parameter and variable expansion, command substitution, arithmetic expansion, or pathname expansion is performed on word. If any part of word is quoted, the delimiter is the result of quote removal on word, and the lines in the here-document are not expanded. If word is unquoted, all lines of the here-document are subjected to parameter expansion, command substitution, and arithmetic expansion, the character sequence \ is ignored, and \ must be used to quote the characters \, $, and `. Si el operador de redireccion es <<-, entonces se quitan de las lineas de la entrada todos los caracteres de tabulacion iniciales, asi como de la linea que contiene delimitador. Esto permite que los documentos internos dentro de guiones de la shell se sangren de manera natural. Cadenas de Documentos Internos Una variante de los documentos internos con el siguiente formato: [n]<<&palabra is used similarly to duplicate output file descriptors. If n is not specified, the standard output (file descriptor 1) is used. If the digits in word do not specify a file descriptor open for output, a redirection error occurs. If word evaluates to -, file descriptor n is closed. As a special case, if n is omitted, and word does not expand to one or more digits or -, the standard output and standard error are redirected as described previously. Mobilidad de los Descriptores de Archivo Operador de Redireccion [n]<&cifra- moves the file descriptor digit to file descriptor n, or the standard input (file descriptor 0) if n is not specified. digit is closed after being duplicated to n. De forma analoga, el operador de redireccion [n]>&cifra- moves the file descriptor digit to file descriptor n, or the standard output (file descriptor 1) if n is not specified. Apertura de Descriptores de Archivo para lectura y escritura Operador de Redireccion [n]<>palabra hace que el fichero cuyo nombres sea la expansion de palabra se abra para lectura y para escritura en el descriptor de fichero n, o en el descriptor de fichero 0 si no se especifica n. Si el fichero no existe, se crea. ALIAS Aliases allow a string to be substituted for a word when it is used as the first word of a simple command. The shell maintains a list of aliases that may be set and unset with the alias and unalias builtin commands (see SHELL BUILTIN COMMANDS below). The first word of each simple command, if unquoted, is checked to see if it has an alias. If so, that word is replaced by the text of the alias. The characters /, $, `, and = and any of the shell metacharacters or quoting characters listed above may not appear in an alias name. The replacement text may contain any valid shell input, including shell metacharacters. The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. This means that one may alias ls to ls -F, for instance, and bash does not try to recursively expand the replacement text. If the last character of the alias value is a blank, then the next command word following the alias is also checked for alias expansion. Los alias se crean y listan con la orden alias, y se quitan con la orden unalias. No hay ningun mecanismo para poder usar argumentos en el texto de reemplazo. Si se necesitan, deberia emplearse preferentemente una funcion de la shell. Consulte FUNCIONES mas adelante. Los alias no se expanden cuando la shell no es interactivo, a menos que se haya puesto la opcion expand_aliases mediante shopt (consulte la descripcion de shopt bajo ORDENES NATIVAS DE LA SHELL mas adelante). The rules concerning the definition and use of aliases are somewhat confusing. Bash always reads at least one complete line of input, and all lines that make up a compound command, before executing any of the commands on that line or the compound command. Aliases are expanded when a command is read, not when it is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new alias. This behavior is also an issue when functions are executed. Aliases are expanded when a function definition is read, not when the function is executed, because a function definition is itself a command. As a consequence, aliases defined in a function are not available until after that function is executed. To be safe, always put alias definitions on a separate line, and do not use alias in compound commands. Para casi cualquier proposito, los alias pueden sustituirse por funciones de la shell. FUNCIONES Una funcion de la shell, tal como se define en GRAMATICA DE LA SHELL, almacena una serie de ordenes para su posterior ejecucion. Cuando el nombre de una funcion de la shell se utiliza como un nombre de orden simple, la lista de ordenes asociadascon ese nombre de funcion se ejecutara. Las funciones se ejecutan en el contexto de la shell actual; no se crea ningun proceso nuevo para interpretarlos (a diferencia de un script de shell). Cuando se ejecuta una funcion, los argumentos de la funcion se convierten en los parametros posicionales durante suejecucion. El parametro especial # se actualiza para reflejar el cambio. El parametro especial 0 no se modifica. El primer elemento de La variable FUNCNAME toma el valor del nombre de la funcion mientras esta se esta ejecutando. Todos los demas aspectos del entorno de ejecucion de la shell son identicos entre una funcion y lo que la invoca con las siguientes excepciones: las trampas DEBUG y RETURN (consulte la descripcion de la orden nativa trap en ORDENES NATIVAS DE LA SHELL mas adelante) no se heredan a menos que a la funcion se le haya asignado el atributo trace (consulte la descripcion de la funcion nativa declare mas adelante) o la opcion de la shell -o functrace se ha habilitado con la orden nativa set (en cuyo caso todas las funciones heredan las trampas DEBUG y RETURN), y la trampa ERR no se hereda a menos que la opcion de shell -o errtrace haya sido habilitada. Las variables locales de la funcion se pueden declarar mediante la orden nativa local (variables locales). En general, las variables y sus valores se comparten entre la funcion y su invocador. Si una variable se declara local, el alcance de la variable se restringira a dicha funcion y los que la heredan (incluidas las funciones que invoca). En la siguiente descripcion, alcance actual es una funcion actualemente en ejecucion. Los ambitos anteriores seran los mismo que los del invocador de esa funcion y, sucesivamente, hasta el alcance "global", donde la shell no ejecuta ninguna funcion. En consecuencia, una variable local en el ambito actual es una variable declarada utilizando las funciones nativas local o declare en la funcion actualmente en ejecucion. Las variables locales "invisibilizan" otras variables con el mismo nombre que hayan sido delclaradas en un ambito anterior. Por ejemplo, una variable local declarada dentro de una funcion, invisibiliza otra variable global que tenga el mismo nombre: las diversas referencias y asignaciones seran referidas a la variable local, sin modificar la variable global. Cuando la funcion termine, la variable global vuelve a ser visible. La shell emplea alcance dinamico para controlar la visibilidad de una variable dentro de las funciones. Con el alcance dinamico, las variables visibles y sus valores son el resultado de la secuencia de llamadas a funciones mediante las cuales la ejecucion alcanza la funcion actual. El valor de una variable para una funcion dependera de su valor dentro de su invocador, si lo hubiese, ya sea este el alcance "global" u otra funcion de la shell. Este es tambien el valor que una declaracion de variable local "oculta", y el valor que se restaura cuando la funcion retorna. Por ejemplo, si una variable var se declara como local en la funcion func1 y func1 llama a otra funcion func2, las referencias a var realizadas desde dentro de func2 se resolveran como la variable local var de func1, ocultando cualquier variable global llamada var. La orden nativa unset tambien tiene el mismo alcance dinamico: si una variablees local para el alcance actual, unset la desactivara; de lo contrario, se desactivara la variable encontrada en cualquier ambito de llamada como se describio anteriormenteSi una variable en el ambito local actual no esta configurada, permanecera asi(aparece como no configurado) hasta que se restablezca en ese ambito o hasta que la funcion regrese. Una vez que la funcion regresa, se visibilizara cualquier instancia de la variable en un alcance anterior. Si se ha desactivado una variable en un alcance anterior, cualquier instancia de una variable con ese nombre que haya sidoinvisibilizado se hara visible (vea a continuacion como se modifica este comportamiento mediante la opcion de la shell localvar_unset). La variable FUNCNEST, si se le da un valor numerico mayor que 0, define un nivel maximo de anidamiento de funciones. Las invocaciones de funciones que exceden el limite hacen que se cancele la ejecucion de toda la orden. If the builtin command return is executed in a function, the function completes and execution resumes with the next command after the function call. Any command associated with the RETURN trap is executed before execution resumes. When a function completes, the values of the positional parameters and the special parameter # are restored to the values they had prior to the function's execution. Function names and definitions may be listed with the -f option to the declare or typeset builtin commands. The -F option to declare or typeset will list the function names only (and optionally the source file and line number, if the extdebug shell option is enabled). Functions may be exported so that child shell processes (those created when executing a separate shell invocation) automatically have them defined with the -f option to the export builtin. A function definition may be deleted using the -f option to the unset builtin. Las funciones pueden anidarse. La variable FUNCNEST limita el tamano de la pila de llamadas de la funcion y restringir la cantidad de llamadas que puede hacer una funcion. Por defecto, no se impone ninguna restriccion sobre este aspecto. EVALUACION ARITMETICA The shell allows arithmetic expressions to be evaluated, under certain circumstances (see the let and declare builtin commands, the (( compound command, and Arithmetic Expansion). Evaluation is done in fixed-width integers with no check for overflow, though division by 0 is trapped and flagged as an error. The operators and their precedence, associativity, and values are the same as in the C language. The following list of operators is grouped into levels of equal-precedence operators. The levels are listed in order of decreasing precedence. id++ id-- variable post-incremento y post-reduccion - + menos y mas unarios ++id --id variable pre-incremento y pre-reduccion ! ~ negacion logica y bit a bit. ** exponenciacion * / % multiplicacion, division, resto + - adicion, sustraccion << >> desplazamientos de bits a izquierda y derecha <= >= < > comparacion == != igualdad y desigualdad & Y de bits (AND) ^ O exclusivo de bits (XOR) | O inclusivo de bits (OR) && Y logico (AND) || O logico (OR) expr?expr:expr Operador condicional = *= /= %= += -= <<= >>= &= ^= |= asignacion expr1 , expr2 coma Se permiten que variables de la shell actuen como operandos; La expansion de parametros se realiza antes de evaluar la expresion. Dentro de una misma expresion, tambien se puede hacer referencia a las variables de la shell mediante su nombre sin utilizar la sintaxis de expansion de parametros. Una variable de shell nula o que no esta configurada se evalua como 0 cuando se hace referencia a ella por su nombre sin utilizar la sintaxis de expansion de parametros. El valor de una variable se evaluara como una expresion aritmetica cuando se hace referencia a ella, o cuando se asigna un valor a una variable a la que se le ha asignado el atributo integer mediante declare -i. Un valor nulo se evaluara como 0. No es necesario que una variable de shell tenga su atributo integer activado para usarse en una expresion. Integer constants follow the C language definition, without suffixes or character constants. Constants with a leading 0 are interpreted as octal numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, numbers take the form [base#]n, where the optional base is a decimal number between 2 and 64 representing the arithmetic base, and n is a number in that base. If base# is omitted, then base 10 is used. When specifying n, if a non-digit is required, the digits greater than 9 are represented by the lowercase letters, the uppercase letters, @, and _, in that order. If base is less than or equal to 36, lowercase and uppercase letters may be used interchangeably to represent numbers between 10 and 35. Los operadores se evaluan en orden de precedencia. Las sub-expresiones entre parentesis se evaluan primero y pueden sustituir a las reglas de precedencia anteriores. EXPRESIONES CONDICIONALES Conditional expressions are used by the [[ compound command and the test and [ builtin commands to test file attributes and perform string and arithmetic comparisons. The test and [ commands determine their behavior based on the number of arguments; see the descriptions of those commands for any other command-specific actions. Las expresiones se forman a partir de los siguientes primarios unarios o binarios. Bash maneja varios nombres de archivos, especialmente cuando se usan en expresiones. Si el sistema operativo en el que se ejecuta bash tiene estos archivos especiales, bash los usara; de lo contrario, los emulara internamente del siguiente modo: si algun argumento de archivo para uno de los primarios tiene la forma /dev/fd/n, entonces se marca el descriptor de archivo n. Si el argumento del archivo de uno de los primarios es /dev/stdin, /dev/stdout o /dev/stderr, se marcaran los descriptores de archivo 0, 1 o 2, respectivamente. Salvo que se indique lo contrario, las primarias que operan en archivos seguiran enlaces simbolicos operando en el archivo enlazado en lugar de hacerlo sobre el propio enlace. Cuando se emplea con [[, los operadores < y > ordenan de modo lexicografico en base a la configuracion de idioma del equipo. La orden test realiza la ordenacion en base a ASCII. -a archivo Verdadera si archivo existe. -b archivo Verdadera si archivo existe y es un archivo especial de bloques. -c fichero Verdadera si archivo existe y es un archivo especial de caracteres. -d fichero Verdadero si archivo existe y es un directorio. -e fichero Verdadera si archivo existe. -f fichero Verdadero si archivo existe y es un archivo regular. -g fichero Verdadero si archivo existe y tiene el bit SGID. -h fichero Verdadero si archivo existe y es un enlace simbolico. -k archivo Verdadero si archivo existe y tiene el bit 'pegajoso' (STIcky). -p fichero Verdadero si archivo existe y es una tuberia con nombre (FIFO). -r fichero Verdadero si archivo existe y se puede leer. -s fichero Verdadero si archivo existe y tiene un tamano mayor que cero. -t fd Verdadero si el descriptor de fichero fd esta abierto y se refiere a una terminal. -u archivo Verdadero si archivo existe y tiene el bit SUID. -w fichero Verdadero si archivo existe y se puede modificar. -x archivo Verdadero si archivo existe y es ejecutable. -G fichero Verdadero si archivo existe y su grupo es el GID efectivo. -L fichero Verdadero si archivo existe y es un enlace simbolico. -N fichero Verdadero si archivo existe y ha sido modificado desde que se leyo la ultima vez. -O archivo Verdadero si archivo existe y su propietario es el UID efectivo. -S fichero Verdadero si archivo existe y es un zocalo (socket). fichero1 -ef fichero2 Verdadero si archivo1 y archivo2 tienen los mismos numeros de nodo-i y de dispositivo. fichero1 -nt fichero2 Verdadero si archivo1 es mas reciente (segun la fecha de modificacion) que archivo2, o si archivo1 existe mientras que archivo2 no. archivo1 -ot archivo2 Verdadero si archivo1 es mas antiguo que archivo2, o si archivo2 existe mientras que archivo1 no. -o nombre-opcion Verdadero si la opcion de la shell nombre-opcion esta activada. Vea la lista de opciones bajo la descripcion de la opcion -o de la orden interna set mas adelante. -v nombre-variable Verdadero si esta definida la variable de la shell varname (se le ha asignado un valor). -R nombre-variable Verdadero si la variable de la shell varname esta definida y es una referencia de nombre. -z cadena Verdadero si la longitud de cadena es cero. cadena -n cadena Verdadero si la longitud de cadena no es cero. cadena1 == cadena2 cadena1 = cadena2 Verdadero si las cadenas son iguales. = debe usarse con la orden test para conformidad con POSIX. Cuando se usa con la orden [[, realiza la concordancia de patrones como se ha descrito anteriormente (Ordenes compuestas). cadena1 != cadena2 Verdadero si las cadenas no son iguales. cadena1 < cadena2 Verdadero si cadena1 se ordena lexicograficamente antes de cadena2. cadena1 > cadena2 Verdadero si cadena1 se clasifica lexicograficamente tras cadena2. arg1 OP arg2 OP is one of -eq, -ne, -lt, -le, -gt, or -ge. These arithmetic binary operators return true if arg1 is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to arg2, respectively. Arg1 and arg2 may be positive or negative integers. When used with the [[ command, Arg1 and Arg2 are evaluated as arithmetic expressions (see ARITHMETIC EVALUATION above). EXPANSION DE ORDEN SIMPLE Cuando se ejecuta una orden simple, la shell realiza las siguientes expansiones, asignaciones y redirecciones, de izquierda a derecha en el siguiente orden: 1. Las palabras que el analizador ha marcado como asignaciones de variables (aquellas que preceden al nombre de la orden) y redirecciones se guardan para un procesado posterior. 2. Las palabras que no sean asignaciones de variables ni redirecciones se expanden. Si tras la expansion quedan aun palabras, la primera palabra se toma como el nombre de la orden y las palabras restantes son los argumentos. 3. Se ejecutan las redirecciones como se describio mas arriba bajo REDIRECCION. 4. El texto tras el = en cada asignacion de variable esta sujeto a expansion de tilde, expansion de parametro, sustitucion de orden, expansion aritmetica y eliminado de comillas antes de ser asignado a la variable. If no command name results, the variable assignments affect the current shell environment. In the case of such a command (one that consists only of assignment statements and redirections), assignment statements are performed before redirections. Otherwise, the variables are added to the environment of the executed command and do not affect the current shell environment. If any of the assignments attempts to assign a value to a readonly variable, an error occurs, and the command exits with a non-zero status. Si no resulta ningun nombre de orden, se hacen las redirecciones, pero no afectan al entorno de la shell en curso. Un error de redireccion hace que el shell acabe con un estado distinto de cero. Si hay un nombre de orden tras la expansion, la ejecucion procede como se describio antes. De otro modo, la orden sale. Si una de las expansiones contenia una sustitucion de orden, el estado de salida de la orden es el de la ultima sustitucion de orden realizada. Si no habia sustituciones de ordenes, la orden acaba con un estado de cero. EJECUCION DE ORDENES Despues de que una orden ha sido dividida en palabras, si el resultado es una orden simple y una lista opcional de argumentos, tienen lugar las siguientes acciones. Si el nombre de la orden no contiene barras inclinadas, la shell intenta localizarla. Si existe una funcion de la shell con ese nombre, esa funcion se llama como se describio arriba en FUNCIONES. Si el nombre no coincide con el de ninguna funcion, la shell lo busca en la lista de ordenes internas. Si se encuentra, se llama a la orden interna correspondiente. Si el nombre no es ni una funcion de la shell ni una orden interna, y no contiene barras inclinadas, bash busca en cada elemento de PATH un directorio que contenga un archivo ejecutable con ese nombre. Bash emplea una tabla de dispersion (hash) para recordar los nombres de ruta completos de los archivos ejecutables (consulte hash en ORDENES NATIVAS DE LA SHELL a continuacion). Solo se realiza una busqueda completa de los directorios de PATH si la orden no se encuentra en la tabla de llamada command_not_found_handle. Si la funcion existe, se invoca en un entorno de ejecucion separado con la orden y sus argumentos originales, el valor de salida de esta funcion sera el de esa subshell. Si la funcion no esta definida, la shell muestra un mensaje de error y devuelve un estado de salida de 127. Si la busqueda fue exitosa, o si el nombre de la orden contiene una o mas barras inclinadas, la shell ejecuta el programa con ese nombre en un entorno de ejecucion separado. El argumento 0 se pone al nombre dado, y el resto de argumentos de la orden se ponen a los argumentos dados, si los hay. Si esta ejecucion fallara porque el fichero no tuviera un formato ejecutable y tampoco fuese un directorio, se asumiria que es un script de la shell, un archivo e contiene ordenes de la shell; la shell crea una subshell para ejecutarlo. Esta subshell se reinicia a si misma, asi que el efecto es el mismo que si se hubiera llamado una nueva shell para ejecutar el script, con la excepcion de que el proceso hijo retiene las localizaciones de ordenes recordadas por su antecesor (vea hash mas adelante en ORDENES NATIVAS DE LA SHELL). Si el programa es un fichero que empieza con los dos caracteres #!, el resto de la primera linea especifica un interprete para el programa. El shell ejecuta el interprete especificado en sistemas operativos que no manejen por si mismos este formato de ejecutable. Los argumentos del interprete consisten en un solo argumento opcional tras el nombre del interprete en la primera linea del programa, seguido del nombre del programa, seguido por los argumentos de la orden, si los hubiera. ENTORNO DE EJECUCION DE ORDENES la shell tiene un entorno de ejecucion, que consiste en lo siguiente: o ficheros abiertos heredados por la shell en la llamada, quizas modificada por redirecciones suministradas a la orden interna exec o el directorio de trabajo en curso, establecido por cd, pushd o popd, o heredado por la shell en la llamada o la mascara de modo de creacion de ficheros, establecida por umask o heredada del padre de la shell o las trampas en curso establecidas por trap o parametros de la shell que han sido establecidos por asignaciones de variables o con set, o heredados del padre de la shell en el entorno o funciones de la shell definidas durante la ejecucion o heredadas del padre de la shell en el entorno o opciones activadas en la llamada (bien por omision o mediante argumentos en la linea de ordenes) o por set o opciones activadas mediante shopt o alias de la shell definidos con alias o varios identificadores de proceso, incluyendo los de tareas en segundo plano, el valor de $$, y el valor de $PPID Cuando una orden simple distinta de una interna o una funcion de la shell se va a ejecutar, se llama en un entorno de ejecucion separado que consiste en lo siguiente. A menos que se diga otra cosa, los valores se heredan del shell. o los ficheros abiertos de la shell, mas las modificaciones y adiciones especificadas en la orden por redirecciones o el directorio de trabajo en curso o la mascara de modo de creacion de ficheros o variables de la shell marcadas para la exportacion, junto con variables exportadas para la orden, pasadas en el entorno o las trampas capturadas por la shell se restauran a los valores del padre del shell, y las trampas que no son tenidas en cuenta por la shell tampoco lo son Una orden llamada en este entorno separado no puede afectar al entorno de ejecucion de la shell. Una subshell es una copia del proceso de la shell. Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a subshell environment that is a duplicate of the shell environment, except that traps caught by the shell are reset to the values that the shell inherited from its parent at invocation. Builtin commands that are invoked as part of a pipeline are also executed in a subshell environment. Changes made to the subshell environment cannot affect the shell's execution environment. Las subshells generadas para ejecutar sustituciones de comandos heredan el valor de la opcion -e de la shell principal. Cuando no esta en modo posix, bash borrara la opcion -e en dichas subshells. Si una orden va seguida de & y el control de tareas no esta activo, la entrada estandar predeterminada para la orden sera el archivo /dev/null. De lo contrario, la orden invocada hereda los descriptores de archivo de la shell que realiza la llamada modificados por las redirecciones. ENTORNO Cuando se llama a un programa, se le da un vector de cadenas de caracteres llamado el entorno. Esto es una lista de parejas nombre-valor, de la forma nombre=valor. La shell proporciona diversos medios para manipular el entorno. Al inciarse, la shell busca en su entorno y crea un parametro para cada nombre encontrado, marcandolo automaticamente para exportar a procesos hijos. Las ordenes ejecutadas heredan el entorno. Las ordenes export y declare -x permiten anadir y quitar parametros y funciones del entorno. Si el valor de un parametro en el entorno se modifica, el nuevo valor pasa a formar parte del entorno, reemplazando al antiguo. El entorno heredado por cualquier orden ejecutada consiste en el entorno inicial de la shell, cuyos valores pueden ser modificados, menos las parejas quitadas mediante la orden unset mas las adiciones con las ordenes export y declare -x. El entorno para cualquier orden simple o funcion puede aumentarse temporalmente prefijandola con asignaciones de parametros, como se describio arriba en PARAMETROS. Estas sentencias de asignacion afectan solamente al entorno visto por esa orden. Si la opcion -k esta puesta (vea la orden interna set mas adelante), entonces todas las asignaciones de parametros se ponen en el entorno para una orden, no solo las que preceden a su nombre. Cuando bash llama a una orden externa, la variable _ se pone con el nombre completo del fichero de la orden y se pasa a esa orden en su entorno. ESTADO DE SALIDA El estado de salida de una orden ejecutada es el valor retornado por las llamada del sistema waitpid o una funcion equivalente. El valor de los estados de salida varia entre 0 y 255, aunque como se explica mas adelante, la shell suele usar valores superiores a 125. Los estados de salida de las ordenes nativas de la shell y de las ordenes compuestas tambien estan limitadas a ese intervalo. En circunstancias concretas, la shell empleara valores especiales para indicar algun error especifico. Para los propositos de la shell, una orden que acabe con un estado de salida cero, ha tenido exito. Un estado de salida de cero indica exito. Un estado de salida distinto de cero indica fallo. Cuando una orden termina por una senal fatal N, bash emplea el valor de 128+N como el estado de salida. Si una orden no se encuentra, el proceso hijo creado para ejecutarla devuelve un estado de 127. Si una orden se encuentra pero no es ejecutable, el estado de salida es 126. Si una orden falla debido a un error durante la expansion o redireccion, el estado de salida es mayor que cero. Las ordenes nativas de la shell devuelven un estado de 0 (verdad) si acaban con exito, y distinto de cero (falso) si ocurre un error mientras se ejecutan. Todas las ordenes nativas devuelven un estado de salida de 2 para indicar un modo de empleo incorrecto, habitualmente el uso de opciones no validas o la falta de algun argumento. El estado de salida de la ultima orden puede verse comprobando el parametro especial $?. El propio bash devuelve el estado de salida de la ultima orden ejecutada, a menos que ocurra un error de sintaxis, en cuyo caso acaba con un estado distinto de cero. Consulte la orden interna exit mas adelante. SENALES Cuando bash es interactivo, en la ausencia de trampas, no hace caso de SIGTERM (de modo que kill 0 no mata una shell interactiva), y se captura y maneja SIGINT (de manera que la orden interna wait es interrumpible). En todos los casos, bash no hace caso de SIGQUIT. Si el control de tareas tiene efecto, bash no hace caso de SIGTTIN, SIGTTOU, y SIGTSTP. Las ordenes no nativas ejecutadas por bash tienen gestores de senales puestos a los valores heredados por la shell de su padre. Cuando el control de tareas no esta activo, las ordenes asincronas ignoraran SIGINT y tambien SIGQUIT ademas de estos gestores heredados. Las ordenes ejecutadas como resultado de sustitucion de orden ignoran las senales de control de tareas generadas mediante el teclado SIGTTIN, SIGTTOU, ni SIGTSTP. la shell, de forma predeterminada, finaliza al recibir una senal SIGHUP. Antes de salir, reenvia la senal SIGHUP a todas las tareas, en ejecucion o paradas. A las tareas detenidas se les envia SIGCONT para asegurarse de que reciben la senal SIGHUP. Para evitar que la shell envie la senal a una tarea en particular, deberia quitarse de la lista con la orden nativa disown (vea ORDENES NATIVAS DE LA SHELL mas adelante) o marcarlo para no recibir SIGHUP empleando disown -h. Si la opcion de la shell huponexit se ha puesto mediante shopt, bash envia una senal SIGHUP a todas las tareas cuando una shell de entrada interactiva finaliza. If bash is waiting for a command to complete and receives a signal for which a trap has been set, the trap will not be executed until the command completes. When bash is waiting for an asynchronous command via the wait builtin, the reception of a signal for which a trap has been set will cause the wait builtin to return immediately with an exit status greater than 128, immediately after which the trap is executed. Cuando el control de tareas no esta habilitado y bash esta esperando a que se finalice la ejecucion de una orden en primer plano, la shell recibe senales generadas por el teclado como SIGINT (generalmente generada mediante ^C) que los usuarios intentan enviar a esa orden en ejecucion. Esto sucede porque la shell y la orden estan en el mismo grupo de procesos que la terminal, y ^C envia SIGINT a todos los procesos en ese grupo de procesos. Cuando bash se ejecuta sin el control de tareas habilitado y recibe SIGINT mientras se ejecuta una orden en primer plano, esta esperara hasta que dicha orden finalice y luego decide que hacer la senal SIGINT: 1. Si la orden finaliza debido a la senal SIGINT, bash interpreta que el usuario pretendia finalizar todo el script y actua sobre SIGINT (por ejemplo, ejecutando una trampa SIGINT o finalizandose a si misma); 2. Si la orden no finaliza debido a SIGINT, significa que el programa gestiono la senal SIGINT y no la interpreto terminando su ejecucion. En este caso, bash tampoco interpretara SIGINT como una senal que indique su finalizacion, sino que supone que se era parte de la operacion normal del programa ( ej., emacs lo usa para cancelar comandos de edicion) o que no ha sido interpetada de modo delibrerado. Sin embargo, por razones de compatibilidad, bash ejecutara cualquier trampa establecida en SIGINT, como lo hace con cualquier otra senal que reciba mediante trampas, mientras espera que se finalice la ejecucion de la orden enprimer plano. CONTROL DE TAREAS El control de tareas se refiere a la capacidad de parar selectivamente (suspender) la ejecucion de procesos y continuar (reanudar) su ejecucion posteriormente. Un usuario emplea esta utilidad generalmente a traves de una interfaz interactiva suministrada conjuntamente por el controlador del terminal del nucleo del sistema operativo y bash. la shell asocia una tarea con cada tuberia. Mantiene una tabla de tareas ejecutandose actualmente, que pueden listarse con la orden jobs. Cuando bash inicia una tarea asincronamente (en segundo plano), imprime una linea con un aspecto como esta: [1] 25647 indicando que est tarea corresponde al numero 1 y que el PID del ultimo proceso en la tuberia asociada con el es 25647. Todos los procesos en una misma tuberia son miembros de la misma tarea. Bash emplea la abstraccion de la tarea como la base para el control de tareas. To facilitate the implementation of the user interface to job control, the operating system maintains the notion of a current terminal process group ID. Members of this process group (processes whose process group ID is equal to the current terminal process group ID) receive keyboard-generated signals such as SIGINT. These processes are said to be in the foreground. Background processes are those whose process group ID differs from the terminal's; such processes are immune to keyboard-generated signals. Only foreground processes are allowed to read from or, if the user so specifies with stty tostop, write to the terminal. Background processes which attempt to read from (write to when stty tostop is in effect) the terminal are sent a SIGTTIN (SIGTTOU) signal by the kernel's terminal driver, which, unless caught, suspends the process. Si el sistema operativo en el que bash se esta ejecutando, admite el control de tareas y bash da facilidades para su uso. Teclear el caracter suspender (tipicamente ^Z, Control-Z) durante la ejecucion de un proceso, hace que este se pare y devuelva al usuario el control de bash. Teclear el caracter suspension diferida (tipicamente ^Y, Control-Y) hace que el proceso se pare cuando intente leer entrada desde la terminal, y el control se devuelve a bash. El usuario puede entonces manipular el estado de esta tarea, empleando la orden bg para continuarla en segundo plano, la orden fg para continuarla en primer plano, o la orden kill para finalizarla. Un ^Z tiene efecto inmediatamente, y ademas la salida pendiente y lo que haya en el bufer de entrada del teclado se descartan. There are a number of ways to refer to a job in the shell. The character % introduces a job specification (jobspec). Job number n may be referred to as %n. A job may also be referred to using a prefix of the name used to start it, or using a substring that appears in its command line. For example, %ce refers to a stopped job whose command name begins with ce. If a prefix matches more than one job, bash reports an error. Using %?ce, on the other hand, refers to any job containing the string ce in its command line. If the substring matches more than one job, bash reports an error. The symbols %% and %+ refer to the shell's notion of the current job, which is the last job stopped while it was in the foreground or started in the background. The previous job may be referenced using %-. If there is only a single job, %+ and %- can both be used to refer to that job. In output pertaining to jobs (e.g., the output of the jobs command), the current job is always flagged with a +, and the previous job with a -. A single % (with no accompanying job specification) also refers to the current job. Si simplemente damos el nombre de una tarea, esto puede traerlo a primer plano: %1 es un sinonimo de "fg %1", que trae la tarea numero 1 desde el segundo plano al primero. Similarmente, "%1 &" reanuda la tarea 1 en segundo plano, equivalente a "bg %1". La shell se entera inmediatamente cuando una tarea cambia de estado. Normalmente, bash espera hasta que esta a punto de mostrar un indicador antes de informar de cambios en el estado de una tarea, para no interrumpir cualquier otra salida. Si la opcion -b de la orden interna set esta activada, bash informa de tales cambios inmediatamente. Cualquier trampa en SIGCHILD sera ejecutada para cada descendiente que termine. If an attempt to exit bash is made while jobs are stopped (or, if the checkjobs shell option has been enabled using the shopt builtin, running), the shell prints a warning message, and, if the checkjobs option is enabled, lists the jobs and their statuses. The jobs command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, the shell does not print another warning, and any stopped jobs are terminated. Cuando la shell esta esperando por una tarea o un proceso con la orden interna wait y el control de tareas esta activado, wait retornara cuando la tarea cambie su estado. La opcion -f hace que wait espere hasta que la tarea o el proces termine para retornar. INDICADORES Cuando se ejecuta interactivamente, bash muestra el indicador primario PS1 cuando esta dispuesto para leer una orden, y el secundario PS2 cuando necesita mas entrada para completar una orden. Bash muestra el indicador PS0 despues de recibir una orden pero antes de ejecutarla. Bash muestra PS4 como se describio anteriormente antes de seguir la ejecucion de cada orden cuando la opcion -x esta activada. Bash permite personalizar estos indicadores insertando caracteres especiales protegidos con barras invertidas que se interpretaran de este modo: \a un caracter de alerta ASCII (07) \d la fecha en el formato "Dia-Semana Mes Dia" (ejemplo, "Tue May 26") en ingles \D{formato} el formato se envia a strftime(3) y el resultado se introduce en la cadena del indicador; si formato esta en blanco, se mostrara la fecha y hora en formato local. Las llaves son necesarias \e un caracter de escape (ESC) ASCII (033) \h el nombre del equipo anfitrion hasta el primer `.' \H el nombre del equipo anfitrion completo \j la cantidad de tareas gestionadas por la shell al mismo tiempo \l el nombre base del nombre de dispositivo del terminal de la shell \n salto de linea \r retorno de carro \s el nombre de la shell, el nombre base de $0 (la porcion que sigue a la ultima barra inclinada) \t la hora actual en el formato de 24 horas HH:MM:SS \T la hora actual en el formato de 12 horas HH:MM:SS \@ la hora actual en el formato de 12 horas con indicador AM/PM \A la hora actual en el formato de 24 horas HH:MM \u el nombre de usuario del usuario en curso \v la version de bash (e.g., 2.00) \V la distribucion de bash, version + nivel de parcheo (e.g., 2.00.0) \w el valor de la variable de la shell PWD ($PWD), con $HOME abreviado con una tilde (emplea el valor de la variable PROMPT_DIRTRIM). \W el nombre base del directorio de $PWD, cin $HOME abreviado con una tilde. \! el numero de historia de esta orden \# el numero de orden de esta orden \$ si el UID efectivo es 0 (el super-usuario), un #, si no un $ \nnn el caracter correspondiente al numero octal nnn \\ una barra inclinada invertida \[ empieza una secuencia de caracteres no imprimibles, que pueden emplearse para empotrar una secuencia de control del terminal en el indicador \] termina una secuencia de caracteres no imprimibles El numero de orden y el numero de historia son usualmente diferentes: el numero de historia de una orden es su posicion en la lista de historia, que puede incluir ordenes restauradas desde el historial (consulte HISTORIAL mas adelante), mientras que el numero de orden es la posicion en la secuencia de ordenes ejecutadas durante la sesion de shell actual. Despues de que la cadena es descodificada, se expande mediante la expansion de parametros, sustitucion de ordenes, expansion aritmetica, expansion de cadena, y eliminacion de comillas, sujeta al valor de la opcion de la shell promptvars (vea la descripcion de la orden shopt bajo ORDENES INTERNAS DE LA SHELL mas adelante). Esto puede tener algun efecto indeseado si la parte protegida de la cadena aparece dentro de la sustitucion de ordenes o contiene algun caracter especial para la expansion de palabras. READLINE This is the library that handles reading input when using an interactive shell, unless the --noediting option is given at shell invocation. Line editing is also used when using the -e option to the read builtin. By default, the line editing commands are similar to those of Emacs. A vi-style line editing interface is also available. Line editing can be enabled at any time using the -o emacs or -o vi options to the set builtin (see SHELL BUILTIN COMMANDS below). To turn off line editing after the shell is running, use the +o emacs or +o vi options to the set builtin. Notacion de Readline En esta seccion, se emplea la notacion al estilo de Emacs para denotar las teclas. Las teclas de control se representan por medio de C-tecla; asi, C-n significa Control-N. De forma similar, las teclas meta (Alt) se representan con M-tecla, de forma que M-x significa Meta-X. (En teclados sin tecla meta, M-x significa ESC x, i.e., pulsar la tecla de escape (Esc) y luego la tecla x. Esto hace que ESC sea el prefijo meta. La combinacion M-C-x quiere decir ESC-Control-x, o pulsar la tecla Escape y luego mantener presionada la tecla Control mientras se pulsa la tecla x.) Las ordenes de readline pueden recibir argumentos numericos que actuan normalmente como un numero de repeticion. Algunas veces, empero, lo que tiene significado es el signo del argumento. Pasar un argumento negativo a una orden que actua en la direccion adelante (p. ej., kill-line) hace que esa orden actue en la direccion contraria, hacia atras. Las ordenes cuyo comportamiento con argumentos se desvie de esto se senalan mas adelante. Cuando una orden se describe como que corta texto, el texto borrado se guarda para una posible futura recuperacion (pegado). El texto cortado se guarda en un anillo de corte. Cortes consecutivos hacen que el texto se acumule en una unidad, que puede pegarse toda de golpe, de una vez. Las ordenes que no cortan texto separan los trozos de texto en el anillo de corte. Inicio de Readline Readline se personaliza poniendo ordenes en un archivo de inicio (el archivo inputrc). El nombre de este archivo se toma del valor de la variable INPUTRC. Si esta variable no esta definida, el valor predeterminado es /etc/inputrc. Cuando un programa que hace uso de la biblioteca readline inicia, el archivo de inicio se lee, y se establecen las definiciones de teclas y variables. Solo se permiten unas pocas construcciones basicas en el archivo de inicio de readline. Las lineas en blanco no se tienen en cuenta. Las lineas que comiencen con un # son comentarios. Las lineas que comiencen con un $ indican construcciones condicionales. Otras lineas representan definiciones de teclas y definiciones de variables. Las definiciones predeterminadas de teclas pueden cambiarse con un fichero inputrc. Otros programas que usen esta biblioteca pueden anadir sus propias ordenes y definiciones. Por ejemplo, el poner M-Control-u: universal-argument o C-Meta-u: universal-argument dentro del fichero inputrc haria que M-C-u ejecutara la orden de readline universal-argument. Se reconocen los siguientes nombres simbolicos de caracteres: RUBOUT, DEL, ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE, y TAB. Ademas de los nombres de ordenes, readline permite que se enlace una tecla cualquiera a una cadena de caracteres que se inserta cuando la tecla se pulse (una macro). Definiciones de Teclas de Readline La sintaxis para controlar las definiciones de teclas en el fichero inputrc es simple. Todo lo que se requiere es el nombre de la orden o el texto de una macro y una secuencia de teclas con la cual debe enlazarse. El nombre se puede especificar en una de dos formas: como un nombre simbolico de tecla, posiblemente con prefijos Meta- o Control-, o como una secuencia de teclas. Cuando se use la forma nombre-tecla:nombre-funcion o macro, nombre-tecla es el nombre de una tecla en ingles. Por ejemplo: Control-u: universal-argument Meta-Rubout: backward-kill-word Control-o: "> salida" En el ejemplo de arriba, C-u se enlaza a la funcion universal-argument, M-DEL se vincula a la funcion backward-kill-word, y C-o se define como que se ejecute la macro expresada en la parte derecha (esto es, insertar el texto ``> output'' en la linea). En la segunda forma, "sectecla":nombre-funcion o macro, sectecla difiere de la nombre-tecla de antes en que las cadenas que representan una secuencia entera de teclas pueden especificarse poniendo la secuencia entre comillas dobles. Asi se pueden utilizar algunas teclas de escape al estilo de GNU Emacs, como en el siguiente ejemplo, pero no se reconocen los nombres de caracteres simbolicos. "\C-u": universal-argument "\C-x\C-r": re-read-init-file "\e[11~": "Tecla de Funcion 1" En este ejemplo, C-u se enlaza de nuevo a la funcion universal-argument. C-x C-r se vincula a la funcion re-read-init-file, y ESC [ 1 1 ~ se define como que se inserte el texto ``Function Key 1''. El conjunto completo de las secuencias de escape al estilo de GNU Emacs es \C- prefijo de control \M- prefijo meta \e un caracter de escape (ESC) \\ barra invertida \" una " literal \' una ' literal Ademas de las secuencias de escape al estilo de GNU Emacs, se dispone de un segundo conjunto de escapes con la barra invertida: \a alerta (pitido) \b espacio-atras \d espacio atras \f nueva pagina \n salto de linea \r retorno de carro \t tabulacion horizontal \v tabulacion vertical \nnn el caracter de 8 bits cuyo codigo es el valor octal nnn (de uno a tres digitos) \xHH el caracter de 8-bits cuyo codigo es el valor hexadecimal HH (uno o dos digitos hexadecimales) Cuando se mete el texto de una macro, se deben emplear comillas simples o dobles para indicar una definicion de macro. El texto no entrecomillado se supone un nombre de funcion. En el cuerpo de la macro, los escapes con barra inversa de arriba se expanden. La barra inversa protegera a cualquier otro caracter en el texto de la macro, incluyendo a " y a '. Bash permite mostrar o modificar las definiciones de teclas en curso mediante la orden interna bind. El modo de edicion puede cambiarse durante una sesion interactiva empleando la opcion -o de la orden interna set (vea ORDENES NATIVAS DE LA SHELL mas adelante). Variables de Readline Readline tiene variables que se pueden usar para personalizar mas aun su comportamiento. Una variable se puede definir en el fichero inputrc con una sentencia de la forma set nombre-variable valor o bien empleando la orden nativa bind (consulte ORDENES NATIVAS DE LA SHELL mas adelante). Salvo que se indique lo contrario, las variables readline pueden tomar los valores On o Off (sin distincion entre mayusculas y minusculas). Los nombres de variables no reconocidas se ignoraran. Cuando se lee un valor de variable, los valores vacios o nulos, "on" (sin distincion entre mayusculas y minusculas) y "1" son equivalentes a On. Todos los demas valores son equivalentes a Off. Las variables y sus valores predeterminados son: active-region-start-color Una variable de cadena que controla el color y el fondo del texto cuando se muestra el texto en la region activa (consulte la descripcion de enable-active-region a continuacion). Esta cadena no debe ocupar fisicamente ninguna posicion en la pantalla, por lo que debe consistir unicamente en secuencias de escape de terminal. Se envia al terminal antes de mostrar el texto en la region activa. Esta variable se restablece al valor predeterminado cada vez que cambia el tipo de terminal. El valor predeterminado es la cadena que pone el terminal en modo destacado, segun se obtiene de la descripcion terminfo del terminal. Un valor de muestra podria ser "\e[01;33m". active-region-end-color Una variable de cadena que "deshace" los efectos de active-region-start-color y restaura la apariencia "normal" de la pantalla del terminal despues de mostrar texto en la region activa. Esta cadena no debe ocupar fisicamente ninguna posicion en la pantalla, por lo que debe consistir unicamente en secuencias de escape de terminal. Se envia al terminal despues de mostrar el texto en la region activa. Esta variable se restablece al valor predeterminado cada vez que cambia el tipo de terminal. El valor predeterminado es la cadena que restaura el terminal desde el modo destacado, tal como se obtiene de la descripcion terminfo del terminal. Un valor de ejemplo podria ser "\e[0m". bell-style (audible) Controla que pasa cuando readline quiere tocar el pito de la terminal. Si se define como none, readline nunca toca el pito. Si se pone a visible, readline usa una alerta visible si esta disponible. Si se pone como audible, readline intenta hacer sonar el pito de la terminal. bind-tty-special-chars (On) Si se establece a On, readline intenta vincular los caracteres de control tratados especialmente por el controlador de terminal del kernel a sus equivalentes en readline. blink-matching-paren (Off) Si se establece a On, readline intenta mover el cursor a un parentesis de apertura cuando se inserte un parentesis de cierre. colored-completion-prefix (Off) Si se establece a On, al enumerar las terminaciones, readline mostrara el prefijo comun del conjunto de posibles terminaciones usando un color diferente. Las definiciones de color se toman del valor de la variable de entorno LS_COLORS. Si hay una definicion de color en $LS_COLORS para el sufijo personalizado "readline-colored-completion-prefix", readline usara este color para el prefijo comun en lugar del predeterminado. colored-stats (Off) Si se establece en On, readline mostrara varias posibilidades de autocompletado usando diferentes colores para indicar su tipo de archivo. Las definiciones de color se toman del valor de la variable de entorno LS_COLORS. comment-begin ("#") La cadena que se inserta cuando se ejecuta la orden de readline insert-comment. Esta orden esta enlazada a M-# en modo emacs y a # en modo vi. completion-display-width (-1) El numero de columnas de pantalla utilizadas para mostrar posibles coincidencias cuando se autocompleta. El valor se ignora si es menor que 0 o mayor que el ancho de pantalla del terminal. Un valor de 0 hara que las coincidencias se muestren una por linea. El valor predeterminado es -1. completion-ignore-case (Off) Si se pone a On, readline realiza la concordancia y terminacion de nombres de ficheros sin importar si las letras son mayusculas o minusculas. completion-map-case (Off) Si se establece en On, y completion-ignore-case esta habilitado, readline trata como equivalentes los guiones medios (-) y los guiones bajos (_) cuando se realizan concordancias y autocompletados de nombres de archivos sin distincion entre mayusculas y minusculas. completion-prefix-display-length (0) La longitud en caracteres del prefixo comun de una lista de posibles autocompletadosque se muestra sin modificacion. Cuando se establece un valor mayor que cero, los prefijos comunes mas largos que este valor se sustituyen por una elipse cuando se muestran posibles autocompletados. completion-query-items (100) Esto determina cuando se pregunta al usuario si quiere ver el numero de terminaciones posibles generadas por la orden possible-completions. Puede ponerse a cualquier valor entero mayor o igual a cero. Si el numero de posibles terminaciones es mayor o igual que el valor de esta variable, al usuario se le pregunta si desea o no verlas; si no, simplemente se muestran en la terminal. El valor cero indica que readline no debe preguntar nunca mientras que valores negativos son interpretados igual que el cero. convert-meta (On) Si se pone a On, readline convertira caracteres con el octavo bit definido a una secuencia de teclas ASCII recortando el octavo bit y anadiendo un caracter Esc como prefijo (es decir, usando Esc como el prefijo meta). Por esta definido como On, pero readline lo define como Off si la localizacion contiene caracteres de 8 bits. Esta variable depende de la LC_TYPE pudiendo variar segun la localizacion empleada. disable-completion (Off) Si se pone a On, readline inhibira la terminacion de palabras. Los caracteres para la terminacion se insertaran en la linea como si se hubieran hecho corresponder con self-insert. echo-control-characters (On) Cuando se establece On, en los sistemas operativos que indican que incluyen soporte, readline repite un caracter que corresponde a una senal generada desde el teclado. editing-mode (emacs) Controla si readline empieza con un conjunto de definiciones de teclas similar a las de Emacs o vi. editing-mode puede ponerse a los valores emacs o vi. emacs-mode-string (@) Si esta activa la variable show-mode-in-prompt, esta cadena se muestra inmediatamente antes de la ultima linea del mensaje principal cuando el modo de edicion de emacs esta activo. El valor se expande como una combinacion de teclas, por lo que el conjunto estandar de prefijos meta, de control y secuencias de escape de barra invertida estan disponible. Utilice los escapes \1 y \2 para comenzar y finalizar secuencias de caracteres que no se imprimen, que se pueden utilizar para incrustar una secuencia de control de terminal en la cadena de modo. enable-active-region (On) El punto es la posicion actual del cursor y marca se refiere a una posicion guardada del cursor. El texto entre el punto y la marca se denomina region. Cuando el valor de esta variable se establece en On, readline permite que ciertas ordenes designen la region como activa. Cuando la region esta activa, readline resalta el texto en la region usando el valor de active-region-start-color, que de forma predeterminada es la cadena que habilita el modo destacado del terminal. La region activa muestra el texto insertado mediante pegado entre corchetes y cualquier texto concordante encontrado mediante busquedas incrementales y no incrementales en el historico. enable-bracketed-paste (On) Cuando su valor es On, readline configurara el terminal para insertar cada informacion que se pegue en el bufer de edicion como una unica cadena de caracteres, en lugar de tratar cada caracter como si hubiera sido leido desde el teclado. Esto evita que readline ejecute cualquier orden de edicion vinculada a secuencias de teclas que puedan aparecer en el texto pegado. enable-keypad (Off) Cuando se pone a On, readline intentara activar el teclado auxiliar cuando se llame. Algunos sistemas necesitan esto para activar las teclas de flechas de cursor. enable-meta-key (On) Cuando se pone a On, readline intentara activar cualquier modificacion con la tecla meta para la que el terminal tenga soporte. En muchos terminales, la tecla meta se usa para escribir caracteres de 8 bits. expand-tilde (Off) Si se pone a On, la expansion de tilde se realiza cuando readline intenta la terminacion de palabras. history-preserve-point (Off) Si se establece a On, el codigo de historial intenta colocar un punto en la misma ubicacion en cada linea del historico recuperada con previous-history o next-history. history-size (unset) Establece el numero maximo de entradas guardadas en la lista del historial. Si se establece a cero, se eliminan todas las entradas del historial existentes y no se guardan entradas nuevas. Si se establece en un valor menor que cero, el numero de entradas del historial no esta limitado. De forma predeterminada, el numero de entradas del historial se establece en el valor de la variable de shell HISTSIZE. Si se intenta establecer tamano del historial en un valor no numerico, el numero maximo de entradas del historial se establecera en 500. horizontal-scroll-mode (Off) When set to On, makes readline use a single line for display, scrolling the input horizontally on a single screen line when it becomes longer than the screen width rather than wrapping to a new line. This setting is automatically enabled for terminals of height 1. input-meta (Off) Si se pone a On, readline habilitara la entrada de 8 bits (esto es, no pondra a cero el octavo bit de los caracteres que lea), sin importar lo que la terminal diga que admite. El nombre meta-flag es un sinonimo para esta variable. Por defecto, su valor es off aunque readline lo pondra a On si la localizacion contiene caracteres de 8 bits. Esta variable depende de LC_TYPE pudiendo variar segun la localizacion empleada. isearch-terminators ("C-[C-J") La cadena de caracteres que debe finalizar una busqueda incremental sin ejecutar posteriormente el caracter como una orden. Si a esta variable no se le ha dado un valor, los caracteres ESC e C-J finalizaran una busqueda incremental. keymap (emacs) Establece el mapa de teclado actual para readline. El conjunto de nombres de mapas de teclado validos es emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-command, y vi-insert. vi es equivalente a vi-command; emacs es equivalente a emacs-standard. El valor predeterminado es emacs; el valor de editing-mode tambien afecta al mapa de teclado predeterminado. keyseq-timeout (500) Specifies the duration readline will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer key sequence). If no input is received within the timeout, readline will use the shorter but complete key sequence. The value is specified in milliseconds, so a value of 1000 means that readline will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, readline will wait until another key is pressed to decide which key sequence to complete. mark-directories (On) Si se pone a On, los nombres de directorios completados tendran una barra inclinada anadida al final. mark-modified-lines (Off) Si se pone a On, las lineas de historia que hayan sido modificadas se muestran con un asterisco precediendolas (*). mark-symlinked-directories (Off) If set to On, completed names which are symbolic links to directories have a slash appended (subject to the value of mark-directories). match-hidden-files (On) This variable, when set to On, causes readline to match files whose names begin with a `.' (hidden files) when performing filename completion. If set to Off, the leading `.' must be supplied by the user in the filename to be completed. menu-complete-display-prefix (Off) If set to On, menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through the list. output-meta (Off) If set to On, readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. The default is Off, but readline will set it to On if the locale contains eight-bit characters. This variable is dependent on the LC_CTYPE locale category, and may change if the locale is changed. page-completions (On) Si esta a On, readline emplea un paginador interno, similar a more, para mostrar en la pantalla todas las posibilidades autocompletado al mismo tiempo. print-completions-horizontally (Off) Si se pone a On, readline mostrara terminaciones con concordancias clasificadas horizontalmente en orden alfabetico, en vez de verticalmente. revert-all-at-newline (Off) If set to On, readline will undo all changes to history lines before returning when accept-line is executed. By default, history lines may be modified and retain individual undo lists across calls to readline. show-all-if-ambiguous (Off) Esto altera el comportamiento predeterminado de las funciones de terminacion. Si se pone a On, las palabras que tienen mas de una posible terminacion hacen que las concordancias se muestren inmediatamente en vez de tocarse el pito de la terminal. show-all-if-unmodified (Off) This alters the default behavior of the completion functions in a fashion similar to show-all-if-ambiguous. If set to On, words which have more than one possible completion without any possible partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell. show-mode-in-prompt (Off) If set to On, add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. The mode strings are user-settable (e.g., emacs-mode-string). skip-completed-text (Off) If set to On, this alters the default completion behavior when inserting a single match into the line. It's only active when performing completion in the middle of a word. If enabled, readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. vi-cmd-mode-string ((orden)) If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the \1 and \2 escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. vi-ins-mode-string ((ins)) If the show-mode-in-prompt variable is enabled, this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. Use the \1 and \2 escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. visible-stats (Off) Si se pone a On, se anade un caracter que represente un tipo de fichero segun lo que devuelve stat(2) cuando se listan las terminaciones posibles. Construcciones Condicionales de Readline Readline implementa una facilidad similar en espiritu a las caracteristicas de compilacion condicional del preprocesador de C que permite que las definiciones de teclas y variables se realicen en funcion de pruebas o condiciones. Hay cuatro directivas del analizador que se usan. $if The $if construct allows bindings to be made based on the editing mode, the terminal being used, or the application using readline. The text of the test, after any comparison operator, extends to the end of the line; unless otherwise noted, no characters are required to isolate it. mode La forma mode= de la directiva $if se usa para ver si readline esta en modo emacs o vi. Esto se puede emplear en conjuncion con la orden set keymap, por ejemplo, para poner el teclado en los mapas emacs-standard y emacs-ctlx solo si readline esta iniciando en modo emacs. term La forma term= puede emplearse para incluir definiciones de teclas especificas de una terminal determinada, quizas para enlazar las secuencias de teclas generadas por las teclas de funcion de la terminal. La palabra en la parte derecha del = se prueba contra el nombre completo de la terminal y contra la porcion del nombre de la terminal antes del primer -. Esto permite que sun concuerde con sun y con sun-cmd, por ejemplo. version The version test may be used to perform comparisons against specific readline versions. The version expands to the current readline version. The set of comparison operators includes =, (and ==), !=, <=, >=, <, and >. The version number supplied on the right side of the operator consists of a major version number, an optional decimal point, and an optional minor version (e.g., 7.1). If the minor version is omitted, it is assumed to be 0. The operator may be separated from the string version and from the version number argument by whitespace. application La construccion application se emplea para incluir definiciones especificas de la aplicacion. Cada programa que usa la biblioteca readline define el nombre de la aplicacion, y en un archivo de inicio se puede comprobar si existe un valor en particular. Esto se podria emplear para enlazar secuencias de teclas a funciones utiles para un programa especifico. Por ejemplo, la orden siguiente anade una secuencia de teclas que entrecomilla la palabra en curso o la anterior en bash: $if Bash # Entrecomilla la palabra actual o previa "\C-xq": "\eb\"\ef\"" $endif variable The variable construct provides simple equality tests for readline variables and values. The permitted comparison operators are =, ==, and !=. The variable name must be separated from the comparison operator by whitespace; the operator may be separated from the value on the right hand side by whitespace. Both string and boolean variables may be tested. Boolean variables must be tested against the values on and off. $endif Esta orden, como se ha visto en el ejemplo precedente, termina una orden $if. $else Las ordenes en esta rama de la directiva $if se ejecutan si la comprobacion falla. $include Esta directiva toma como argumento un solo nombre de fichero y lee ordenes y definiciones de ese fichero. Por ejemplo, la siguiente directiva leeria de /etc/inputrc: $include /etc/inputrc Busquedas Readline proporciona ordenes para buscar a traves del historial de ordenes (vea HISTORIAL mas adelante) lineas que contengan una cadena especificada. Hay dos modos de busqueda: incremental y no incremental. La busqueda incremental comienza antes de que el usuario haya acabado de teclear la cadena a buscar. Tan pronto como se teclea cada caracter de la cadena de busqueda, readline muestra la siguiente entrada de la historia que concuerde con la cadena que se este tecleando hasta este punto. Una busqueda incremental requiere solamente tantos caracteres como se necesiten para encontrar la entrada deseada en el historial. Los caracteres contenidos en la variable isearch-terminators se emplean para terminar una busqueda incremental. Control-G terminara una busqueda incremental reataurando la linea original. Una vez que la busqueda termine, la linea del historial que contenga la cadena de busqueda pasa a ser la linea actual. To find other matching entries in the history list, type Control-S or Control-R as appropriate. This will search backward or forward in the history for the next entry matching the search string typed so far. Any other key sequence bound to a readline command will terminate the search and execute that command. For instance, a newline will terminate the search and accept the line, thereby executing the command from the history list. Readline remembers the last incremental search string. If two Control-Rs are typed without any intervening characters defining a new search string, any remembered search string is used. Las busquedas no incrementales leen la cadena de busqueda entera antes de empezar a buscar en las lineas de la lista de historia. La cadena de busqueda puede ser tecleada por el usuario o ser parte de los contenidos de la linea en curso. Nombres de Ordenes de Readline Lo siguiente es una lista de los nombres de las ordenes y las secuencias de teclas predeterminadas a las que estan asociadas. Los nombres de ordenes sin una secuencia de tecla acompanante pertenecen a ordenes que no estan asociadas a ninguna secuencia de teclas de forma predeterminada. En las siguientes descripciones, punto se refiere a la posicion actual del cursor y marca se refiere a una posicion guardada mediante la orden set-mark. El texto en dicho punto y la marca es lo que se conoce como region. Ordenes para el Movimiento beginning-of-line (C-a) Mover al principio de la linea en curso. end-of-line (C-e) Mover al final de la linea. forward-char (C-f) Mover un caracter hacia adelante. backward-char (C-b) Mover un caracter hacia atras. forward-word (M-f) Mover adelante hasta el final de la siguiente palabra. Las palabras se componen de caracteres alfanumericos (letras y digitos). backward-word (M-b) Mover atras hasta el principio de esta palabra o la anterior. Las palabras se componen de caracteres alfanumericos (letras y digitos). shell-forward-word Mover adelante hasta el final de la siguiente palabra. Las palabras estan delmitadas por metacaracteres de la shell no entrecomillados. shell-backward-word Mover atras hasta el principio de esta palabra o la anterior. Las palabras se delimitan por metacaracteres de la shell no entrecomillados. previous-screen-line Attempt to move point to the same physical screen column on the previous physical screen line. This will not have the desired effect if the current readline line does not take up more than one physical line or if point is not greater than the length of the prompt plus the screen width. next-screen-line Attempt to move point to the same physical screen column on the next physical screen line. This will not have the desired effect if the current readline line does not take up more than one physical line or if the length of the current readline line is not greater than the length of the prompt plus the screen width. clear-display (M-C-l) Clear the screen and, if possible, the terminal's scrollback buffer, then redraw the current line, leaving the current line at the top of the screen. clear-screen (C-l) Despejar la pantalla y volver a crear la linea actual dejandola en la parte superior de la pantalla. Si se proporciona un argumento, refresca la linea actual sin despejar la pantalla. redraw-current-line Refrescar la linea en curso. Ordenes para Manipular el Historial accept-line (Nueva-linea, Intro) Aceptar la linea sin importar donde este el cursor. Si esta linea no esta vacia, anadirla al historial de acuerdo con el estado de la variable HISTCONTROL. Si la linea es una de las de la historia, modificada, entonces restaurar el historial a su estado original. previous-history (C-p) Obtener la orden anterior del historial, moviendose hacia atras en la misma. next-history (C-n) Obtener la orden siguiente del historial, moviendose hacia delante en el mismo. beginning-of-history (M-<) Mover a la primera linea del historial. end-of-history (M->) Mover al final de la historia de entrada; esto es, la linea que esta siendo introducida en la actualidad. operate-and-get-next (C-o) Aceptar la linea en curso para la ejecucion y obtener la linea siguiente relativa a la actual desde el historial, para la edicion. Si se anade un argumento numerico define la linea del historial a emplear en lugar de usar al actual. fetch-history Con un argumento numerico, toma dicha entrada del historico y la copia en la linea actual. Si no se da ningun argumento, se desplaza a la primera entrada del mismo. reverse-search-history (C-r) Buscar hacia atras empezando en la linea en curso y moviendose `arriba' a traves del historial si es necesario. Esta busqueda es incremental. forward-search-history (C-s) Buscar hacia adelante empezando en la linea en curso y moviendose `abajo' a traves del historial si es necesario. Esta busqueda es incremental. non-incremental-reverse-search-history (M-p) Buscar hacia atras a traves del historial empezando en la linea en curso empleando una busqueda no incremental de una cadena suministrada por el usuario. non-incremental-forward-search-history (M-n) Buscar hacia delante a traves del historial empezando en la linea en curso empleando una busqueda no incremental de una cadena suministrada por el usuario. history-search-forward Buscar hacia adelante a traves del historial una cadena de caracteres entre el comienzo de la linea en curso y el punto. Esta busqueda no es incremental. history-search-backward Buscar hacia atras a traves del historial una cadena de caracteres entre el comienzo de la linea en curso y el punto. Esta busqueda no es incremental. history-substring-search-backward Buscar hacia atras a traves del historial una cadena de caracteres entre el comienzo de la linea en curso y el punto. Esta busqueda no es incremental. history-substring-search-forward Buscar hacia delante a traves del historial una cadena de caracteres entre el comienzo de la linea en curso y el punto. Esta busqueda no es incremental. yank-nth-arg (M-C-y) Insertar el primer argumento de la orden anterior (normalmente la segunda palabra de la linea anterior) en el punto. Con un argumento n, insertar la n-sima palabra de la orden anterior (las palabras en la orden anterior empiezan con la palabra 0). Un argumento negativo inserta la n-sima palabra desde el final de la orden anterior.Una vez que se computa el argumento n, se extraera como si se definiese esta exapnsion del historial: "!n" yank-last-arg (M-., M-_) Inserta el ultimo argumento de la orden anterior (la ultima palabra de la anterior entrada del historial). Con un argumento numerico, se comporta de igual modo a yank-nth-arg. Invocando varias veces yank-last-arg, se desplazara hacia atras en el historial insertando la ultima palabra (o aquella definida en el argumento de la primera invocacion) de cada linea por la que se desplace. Cualquier aargumento numerico que se proporcione en las sucesivas invocaciones determina la direccion de desplazamiento en el historial. Un argumento negativo cambiara dicha direccion hacia delante o hacia atras. Las utilidades de expansion del historial se usan para extraer la ultima palabra como si se especificase "!$". shell-expand-line (M-C-e) Expandir la linea como hace la shell. Esto realiza la expansion de alias y de historia asi como todas las expansiones de palabra de la shell. Consulte EXPANSION DEL HISTORIAL mas adelante para una descripcion de la expansion de historia. history-expand-line (M-^) Realizar la expansion de historia en la linea en curso. Vea EXPANSION DEL HISTORIAL mas adelante para una descripcion de la expansion de historia. magic-space Efectuar la expansion de historia en la linea en curso e insertar un espacio. Vea EXPANSION DEL HISTORIAL mas adelante para una descripcion de la expansion de historia. alias-expand-line Realizar la expansion de alias en la linea en curso. Vea ALIAS arriba para una descripcion de la expansion de alias. history-and-alias-expand-line Realizar la expansion de historia y alias en la linea en curso. insert-last-argument (M-., M-_) Un sinonimo para yank-last-arg. edit-and-execute-command (C-x C-e) Invoca un editor en la linea de ordenes actual ejecutandose el resultado como ordenes de la shell. bash intenta invocas $VISUAL, $EDITOR y emacs en ese orden. Ordenes para Cambiar el Texto end-of-file (generalmente C-d) El caracter que determina el fin-de-archivo se define por ejemplo mediante ``stty''. Si se lee el caracter cuando no hay ninguno en la linea y el punto esta al principio de la linea, Readline lo interpreta como el fin de la entrada y devuelve EOF. delete-char (C-d) Eliminar el caracter en el punto. Si esta funcion esta asociada con el mismo caracter que que tenga el tty para EOF, como suele serlo C-d, vea anteriormente los efectos. backward-delete-char (Borrar) Borrar el caracter tras el cursor. Cuando se da un argumento numerico, guardar el texto borrado en el anillo de corte. forward-backward-delete-char Borrar el caracter bajo el cursor, salvo que el cursor este al final de la linea, en cuyo caso se borrara el caracter que este detras. quoted-insert (C-q, C-v) Anadir el siguiente caracter tecleado a la linea tal cual. Asi es como se pueden insertar caracteres como C-q, por ejemplo. tab-insert (C-v TAB) Insertar un caracter de tabulacion. self-insert (a, b, A, 1, !, ...) Insertar el caracter tecleado. transpose-chars (C-t) Arrastrar el caracter antes del punto hacia adelante sobre el caracter en el punto. El punto se mueve adelante tambien. Si el punto esta al final de la linea, entonces transpone los dos caracteres antes del punto. Los argumentos negativos no tienen efecto. transpose-words (M-t) Arrastrar la palabra antes del punto hacia adelante sobre el caracter en el punto. El punto se mueve adelante tambien. Si el punto esta al final de la linea, se transponen los dos ultimas palabras de dicha linea. upcase-word (M-u) Poner en mayusculas la palabra en curso (o la siguiente). Con un argumento negativo, pone la anterior, pero no mueve el punto. downcase-word (M-l) Poner en minusculas la palabra en curso (o la siguiente). Con un argumento negativo, pone la anterior, pero no mueve el punto. capitalize-word (M-c) Poner en mayuscula la inicial de la palabra en curso (o la siguiente). Con un argumento negativo, pone la anterior, pero no mueve el punto. overwrite-mode Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only emacs mode; vi mode does overwrite differently. Each call to readline() starts in insert mode. In overwrite mode, characters bound to self-insert replace the text at point rather than pushing the text to the right. Characters bound to backward-delete-char replace the character before point with a space. By default, this command is unbound. Cortar y Pegar kill-line (C-k) Cortar el texto desde la posicion actual del cursor hasta el final de la linea. backward-kill-line (C-x Borrar) Cortar hacia atras hasta el principio de la linea. unix-line-discard (C-u) Cortar hacia atras desde el punto hasta el principio de la linea. El texto cortado se guarda en el anillo de corte. kill-whole-line Cortar todos los caracteres de la linea en curso, sin importar donde este el punto. kill-word (M-d) Cortar desde el punto hasta el final de la palabra en curso, o si entre palabras, hasta el final de la siguiente. Los extremos de las palabras son los mismos que los empleados por forward-word. backward-kill-word (M-supr) Cortar la palabra tras el punto. Los extremos de las palabras son los mismos que los empleados por backward-word. shell-kill-word Cortar desde el punto hasta el final de la palabra en curso, o si entre palabras, hasta el final de la siguiente. Los extremos de las palabras son los mismos que los empleados por shell-forward-word. shell-backward-kill-word Cortar la palabra tras el punto. Los extremos de las palabras son los mismos que los empleados por shell-backward-word. unix-word-rubout (C-w) Cortar la palabra tras el punto, empleando el espacio en blanco como un limite de palabra. El texto cortado se guarda en el anillo de corte. unix-filename-rubout Cortar la palabra detras del punto empleando el espacio en blanco y la barra como limites de la palabra. El texto cortado se guarda en el anillo de corte. delete-horizontal-space (M-\) Borrar todos los espacios y tabuladores alrededor del punto. kill-region Cortar el texto en la region actual. copy-region-as-kill Copiar el texto de la region al anillo de corte. copy-backward-word Copiar la palabra antes del punto al bufer de corte. Los extremos de palabras son los mismos que con backward-word. copy-forward-word Copiar la palabra que sigue al punto al bufer de corte. Los extremos de palabra son los mismos que con forward-word. yank (C-y) Pegar la cima del anillo de corte en el bufer en el punto. yank-pop (M-y) Rotar en el anillo de corte, y pegar la nueva cima. Solo funciona tras un yank o yank-pop. Argumentos Numericos digit-argument (M-0, M-1, ..., M--) Anadir este digito al argumento, acumulandolo, o comenzar con un nuevo argumento. M-- empieza un argumento negativo. universal-argument Esta es otra forma de especificar un argumento. Si esta orden se hace seguir de uno o mas digitos, opcionalmente con un signo menos inicial, estos digitos definen el argumento. Si a la orden siguen digitos, ejecutar de nuevo universal-argument finaliza el argumento numerico, pero si no, no se tiene en cuenta. Como un caso especial, si a esta orden sigue inmediatamente un caracter que no es ni un digito ni un signo menos, el numero del argumento para la siguiente orden se multiplica por cuatro. El numero del argumento es inicialmente uno, asi que ejecutar esta funcion por primera vez hace que el numero del argumento sea cuatro, una segunda vez lo hace dieciseis, y asi sucesivamente. Terminacion complete (TAB) Intentar realizar una terminacion del texto antes del punto. Bash intenta la terminacion tratando al texto como una variable (si el texto comienza con $), como un nombre de usuario (si el texto empieza con ~), como un nombre de equipo anfitrion (si el texto comienza con @), o como una orden (incluyendo alias y funciones), por este orden. Si nada de esto concuerda, se intenta la terminacion de un nombre de fichero. possible-completions (M-?) Listar las terminaciones posibles del texto antes del punto. insert-completions (M-*) Insertar todas las terminaciones del texto antes del punto que habrian sido generadas por possible-completions. menu-complete Similar to complete, but replaces the word to be completed with a single match from the list of possible completions. Repeated execution of menu-complete steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of bell-style) and the original text is restored. An argument of n moves n positions forward in the list of matches; a negative argument may be used to move backward through the list. This command is intended to be bound to TAB, but is unbound by default. menu-complete-backward Identical to menu-complete, but moves backward through the list of possible completions, as if menu-complete had been given a negative argument. This command is unbound by default. delete-char-or-list Deletes the character under the cursor if not at the beginning or end of the line (like delete-char). If at the end of the line, behaves identically to possible-completions. This command is unbound by default. complete-filename (M-/) Intentar la terminacion de un nombre de fichero en el texto antes del punto. possible-filename-completions (C-x /) Listar las posibles terminaciones del texto antes del punto, tratandolo como un nombre de fichero. complete-username (M-~) Intentar la terminacion del texto antes del punto, tratandolo como un nombre de usuario. possible-username-completions (C-x ~) Listar las posibles terminaciones del texto antes del punto, tratandolo como un nombre de usuario. complete-variable (M-$) Intentar la terminacion del texto antes del punto, tratandolo como una variable de la shell. possible-variable-completions (C-x $) Listar las posibles terminaciones del texto antes del punto, tratandolo como una variable de la shell. complete-hostname (M-@) Intentar la terminacion del texto antes del punto, tratandolo como un nombre de equipo anfitrion. possible-hostname-completions (C-x @) Listar las posibles terminaciones del texto antes del punto, tratandolo como un nombre de equipo anfitrion. complete-command (M-!) Intentar la terminacion del texto antes del punto, tratandolo como un nombre de orden. La terminacion de orden intenta hacer concordar el texto con alias, palabras reservadas, funciones de la shell, ordenes internas de la shell, y finalmente nombres de ficheros ejecutables, en ese orden. possible-command-completions (C-x !) Listar las posibles terminaciones del texto antes del punto, tratandolo como un nombre de orden. dynamic-complete-history (M-TAB) Intentar la terminacion del texto antes del punto, comparando el texto con lineas del historial buscando concordancias para la terminacion. dabbrev-expand Intentar completar el menu en el texto antes del punto, comparando el texto con lineas del historial buscando concordancias para la terminacion. complete-into-braces (M-{) Efectuar la terminacion de nombres de archivos e insertar la lista de terminaciones posibles encerrada entre llaves de forma que la lista este disponible para la shell (vea Expansion de llaves arriba). Macros de Teclado start-kbd-macro (C-x () Empezar a grabar los caracteres tecleados, en la macro de teclado en curso. end-kbd-macro (C-x )) Parar de grabar los caracteres tecleados en la macro de teclado en curso, y almacenar la definicion. call-last-kbd-macro (C-x e) Reejecutar la ultima macro de teclado definida, haciendo que los caracteres en la macro aparezcan como si se hubieran pulsado en el teclado. print-last-kbd-macro () Muestra la ultima macro de teclado definida en un formato adecuado para su uso en el archivo inputrc. Varios re-read-init-file (C-x C-r) Leer los contenidos del archivo inputrc, e incorporar cualquier definicion de teclas o asignaciones de variables que se hubieran encontrado en el. abort (C-g) Terminar abruptamente la orden de edicion en curso y tocar el pito de la terminal (segun el establecimiento de bell-style). do-lowercase-version (M-A, M-B, M-x, ...) If the metafied character x is uppercase, run the command that is bound to the corresponding metafied lowercase character. The behavior is undefined if x is already lowercase. prefix-meta (ESC) Convertir en meta el siguiente caracter tecleado. ESC f es equivalente a Meta-f. undo (C-_, C-x C-u) Deshacer de forma incremental, recordado separadamente para cada linea. revert-line (M-r) Deshacer todos los cambios hechos a esta linea. Esto es como ejecutar la orden undo las veces suficientes como para devolver la linea a su estado inicial. tilde-expand (M-&) Efectuar la expansion de tilde en la palabra en curso. set-mark (C-@, M-) Establecer la marca en el punto. Si se da un argumento numerico, la marca se establece en esa posicion. exchange-point-and-mark (C-x C-x) Cambia el punto con la marca. La posicion actual del cursor se pone en la posicion guardada, y la vieja posicion del cursor se guarda como la marca. character-search (C-]) Se lee un caracter y el punto se mueve a la siguiente ocurrencia de ese caracter. Un argumento numerico negativo hace que la busqueda sea de las ocurrencias anteriores. character-search-backward (M-C-]) Se lee un caracter y el punto se mueve a la anterior ocurrencia de ese caracter. Un numerico negativo hace que la busqueda sea de las ocurrencias siguientes. skip-csi-sequence Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is bound to "\[", keys producing such sequences will have no effect unless explicitly bound to a readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. insert-comment (M-#) Without a numeric argument, the value of the readline comment-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value of comment-begin, the value is inserted, otherwise the characters in comment-begin are deleted from the beginning of the line. In either case, the line is accepted as if a newline had been typed. The default value of comment-begin causes this command to make the current line a shell comment. If a numeric argument causes the comment character to be removed, the line will be executed by the shell. spell-correct-word (C-x s) Ejecuta una correccion ortografica sobre la palabra actual, considerandola un nombre de directorio o de archivo, igual que mediante la opcion cdspell.Los extremos de las palabras son los mismos que los empleados por shell-forward-word. glob-complete-word (M-g) La palabra antes del punto se trata como un patron para la expansion de nombres de ruta con un asterisco implicitamente anadido. Este patron se emplea para generar una lista de posibles nombres de archivo para autocompletar. glob-expand-word (C-x *) La palabra antes del punto se trata como un patron para la expansion de nombres de rutas y la lista de nombres de archivo concordantes se inserta, reemplazando a la palabra. Si se proporciona un argumento numerico, se anade un asterisco antes de la expansion del nombre de ruta. glob-list-expansions (C-x g) Mostrar la lista de expansiones que habrian sido generadas por glob-expand-word y redibujar la linea. Si se aporta un argumento numerico, se anade un asterisco antes de la expansion del nombre de ruta dump-functions Mostrar todas las funciones y sus asociaciones de teclas en el flujo de salida de readline. Si se da un argumento numerico, la salida se formatea de tal modo que pueda formar parte de un fichero inputrc. dump-variables Mostrar todas las variables de readline a las que se puedan asignar valores, y estos, en el flujo de salida de readline. Si se da un argumento numerico, la salida se formatea de tal manera que pueda formar parte de un fichero inputrc. dump-macros Mostrar todas las secuencias de teclas de readline asociadas a macros y las cadenas de caracteres asociadas correspondientes. Si se da un argumento numerico, la salida se formatea de tal manera que pueda formar parte de un fichero inputrc. display-shell-version (C-x C-v) Mostrar informacion de version acerca de la instancia actual de bash. Autocompletado Programable When word completion is attempted for an argument to a command for which a completion specification (a compspec) has been defined using the complete builtin (see SHELL BUILTIN COMMANDS below), the programmable completion facilities are invoked. First, the command name is identified. If the command word is the empty string (completion attempted at the beginning of an empty line), any compspec defined with the -E option to complete is used. If a compspec has been defined for that command, the compspec is used to generate the list of possible completions for the word. If the command word is a full pathname, a compspec for the full pathname is searched for first. If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. If those searches do not result in a compspec, any compspec defined with the -D option to complete is used as the default. If there is no default compspec, bash attempts alias expansion on the command word as a final resort, and attempts to find a compspec for the command word from any successful expansion. Once a compspec has been found, it is used to generate the list of matching words. If a compspec is not found, the default bash completion as described above under Completing is performed. First, the actions specified by the compspec are used. Only matches which are prefixed by the word being completed are returned. When the -f or -d option is used for filename or directory name completion, the shell variable FIGNORE is used to filter the matches. Any completions specified by a pathname expansion pattern to the -G option are generated next. The words generated by the pattern need not match the word being completed. The GLOBIGNORE shell variable is not used to filter the matches, but the FIGNORE variable is used. Next, the string specified as the argument to the -W option is considered. The string is first split using the characters in the IFS special variable as delimiters. Shell quoting is honored. Each word is then expanded using brace expansion, tilde expansion, parameter and variable expansion, command substitution, and arithmetic expansion, as described above under EXPANSION. The results are split using the rules described above under Word Splitting. The results of the expansion are prefix-matched against the word being completed, and the matching words become the possible completions. After these matches have been generated, any shell function or command specified with the -F and -C options is invoked. When the command or function is invoked, the COMP_LINE, COMP_POINT, COMP_KEY, and COMP_TYPE variables are assigned values as described above under Shell Variables. If a shell function is being invoked, the COMP_WORDS and COMP_CWORD variables are also set. When the function or command is invoked, the first argument ($1) is the name of the command whose arguments are being completed, the second argument ($2) is the word being completed, and the third argument ($3) is the word preceding the word being completed on the current command line. No filtering of the generated completions against the word being completed is performed; the function or command has complete freedom in generating the matches. Any function specified with -F is invoked first. The function may use any of the shell facilities, including the compgen builtin described below, to generate the matches. It must put the possible completions in the COMPREPLY array variable, one per array element. Next, any command specified with the -C option is invoked in an environment equivalent to command substitution. It should print a list of completions, one per line, to the standard output. Backslash may be used to escape a newline, if necessary. After all of the possible completions are generated, any filter specified with the -X option is applied to the list. The filter is a pattern as used for pathname expansion; a & in the pattern is replaced with the text of the word being completed. A literal & may be escaped with a backslash; the backslash is removed before attempting a match. Any completion that matches the pattern will be removed from the list. A leading ! negates the pattern; in this case any completion not matching the pattern will be removed. If the nocasematch shell option is enabled, the match is performed without regard to the case of alphabetic characters. Finally, any prefix and suffix specified with the -P and -S options are added to each member of the completion list, and the result is returned to the readline completion code as the list of possible completions. If the previously-applied actions do not generate any matches, and the -o dirnames option was supplied to complete when the compspec was defined, directory name completion is attempted. If the -o plusdirs option was supplied to complete when the compspec was defined, directory name completion is attempted and any matches are added to the results of the other actions. By default, if a compspec is found, whatever it generates is returned to the completion code as the full set of possible completions. The default bash completions are not attempted, and the readline default of filename completion is disabled. If the -o bashdefault option was supplied to complete when the compspec was defined, the bash default completions are attempted if the compspec generates no matches. If the -o default option was supplied to complete when the compspec was defined, readline's default completion will be performed if the compspec (and, if attempted, the default bash completions) generate no matches. When a compspec indicates that directory name completion is desired, the programmable completion functions force readline to append a slash to completed names which are symbolic links to directories, subject to the value of the mark-directories readline variable, regardless of the setting of the mark-symlinked-directories readline variable. There is some support for dynamically modifying completions. This is most useful when used in combination with a default completion specified with complete -D. It's possible for shell functions executed as completion handlers to indicate that completion should be retried by returning an exit status of 124. If a shell function returns 124, and changes the compspec associated with the command on which completion is being attempted (supplied as the first argument when the function is executed), programmable completion restarts from the beginning, with an attempt to find a new compspec for that command. This allows a set of completions to be built dynamically as completion is attempted, rather than being loaded all at once. For instance, assuming that there is a library of compspecs, each kept in a file corresponding to the name of the command, the following default completion function would load completions dynamically: _completion_loader() { . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 } complete -D -F _completion_loader -o bashdefault -o default HISTORIAL When the -o history option to the set builtin is enabled, the shell provides access to the command history, the list of commands previously typed. The value of the HISTSIZE variable is used as the number of commands to save in a history list. The text of the last HISTSIZE commands (default 500) is saved. The shell stores each command in the history list prior to parameter and variable expansion (see EXPANSION above) but after history expansion is performed, subject to the values of the shell variables HISTIGNORE and HISTCONTROL. On startup, the history is initialized from the file named by the variable HISTFILE (default ~/.bash_history). The file named by the value of HISTFILE is truncated, if necessary, to contain no more than the number of lines specified by the value of HISTFILESIZE. If HISTFILESIZE is unset, or set to null, a non-numeric value, or a numeric value less than zero, the history file is not truncated. When the history file is read, lines beginning with the history comment character followed immediately by a digit are interpreted as timestamps for the following history line. These timestamps are optionally displayed depending on the value of the HISTTIMEFORMAT variable. When a shell with history enabled exits, the last $HISTSIZE lines are copied from the history list to $HISTFILE. If the histappend shell option is enabled (see the description of shopt under SHELL BUILTIN COMMANDS below), the lines are appended to the history file, otherwise the history file is overwritten. If HISTFILE is unset, or if the history file is unwritable, the history is not saved. If the HISTTIMEFORMAT variable is set, time stamps are written to the history file, marked with the history comment character, so they may be preserved across shell sessions. This uses the history comment character to distinguish timestamps from other history lines. After saving the history, the history file is truncated to contain no more than HISTFILESIZE lines. If HISTFILESIZE is unset, or set to null, a non-numeric value, or a numeric value less than zero, the history file is not truncated. La orden interna fc (vea ORDENES NATIVAS DE LA SHELL mas adelante) puede emplearse para listar o editar y re-ejecutar una porcion de la lista de historia. La orden interna history se puede utilizar para mostrar o modificar o volver a ejecutar una parte del historial. Cuando se emplea la edicion de lineas de ordenes, estan disponibles las ordenes de busqueda en cada modo de edicion que proporcionan acceso al historial. la shell permite el control sobre que ordenes se guarden en el historial. Las variables HISTCONTROL y HISTIGNORE se pueden definir de forma que la shell guarde solamente un subconjunto de las ordenes introducidas. La opcion de la shell cmdhist, si esta habilitada, hace que la shell intente guardar cada linea de una orden multi-linea en la misma entrada de la historia, anadiendo punto y comas donde sea necesario para preservar la correccion sintactica. La opcion de la shell lithist hace que la shell guarde la orden con saltos de linea empotrados en vez de punto y comas. Vea la descripcion de la orden interna shopt mas adelante en ORDENES NATIVAS DE LA SHELL para informacion sobre como establecer y anular opciones de la shell. EXPANSION DEL HISTORIAL la shell admite una caracteristica de expansion de historia que es parecida a la expansion de historia en csh. Esta seccion describe que caracteristicas sintacticas estan disponibles. Esta caracteristica esta habilitada de forma predeterminada en shells interactivos, y puede ser desactivada mediante la opcion +H de la orden interna set (vea ORDENES NATIVAS DE LA SHELL mas adelante). Los shells no interactivos no realizan la expansion de la historia de forma predeterminada. Las expansiones del historial introducen palabras desde el historial en el flujo de entrada, facilitando asi la repeticion de ordenes, la insercion de argumentos de una orden anterior en la linea de entrada en curso, o la correccion rapida de errores en una orden anterior. La expansion del historial se realiza inmediatamente tras la lectura de una linea completa, antes de que la shell la divida en palabras. Tiene lugar en cada linea por separado sin considerar el entrecomillado de anteriores lineas. Tiene lugar en dos fases. En la primera se determina que linea del historial hay que emplear durante la sustitucion. En la segunda se seleccionan porciones de esa linea para su inclusion en la actual. La linea seleccionada desde el historial es el evento, y la porcion de esa linea sobre la que se actua son palabras. Se dispone de varios modificadores para manipular las palabras seleccionadas. La linea se divide en palabras de la misma manera que cuando se lee la entrada, de forma que ciertas palabras separadas por meta-caracteres rodeadas por comillas se consideran una sola palabra. Las expansiones del historial se introducen por la aparicion del caracter de expansion de historial, que es por omision !. Solo las barras inversas (\) y las comillas simples pueden proteger al caracter de expansion del historial, aunque dicho caracter se considera entrecomillado si esta justo antes de una comilla doble de cierre de una cadena entre ese tipo de comillas. Several characters inhibit history expansion if found immediately following the history expansion character, even if it is unquoted: space, tab, newline, carriage return, and =. If the extglob shell option is enabled, ( will also inhibit expansion. Se pueden emplear ciertas opciones que se ponen con la orden interna shopt para cambiar el comportamiento de la expansion de historia. Si la opcion de la shell histverify esta activa (vea la descripcion de la orden interna shopt), y se esta usando readline, las sustituciones de historia no se pasan inmediatamente al analizador de la shell. En vez de eso, la linea expandida se vuelve a cargar en el bufer de edicion de readline para una modificacion posterior. Si se esta usando readline y la opcion de la shell histreedit esta activada, una sustitucion de historia fallida se volvera a cargar en el bufer de edicion de readline para su correccion. La opcion -p de la orden interna history se puede emplear para ver que hara una expansion de historia antes de usarse. La opcion -s de la orden interna history se puede emplear para anadir ordenes al final del historial sin ejecutarlas realmente, de modo que esten disponibles para rellamadas posteriores. la shell permite el control de los diversos caracteres empleados por el mecanismo de expansion de historia (vea la descripcion de histchars arriba en Variables de la shell). La shell marcara como un comentario las marcas de tiempo durante el registro del historial. Designadores de Eventos Un designador de evento es una referencia a una entrada de linea de orden en el historial. Salvo que la referencia sea absoluta, la posicion de los eventos sera relativa a la posicion actual en el historial. ! Comenzar una sustitucion de historia, excepto cuando le siga un blanco, salto de linea, retorno de carro, = o (. (cuando la opcion extglob esta activada mediante shopt). !n Referirse a la linea de ordenes numero n. !-n Referirse a la orden en curso menos n. !! Referirse a la orden anterior. Esto es lo mismo que `!-1'. !cadena Referirse a la orden mas reciente del historial que precede a la actual y comienza con cadena. !?cadena[?] Referirse a la orden mas reciente del historial que precede a la actual y que contenga cadena. El ? del final puede omitirse si a cadena le sigue inmediatamente un salto de linea. Si no se indica ninguna string, se usara la cadena empleada en la ultima busqueda, emitiendo un mensaje de error si no hay ninguna cadena de busquedas anteriores. ^cadena1^cadena2^ Sustitucion rapida. Repetir la orden anterior, reemplazando cadena1 con cadena2. Equivale a "!!:s^cadena1^cadena2^" (vea Modificadores a continuacion). !# La linea de orden entera tecleada hasta ahora. Designadores de Palabras Los designadores de palabras se emplean para seleccionar las palabras que se deseen del evento. Un : separa la especificacion de evento del designador de palabra. Puede omitirse si el designador de palabra comienza con un ^, $, *, -, o %. Las palabras se numeran desde el principio de la linea, con la primera palabra denotada por 0 (cero). Las palabras se insertan en la linea en curso separadas por espacios simples. 0 (cero) La palabra numero 0. Para la shell, esta es la palabra de la orden. n La n-sima palabra. ^ El primer argumento. Esto es, la palabra numero 1. $ The last word. This is usually the last argument, but will expand to the zeroth word if there is only one word in the line. % La palabra que concuerda con la busqueda mas reciente de '?cadena?', si dicha cadena comienza con un caracter que forma parte de una palabra. x-y Un intervalo de palabras; `-y' abrevia `0-y'. * Todas las palabras menos la numero cero. Esto es un sinonimo de `1-$'. No es un error emplear * si solo hay una palabra en el evento; en este caso se devuelve la cadena vacia. x* Abreviatura de x-$. x- Abrevia x-$ como x*, pero omite la ultima palabra. Si no se indica x, se usara el valor 0 por defecto. Si se suministra un designador de palabra sin una especificacion de evento, se usa la orden anterior como el evento. Modificadores Tras el designador opcional de palabra, puede haber una secuencia de uno o mas de los siguientes modificadores, precedido cada uno por un ':'. Esto modifica o edita la/s palabra/s seleccionadas del evento del historial. h Quitar un componente final de nombre de fichero, dejando solo la parte izquierda. t Quitar todos los primeros componentes de un nombre de fichero, dejando la ultima parte. r Quitar un sufijo final de la forma .xxx, dejando el nombre base. e Quitar todo salvo el sufijo final. p Mostrar la nueva orden pero no ejecutarla. q Entrecomillar las palabras sustituidas, escapando de posteriores sustituciones. x Entrecomillar las palabras sustituidas como con q, pero separae entre palabras en los blancos y saltos de linea. Los modificadores q y x son mutuamente excluyentes, usandose el que aparezca de ultimo. s/viejo/nuevo/ Sustituir nuevo por la primera ocurrencia de viejo en la linea de evento. Se puede emplear cualquier delimitador en vez de /. El delimitador final es opcional si es el ultimo caracter de la linea de evento. El delimitador puede entrecomillarse en viejo y nuevo con una sola barra inclinada inversa. Si & aparece en nuevo, se reemplaza por viejo. Una sola barra inversa protegera el &. Si viejo esta vacio, se pone al ultimo viejo sustituido, o, si no tuvo lugar ninguna sustitucion de historia previa, a la ultima cadena en una busqueda del tipo !?cadena[?].. Si no se indica nuevo se borraran todas las ocurrencias de viejo. & Repetir la sustitucion anterior. g Hace que los cambios se apliquen sobre la linea entera de evento. Esto se emplea en conjuncion con `:s' (p.ej., `:gs/viejo/nuevo/') o `:&'. Si se usa con `:s', cualquier delimitador se puede utilizar en lugar de /, y el delimitador final es opcional si es el ultimo caracter de la linea de evento. Puede usarse a como sinonimo de g. G Aplica los modificadores 's' o '&' una vez a cada palabra en la correspondiente linea del evento. ORDENES NATIVAS DE LA SHELL Unless otherwise noted, each builtin command documented in this section as accepting options preceded by - accepts -- to signify the end of the options. The :, true, false, and test/[ builtins do not accept options and do not treat -- specially. The exit, logout, return, break, continue, let, and shift builtins accept and process arguments beginning with - without requiring --. Other builtins that accept arguments but are not specified as accepting options interpret arguments beginning with - as invalid options and require -- to prevent this interpretation. : [argumentos] Sin efecto; la orden no hace nada mas que expandir argumentos y realizar cualquier redireccion que se haya especificado. El estado de salida es 0. . nombre-archivo [argumentos] source nombre-archivo [argumentos] Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename. If filename does not contain a slash, filenames in PATH are used to find the directory containing filename, but filename does not need to be executable. The file searched for in PATH need not be executable. When bash is not in posix mode, it searches the current directory if no file is found in PATH. If the sourcepath option to the shopt builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the positional parameters when filename is executed. Otherwise the positional parameters are unchanged. If the -T option is enabled, . inherits any trap on DEBUG; if it is not, any DEBUG trap string is saved and restored around the call to ., and . unsets the DEBUG trap while it executes. If -T is not set, and the sourced file changes the DEBUG trap, the new value is retained when . completes. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if filename is not found or cannot be read. alias [-p] [nombre[=valor] ...] Alias sin argumentos o con la opcion -p muestra la lista de alias en la forma alias nombre=valor en la salida estandar. Cuando se dan argumentos, se define un alias para cada nombre cuyo valor se da. Un espacio extra tras valor hace que en la siguiente palabra se realice la sustitucion de alias cuando el alias se expande. Para cada nombre en la lista de argumentos para el que no se suministre un valor, se muestran el nombre y el valor del alias. Alias devuelve `verdad' a menos que se de un nombre para el que no se haya definido un alias. bg [espectrab ...] Reanuda la tarea suspendida espectrab en segundo plano, como si se hubiera iniciado con &. Si espectrab no esta presente, se emplea la nocion que tiene la shell de la tarea en curso. bg espectrab devuelve 0 a menos que se ejecute cuando el control de tareas este deshabilitado, o cuando se ejecute con el control de tareas habilitado si espectrab no se encontro, o cuando se inicio sin control de tareas. bind [-m mapatecl] [-lpsvPSVX] bind [-m mapatecl] [-q funcion] [-u funcion] [-r sectecl] bind [-m mapatecl] -f nombre-archivo bind [-m keymap] -x keyseq:orden-shell bind [-m mapatecl] sectecl:nombre-funcion bind [-m keymap] keyseq:orden-readline bind, readline-command-line Muestra las asociaciones actuales de teclas y funciones en readline, asocia una secuencia de teclas a una funcion o macro, o define una variable de readline. Todos los argumentos que no sean opciones son ordenes tal como figurarian en .inputrc, pero cada asociacion debe pasarse como un argumento separado; p.ej., '"\C-x\C-r": re-read-init-file'. Las opciones, si se dan, tienen los siguientes significados: -m mapatecl Use keymap as the keymap to be affected by the subsequent bindings. Acceptable keymap names are emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command, and vi-insert. vi is equivalent to vi-command (vi-move is also a synonym); emacs is equivalent to emacs-standard. -l Lista los nombres de todas las funciones de readline. -p Muestra los nombres de funciones de readline de tal forma que puedan volver a ser leidas. -P Lista los nombres de funciones de readline actuales y las asociaciones. -s Muestra las secuencias de teclas de readline asociadas a macros y las cadenas correspondientes de tal manera que puedan ser leidas de nuevo. -S Muestra las secuencias de teclas de readline asociadas a macros y las cadenas de caracteres correspondientes. -v Muestra los nombres de variables de readline y los valores de tal manera que puedan volver a ser leidas. -V Lista los nombres de variables de readline actuales y los valores. -f nombre-archivo Lee las asociaciones de teclas desde nombre-archivo. -q funcion Pregunta que teclas llaman a la funcion especificada. -u funcion Desenlaza todas las teclas asociadas a la funcion nombrada. -r sectecl Borra cualquier asociacion actual de sectecl. -x keyseq:orden-shell Cause shell-command to be executed whenever keyseq is entered. When shell-command is executed, the shell sets the READLINE_LINE variable to the contents of the readline line buffer and the READLINE_POINT and READLINE_MARK variables to the current location of the insertion point and the saved insertion point (the mark), respectively. The shell assigns any numeric argument the user supplied to the READLINE_ARGUMENT variable. If there was no argument, that variable is not set. If the executed command changes the value of any of READLINE_LINE, READLINE_POINT, or READLINE_MARK, those new values will be reflected in the editing state. -X List all key sequences bound to shell commands and the associated commands in a format that can be reused as input. El valor devuelto es 0 a menos que se de una opcion no reconocida o que ocurra un error. break [n] Exit from within a for, while, until, or select loop. If n is specified, break n levels. n must be >= 1. If n is greater than the number of enclosing loops, all enclosing loops are exited. The return value is 0 unless n is not greater than or equal to 1. builtin orden-interna [argumentos] Ejecuta la orden interna de la shell especificada, pasandole los argumentos, y devuelve su estado de salida. Esto es util cuando se define una funcion cuyo nombre es el mismo que una orden interna de la shell, reteniendo la funcionalidad de esa orden interna dentro de la funcion. Por ejemplo, la orden interna cd se puede redefinir normalmente de esta manera. El estado de salida es `falso' si orden-interna no es una orden incorporada de la shell. caller [expr] Returns the context of any active subroutine call (a shell function or a script executed with the . or source builtins). Without expr, caller displays the line number and source filename of the current subroutine call. If a non-negative integer is supplied as expr, caller displays the line number, subroutine name, and source file corresponding to that position in the current execution call stack. This extra information may be used, for example, to print a stack trace. The current frame is frame 0. The return value is 0 unless the shell is not executing a subroutine call or expr does not correspond to a valid position in the call stack. cd [-L|[-P [-e]] [-@]] [dir] Change the current directory to dir. if dir is not supplied, the value of the HOME shell variable is the default. The variable CDPATH defines the search path for the directory containing dir: each directory name in CDPATH is searched for dir. Alternative directory names in CDPATH are separated by a colon (:). A null directory name in CDPATH is the same as the current directory, i.e., ".". If dir begins with a slash (/), then CDPATH is not used. The -P option causes cd to use the physical directory structure by resolving symbolic links while traversing dir and before processing instances of .. in dir (see also the -P option to the set builtin command); the -L option forces symbolic links to be followed by resolving the link after processing instances of .. in dir. If .. appears in dir, it is processed by removing the immediately previous pathname component from dir, back to a slash or the beginning of dir. If the -e option is supplied with -P, and the current working directory cannot be successfully determined after a successful directory change, cd will return an unsuccessful status. On systems that support it, the -@ option presents the extended attributes associated with a file as a directory. An argument of - is converted to $OLDPWD before the directory change is attempted. If a non-empty directory name from CDPATH is used, or if - is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output. If the directory change is successful, cd sets the value of the PWD environment variable to the new directory name, and sets the OLDPWD environment variable to the value of the current working directory before the change. The return value is true if the directory was successfully changed; false otherwise. command [-pVv] orden [arg ...] Ejecuta orden con args suprimiendo la busqueda normal de funciones del shell. Solo se ejecutaran ordenes incorporadas en la shell o programas encontrados en la variable PATH. Si se da la opcion -p, se busca la orden empleandose un valor predeterminado para PATH que garantiza encontrar todas las utilidades estandar del sistema. Si se da la opcion -V o la -v, se muestra una descripcion de orden. La opcion -v muestra una sola palabra que indica la orden o nombre de archivo ejecutable empleado para la llamada a orden; la opcion -V produce una descripcion algo mas prolija. Si se dan las opciones -V o -v, el estado de salida es 0 si orden se encontro, y 1 si no. Si no se da ninguna de las dos opciones y ocurrio un error u orden no se encontro, el estado de salida es 127. Si no, el estado de salida de command es el estado de salida de orden. compgen [opcion] [palabra] Generate possible completion matches for word according to the options, which may be any option accepted by the complete builtin with the exception of -p and -r, and write the matches to the standard output. When using the -F or -C options, the various shell variables set by the programmable completion facilities, while available, will not have useful values. The matches will be generated in the same way as if the programmable completion code had generated them directly from a completion specification with the same flags. If word is specified, only those completions matching word will be displayed. El valor de retorno es veradero a menos que se de una opcion invalida o que no se creen concordancias. complete [-abcdefgjksuv] [-o comp-option] [-DEI] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] name [name ...] complete -pr [-DEI] [nombre ...] Specify how arguments to each name should be completed. If the -p option is supplied, or if no options are supplied, existing completion specifications are printed in a way that allows them to be reused as input. The -r option removes a completion specification for each name, or, if no names are supplied, all completion specifications. The -D option indicates that other supplied options and actions should apply to the "default" command completion; that is, completion attempted on a command for which no completion has previously been defined. The -E option indicates that other supplied options and actions should apply to "empty" command completion; that is, completion attempted on a blank line. The -I option indicates that other supplied options and actions should apply to completion on the initial non-assignment word on the line, or after a command delimiter such as ; or |, which is usually command name completion. If multiple options are supplied, the -D option takes precedence over -E, and both take precedence over -I. If any of -D, -E, or -I are supplied, any other name arguments are ignored; these completions only apply to the case specified by the option. El proceso para aplicar estas especificaciones de autocompletado sobre las palabras se describe en above under Programmable Completion. Other options, if specified, have the following meanings. The arguments to the -G, -W, and -X options (and, if necessary, the -P and -S options) should be quoted to protect them from expansion before the complete builtin is invoked. -o comp-opction The comp-option controls several aspects of the compspec's behavior beyond the simple generation of completions. comp-option may be one of: bashdefault Perform the rest of the default bash completions if the compspec generates no matches. default Use readline's default filename completion if the compspec generates no matches. dirnames Perform directory name completion if the compspec generates no matches. filenames Tell readline that the compspec generates filenames, so it can perform any filename-specific processing (like adding a slash to directory names, quoting special characters, or suppressing trailing spaces). Intended to be used with shell functions. noquote Tell readline not to quote the completed words if they are filenames (quoting filenames is the default). nosort Indica a readline que no ordene alfabeticamente la lista de autocompletado. nospace Indica a readline que no se anada un espacio al final de la linea (por defecto se hace) a las palabras completadas. plusdirs After any matches defined by the compspec are generated, directory name completion is attempted and any matches are added to the results of the other actions. -A accion La accion para crear una lista de autocompletados podra ser una de las siguientes: alias Nombres de alias. Tambien puede definirse como -a. arrayvar Nombres de variables vectoriales. binding Definiciones de teclas de Readline. builtin Nombres de ordenes nativas de la shell. Tambien se puede especificar mediante -b. command Nombres de ordenes. Tambien se puede definir con -c. directory Nombres de directorios. Tambien se puede definir mediante -d. disabled Nombres de ordenes nativas de la shell deshabilitadas. enabled Nombres de ordenes nativas de la shell habilitadas. export Nombres de variables de la shell exportadas. Tambien se puede definir mediante -e. file File names. May also be specified as -f. function Nombres de las funciones de la shell group Group names. May also be specified as -g. helptopic Help topics as accepted by the help builtin. hostname Hostnames, as taken from the file specified by the HOSTFILE shell variable. job Job names, if job control is active. May also be specified as -j. keyword Shell reserved words. May also be specified as -k. running Names of running jobs, if job control is active. service Service names. May also be specified as -s. setopt Valid arguments for the -o option to the set builtin. shopt Shell option names as accepted by the shopt builtin. signal Nombres de las senales. stopped Nombre de las tareas detenidas, siempre que este activo el control de tareas. user Nombres de usuario. Tambien se puede utilizar -u variable Nombre de las variables de la shell. Tambien se puede utilizar -v. -C orden orden se ejecuta en una subshell, empleandose su salida como posibilidades de atuocompletado. Se pasan los argumentos del mismo modo que con la opcion -F. -F funcion The shell function function is executed in the current shell environment. When the function is executed, the first argument ($1) is the name of the command whose arguments are being completed, the second argument ($2) is the word being completed, and the third argument ($3) is the word preceding the word being completed on the current command line. When it finishes, the possible completions are retrieved from the value of the COMPREPLY array variable. -G globpat The pathname expansion pattern globpat is expanded to generate the possible completions. -P prefijo prefix is added at the beginning of each possible completion after all other options have been applied. -S sufijo suffix is appended to each possible completion after all other options have been applied. -W lista_palabras The wordlist is split using the characters in the IFS special variable as delimiters, and each resultant word is expanded. Shell quoting is honored within wordlist, in order to provide a mechanism for the words to contain shell metacharacters or characters in the value of IFS. The possible completions are the members of the resultant list which match the word being completed. -X filtro_ruta filterpat is a pattern as used for pathname expansion. It is applied to the list of possible completions generated by the preceding options and arguments, and each completion matching filterpat is removed from the list. A leading ! in filterpat negates the pattern; in this case, any completion not matching filterpat is removed. The return value is true unless an invalid option is supplied, an option other than -p or -r is supplied without a name argument, an attempt is made to remove a completion specification for a name for which no specification exists, or an error occurs adding a completion specification. compopt [-o opcion] [-DEI] [+o opcion] [nombre] Modify completion options for each name according to the options, or for the currently-executing completion if no names are supplied. If no options are given, display the completion options for each name or the current completion. The possible values of option are those valid for the complete builtin described above. The -D option indicates that other supplied options should apply to the "default" command completion; that is, completion attempted on a command for which no completion has previously been defined. The -E option indicates that other supplied options should apply to "empty" command completion; that is, completion attempted on a blank line. The -I option indicates that other supplied options should apply to completion on the initial non-assignment word on the line, or after a command delimiter such as ; or |, which is usually command name completion. The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a name for which no completion specification exists, or an output error occurs. continue [n] Resume the next iteration of the enclosing for, while, until, or select loop. If n is specified, resume at the nth enclosing loop. n must be >= 1. If n is greater than the number of enclosing loops, the last enclosing loop (the "top-level" loop) is resumed. The return value is 0 unless n is not greater than or equal to 1. declare [-aAfFgiIlnrtux] [-p] [nombre[=valor] ...] typeset [-aAfFgiIlnrtux] [-p] [nombre[=valor] ...] Declare variables and/or give them attributes. If no names are given then display the values of variables. The -p option will display the attributes and values of each name. When -p is used with name arguments, additional options, other than -f and -F, are ignored. When -p is supplied without name arguments, it will display the attributes and values of all variables having the attributes specified by the additional options. If no other options are supplied with -p, declare will display the attributes and values of all shell variables. The -f option will restrict the display to shell functions. The -F option inhibits the display of function definitions; only the function name and attributes are printed. If the extdebug shell option is enabled using shopt, the source file name and line number where each name is defined are displayed as well. The -F option implies -f. The -g option forces variables to be created or modified at the global scope, even when declare is executed in a shell function. It is ignored in all other cases. The -I option causes local variables to inherit the attributes (except the nameref attribute) and value of any existing variable with the same name at a surrounding scope. If there is no existing variable, the local variable is initially unset. The following options can be used to restrict output to variables with the specified attribute or to give variables attributes: -a Cada nombre es una variable de un vector indexado (consulte Vectores mas atras). above). -A Cada nombre es una variable de un vector asociativo (consulte Vectores mas atras). above). -f Usar solamente nombres de funciones. -i La variable se trata como un numero entero; se realiza la evaluacion aritmetica (consulte EVALUACION ARITMETICA). above) se ejecuta cuando se asigna un valor a la variable. -l Cuando se le asigne un valor a la variable, todas las mayusculas se convierten en minusculas. El atributo mayusculas esta desactivado. -n Give each name the nameref attribute, making it a name reference to another variable. That other variable is defined by the value of name. All references, assignments, and attribute modifications to name, except those using or changing the -n attribute itself, are performed on the variable referenced by name's value. The nameref attribute cannot be applied to array variables. -r Hace que nombres sean de lectura exclusiva. A estos nombres no se les pueden asignar valores por medio de subsiguientes asignaciones, ni se puede anular su definicion con unset. -t Give each name the trace attribute. Traced functions inherit the DEBUG and RETURN traps from the calling shell. The trace attribute has no special meaning for variables. -u When the variable is assigned a value, all lower-case characters are converted to upper-case. The lower-case attribute is disabled. -x Marca nombres para la exportacion a ordenes subsecuentes a traves del entorno. Using `+' instead of `-' turns off the attribute instead, with the exceptions that +a and +A may not be used to destroy array variables and +r will not remove the readonly attribute. When used in a function, declare and typeset make each name local, as with the local command, unless the -g option is supplied. If a variable name is followed by =value, the value of the variable is set to value. When using -a or -A and the compound assignment syntax to create array variables, additional attributes do not take effect until subsequent assignments. The return value is 0 unless an invalid option is encountered, an attempt is made to define a function using ``-f foo=bar'', an attempt is made to assign a value to a readonly variable, an attempt is made to assign a value to an array variable without using the compound assignment syntax (see Arrays above), one of the names is not a valid shell variable name, an attempt is made to turn off readonly status for a readonly variable, an attempt is made to turn off array status for an array variable, or an attempt is made to display a non-existent function with -f. dirs [-clpv] [+n] [-n] Sin opciones, muestra la lista de directorios que recuerda. La forma predeterminada de mostrarlos es en una sola linea con los nombres de directorios separados por espacios. Los directorios se anaden a la lista (en realidad, una pila) con la orden pushd; la orden popd los quita de la pila. El directorio actual es siempre el primero en la pila. -c Limpia la pila de directorios borrando todas las entradas. -l Crea un listado empleando los nombres de ruta completos; por defecto, el directorio home se designa utilizando una tilde. -p Muestra la pila de directorios con una entrada por cada linea. -v Muestra la pila de directorios con una entrada por linea, prefijando cada entrada con su indice en la pila. +n Muestra la n-sima entrada contando desde la izquierda de la lista mostrada por dirs cuando se llama sin opciones, empezando por cero. -n Muestra la n-sima entrada contando desde la derecha de la lista mostrada por dirs cuando se llama sin opciones, empezando por cero. El valor de retorno es 0 a menos que se de una opcion invalida o que n indexe mas alla del final de la pila de directorios. disown [-ar] [-h] [espectrab ... | pid ... ] Sin opciones, cada espec_tarea se quita de la tabla de tareas activas. Si no esta presente espec_tarea ni se indican las opciones -a ni -r, se utlizara la tarea actual. Si se da la opcion -h, cada espec_tarea no se quita de la tabla, sino que se marca de manera que no se le enviara la senal SIGHUP si la shell recibe una senal SIGHUP. Si no se suministra espec_trab, la opcion -a significa quitar o marcar todas las tareas; la opcion -r sin un argumento espec_tarea restringe la operacion a las tareas en ejecucion. El valor de retorno es 0 a menos que espec_tarea no se refiera a una tarea valida. echo [-neE] [arg ...] Repite los args, separados por espacios, seguidos por un salto de linea. El estado de retorno es siempre 0, salvo que ocurra un error de escritura. Si se especifica -n, se suprime el salto de linea final. Si se da la opcion -e, se activa la interpretacion de los siguientes caracteres (con barra inversa). La opcion -E desactiva la interpretacion de estos caracteres de escape, incluso en sistemas donde se interpreten de forma predeterminada. La opcion de la shell xpg_echo puede usarse para determinar dinamicamente si echo expandira o no estos caracteres por defecto. echo no interpreta -- para indicar el fin de las opciones. echo interpreta las siguientes secuencias de escape:echo no interpreta -- como el fin de las opciones. echo interpreta las siguientes secuencias de escape: \a alerta (pitido) \b espacio-atras \c elimina cualquier otra salida \e \E un caracter de escape (ESC) \f nueva pagina \n nueva linea \r retorno de carro \t tabulacion horizontal \v tabulacion vertical \\ barra invertida \0nnn el caracter de ocho bites cuyo codigo es el valor octal nnn (de cero a tres digitos octales) \xHH el caracter de 8-bits cuyo codigo es el valor hexadecimal HH (uno o dos digitos hexadecimales) \uHHHH caracter Unicode (ISO/IEC 10646) cuyo valor hexadecimal es HHHH (de uno a cuatro caracteres hexadecimales) \UHHHHHHHH caracter Unicode (ISO/IEC 10646) cuyo valor hexadecimal es HHHHHHHH (de uno a ocho caracteres hexadecimales) enable [-a] [-dnps] [-f nombre-archivo] [nombre ...] Enable and disable builtin shell commands. Disabling a builtin allows a disk command which has the same name as a shell builtin to be executed without specifying a full pathname, even though the shell normally searches for builtins before disk commands. If -n is used, each name is disabled; otherwise, names are enabled. For example, to use the test binary found via the PATH instead of the shell builtin version, run ``enable -n test''. The -f option means to load the new builtin command name from shared object filename, on systems that support dynamic loading. Bash will use the value of the BASH_LOADABLES_PATH variable as a colon-separated list of directories in which to search for filename. The default is system-dependent. The -d option will delete a builtin previously loaded with -f. If no name arguments are given, or if the -p option is supplied, a list of shell builtins is printed. With no other option arguments, the list consists of all enabled shell builtins. If -n is supplied, only disabled builtins are printed. If -a is supplied, the list printed includes all builtins, with an indication of whether or not each is enabled. If -s is supplied, the output is restricted to the POSIX special builtins. If no options are supplied and a name is not a shell builtin, enable will attempt to load name from a shared object named name, as if the command were ``enable -f name name . El valor devuelto es 0 salvo que nombre no sea una orden nativa de la shell o que osurriese un error al cargarlo de un objeto compartido. eval [arg ...] Los args se leen y concatenan juntos para formar una sola orden. Entonces la shell lee y ejecuta esta orden, y su estado de salida se devuelve como el valor de eval. Si no hay args, o solamente argumentos vacios, eval devuelve 0. exec [-cl] [-a nombre] [orden [argumentos]] Si se especifica orden, reemplaza a la shell. No se crea ningun proceso nuevo sino que los argumentos pasan a ser los argumentos de orden. Si se da la opcion -l, la shell pone un guion en el argumento numero cero pasado a orden. Esto es lo que hace login(1). La opcion -c hace que orden se ejecute con un entorno vacio. Si se da -a, la shell pasa nombre como el argumento numero cero de la orden ejecutada. Si orden no puede ejecutarse por alguna razon, una shell no interactiva finalizara, a menos que se haya activado la opcion de la shell execfail, en cuyo caso devuelve `fallo'. Una subshell finalizara siempre su ejecucion si falla exec. Una shell interactiva devuelve `fallo' si el archivo no puede ejecutarse. Si orden no se especifica, cualquier redireccion tiene efecto en la shell en curso, y el estado de salida es 0. Si hay un error de redireccion, el estado de salida sera 1. exit [n] Hace que la shell acabe con un estado de valor n. Si n se omite, el valor de salida es el de la ultima orden ejecutada. Se ejecuta una trampa puesta en EXIT antes de que la shell termine. export [-fn] [nombre[=palabra]] ... export -p The supplied names are marked for automatic export to the environment of subsequently executed commands. If the -f option is given, the names refer to functions. If no names are given, or if the -p option is supplied, a list of names of all exported variables is printed. The -n option causes the export property to be removed from each name. If a variable name is followed by =word, the value of the variable is set to word. export returns an exit status of 0 unless an invalid option is encountered, one of the names is not a valid shell variable name, or -f is supplied with a name that is not a function. fc [-e editor] [-lnr] [primero] [ultimo] fc -s [pat=rep] [ord] The first form selects a range of commands from first to last from the history list and displays or edits and re-executes them. First and last may be specified as a string (to locate the last command beginning with that string) or as a number (an index into the history list, where a negative number is used as an offset from the current command number). When listing, a first or last of 0 is equivalent to -1 and -0 is equivalent to the current command (usually the fc command); otherwise 0 is equivalent to -1 and -0 is invalid. If last is not specified, it is set to the current command for listing (so that ``fc -l -10'' prints the last 10 commands) and to first otherwise. If first is not specified, it is set to the previous command for editing and -16 for listing. La opcion -n suprime los numeros de orden en un listado. La opcion -r invierte el orden de los mandatos. Si se da la opcion -l , las ordenes se listan en la salida estandar. Si no, se llama al editor dado por editor en un archivo conteniendo esas ordenes. Si no se da editor, se emplea el valor de la variable FCEDIT, o el valor de EDITOR si FCEDIT no esta definido. Si no esta definida ni una variable ni otra, vi vi es el editor que se empleara. Cuando la edicion se haya completado, las ordenes editadas se muestran y ejecutan. En la segunda forma, orden se re-ejecuta tras que cada instancia de pat se reemplace por rep. orden se interpreta igual que se hacia con primero anteriormente. Un alias de utilidad para emplear con esto es ``r="fc -s"'', de tal modo que al teclear ``r cc'' se ejecute la ultima orden que empezara con ``cc'' y que al teclear ``r'' se re-ejecute la ultima orden. Si se usa la primera forma, el valor de retorno es 0 a menos que se encuentre una opcion invalida o que primero o ultimo especifiquen lineas de historia fuera de intervalo. Si se suministra la opcion -e, el valor de retorno es el de la ultima orden ejecutada, o `fallo' si ocurre un error con el archivo temporal de ordenes. Si se emplea la segunda forma, el estado de retorno es de la orden reejecutada, a menos que ord no especifique una linea valida de historia, en cuyo caso fc devuelve `fallo'. fg [espectrab] Reanuda espectrab en primer plano, pasando a ser la tarea en curso. Si espectrab no esta presente, se usa la nocion que tiene la shell del trabajo en curso. El valor de retorno es el de la orden puesta en primer plano, o `fallo' si se ejecuta fg cuando el control de tareas esta desactivado o, cuando se ejecuta con el control de tareas activado, si espectrab no especifica un trabajo valido o espectrab se refiere a una tarea iniciada sin control de tareas. getopts cadenaopcs nombre [arg ...] getopts is used by shell procedures to parse positional parameters. optstring contains the option characters to be recognized; if a character is followed by a colon, the option is expected to have an argument, which should be separated from it by white space. The colon and question mark characters may not be used as option characters. Each time it is invoked, getopts places the next option in the shell variable name, initializing name if it does not exist, and the index of the next argument to be processed into the variable OPTIND. OPTIND is initialized to 1 each time the shell or a shell script is invoked. When an option requires an argument, getopts places that argument into the variable OPTARG. The shell does not reset OPTIND automatically; it must be manually reset between multiple calls to getopts within the same shell invocation if a new set of parameters is to be used. Cuando se encuentra el fin de las opciones, getopts sale con un valor de retorno mayor que cero. OPTIND se pone al indice del primer argumento que no es una opcion, y nombre se pone a "?". getopts normally parses the positional parameters, but if more arguments are supplied as arg values, getopts parses those instead. getopts puede informar de errores de dos maneras. Si el primer caracter de optstring es dos puntos, se emplea un informe de error silencioso. En un modo normal de operacion se muestran mensajes de diagnosticos cuando se encuentran opciones invalidas o faltan argumentos de opciones que los requieran. Si la variable OPTERR se pone a 0, no se mostrara ningun mensaje de error, incluso si el primer caracter de optstring no es dos puntos. Si se ve una opcion invalida, getopts pone ? en nombre y, si no estamos en el modo silencioso, se muestra un mensaje de error y se anula OPTARG. Si getopts es silencioso, el caracter de opcion encontrado se pone en OPTARG y no se muestra ningun mensaje de diagnostico. Si no se encuentra un argumento necesario, y getopts no es silencioso, se pone un signo de cierre de interrogacion (?) en nombre, OPTARG se anula, y se muestra un mensaje de diagnostico. Si getopts es silencioso, entonces se pone un signo de dos puntos (:) en nombre y OPTARG toma el valor del caracter de opcion encontrado. getopts devuelve `verdad' si una opcion, especificada o no, se encuentra. Devuelve `falso' si se encuentra el final de las opciones o si ocurre un error. hash [-lr] [-p nombre-archivo] [-dt] [nombre] Each time hash is invoked, the full pathname of the command name is determined by searching the directories in $PATH and remembered. Any previously-remembered pathname is discarded. If the -p option is supplied, no path search is performed, and filename is used as the full filename of the command. The -r option causes the shell to forget all remembered locations. The -d option causes the shell to forget the remembered location of each name. If the -t option is supplied, the full pathname to which each name corresponds is printed. If multiple name arguments are supplied with -t, the name is printed before the hashed full pathname. The -l option causes output to be displayed in a format that may be reused as input. If no arguments are given, or if only -l is supplied, information about remembered commands is printed. The return status is true unless a name is not found or an invalid option is supplied. help [-dms] [patron] Muestra informacion de ayuda sobre las ordenes internas. Si se especifica patron, help da ayuda detallada sobre todas las ordenes que concuerden con patron; si no, se muestra ayuda para todas las ordenes internas y estructuras de control de la shell. -d Display a short description of each pattern -m Display the description of each pattern in a manpage-like format -s Display only a short usage synopsis for each pattern The return status is 0 unless no command matches pattern. history [n] history -c history -d desplazamiento history -d inicio-final history -anrw [nombre-archivo] history -p arg [arg ...] history -s arg [arg ...] Sin opciones, muestra el historial de ordenes con su numeros de linea. Las lineas marcadas con un * han sido modificadas. Un argumento de n lista solamente las ultimas n lineas. Si esta definida (y no es nula) la variable de shell HISTTIMEFORMAT se usara para formatear la salida de strftime(3) donde se muestra la fecha y hora de cada entrada del historial. No se intercalan espacios en blanco entre la fecha y hora y la linea del historial. Puede indicarse nombre_archivo para definir el nombre del archivo de historial,sino se indica se usara el valor de HISTFILE. Si se dan opciones, tendran el siguiente significado: -c Limpia el historial borrando todas las entradas. -d posicion Borra la posicion posicion del historial. Si se define un valor negativo para posicion, se interpreta como una posicion mas adelante que la de la ultima linea del historial. Esto es, que los valores negativos cuentan hacia atras a partir del final del historial: un indice de -1 hace referencia a la orden actual history -d. -d inicio-fin Borra las entradas del historial entre las posiciones inicio y fin ambas inclusive. Los valores positivos y negativos para estas posiciones se interpretan tal como se describio anteriormente. -a Anade nuevas lineas (las introducidas desde el inicio de la actual sesion de bash) al historial. -n Lee las lineas de ordenes que aun no han sido leidas y las introduce en el historial. Estas son las lineas anadidas al historial desde el comienzo de la sesion de bash actual. -r Lee el contenido del historial y lo anade a la lista actual.curso. -w Escribe la historia en curso en el historial, sobreescribiendo su contenido. -p Realiza la sustitucion de historia de los siguientes args y muestra el resultado en la salida estandar. No almacena los resultados en el archivo de historia. Cada arg debe protegerse para deshabilitar la expansion de historia normal. -s Almacena los args en el historial como una sola entrada. La ultima orden del hisotrial se elimina antes de que se anadan los args. If the HISTTIMEFORMAT variable is set, the time stamp information associated with each history entry is written to the history file, marked with the history comment character. When the history file is read, lines beginning with the history comment character followed immediately by a digit are interpreted as timestamps for the following history entry. The return value is 0 unless an invalid option is encountered, an error occurs while reading or writing the history file, an invalid offset or range is supplied as an argument to -d, or the history expansion supplied as an argument to -p fails. jobs [-lnprs] [ espectrab ... ] jobs -x orden [ args ... ] La primera forma lista las tareas activas. Las opciones tienen los significados siguientes: -l Lista PIDs ademas de la informacion normal. -n Muestra informacion solamente sobre tareas que han cambiado de estado desde que se notifico al usuario por ultima vez de su estado. -p Lista solamente el PID del lider del grupo de proceso del tareas. -r Muestra unicamente las tareas en ejecucion. -s Muestra unicamente las tareas detenidas. Si se da espectrab, la salida se restringe a la informacion sobre esa tarea. El estado de retorno es cero a menos que se encuentre una opcion invalida o se suministre un espectrab invalido. Si se da la opcion -x, jobs reemplaza cualquier espectrab encontrado en orden o args con el ID de grupo de proceso correspondiente, y ejecuta orden pasandole args, devolviendo su estado de salida. kill [-s nombre-senal | -n numsenal | -nombre-senal] [pid | espectrab] ... kill -l|-L [nombre-senal | status_salida] Send the signal named by sigspec or signum to the processes named by pid or jobspec. sigspec is either a case-insensitive signal name such as SIGKILL (with or without the SIG prefix) or a signal number; signum is a signal number. If sigspec is not present, then SIGTERM is assumed. An argument of -l lists the signal names. If any arguments are supplied when -l is given, the names of the signals corresponding to the arguments are listed, and the return status is 0. The exit_status argument to -l is a number specifying either a signal number or the exit status of a process terminated by a signal. The -L option is equivalent to -l. kill returns true if at least one signal was successfully sent, or false if an error occurs or an invalid option is encountered. let arg [arg ...] Cada arg es una expresion aritmetica a ser evaluada (vea EVALUACION ARITMETICA) above). Si el ultimo arg se evalua a 0, let devuelve 1; si no, devuelve 0. local [opcion] [nombre[=valor] ... | - ] For each argument, a local variable named name is created, and assigned value. The option can be any of the options accepted by declare. When local is used within a function, it causes the variable name to have a visible scope restricted to that function and its children. If name is -, the set of shell options is made local to the function in which local is invoked: shell options changed using the set builtin inside the function are restored to their original values when the function returns. The restore is effected as if a series of set commands were executed to restore the values that were in place before the function. With no operands, local writes a list of local variables to the standard output. It is an error to use local when not within a function. The return status is 0 unless local is used outside a function, an invalid name is supplied, or name is a readonly variable. logout Sale de la shell. mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array] readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array] Read lines from the standard input into the indexed array variable array, or from file descriptor fd if the -u option is supplied. The variable MAPFILE is the default array. Options, if supplied, have the following meanings: -d The first character of delim is used to terminate each input line, rather than newline. If delim is the empty string, mapfile will terminate a line when it reads a NUL character. -n Copy at most count lines. If count is 0, all lines are copied. -O Comienza asignando al vector en el indice origen. Por defecto el indice es el cero. -s Elimina las primeras numero lineas leidas. -t Elimina el delim del final (nueva linea, por defecto) en cada linea que lea. -u Lee lineas desde eldescriptor de archivos fd en lugar de hacerlo desde la entrada estandar. -C Evaluate callback each time quantum lines are read. The -c option specifies quantum. -c Specify the number of lines read between each call to callback. If -C is specified without -c, the default quantum is 5000. When callback is evaluated, it is supplied the index of the next array element to be assigned and the line to be assigned to that element as additional arguments. callback is evaluated after the line is read but before the array element is assigned. If not supplied with an explicit origin, mapfile will clear array before assigning to it. mapfile returns successfully unless an invalid option or option argument is supplied, array is invalid or unassignable, or if array is not an indexed array. popd [-n] [+n] [-n] Quita entradas de la pila de directorios. Los elementos se numeran empezando por el cero a partir del primer directorio listado por dirs. Si no se indica ningun argumento, popd eliminara el primer directorio de la pila moviendose hacia el que quedaria despues en primer lugar. Si se indican argumentos, tendran el siguiente significado: -n Suprime el normal cambio de directorio cuando se desapilan directorios, de forma que solamente la pila se manipula. +n Elimina la n-esima entrada de la pila comenzando por la parte izquierda de la lista mostrada por dirs, empezando por cero. Por ejemplo: ``popd +0'' elimina el primer directorio, ``popd +1'' el segundo. -n Elimina la n-sima entrada (contando desde la derecha de la lista mostrada por dirs, empezando por cero. Por ejemplo: ``popd -0'' Elimina el ultimo directorio, ``popd -1'' el siguiente al ultimo. If the top element of the directory stack is modified, and the -n option was not supplied, popd uses the cd builtin to change to the directory at the top of the stack. If the cd fails, popd returns a non-zero value. De lo contrario, popd devuelve 'falso' si se encuentra una opcion invalida, la pila de directorios esta vacia, se especifica una entrada de la pila de directorios no existente. Si la orden popd tiene exito, bash ejecuta dirs para mostra el ultimo contenido de la pila de directorios, siendo el valor de salida cero. printf [-v var] formato [argumentos] Escribe los argumentos formateados por la salida estandar bajo control de formato. La opcion -v hace que la salida se asigne a la variable var en lugar de mostrarse por la salida estandar. formato es un cadena de caracteres con tres tipos de objetos: caracteres simples que simplemente se envian a la salida estandar, caracteres de escape que son convertidos antes de enviarse a la salida estandar y especificaciones de formatos que hacen que se impriman los siguientes argumentos. Ademas de las especificaciones del formato estandar de printf(1), printf tambien interpreta las siguientes extensiones: %b hace que printf expanda la barra invertida en el correspondiente argumento como lo haria echo -e. %q causes printf to output the corresponding argument in a format that can be reused as shell input. %Q Igual que %q salvo que aplica la precision definida en el argumento antes de entrecomillarlo. %(datefmt)T causes printf to output the date-time string resulting from using datefmt as a format string for strftime(3). The corresponding argument is an integer representing the number of seconds since the epoch. Two special argument values may be used: -1 represents the current time, and -2 represents the time the shell was invoked. If no argument is specified, conversion behaves as if -1 had been given. This is an exception to the usual printf behavior. The %b, %q, and %T directives all use the field width and precision arguments from the format specification and write that many bytes from (or use that wide a field for) the expanded argument, which usually contains more characters than the original. Arguments to non-string format specifiers are treated as C constants, except that a leading plus or minus sign is allowed, and if the leading character is a single or double quote, the value is the ASCII value of the following character. El formato se reutiliza tanto como sea necesario para consumir todos los argumentos. Si el formato requiere mas argumentos que los que se suministran, las especificaciones de formato extra se comportan como si se hubiera dado un valor cero o una cadena vacia, segun lo apropiado. El valor de retorno sera cero si finaliza con exito y otra cifra si falla. pushd [-n] [+n] [-n] pushd [-n] [dir] Anade un directorio a la cima de la pila de directorios, o rota la pila, haciendo que el directorio de trabajo en curso sea la nueva cima de la pila. Sin argumentos pushd intercambia los dos elementos superiores de la pila de directorio. Si se aportan argumentos, tendran los siguientes significados: -n Suprime el cambio normal de directorio cuando se rotan o anaden directorios a la pila, de forma que solamente se manipula la pila. +n Rota la pila de forma que el n-simo directorio (contando desde la izquierda de la lista mostrada por dirs, empezando por cero) este en la cima. -n Rota la pila de forma que el n-simo directorio (contando desde la derecha de la lista mostrada por dirs, empezando por cero) este en la cima. dir Anade dirs al comienzo de la pila de directorios After the stack has been modified, if the -n option was not supplied, pushd uses the cd builtin to change to the directory at the top of the stack. If the cd fails, pushd returns a non-zero value. Otherwise, if no arguments are supplied, pushd returns 0 unless the directory stack is empty. When rotating the directory stack, pushd returns 0 unless the directory stack is empty or a non-existent directory stack element is specified. Si la orden pushd se ejecuta sin problema, bash ejecuta dirs para mostrar el contenido final de la pila de directorios. pwd [-LP] Print the absolute pathname of the current working directory. The pathname printed contains no symbolic links if the -P option is supplied or the -o physical option to the set builtin command is enabled. If the -L option is used, the pathname printed may contain symbolic links. The return status is 0 unless an error occurs while reading the name of the current directory or an invalid option is supplied. read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [nombre ...] One line is read from the standard input, or from the file descriptor fd supplied as an argument to the -u option, split into words as described above under Word Splitting, and the first word is assigned to the first name, the second word to the second name, and so on. If there are more words than names, the remaining words and their intervening delimiters are assigned to the last name. If there are fewer words read from the input stream than names, the remaining names are assigned empty values. The characters in IFS are used to split the line into words using the same rules the shell uses for expansion (described above under Word Splitting). The backslash character (\) may be used to remove any special meaning for the next character read and for line continuation. Options, if supplied, have the following meanings: -a array Las palabras se asignan secuencialmente a los elementos de la variable vector array, empezando por 0. Se anula la posible previa definicion de array antes de que se asignen nuevos valores. Otros argumentos nombre no se tienen en consideracion. -d delim The first character of delim is used to terminate the input line, rather than newline. If delim is the empty string, read will terminate a line when it reads a NUL character. -e If the standard input is coming from a terminal, readline (see READLINE above) is used to obtain the line. Readline uses the current (or default, if line editing was not previously active) editing settings, but uses readline's default filename completion. -i text If readline is being used to read the line, text is placed into the editing buffer before editing begins. -n nchars read returns after reading nchars characters rather than waiting for a complete line of input, but honors a delimiter if fewer than nchars characters are read before the delimiter. -N nchars read returns after reading exactly nchars characters rather than waiting for a complete line of input, unless EOF is encountered or read times out. Delimiter characters encountered in the input are not treated specially and do not cause read to return until nchars characters are read. The result is not split on the characters in IFS; the intent is that the variable is assigned exactly the characters read (with the exception of backslash; see the -r option below). -p prompt Display prompt on standard error, without a trailing newline, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. -r Backslash does not act as an escape character. The backslash is considered to be part of the line. In particular, a backslash-newline pair may not then be used as a line continuation. -s Modo sigiloso. Si la entrada procede de un terminal, no se muestran lo caracteres. -t timeout Cause read to time out and return failure if a complete line of input (or a specified number of characters) is not read within timeout seconds. timeout may be a decimal number with a fractional portion following the decimal point. This option is only effective if read is reading input from a terminal, pipe, or other special file; it has no effect when reading from regular files. If read times out, read saves any partial input read into the specified variable name. If timeout is 0, read returns immediately, without trying to read any data. The exit status is 0 if input is available on the specified file descriptor, or the read will return EOF, non-zero otherwise. The exit status is greater than 128 if the timeout is exceeded. -u fd Read input from file descriptor fd. If no names are supplied, the line read, without the ending delimiter but otherwise unmodified, is assigned to the variable REPLY. The exit status is zero, unless end-of-file is encountered, read times out (in which case the status is greater than 128), a variable assignment error (such as assigning to a readonly variable) occurs, or an invalid file descriptor is supplied as the argument to -u. readonly [-aAf] [-p] [nombre[=palabra] ...] The given names are marked readonly; the values of these names may not be changed by subsequent assignment. If the -f option is supplied, the functions corresponding to the names are so marked. The -a option restricts the variables to indexed arrays; the -A option restricts the variables to associative arrays. If both options are supplied, -A takes precedence. If no name arguments are given, or if the -p option is supplied, a list of all readonly names is printed. The other options may be used to restrict the output to a subset of the set of readonly names. The -p option causes output to be displayed in a format that may be reused as input. If a variable name is followed by =word, the value of the variable is set to word. The return status is 0 unless an invalid option is encountered, one of the names is not a valid shell variable name, or -f is supplied with a name that is not a function. return [n] Causes a function to stop executing and return the value specified by n to its caller. If n is omitted, the return status is that of the last command executed in the function body. If return is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. If return is executed during a DEBUG trap, the last command used to determine the status is the last command executed by the trap handler before return was invoked. If return is used outside a function, but during execution of a script by the . (source) command, it causes the shell to stop executing that script and return either n or the exit status of the last command executed within the script as the exit status of the script. If n is supplied, the return value is its least significant 8 bits. The return status is non-zero if return is supplied a non-numeric argument, or is used outside a function and not during execution of a script by . or source. Any command associated with the RETURN trap is executed before execution resumes after the function or script. set [-abefhkmnptuvxBCEHPT] [-o nombre-opcion] [--] [-] [arg ...] set [+abefhkmnptuvxBCEHPT] [+o nombre-opcion] [--] [-] [arg ...] Without options, display the name and value of each shell variable in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables cannot be reset. In posix mode, only shell variables are listed. The output is sorted according to the current locale. When options are specified, they set or unset shell attributes. Any arguments remaining after option processing are treated as values for the positional parameters and are assigned, in order, to $1, $2, ... $n. Options, if specified, have the following meanings: -a Cada variable o funcion que se modifiquen o creen tendran el atributo de exportacion y se marcaran para exportar en el entorno de subsiguientes ordenes. -b Informa del estado de las tareas en segundo plano terminadas inmediatamente, en vez de esperar a justo antes de mostrar el siguiente indicador primario. Esto solo es efectivo cuando el control de tareas esta habilitado. -e Exit immediately if a pipeline (which may consist of a single simple command), a list, or a compound command (see SHELL GRAMMAR above), exits with a non-zero status. The shell does not exit if the command that fails is part of the command list immediately following a while or until keyword, part of the test following the if or elif reserved words, part of any command executed in a && or || list except the command following the final && or ||, any command in a pipeline but the last, or if the command's return value is being inverted with !. If a compound command other than a subshell returns a non-zero status because a command failed while -e was being ignored, the shell does not exit. A trap on ERR, if set, is executed before the shell exits. This option applies to the shell environment and each subshell environment separately (see COMMAND EXECUTION ENVIRONMENT above), podra provocar que las subshells finalizen antes de ejecutar todas las ordenes en la subshell. If a compound command or shell function executes in a context where -e is being ignored, none of the commands executed within the compound command or function body will be affected by the -e setting, even if -e is set and a command returns a failure status. If a compound command or shell function sets -e while executing in a context where -e is ignored, that setting will not have any effect until the compound command or the command containing the function call completes. -f Deshabilita la expansion de nombres de rutas. -h Recuerda la localizacion de ordenes una vez que se buscan para la 1a ejecucion. Esto esta habilitado de forma predeterminada. -k Todos los argumentos en forma de sentencias de asignacion se ponen en el entorno para una orden, no solamente aquellos que precedan al nombre de la orden. -m Modo de monitorizacion. Se habilita el control de tareas. Esta opcion esta puesta de forma predeterminada para shells interactivos en sistemas que lo admitan (vea CONTROL DE TAREAS anteriormente). above). Todos los procesos se ejecutan en un grupo separado. Cada vez que finalice una tarea en segundo plano, la shell mostrara una linea indicando su estado de salida. -n Lee ordenes pero no las ejecuta. Esto puede emplearse para comprobar si un guion de la shell tiene errores de sintaxis. Para shells interactivos esta opcion no tiene efecto. -o nombre-opcion El nombre-opcion puede ser uno de los siguientes: allexport Lo miso que -a. braceexpand Lo miso que -B. emacs Emplea una interfaz de edicion de lineas de ordenes al estilo de emacs. Esto esta activo de forma predeterminada cuando la shell es interactiva, a menos que se haya iniciado con la opcion --noediting. Esto tambien afecta a la interfaz de edicion empleada para read -e. errexit Lo mismo que -e. errtrace Lo mismo que -E. functrace Lo mismo que -T. hashall Lo mismo que -h. histexpand Lo mismo que -H. history Activa el historico de ordenes, tal como se describe en above en el apartado HISTORIAL. Esta opcion esta habilitada por omision en shells interactivos. ignoreeof The effect is as if the shell command ``IGNOREEOF=10'' se hubiera ejecutado la orden de la shell (vea Variables de la shell) above). keyword Lo mismo que -k. monitor Lo mismo que -m. noclobber Lo mismo que -C. noexec Lo mismo que -n. noglob Lo mismo que -f. nolog Currently ignored. notify Lo mismo que -b. nounset Lo mismo que -u. onecmd Lo mismo que -t. physical Lo mismo que -P. pipefail If set, the return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status, or zero if all commands in the pipeline exit successfully. This option is disabled by default. posix Cambia el comportamiento de bash cuando el funcionamiento difiera del estandar POSIX, de forma que concuerde con este(posix mode). Consulte VEASE TAMBIEN below mas delante si quiere leer un documento donde se detalla la influencia del modo posix sobre el funcionamiento de bash. privileged Lo mismo que -p. verbose Lo mismo que -v. vi Emplea una interfaz de edicion de lineas de ordenes al estilo de vi. Esto tambien afecta a la interfaz de edicion empleada por read -e. xtrace Lo mismo que -x. Si se da -o sin ningun nombre-opcion, se muestran los valores de las opciones activas. Si se da +o sin ningun nombre-opcion, se muestra en la salida estandar una serie de ordenes set para recrear las opciones segun estan puestas o no actualmente. -p Turn on privileged mode. In this mode, the $ENV and $BASH_ENV files are not processed, shell functions are not inherited from the environment, and the SHELLOPTS, BASHOPTS, CDPATH, and GLOBIGNORE variables, if they appear in the environment, are ignored. If the shell is started with the effective user (group) id not equal to the real user (group) id, and the -p option is not supplied, these actions are taken and the effective user id is set to the real user id. If the -p option is supplied at startup, the effective user id is not reset. Turning this option off causes the effective user and group ids to be set to the real user and group ids. -r Activa el modo restringido de la shell. Una vez que se activa, esta opcion no puede desactivarse. -t Sale tras leer y ejecutar una sola orden. -u Trata las variables no definidas, los parametros distintos a los especiales "@" y "*" o las variables vectoriales con subindice "@" o "*" como un error cuando se realiza la expansion de parametros. Si la expansion se intenta hacer sobre una variable o parametro no definidos, la shell mostrara un mensaje de error y, si no esta en modo interactivo, finalizara con un estado distinto de cero. -v Repite en la salida las lineas de entrada de la shell tras leerlas. -x After expanding each simple command, for command, case command, select command, or arithmetic for command, display the expanded value of PS4, followed by the command and its expanded arguments or associated word list. -B la shell realiza la expansion de llaves (vea Expansion de llaves arriba). above). Esta activado por defecto. -C Si esta activo, bash no sobreescribe un archivo existente con los operadores de redireccion >, >&, ni <>. Esto puede cambiarse cuando se crean archivos de salida mediante el empleo del operador >| en vez de >. -E Si esta definida, cualquier trampa en ERR sera heredada por las funciones de la shell, las sustituciones de ordenes y las ordenes ejecutadas en subshells. En general, la trampa ERR no se hereda en estos casos. -H Permite la sustitucion de historia mediante !. Esta opcion esta activada por omision cuando la shell es interactivo. -P If set, the shell does not resolve symbolic links when executing commands such as cd that change the current working directory. It uses the physical directory structure instead. By default, bash follows the logical chain of directories when performing commands which change the current directory. -T Si esta definida, cualquier trampa en DEBUG O RETURN sera heredada por las funciones de la shell, las sustituciones de ordenes y las ordenes ejecutadas en subshells. En general, las trampas DEBUG y RETURN no se heredan en estos casos. -- Si a esta opcion no sigue ningun argumento mas, entonces los parametros posicionales se anulan. Si no, los parametros posicionales se ponen con los valores dados por los args, incluso si alguno de ellos comienza con un -. - Senala el final de las opciones, haciendo que el resto de args se asignen a los parametros posicionales. Las opciones -x y -v se desactivan. Si no hay mas args, los parametros posicionales permanecen sin cambios. Las opciones estan desactivadas de forma predeterminada a menos que se diga otra cosa. Usar + en vez de - hace que estas opciones se desactiven. Las opciones tambien pueden darse como argumentos al llamar al shell. El conjunto de opciones activadas puede examinarse en $-. El estado de retorno es siempre `verdad' a menos que se encuentre una opcion invalida. shift [n] Los parametros posicionales desde n+1 ... se renombran a $1 ... Los parametros representados por los numeros desde $# hasta $#-n+1 se anulan. n debe ser un numero no negativo menor o igual a $#. Si n es 0, no se cambia ningun parametro. Si n no se da, se supone 1. Si n es mayor que $#, los parametros posicionales no se cambian. El estado de retorno es mayor que cero si n es mayor que $# o menor que cero; en otro caso es cero. shopt [-pqsu] [-o] [nombreopc ...] Toggle the values of settings controlling optional shell behavior. The settings can be either those listed below, or, if the -o option is used, those available with the -o option to the set builtin command. With no options, or with the -p option, a list of all settable options is displayed, with an indication of whether or not each is set; if optnames are supplied, the output is restricted to those options. The -p option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: -s Activa (set) cada nombreopc. -u Desactiva (unset) cada nombreopc. -q Suprime la salida normal (modo silencioso); el estado de salida indica si el nombreopc esta activado o no. Si se dan varios argumentos nombreopc con -q, el estado de salida es cero si todos los nombreopcs estan activados; distinto de cero en otro caso. -o Restringe los valores de nombreopc a aquellos definidos para la opcion -o de la orden interna set. If either -s or -u is used with no optname arguments, shopt shows only those options which are set or unset, respectively. Unless otherwise noted, the shopt options are disabled (unset) by default. El estado de retorno cuando se listan opciones es cero si todos los nombreopcs estan activos, distinto de cero en otro caso. Cuando se activan o desactivan opciones, el estado de salida es cero a menos que un nombreopc no sea una opcion de la shell valida. La lista de las opciones de shopt es: assoc_expand_once If set, the shell suppresses multiple evaluation of associative array subscripts during arithmetic expression evaluation, while executing builtins that can perform variable assignments, and while executing builtins that perform array dereferencing. autocd If set, a command name that is the name of a directory is executed as if it were the argument to the cd command. This option is only used by interactive shells. cdable_vars Si esta activa, un argumento de la orden interna cd que no sea un directorio, se supone el nombre de una variable cuyo valor es el directorio al que hay que cambiarse. cdspell Si esta activa, se corregiran pequenos errores que hubiera en la escritura de un componente directorio de una orden cd. Los errores que se buscan se refieren a caracteres transpuestos, un caracter que falte, y un caracter que sobre. Si se encuentra una correccion, se muestra el nombre de archivo corregido y la orden procede. Esta opcion solo se emplea en shells interactivos. checkhash Si esta activa, bash comprueba que una orden encontrada en la tabla de dispersion existe antes de intentar ejecutarlo. Si una orden en la tabla de dispersion ya no existe, se realiza una busqueda normal en el PATH. checkjobs If set, bash lists the status of any stopped and running jobs before exiting an interactive shell. If any jobs are running, this causes the exit to be deferred until a second exit is attempted without an intervening command (see JOB CONTROL above). La shell siempre pospone su finalizacion si alguna tarea esta detenida. checkwinsize Si esta activa, bash comprueba el tamano de ventana tras cada orden (no nativa) y, si necesario, actualiza los valores de LINES y COLUMNS.Activa por defecto. cmdhist Si esta activa, bash intenta guardar todas las lineas de una orden de varias lineas en la misma entrada del historial. Esto permite reeditar facilmente multiples ordenes. Esta opcion esta activada por defecto, pero solo surte efecto si esta activado el historial tal como se describe en above en el apartado HISTORICO. compat31 compat32 compat40 compat41 compat42 compat43 compat44 compat50 Controla ciertos ascpetos del modo de compatibilidad de la shell. Consulte MODO DE COMPATIBILIDAD DE LA SHELL mas adelante. below). complete_fullquote If set, bash quotes all shell metacharacters in filenames and directory names when performing completion. If not set, bash removes metacharacters such as the dollar sign from the set of characters that will be quoted in completed filenames when these metacharacters appear in shell variable references in words to be completed. This means that dollar signs in variable names that expand to directories will not be quoted; however, any dollar signs appearing in filenames will not be quoted, either. This is active only when bash is using backslashes to quote completed filenames. This variable is set by default, which is the default bash behavior in versions through 4.2. direxpand If set, bash replaces directory names with the results of word expansion when performing filename completion. This changes the contents of the readline editing buffer. If not set, bash attempts to preserve what the user typed. dirspell Si esta definido, bash intentara corregir los nombres de los directorios al autocompletar siempre que el nombre dado no corresponda a ningun directorio. dotglob Si esta activa, bash incluye los nombres de archivos que comiencen con un `.' en los resultados de la expansion de nombres de ruta. Los nombres de archivo "." y ".." siempre deben concordarse expresamente aunque dotglob este activa. execfail Si esta activa, una shell no interactiva no acabara si no puede ejecutar el archivo especificado como un argumento de la orden interna exec. Una shell interactiva no finaliza si exec falla. expand_aliases Si esta definido, los aliases se expanden tal como se describe en above ALIAS. Esta opcion esta habilitada de forma predeterminada para shells interactivos. extdebug If set at shell invocation, or in a shell startup file, arrange to execute the debugger profile before the shell starts, identical to the --debugger option. If set after invocation, behavior intended for use by debuggers is enabled: 1. The -F option to the declare builtin displays the source file name and line number corresponding to each function name supplied as an argument. 2. If the command run by the DEBUG trap returns a non-zero value, the next command is skipped and not executed. 3. If the command run by the DEBUG trap returns a value of 2, and the shell is executing in a subroutine (a shell function or a shell script executed by the . or source builtins), the shell simulates a call to return. 4. BASH_ARGC y BASH_ARGV se actualizan tal como se describe en above). 5. Function tracing is enabled: command substitution, shell functions, and subshells invoked with ( command ) inherit the DEBUG and RETURN traps. 6. Error tracing is enabled: command substitution, shell functions, and subshells invoked with ( command ) inherit the ERR trap. extglob Si esta activa, se habilitan las caracteristicas de concordancia de patrones extendidas descritas above bajo Expansion de Nombres de Ruta activadas extquote If set, $'string' and $"string" quoting is performed within ${parameter} expansions enclosed in double quotes. This option is enabled by default. failglob If set, patterns which fail to match filenames during pathname expansion result in an expansion error. force_fignore If set, the suffixes specified by the FIGNORE shell variable cause words to be ignored when performing word completion even if the ignored words are the only possible completions. See SHELL VARIABLES above para ver una descripcion de FIGNORE. Esta opcion esta habilitada de forma predeterminada. globasciiranges If set, range expressions used in pattern matching bracket expressions (see Pattern Matching above) behave as if in the traditional C locale when performing comparisons. That is, the current locale's collating sequence is not taken into account, so b will not collate between A and B, and upper-case and lower-case ASCII characters will collate together. globskipdots If set, pathname expansion will never match the filenames "." and "..", even if the pattern begins with a ".". This option is enabled by default. globstar If set, the pattern ** used in a pathname expansion context will match all files and zero or more directories and subdirectories. If the pattern is followed by a /, only directories and subdirectories match. gnu_errfmt If set, shell error messages are written in the standard GNU error message format. histappend Si esta activo el historial se anade al archivo nombrado segun el valor de la variable HISTFILE cuando la shell acaba, en vez de sobreescribir el archivo. histreedit Si esta activa, y readline se esta utilizando, se le da al usuario la oportunidad de re-editar la sustitucion de historia fallida. histverify Si esta activa, y readline se esta utilizando, los resultados de la sustitucion de historia no se pasan inmediatamente al analizador de la shell. En vez de eso, la linea resultante se carga en el bufer de edicion de readline, permitiendo asi una modificacion posterior. hostcomplete Si esta activa, y readline se esta utilizando, bash intentara terminar de escribir un nombre de equipo anfitrion cuando se este completando una palabra que contenga una @ (consulte Terminacion bajo READLINE anteriormente). above). Esto esta activado por defecto. huponexit Si esta activa, bash enviara una senal SIGHUP a todas las tareas cuando una shell de entrada interactiva finalice. inherit_errexit If set, command substitution inherits the value of the errexit option, instead of unsetting it in the subshell environment. This option is enabled when posix mode is enabled. interactive_comments Si esta activa, permite a una palabra que empiece por # hacer que esa palabra y todos los caracteres restantes de esa linea no sean tenidos en cuenta en una shell interactiva (consulte COMENTARIOS anteriormente). above). Esta opcion esta activada por defecto. lastpipe If set, and job control is not active, the shell runs the last command of a pipeline not executed in the background in the current shell environment. lithist Si esta activa, y la opcion cmdhist tambien lo esta, las ordenes multi-linea se guardan en la historia con saltos de linea empotrados en vez de emplear como separador el punto y coma, donde sea posible. localvar_inherit If set, local variables inherit the value and attributes of a variable of the same name that exists at a previous scope before any new value is assigned. The nameref attribute is not inherited. localvar_unset If set, calling unset on local variables in previous function scopes marks them so subsequent lookups find them unset until that function returns. This is identical to the behavior of unsetting local variables at the current function scope. login_shell La shell define esta opcion si se ha iniciado como una shell de entrada. Consulte LLAMADA mas adelante. above). Este valor no deberia ser modificado. mailwarn Si esta activa, y a un archivo donde bash esta buscando correo nuevo se ha accedido desde la ultima vez que se busco, se muestra el mensaje "The mail in mailfile has been read", o su equivalente en el idioma local, que en espanol seria "El correo en buzon ha sido leido". no_empty_cmd_completion Si esta activa, y readline se esta utilizando, bash no intentara buscar en PATH posibles cadenas para completar si se intenta autocompletar en una linea en blanco. nocaseglob Si esta activa, bash busca concordancias de nombres de archivos sin distincion entre mayusculas y minusculas cuando realice la expansion de nombres de ruta (vea Expansion de nombres de ruta). above). nocasematch Si esta definida, bash buscara concordancias sin distincion entre mayusculas y minusculas ya sea ejecutando las ordenes condicionales case o [[, expansiones de palabra en patrones de sustitucion o durante el filtrado de posibles cadenas en autocompletados programables. noexpand_translation If set, bash encloses the translated results of $"..." quoting in single quotes instead of double quotes. If the string is not translated, this has no effect. nullglob Si esta activa, bash permite que los patrones que no concuerden con ningun archivo (vea Expansion de nombres de ruta arriba) above) se expandan a una cadena vacia en lugar de hacerlo a si mismos. patsub_replacement If set, bash expands occurrences of & in the replacement string of pattern substitution to the text matched by the pattern, as described under Parameter Expansion above. Esta opcion esta activada por defecto. progcomp Si esta definida, las utilidades de autocompletado programable (consulte Autocompletado Programable anteriormente). above) estan activada. Estas opciones estan activadas por defecto. progcomp_alias If set, and programmable completion is enabled, bash treats a command name that doesn't have any completions as a possible alias and attempts alias expansion. If it has an alias, bash attempts programmable completion using the command word resulting from the expanded alias. promptvars Si esta activa, las cadenas de caracteres que sirven de indicadores estan sujetas a expansion de variable y parametro tras ser expandidas como se describio en INDICADORES above. Esta opcion esta activada por defecto. restricted_shell la shell activa esta opcion si se inicia en modo restringido (consulte SHELL RESTRINGIDA mas adelante). below). The value may not be changed. This is not reset when the startup files are executed, allowing the startup files to discover whether or not a shell is restricted. shift_verbose Si esta activa, la orden interna shift muestra un mensaje de error cuando el numero de shift excede al de parametros posicionales. sourcepath Si esta activa, la orden nativa source (.) emplea el valor de PATH para buscar el directorio que contenga el archivo suministrado como argumento. Esta opcion esta activa por omision. varredir_close If set, the shell automatically closes file descriptors assigned using the {varname} redirection syntax (see REDIRECTION above) en lugar de dejarlos abiertos una vez que la orden finalice. xpg_echo If set, the echo builtin expands backslash-escape sequences by default. suspend [-f] Suspend the execution of this shell until it receives a SIGCONT signal. A login shell, or a shell without job control enabled, cannot be suspended; the -f option can be used to override this and force the suspension. The return status is 0 unless the shell is a login shell or job control is not enabled and -f is not supplied. test expr [ expr ] Devuelve un estado de 0 (verdadero) o 1 (falso) dependiendo de la evaluacion de la expresion condicional expr. Cada operador y operando debe ser un argumento separado. Las expresiones se componen de las primarias descritas above under CONDITIONAL EXPRESSIONS. test does not accept any options, nor does it accept and ignore an argument of -- as signifying the end of options. Expressions may be combined using the following operators, listed in decreasing order of precedence. The evaluation depends on the number of arguments; see below. Operator precedence is used when there are five or more arguments. ! expr Verdadero si expr es falsa. ( expr ) Devuelve el valor de expr. Esto puede emplearse para cambiar la precedencia normal de los operadores. expr1 -a expr2 Verdadero si tanto expr1 como expr2 son verdaderos. expr1 -o expr2 Verdadero si uno al menos de expr1 o expr2 es verdadero. test y [ evaluan expresiones condicionales segun un conjunto de reglas basadas en el numero de argumentos. 0 argumentos La expresion es falsa. 1 argumento La expresion es verdad si y solo si el argumento no esta vacio. 2 argumentos Si el primer argumento es !, la expresion es verdad si y solo si el segundo argumento es nulo. Si el primer argumento es uno de los operadores condicionales monarios listados above En EXPRESIONES CONDICIONALES, la expresion es verdadera si el test monario lo es. Si el primer argumento no es un operador condicional monario valido, la expresion es falsa. 3 argumentos The following conditions are applied in the order listed. If the second argument is one of the binary conditional operators listed above under CONDITIONAL EXPRESSIONS, the result of the expression is the result of the binary test using the first and third arguments as operands. The -a and -o operators are considered binary operators when there are three arguments. If the first argument is !, the value is the negation of the two-argument test using the second and third arguments. If the first argument is exactly ( and the third argument is exactly ), the result is the one-argument test of the second argument. Otherwise, the expression is false. 4 argumentos The following conditions are applied in the order listed. If the first argument is !, the result is the negation of the three-argument expression composed of the remaining arguments. the two-argument test using the second and third arguments. If the first argument is exactly ( and the fourth argument is exactly ), the result is the two-argument test of the second and third arguments. Otherwise, the expression is parsed and evaluated according to precedence using the rules listed above. 5 o mas argumentos La expresion se analiza y evalua de acuerdo con la precedencia usando las reglas mencionadas arriba. When used with test or [, the < and > operators sort lexicographically using ASCII ordering. times Muestra los tiempos acumulados de usuario y sistema para la shell y para procesos ejecutados desde el. El estado de retorno es 0. trap [-lp] [[arg] nombre-senal ...] The command arg is to be read and executed when the shell receives signal(s) sigspec. If arg is absent (and there is a single sigspec) or -, each specified signal is reset to its original disposition (the value it had upon entrance to the shell). If arg is the null string the signal specified by each sigspec is ignored by the shell and by the commands it invokes. If arg is not present and -p has been supplied, then the trap commands associated with each sigspec are displayed. If no arguments are supplied or if only -p is given, trap prints the list of commands associated with each signal. The -l option causes the shell to print a list of signal names and their corresponding numbers. Each sigspec is either a signal name defined in , or a signal number. Signal names are case insensitive and the SIG prefix is optional. If a sigspec is EXIT (0) the command arg is executed on exit from the shell. If a sigspec is DEBUG, the command arg is executed before every simple command, for command, case command, select command, every arithmetic for command, and before the first command executes in a shell function (see SHELL GRAMMAR above). Refer to the description of the extdebug option to the shopt builtin for details of its effect on the DEBUG trap. If a sigspec is RETURN, the command arg is executed each time a shell function or a script executed with the . or source builtins finishes executing. If a sigspec is ERR, the command arg is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, subject to the following conditions. The ERR trap is not executed if the failed command is part of the command list immediately following a while or until keyword, part of the test in an if statement, part of a command executed in a && or || list except the command following the final && or ||, any command in a pipeline but the last, or if the command's return value is being inverted using !. These are the same conditions obeyed by the errexit (-e) option. Signals ignored upon entry to the shell cannot be trapped or reset. Trapped signals that are not being ignored are reset to their original values in a subshell or subshell environment when one is created. The return status is false if any sigspec is invalid; otherwise trap returns true. type [-aftpP] nombre [nombre ...] Sin opciones, indica como sera interpretado cada nombre si se usa como un nombre de orden. Si se emplea la opcion -t, type muestra una de las siguientes cadenas de caracteres: alias, keyword, function, builtin, o file si nombre es respectivamente un alias, una palabra reservada de la shell, una funcion, una orden interna incorporada en la shell, o un archivo ejecutable de disco. Si el nombre no se encuentra, no se muestra nada, y se devuelve un estado de salida de `falso'. Si se emplea la opcion -p, type devuelve o bien el nombre del archivo de disco que se ejecutaria si se especificara nombre como un nombre de orden, o bien nada si ``type -t name'' No devolveria archivo. La opcion -P obliga a RUTA a buscar cada nombre aunque ``type -t name'' would not return file. If a command is hashed, -p and -P print the hashed value, which is not necessarily the file that appears first in PATH. If the -a option is used, type prints all of the places that contain an executable named name. This includes aliases and functions, if and only if the -p option is not also used. The table of hashed commands is not consulted when using -a. The -f option suppresses shell function lookup, as with the command builtin. type returns true if all of the arguments are found, false if any are not found. ulimit [-HS] -a ulimit [-HS] [-bcdefiklmnpqrstuvxPRT [limite]] Proporciona control sobre los recursos disponibles para la shell y los procesos iniciados por ela, en los sistemas que lo permitesn. Las opciones -H y -S especifican que el limite absoluto o flexible se establece para el recurso determinado. Un usuario que no sea administrador no puede aumentar un limite absoluto una vez establecido; un limite flexible si puede aumentarse hasta el valor del limite absoluto. Si no se especifica ni ninguna de estas opciones, se establecen tanto el limite flexible como el absoluto. El valor del limite puede ser un numero en la unidad especificada para el recurso o uno de los valores especiales hard , soft o unlimited , que representan el limite absoluto, el flexible y sin limite actuales, respectivamente. Si se omite el limite , se muestra el valor actual del limite flexible del recurso, salvo que se proporcione la opcion -H . Cuando se especifica mas de un recurso, el nombre del limite y la unidad, si corresponde, se muestran antes del valor. Otras opciones se interpretan del siguiente modo: -a Se informa de todos los limites actuales; no se configura ninguno -b El tamano maximo de buffer del conector -c El tamano maximo de archivo de volcados de memoria (core) -d El tamano maximo del segmento de datos de un proceso -e La maxima prioridad de ejecucion ("nice") -f El tamano maximo de los archivos creados por la shell y sus descendientes -i El numero maximo de senales pendientes -k El numero maxima de kqueues que se pueden acomodar -l El tamano maximo que puede ser bloqueado en memoria -m El tamano maximo de memoria residente (la mayoria de sistemas no tiene en cuenta este valor) -n EL numero maximo de descriptores de archivos abiertos (la mayoria de sistemas no permiten establecer este valor) -p El tamano de una tuberia en bloques de 512 B (esto puede no estar establecido) -q El numero maximo de bytes en la cola de mensajes POSIX -r La maxima prioridad de ejeucion en tiempo real. -s El tamano maximo de pila -t La maxima cantidad de tiempo de CPU en segundos -u El numero maximo de procesos disponibles para un solo usuario -v La maxima cantidad de memoria virtual disponible para la shell y, en algunos sistemas, para sus descendientes. -x La cantidad maxima de bloqueos de archivo -P The maximum number of pseudoterminals -R El tiempo maximo, en microsegundos, que puede ejecutarse un proceso en tiempo real antes de bloquearse. -T La cantidad maxima de hilos If limit is given, and the -a option is not used, limit is the new value of the specified resource. If no option is given, then -f is assumed. Values are in 1024-byte increments, except for -t, which is in seconds; -R, which is in microseconds; -p, which is in units of 512-byte blocks; -P, -T, -b, -k, -n, and -u, which are unscaled values; and, when in posix mode, -c and -f, which are in 512-byte increments. The return status is 0 unless an invalid option or argument is supplied, or an error occurs while setting a new limit. umask [-p] [-S] [modo] La mascara de creacion de archivos del usuario se establece a modo. Si modo empieza con un digito, se interpreta como un numero octal; si no, se interpreta como un modo simbolico similar al aceptado por chmod(1). Si modo se omite, se muestra el valor actual de la mascara. La opcion -S hace que la mascara se imprima en forma simbolica; la salida predeterminada es como un numero octal. Si se da la opcion -p y modo se omite, la salida es de tal forma que puede reutilizarse como entrada. El estado de retorno es 0 si el modo se cambio exitosamente o si no se dio el argumento modo, y `falso' en otra circunstancia. unalias [-a] [nombre ...] Quita cada nombre de la lista de alias definidos. Si se da la opcion -a, se quitan todas las definiciones de alias. El estado de salida es `verdad' a menos que un nombre dado no sea un alias definido. unset [-fv] [-n] [nombre ...] For each name, remove the corresponding variable or function. If the -v option is given, each name refers to a shell variable, and that variable is removed. Read-only variables may not be unset. If -f is specified, each name refers to a shell function, and the function definition is removed. If the -n option is supplied, and name is a variable with the nameref attribute, name will be unset rather than the variable it references. -n has no effect if the -f option is supplied. If no options are supplied, each name refers to a variable; if there is no variable by that name, a function with that name, if any, is unset. Each unset variable or function is removed from the environment passed to subsequent commands. If any of BASH_ALIASES, BASH_ARGV0, BASH_CMDS, BASH_COMMAND, BASH_SUBSHELL, BASHPID, COMP_WORDBREAKS, DIRSTACK, EPOCHREALTIME, EPOCHSECONDS, FUNCNAME, GROUPS, HISTCMD, LINENO, RANDOM, SECONDS, or SRANDOM are unset, they lose their special properties, even if they are subsequently reset. The exit status is true unless a name is readonly or may not be unset. wait [-fn] [-p nombrevariable] [id ...] Wait for each specified child process and return its termination status. Each id may be a process ID or a job specification; if a job spec is given, all processes in that job's pipeline are waited for. If id is not given, wait waits for all running background jobs and the last-executed process substitution, if its process id is the same as $!, and the return status is zero. If the -n option is supplied, wait waits for a single job from the list of ids or, if no ids are supplied, any job, to complete and returns its exit status. If none of the supplied arguments is a child of the shell, or if no arguments are supplied and the shell has no unwaited-for children, the exit status is 127. If the -p option is supplied, the process or job identifier of the job for which the exit status is returned is assigned to the variable varname named by the option argument. The variable will be unset initially, before any assignment. This is useful only when the -n option is supplied. Supplying the -f option, when job control is enabled, forces wait to wait for id to terminate before returning its status, instead of returning when it changes status. If id specifies a non-existent process or job, the return status is 127. If wait is interrupted by a signal, the return status will be greater than 128, as described under SIGNALS above. De otro modo, el estado devuelto es el estado de salida del ultimo proceso o tarea por la que se esta esperando. MODO DE COMPATIBILIDAD DE LA SHELL En Bash-4.0 se introdujo el concepto de nivel de compatibilidad de la shell definido como una serie de opciones de la orden nativa shopt (compat31, compat32, compat40, compat41 y asi sucesivamente). Estas opciones son mutuamente excluyentes ya que solo puede haber un nivel de compatibilidad a la vez. Este nivel de compatibilidad permite a los usuarios seleccionar la forma de actuar de alguna version anterior -incompatible con la actual- mientras adapta los scripts para que puedan ejecutarse en la version actual. Solo pretende ser una solucion temporal. En esta seccion no se mencionan funciones estandares en una determinada version. Por ejemplo: al indicar compat32 provocara que al entrecomillar el rhs del operador de una expresion regular tambien entrecomilla caracteres especiales de expresion regular en la palabra, siendo este el comportamiento por defecto de las versiones 3.2 y superiores. If a user enables, say, compat32, it may affect the behavior of other compatibility levels up to and including the current compatibility level. The idea is that each compatibility level controls behavior that changed in that version of bash, but that behavior may have been present in earlier versions. For instance, the change to use locale-based comparisons with the [[ command came in bash-4.1, and earlier versions used ASCII-based comparisons, so enabling compat32 will enable ASCII-based comparisons as well. That granularity may not be sufficient for all uses, and as a result users should employ compatibility levels carefully. Read the documentation for a particular feature to find out the current behavior. En Bash-4.3 se introdujo una nueva variable de la shell: BASH_COMPAT. El valor asignado a esta variable (un numero decimal como 4.2 o un entero que corresponderia a la opcion compatNN como por ejemplo: 42) determinara el nivel de compatibilidad. A partir de la version 4.4, Bash comenzo a extinguir los antiguos niveles de compatibilidad. En algun momento, se eliminaran empleandose BASH_COMPAT en su lugar. Bash-5.0 es la ultima version que incluye una opcion de shopt para la version anterior. A partir de la version Bash-5.0, sera necesario emplear BASH_COMPAT. The following table describes the behavior changes controlled by each compatibility level setting. The compatNN tag is used as shorthand for setting the compatibility level to NN using one of the following mechanisms. For versions prior to bash-5.0, the compatibility level may be set using the corresponding compatNN shopt option. For bash-4.3 and later versions, the BASH_COMPAT variable is preferred, and it is required for bash-5.1 and later versions. compat31 o quoting the rhs of the [[ command's regexp matching operator (=~) has no special effect compat32 o interrupting a command list such as "a ; b ; c" causes the execution of the next command in the list (in bash-4.0 and later versions, the shell acts as if it received the interrupt, so interrupting one command in a list aborts the execution of the entire list) compat40 o the < and > operators to the [[ command do not consider the current locale when comparing strings; they use ASCII ordering. Bash versions prior to bash-4.1 use ASCII collation and strcmp(3); bash-4.1 and later use the current locale's collation sequence and strcoll(3). compat41 o in posix mode, time may be followed by options and still be recognized as a reserved word (this is POSIX interpretation 267) o in posix mode, the parser requires that an even number of single quotes occur in the word portion of a double-quoted parameter expansion and treats them specially, so that characters within the single quotes are considered quoted (this is POSIX interpretation 221) compat42 o the replacement string in double-quoted pattern substitution does not undergo quote removal, as it does in versions after bash-4.2 o in posix mode, single quotes are considered special when expanding the word portion of a double-quoted parameter expansion and can be used to quote a closing brace or other special character (this is part of POSIX interpretation 221); in later versions, single quotes are not special within double-quoted word expansions compat43 o no emite un mensaje de advertencia si se intenta emplear un grupo entrecomillado como argumento de 'declare' (declare -a foo='(1 2)'). Las versiones posteriores emiten dicho mensaje advirtiendo que esta en desuso. o los errores en la expansion de palabras no se consideran fatales para que la orden no se ejecute incluso en modo posix (por defecto, se emite un error fatal haciendo que la shell pare su ejecucion). o when executing a shell function, the loop state (while/until/etc.) is not reset, so break or continue in that function will break or continue loops in the calling context. Bash-4.4 and later reset the loop state to prevent this compat44 o la shell define los valores de BASH_ARGV y BASH_ARGC para que puedan expandirse en los parametros posicionales aunque no este activo el modo ampliado de depuracion. o una subshell hereda los bucles del contexto de su antecesor, asi break o continue hacen terminar su ejecucion. En la version 5.0 y posteriores, se reinicia el estado del bucle para evitarlo. o las asignaciones de variables que precenden ordenes nativas como export y readonly que definen atributos siguen influyendo en las variables con el mismo nombre en el entorno en que se invocaron aunque la shell no este en modo posix. compat50 o Bash-5.1 changed the way $RANDOM is generated to introduce slightly more randomness. If the shell compatibility level is set to 50 or lower, it reverts to the method from bash-5.0 and previous versions, so seeding the random number generator by assigning a value to RANDOM will produce the same sequence as in bash-5.0 o If the command hash table is empty, bash versions prior to bash-5.1 printed an informational message to that effect, even when producing output that can be reused as input. Bash-5.1 suppresses that message when the -l option is supplied. compat51 o La orden nativa unset gestiona de modo distinto los intento de desactivar los subindices de un vector @ y * segun se trate de un vector asociativo o indexado, tambien difiere respecto de anteriores versiones. SHELL RESTRINGIDA Si bash se inicia con el nombre rbash, o se da la opcion -r en la llamada, la shell se convierte en restringido. Una shell restringida se emplea para establecer un entorno mas controlado que el que la shell estandar proporciona. Se comporta de forma identica a bash con la excepcion de que lo siguiente no esta permitido o no se realiza: o cambiar de directorio con cd o define o elimina los valores de SHELL, PATH, HISTFILE, ENV, o BASH_ENV o especificar nombres de ordenes que contengan / o especificar un nombre de archivo que contenga al menos una / como un argumento de la orden interna . (source) o especificar un nombre de archivo que contenga al menos una barra como argumento de la orden interna history o especificar un nombre de archivo que contenga al menos una barra como argumento de la orden interna hash o importar definiciones de funciones desde el entorno de la shell en el arranque o analizar el valor de SHELLOPTS desde el entorno de la shell en el arranque o redirigir la salida usando los operadores de redireccion >, >|, <>, >&, &>, y >> o utiliza la orden nativa exec para reemplazar la shell por otro programa o anadir o eliminar ordenes incorporadas con las opciones -f o -d de la orden interna enable. o utilizar la orden interna enable para activar ordenes internas de la shell inactivas. o dar la opcion -p a la orden interna command. o desactivar el modo restringido con set +r o shopt -u restricted_shell. Estas restricciones entran en vigor despues de que se lean los archivos de arranque que hubiera. When a command that is found to be a shell script is executed (see COMMAND EXECUTION above), rbash desactiva todas las restricciones en la shell lanzado para ejecutar el guion. VEASE TAMBIEN Bash Reference Manual, Brian Fox y Chet Ramey The Gnu Readline Library (La Biblioteca Readline de GNU), Brian Fox & Chet Ramey The Gnu History Library (La Biblioteca de Historia de GNU), Brian Fox & Chet Ramey Portable Operating System Interface (POSIX) Part 2: Shell and Utilities (Interfaz para Sistemas Operativos Portables (POSIX) Parte 2: Shell y Utilidades), IEEE -- http://pubs.opengroup.org/onlinepubs/9699919799/ http://tiswww.case.edu/~chet/bash/POSIX -- descripcion del modo posix sh(1), ksh(1), csh(1) emacs(1), vi(1) readline(3) ARCHIVOS /bin/bash La imagen ejecutable de bash /etc/profile El archivo de inicio general, leido en shells de inicio ~/.bash_profile El archivo de inicio personal, leido en shells de inicio ~/.bashrc El archivo individual de inicio para shells interactivos ~/.bash_logout El archivo de limpieza de inicio personal, ejecutado cada vez que termina una shell de inicio ~/.bash_history Valor por defecto de HISTFILE, el archivo donde bash guarda el historial de ordenes ~/.inputrc El archivo de inicio individual de readline AUTORES Brian Fox, Free Software Foundation bfox@gnu.org Chet Ramey, Case Western Reserve University chet.ramey@case.edu INFORMES DE FALLOS Si Ud. encuentra un fallo en bash, deberia informar de ello. Pero primero deberia asegurarse de que realmente es un fallo, y de que aparece en la version mas reciente de bash. Dicha version siempre esta disponible en ftp://ftp.gnu.org/pub/gnu/bash/ y en http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz. Una vez que Ud. ha determinado que realmente existe un fallo, utilice la orden bashbug para enviar el informe correspondiente. Si Ud. ha encontrado como corregirlo, !se le anima a que nos mande tambien la correccion! Las sugerencias y los informes de fallos `filosoficos' se pueden enviar por correo electronico a bug-bash@gnu.org o se pueden publicar en el grupo de discusiones de Usenet gnu.bash.bug. TODOS los informes de fallos deben incluir: El numero de version de bash El tipo de equipo (hardware) y el sistema operativo El compilador que se empleo para compilarlo Una descripcion del comportamiento del fallo Un breve script o 'receta' para reproducir el fallo bashbug inserta automaticamente los tres primeros puntos en la plantilla que proporciona para escribir el informe del fallo. Los comentarios e informes de fallos que conciernan a esta pagina de manual deben dirigirse a chet.ramey@case.edu. ERRORES Es demasiado grande y demasiado lento. Hay algunas sutiles diferencias entre bash y versiones tradicionales del shell de Bourne sh, mayormente debidas a la especificacion POSIX. Los alias son confusos en algunos casos. Las ordenes nativas de la shell y las funciones no son interrumpibles/reiniciables. Las ordenes compuestas y las secuencias de ordenes de la forma `a ; b ; c' no se manejan de forma muy elegante cuando se intenta suspender el proceso. Cuando se detiene un proceso, la shell ejecuta inmediatamente la siguiente orden de la secuencia. Para remediar esto es suficiente poner la secuencia de ordenes entre parentesis; asi la forzamos a ejecutarse en una subshell, que puede detenerse como una unidad. Las variables de tipo vector no pueden (de momento) exportarse. Solo puede haber un coproceso activo a la vez. TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Gerardo Aburruzaga Garcia y Marcos Fouces Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . GNU Bash 5.2 19 de Septiembre de 2022 BASH(1)