BASH(1) BASH(1)
bash - GNU Bourne-Again SHell (el Shell de Bourne otra vez, de GNU)
bash [opciones] [fichero]
Bash es Copyright (C) 1989, 1991, 1993, 1995, 1996 por la Free Software
Foundation, Inc.
Bash es un intrprete de un lenguaje de rdenes compatible con sh que
ejecuta rdenes ledas desde la entrada estndar o desde un fichero. Bash
tambin incorpora caractersticas tiles tomadas de los shells de Korn y C
(ksh y csh).
Bash est pensado con la intencin de ser una implementacin conforme con
la especificacin POSIX de Shell y Herramientas, de la IEEE (Grupo de
Trabajo 1003.2 de la IEEE).
Adems de las opciones de un solo carcter documentadas en la descripcin
de la orden interna set, bash interpreta las siguientes opciones cuando
es llamado:
-c cadena Si la opcin -c est presente, entonces las rdenes se leen de
cadena. Si hay argumentos tras la cadena, se asignan a los
parmetros posicionales, empezando por $0.
-r Si la opcin -r est presente, entonces el shell se vuelve
restringido (vea SHELL RESTRINGIDO ms abajo).
-i Si la opcin -i est presente, el shell es interactivo.
-s Si la opcin -s est presente, o si no quedan argumentos tras
el procesado de las opciones, entonces las rdenes se leen
desde la entrada estndar. Esta opcin permite definir los
parmetros posicionales cuando se llama a un shell interac-
tivo.
-D Se muestra en la salida estndar una lista de cadenas de car-
acteres entrecomilladas precedidas por $. Estas cadenas son
las que estn sujetas a traduccin cuando la localizacin en
curso no es C ni POSIX. Esta opcin implica tambin la -n; no
se ejecuta ninguna orden.
-- Un -- seala el fin de las opciones e inhabilita cualquier
posterior procesado de opciones. Cualesquier argumentos tras
-- se tratan como nombres de fichero y argumentos. Un argu-
mento - es equivalente a --.
Bash tambin interpreta una variedad de opciones multi-carcter. Estas
opciones deben aparecer en la lnea de rdenes antes de las opciones de
un solo carcter para que puedan ser reconocidas.
--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 modo de empleo en la salida estndar y
acaba con xito.
--login
Hace que bash acte como si se le hubiera llamado como un shell
de entrada (vea LLAMADA ms abajo).
--noediting
No utiliza la biblioteca de GNU readline para leer lneas de
rdenes en 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 omisin, bash lee estos
ficheros cuando se le llama como un shell de entrada (vea LLA-
MADA ms adelante).
--norc No lee ni ejecuta el fichero de inicio personal ~/.bashrc si el
shell es interactivo. Esta opcin est activa de forma predeter-
minada si el shell se llama como sh.
--posix
Cambia el comportamiento de bash donde la operacin normal
difiera del estndar POSIX 1003.2, de forma que concuerde con
ste.
--rcfile fichero
Ejecuta rdenes desde fichero en vez de desde el fichero de ini-
cio personal estndar ~/.bashrc si el shell es interactivo (vea
LLAMADA ms abajo).
--restricted
El shell se vuelve restringido (vea SHELL RESTRINGIDO ms abajo).
--verbose
Equivale a -v.
--version
Muestra informacin en la salida estndar sobre la versin de esta
instanciacin de bash y acaba con xito.
Si quedan argumentos tras el procesado de las opciones, y no se han
dado ni la opcin -c ni la -s, se supone que el primer argumento es el
nombre de un fichero que contiene rdenes del shell. Si bash se llama
de esta manera, $0 se define con el nombre del fichero, y los parmetros
posicionales se definen con los restantes argumentos. Bash lee y eje-
cuta rdenes de este fichero, luego acaba. El estado de salida de bash
es el de la ltima orden ejecutada en el guin. Si no se ejecuta ninguna
orden, el estado de salida es 0.
Un shell de entrada es aqul cuyo primer carcter del argumento cero es
un -, o uno que ha sido llamado con la opcin --login.
Un shell interactivo es uno cuya entrada y salida estndares estn conec-
tadas a terminales (segn determina isatty(3)), o uno que ha sido lla-
mado con la opcin -i. Se define PS1 y $- incluye i si bash es interac-
tivo, permitiendo as a un guin del shell o a un fichero de arranque el
comprobar este estado.
Los siguientes prrafos describen cmo bash ejecuta sus ficheros de
arranque. Si cualquiera de los ficheros existe pero no puede leerse,
bash informa de un error. Las tildes de la se expanden en nombres de
ficheros como se describe ms abajo en Expansin de la tilde en la seccin
EXPANSIN.
Cuando bash se llama como un shell de entrada interactivo, primero lee
y ejecuta rdenes desde el fichero /etc/profile, si es que existe. Tras
leer ese fichero, busca ~/.bash_profile, ~/.bash_login, y ~/.profile,
en ese orden, y lee y ejecuta rdenes del primero de ellos que exista y
se pueda leer. La opcin --noprofile puede emplearse cuando se llame al
shell para inhibir este comportamiento.
Cuando un shell de entrada termina, bash lee y ejecuta rdenes desde el
fichero ~/.bash_logout, si existe.
Cuando se arranca un shell interactivo que no es de entrada, bash lee y
ejecuta rdenes desde ~/.bashrc, si es que existe. Esto puede evitarse
mediante la opcin --norc. La opcin --rcfile fichero forzar a bash a
leer y ejecutar rdenes desde fichero en vez de ~/.bashrc.
Cuando bash se arranque de forma no interactiva, por ejemplo para
ejecutar un guin del shell, busca la variable BASH_ENV en el entorno,
expande su valor si est 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 rdenes:
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 llama con el nombre sh, intenta imitar el comportamiento de
arranque de versiones histricas de sh tanto como sea posible, pero sin
salirse del estndar POSIX. Cuando se llama como un shell interactivo
de entrada, primero intenta leer y ejecutar rdenes desde /etc/profile y
~/.profile, en ese orden. La opcin --noprofile puede emplearse para
inhibir este comportamiento. Cuando se llama como un shell interactivo
con el nombre sh, bash busca la variable ENV, expande su valor si est
definida, y emplea el valor expandido como el nombre de un fichero a
leer y ejecutar. Como un shell llamado como sh no intenta leer y eje-
cutar rdenes desde cualquier otro fichero de arranque, la opcin
--rcfile no tiene efecto. Un shell no interactivo llamado con el nom-
bre sh no intenta leer ningn fichero de arranque. Cuando se llama como
sh, bash entra en modo posix despus de leer los ficheros de arranque.
Cuando bash se arranca en modo posix, como ocurre cuando se da la opcin
de lnea de rdenes --posix, sigue el estndar POSIX para los ficheros de
arranque. En este modo, los shells interactivos expanden la variable
ENV y se leen y ejecutan rdenes desde el fichero cuyo nombre es el
valor expandido de dicha variable. No se lee ningn otro fichero de
arranque.
Bash intenta determinar cundo est siendo llamado por el demonio de
shell remoto, usualmente rshd. Si bash determina que est siendo ejecu-
tado por rshd, lee y ejecuta rdenes desde ~/.bashrc, si tal fichero
existe y se puede leer. Esto no lo har si se le llama con el nombre
sh. La opcin --norc puede emplearse para inhibir este comportamiento,
y la opcin --rcfile puede utilizarse para forzar la lectura de otro
fichero, pero rshd no llama generalmente al shell con estas opciones ni
permite que se den.
Las siguientes definiciones se usan a travs del resto de este docu-
mento.
blanco Un espacio en blanco o tabulacin (tab).
palabra
Una secuencia de caracteres considerados por el shell como una
sola unidad. Tambin se conoce como un lexema (token).
nombre Una palabra que consiste solamente en caracteres alfanumricos y
subrayados, y comienza con un carcter alfabtico o un subrayado.
Tambin se llama identificador.
metacarcter
Un carcter que, cuando no est entrecomillado, separa palabras.
Uno de los siguientes:
| & ; ( ) < > espacio tab
operador de control
Un lexema que realiza una funcin de control. Es uno de los sigu-
ientes smbolos:
|| & && ; ;; ( ) | <nueva-lnea>
Palabras reservadas son palabras que tienen un significado especial
para el shell. Las siguientes palabras se reconocen como reservadas
cuando no van entrecomilladas y, o son la primera palabra de una orden
simple (vea GRAMTICA DEL SHELL ms abajo) o la tercera palabra de una
orden case o for:
! case do done elif else esac fi for function if in select then until
while { } time [[ ]]
rdenes simples
Una orden simple es una secuencia de asignaciones opcionales de vari-
ables seguida por palabras separadas por blancos y redirecciones, y
terminadas por un operador de control. La primera palabra especifica la
orden a ser ejecutada. Las palabras restantes se pasan como argumentos
a la orden pedida.
El valor devuelto de una orden simple es su estado de salida, 128+n si
la orden ha terminado debido a la seal n.
Tuberas
Una tubera es una secuencia de una o ms rdenes separadas por el carcter
|. El formato de una tubera es:
[time [-p]] [ ! ] orden [ | orden2 ... ]
La salida estndar de orden se conecta a la entrada estndar de orden2.
Esta conexin se realiza antes que cualquier redireccin especificada por
la orden (vea REDIRECCIN ms abajo).
Si la palabra reservada ! precede una tubera, el estado de salida de
sta es el NO lgico del de la ltima orden. De otro modo, el estado de la
tubera es el de salida de la ltima orden. El shell espera que todas
las rdenes de la tubera terminen antes de devolver un valor.
Si la palabra reservada time precede una tubera, se informa del tiempo
transcurrido, as como del de usuario y sistema, consumido en la eje-
cucin de la tubera, cuando sta termina. La opcin -p cambia el formato
de salida al especificado por POSIX. La variable TIMEFORMAT puede
definirse como una cadena de caracteres de formato que especifique cmo
la informacin de tiempos debera mostrarse; vea la descripcin de TIME-
FORMAT bajo Variables del Shell ms abajo.
Cada orden en una tubera se ejecuta como un proceso separado (esto es,
en un subshell).
Listas
Una lista es una secuencia de una o ms tuberas separadas por uno de los
operadores ;, &, &&, o ||, y terminada opcionalmente por uno de ;, &, o
<nueva-lnea>.
De estos operadores de listas, && y || tienen igual precedencia, segui-
dos por ; y &, que tienen igual precedencia.
Si una orden se termina mediante el operador de control &, el shell
ejecuta la orden en segundo plano en un subshell. El shell no espera
que la orden acabe, y el estado devuelto es 0. Las rdenes separadas por
un ; se ejecutan secuencialmente; el shell espera que cada orden ter-
mine, por orden. El estado devuelto es el estado de salida de la ltima
orden ejecutada.
Los operadores de control && y || denotan listas Y (AND) y O (OR)
respectivamente. Una lista Y tiene la forma
orden && orden2
orden2 se ejecuta si y slo si orden devuelve un estado de salida 0.
Una lista O tiene la forma
orden || orden2
orden2 se ejecuta si y slo si orden devuelve un estado de salida dis-
tinto de cero. El estado de salida de las listas Y y O es el de la
ltima orden ejecutada en la lista.
rdenes compuestas
Una orden compuesta es una de las siguientes:
(lista)
lista se ejecuta en un subshell. Despus de que la orden se com-
pleta, las asignaciones a variables y rdenes internas que afec-
taran al entorno del shell no permanecen en efecto. El estado de
retorno es el de salida de lista.
{ lista; }
lista se ejecuta simplemente en el entorno del shell en curso.
lista debe terminarse con un salto de lnea o un punto y coma.
Esto se conoce como una orden de grupo. El estado de retorno es
el de salida de lista.
((expresin))
La expresin se evala de acuerdo a las reglas descritas abajo
bajo la seccin EVALUACIN ARITMTICA. Si el valor de la expresin
es distinto de cero, el estado de retorno es 0; de otro modo el
estado de retorno es 1. Esto es equivalente exactamente a let
"expresin".
[[ expresin ]]
Devuelve un estado de 0 1 dependiendo de la evaluacin de la
expresin condicional expresin. Las expresiones se componen de
las primarias descritas adelante bajo EXPRESIONES CONDICIONALES.
No tienen lugar divisin de palabras ni expansin de nombres de
camino en las palabras entre el [[ y el ]]; s se realizan la
expansin de tilde, expansin de parmetros y variables, expansin
aritmtica, sustitucin de orden, sustitucin de proceso y elimi-
nacin de comillas.
Cuando se emplean los operadores == y !=, la cadena a la derecha
del operador se considera un patrn y se hace concordar de
acuerdo a las reglas descritas ms adelante bajo el epgrafe Con-
cordancia de patrones. El valor devuelto es 0 si la cadena con-
cuerda o no concuerda con el patrn, respectivamente, y 1 en otro
caso. Cualquier parte del patrn puede entrecomillarse para
forzar la concordancia como una cadena de caracteres pura.
Las expresiones pueden combinarse mediante los siguientes oper-
adores, listados en orden decreciente de precedencia:
( expresin )
Devuelve el valor de expresin. Esto puede emplearse para
cambiar la precedencia normal de los operadores.
! expresin
Verdad si expresin es falsa.
expresin1 && expresin2
Verdad si ambas expresin1 y expresin2 son verdaderas.
expresin1 || expresin2
Verdad si una al menos de expresin1 o expresin2 es ver-
dad.
Los operadores && y || no ejecutan expresin2 si el valor de expresin1
es suficiente para determinar el valor de retorno de la expresin condi-
cional entera.
for nombre [ in palabra; ] do lista ; done
La lista de palabras que va detrs de in se expande, generando
una lista de elementos. La variable nombre se define como cada
elemento de la lista en cada iteracin, y lista se ejecuta cada
vez. Si la palabra de in se omite, la orden for ejecuta lista
una vez para cada parmetro posicional que est definido (vea
PARMETROS ms abajo). El estado de retorno es el de salida de la
ltima orden que se ejecuta. Si la expansin de los elementos
despus del in resulta en una lista vaca, no se ejecuta ninguna
orden y el estado de salida es 0.
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 mues-
tra en la salida estndar de errores, cada una precedida por un
nmero. Si la palabra del in se omite, se muestran los parmetros
posicionales (vea PARMETROS ms abajo). Entonces se muestra el
indicador PS3 y se lee una lnea desde la entrada estndar. Si la
lnea consiste en un nmero correspondiente a una de las palabras
mostradas, entonces el valor de nombre se pone a esa palabra. Si
la lnea est vaca, las palabras y el indicador se muestran de
nuevo. Si se lee EOF, la orden se completa. Cualquier otro valor
leda hace que nombre se ponga a un valor vaco. La lnea leda se
guarda en la variable REPLY. La lista se ejecuta tras cada
seleccin hasta que se ejecute una orden break o return. El
estado de salida de select es el de la ltima orden ejecutada en
lista, o cero si no se ha ejecutado ninguna orden.
case palabra in [ ( patrn [ | patrn ] ... ) lista ;; ] ... esac
Una orden case expande primero palabra, e intenta hacerla con-
cordar contra cada patrn por turnos, empleando las mismas reglas
de concordancia que para la expansin de nombres de caminos (vea
Expansin de nombre de camino ms abajo). Cuando se encuentre una
concordancia, se ejecuta la lista correspondiente. Tras la
primera concordancia, no se intentan ms. El estado de salida es
cero si no concuerda ningn patrn. De otro modo, es el estado de
salida de la ltima 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 eje-
cuta 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 est presente. El estado de salida es el
de la ltima orden ejecutada, o cero si ninguna condicin fue ver-
dadera.
while lista; do lista; done
until lista; do lista; done
La orden while ejecuta continuamente la lista do siempre que la
ltima orden de lista devuelva un estado de salida cero. La orden
until es idntica a la while, excepto en que la comprobacin es al
revs; la lista do se ejecuta mientras que la ltima orden en
lista devuelva un estado de salida distinto de cero. El estado
de salida de las rdenes while y until es el de la ltima orden de
la lista do ejecutada, o cero si no se ejecut ninguna orden.
[ function ] nombre () { lista; }
Esto define una funcin llamada nombre. El cuerpo de la funcin es
la lista de rdenes entre { y } . Esta lista se ejecuta cada vez
que se especifica nombre como el nombre de una orden simple. El
estado de salida de una funcin es el de la ltima orden ejecutada
en el cuerpo. (Vea FUNCIONES ms abajo.)
En un shell no interactivo, o en uno interactivo en el que la opcin
interactive_comments de la orden interna shopt est activa (vea RDENES
INCORPORADAS DEL SHELL ms abajo), una palabra que empiece por # hace
que esa palabra y todos los caracteres que queden en esa lnea no sean
tenidos en cuenta. Un shell interactivo sin la opcin interactive_com-
ments habilitada, no admite comentarios. La opcin interactive_comments
est activa de forma predeterminada en shells interactivos.
El entrecomillado se emplea para quitar el significado especial para el
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 expansin de
parmetros.
Cada uno de los metacaracteres listados a continuacin bajo el epgrafe
DEFINICIONES tiene un significado especial para el shell y deben ser
protegidos o entrecomillados si quieren representarse a s mismos. Hay 3
mecanismos de proteccin: el carcter de escape, comillas simples, y
comillas dobles.
Una barra inclinada inversa no entrecomillada (\) es el carcter de
escape. Preserva el valor literal del siguiente carcter que lo acom-
paa, con la excepcin de <nueva-lnea>. Si aparece un par \<nueva-lnea>
y la barra invertida no est ella misma entre comillas, el \<nueva-lnea>
se trata como una continuacin de linea (esto es, se quita del flujo de
entrada y no se tiene efectivamente en cuenta).
Encerrar caracteres entre apstrofos preserva el valor literal de cada
carcter 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 excepcin de $,
`, y \. Los caracteres $ y ` mantienen sus significados especiales
dentro de comillas dobles. La barra invertida mantiene su significado
especial solamente cuando est seguida por uno de los siguientes carac-
teres: $, `, "", \, o <nueva-lnea>. Una comilla doble puede ser entre-
comillada entre otras comillas dobles precedindola de una barra inver-
tida.
Los parmetros especiales * y @ tienen un significado especial cuando
estn entre comillas dobles (vea PARMETROS ms abajo).
Las palabras de la forma $'cadena' se tratan de forma especial. La pal-
abra se expanda a cadena, con los caracteres protegidos par barra
invertida reemplazados segn especifica el estndar ANSI/ISO de C. Las
secuencias de escape con barra invertida, si estn presentes, se descod-
ifican como sigue:
\a alerta (campana)
\b espacio-atrs
\e un carcter de escape (ESC)
\f nueva pgina
\n nueva linea
\r retorno de carro
\t tabulacin horizontal
\v tabulacin vertical
\\ barra invertida
\nnn el carcter cuyo cdigo es el valor octal nnn (de uno a
tres dgitos)
\xnnn el carcter cuyo cdigo es el valor hexadecimal nnn
El resultado traducido es entrecomillado con comillas simples, como si
el signo de dlar no hubiera estado presente.
Una cadena entre comillas dobles precedida por un signo de dlar ($) har
que la cadena se traduzca segn la localizacin en curso. Si sta es C o
POSIX, el signo de dlar no se tiene en cuenta. Si la cadena se traduce
y reemplaza, el reemplazo se entrecomilla con comillas dobles.
Un parmetro es una entidad que almacena valores. Puede ser un nombre,
un nmero, o uno de los caracteres especiales listados a continuacin
bajo el epgrafe Parmetros especiales. En lo que se refiere al shell,
una variable es un parmetro identificado por un nombre.
Un parmetro est definido si se le ha asignado un valor. La cadena vaca
es un valor vlido. Una vez que una variable est definida, slo puede
quitarse de la lista de variables mediante la orden interna unset (vea
RDENES INTERNAS DEL SHELL ms 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 vaca. Todos los
valores estn sujetos a expansin de tilde, de parmetros y variables, de
cadena, de orden, aritmtica, y eliminacin de comillas (vea EXPANSIN ms
abajo). Si la variable tiene activado su atributo integer (vea declare
ms abajo en RDENES INTERNAS DEL SHELL) entonces valor est sujeto a
expansin aritmtica incluso si no se emplea la expansin $((...)) (vea
Expansin aritmtica ms adelante). No se realiza la divisin de palabras,
con la excepcin de "$@" como se explica ms adelante bajo el epgrafe
Parmetros especiales. La expansin de nombres de camino no se efecta.
Parmetros posicionales
Un parmetro posicional es un parmetro denotado por uno o ms dgitos,
distintos del simple 0. Los parmetros posicionales se asignan a partir
de los argumentos del shell cuando ste es llamado, y pueden ser reasig-
nados mediante la orden interna set. Los parmetros posicionales no
pueden ser asignados con sentencias de asignacin. Los parmetros posi-
cionales se reemplazan temporalmente cuando se ejecuta una funcin del
shell (vea FUNCIONES abajo).
Cuando un parmetro posicional consistente en ms de un solo dgito se
expande, debe rodearse por llaves (vea EXPANSIN abajo).
Parmetros especiales
El shell trata de forma especial a ciertos parmetros. stos slo pueden
referenciarse; no se permite asignarles nada.
* Se expande a los parmetros posicionales, empezando por 1. Cuando
la expansin ocurre entre comillas dobles, se expande a una sola
palabra con el valor de cada parmetro separado por el primer
carcter de la variable especial IFS. Esto es, "$*" es equiva-
lente a "$1c$2c...", donde c es el primer carcter del valor de
la variable IFS. Si IFS no est definida, los parmetros se sepa-
ran por espacios. Si IFS es la cadena vaca, los parmetros se
juntan sin ningn separador.
@ Se expande a los parmetros posicionales, empezando desde 1.
Cuando la expansin ocurre dentro de comillas dobles, cada
parmetro se expande a una palabra separada. Esto es, "$@" es
equivalente a "$1" "$2" ... Cuando no hay parmetros posi-
cionales, "$@" y $@ se expanden a nada (esto es, se borran).
# Se expande al nmero en base 10 de parmetros posicionales.
? Se expande al estado de la tubera ms recientemente ejecutada en
primer plano.
- Se expande a las opciones del shell activas actualmente segn se
hayan especificado en la llamada, mediante la orden interna set,
o las que haya puesto el mismo shell (como la opcin -i).
$ Se expande al PID del shell. En un subshell (), se expande al
PID del shell actual, no al del subshell.
! Se expande al PID de la orden ms recientemente ejecutada en
segundo plano (asncronamente).
0 Se expande al nombre del shell o guin del shell. Este parmetro
se pone en el inicio del shell. Si bash se llama con un fichero
de rdenes, $0 se pone al nombre de ese fichero. Si bash se
arranca con la opcin -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.
_ En el arranque del shell, se pone al nombre absoluto de fichero
del shell o guin del shell que se est ejecutando, tal como se ha
pasado en la lista de argumentos. Subsecuentemente, se expande
al ltimo argumento de la orden anterior, tras la expansin. Tam-
bin se pone al nombre completo del fichero de cada orden ejecu-
tada, y se pone en el entorno exportado a esa orden. Cuando se
est comprobando si hay correo nuevo, este parmetro contiene el
nombre del fichero de correo o buzn que se est comprobando
actualmente.
Variables del shell
El shell pone automticamente las siguientes variables:
PPID El PID del proceso padre del shell. Esta variable es de lectura
exclusiva.
PWD El directorio de trabajo actual como lo pone la orden cd.
OLDPWD El directorio de trabajo anterior como lo puso la orden cd.
REPLY La lnea de entrada leda por la orden interna read cuando no se
le dan argumentos.
UID Se expande al UID del usuario en curso, puesta en el arranque
del shell. Esta variable es de lectura exclusiva.
EUID Se expande al UID efectivo del usuario en curso, puesta en el
arranque del shell. Esta variable es de lectura exclusiva.
GROUPS Una variable vector conteniendo la lista de grupos de los que el
usuario actual es miembro. Esta variable es de lectura exclu-
siva.
BASH Se expande al nombre completo del fichero empleado para llamar a
esta instancia de bash.
BASH_VERSION
Se expande a una cadena que describe la versin de esta instancia
de bash.
BASH_VERSINFO
Una variable vector de lectura exclusiva cuyos miembros con-
tienen informacin de versin para esta instancia de bash. Los
valores asignados a los miembros del vector son como sigue:
BASH_VERSINFO[0] El nmero mayor de versin (la dis-
tribucin).
BASH_VERSINFO[1] El nmero menor de versin (la versin).
BASH_VERSINFO[2] El nivel de parcheo.
BASH_VERSINFO[3] La versin de construccin.
BASH_VERSINFO[4] El estado de la distribucin (por ejem-
plo, beta1).
BASH_VERSINFO[5] El valor de MACHTYPE.
SHLVL Se incrementa en uno cada vez que se arranca una nueva instancia
de bash.
RANDOM Cada vez que este parmetro sea referenciado, se genera un entero
aleatorio entre 0 y 32767. La secuencia de nmeros aleatorios
puede iniciarse asignando un valor a RANDOM. Si RANDOM no est
definido, pierde sus propiedades especiales, incluso si posteri-
ormente es redefinido.
SECONDS
Cada vez que este parmetro es referenciado, se devuelve en l el
nmero de segundos transcurridos desde la llamada al shell. Si se
asigna un valor a SECONDS, el valor devuelto en posteriores ref-
erencias es el nmero de segundos desde la asignacin ms el valor
asignado. Si SECONDS no est definido, pierde sus propiedades
especiales, incluso si posteriormente es redefinido.
LINENO Cada vez que este parmetro es referenciado, el shell sustituye
un nmero en base 10 representando el nmero de lnea secuencial
actual (empezando por 1) dentro de un guin o funcin. Si no esta-
mos en un guin o funcin, no se garantiza que el valor sustituido
tenga significado. Si LINENO no est definido, pierde sus
propiedades especiales, incluso si posteriormente es redefinido.
HISTCMD
El nmero de "historia", o ndice en la lista "histrica", de la
orden actual. Si HISTCMD no est definido, pierde sus
propiedades especiales, incluso si posteriormente es redefinido.
DIRSTACK
Una variable vector (vea Vectores ms abajo) que aloja los con-
tenidos actuales de la pila de directorios. Los directorios
aparecen en la pila en el orden en el que se muestran con la
orden interna dirs. La asignacin a miembros de este vector
puede emplearse para modificar directorios que ya estn en la
pila, pero entonces deben utilizarse las rdenes internas pushd y
popd para aadir y quitar directorios. La asignacin a esta vari-
able no cambiar el directorio de trabajo. Si DIRSTACK no est
definido, pierde sus propiedades especiales, incluso si posteri-
ormente es redefinido.
PIPESTATUS
Una variable vector (vea Vectores ms abajo) que contiene una
lista de valores de estado de salida de los procesos en la
tubera en primer plano ejecutada ms recientemente (que puede
contener una sola orden).
OPTARG El valor del ltimo argumento que es una opcin procesado por la
orden interna getopts (vea RDENES INTERNAS DEL SHELL ms abajo).
OPTIND El ndice del siguiente argumento a ser procesado por la orden
interna getopts (vea RDENES INTERNAS DEL SHELL ms abajo).
HOSTNAME
Puesto automticamente al nombre del anfitrin (computador)
actual.
HOSTTYPE
Puesto automticamente a una cadena que describe de forma unvoca
el tipo de mquina en la que bash se est ejecutando. El valor
predefinido depende del sistema.
OSTYPE Puesto automticamente a una cadena que describe el sistema oper-
ativo en el que bash se est ejecutando. El valor predefinido
depende del sistema. En Linux es "linux".
MACHTYPE
Puesto automticamente a una cadena que describe completamente el
tipo de sistema en el que bash se est ejecutando, en el formato
estndar de GNU cpu-compaa-sistema. El valor predefinido depende
del sistema.
SHELLOPTS
Una lista, de elementos separados por dos puntos, de opciones
activas del shell. Cada palabra en la lista es un argumento
vlido para la opcin -o de la orden interna set (vea RDENES
INTERNAS DEL SHELL abajo). Las opciones que aparecen en SHEL-
LOPTS son aqullas que aparecen como on en set -o. Si esta vari-
able est en el ambiente cuando bash empieza, cada opcin del
shell en la lista se activar antes de leer cualquier fichero de
inicio. Esta variable es de lectura exclusiva.
El shell hace uso de las siguientes variables. En algunos casos, bash
asigna un valor predeterminado a una variable; estos casos se dicen
abajo.
IFS El Separador Interno de Campo que se emplea para la divisin de
palabras tras la expansin y para dividir lneas en palabras con
la orden interna read. El valor predeterminado es ``<espa-
cio><tab><nueva-lnea>''.
PATH El camino de bsqueda para rdenes, programas ejecutables. Es una
lista de directorios separados por dos puntos en los cuales el
shell busca rdenes (vea EJECUCIN DE RDENES ms abajo). El camino
predeterminado depende del sistema, y lo pone el administrador
que instala bash. Un valor comn es
``/usr/local/bin:/bin:/usr/bin:.''.
HOME El directorio inicial de trabajo del usuario en curso; el argu-
mento predeterminado para la orden interna cd. El valor de esta
variable se usa tambin cuando se realiza la expansin de tilde.
CDPATH El camino de bsqueda para la orden cd. Es una lista de directo-
rios separados por dos puntos en los cuales el shell busca
directorios destino especificados por la orden cd. Un valor de
muestra es ``.:~:/usr''.
BASH_ENV
Si este parmetro est definido cuando bash est ejecutando un guin
del shell, su valor se interpreta como un nombre de fichero que
contiene rdenes para iniciar el shell, como en ~/.bashrc. El
valor de BASH_ENV est sujeto a expansin de parmetros, sustitucin
de rdenes y expansin aritmtica, antes de ser interpretado como
un nombre de fichero. PATH no se usa para buscar el nombre de
fichero resultante.
MAIL Si este parmetro est puesto a un nombre de fichero y la variable
MAILPATH no est definida, bash informa al usuario de la llegada
de correo en el fichero especificado.
MAILCHECK
Especifica cun a menudo (en segundos) bash comprueba si hay
correo nuevo. El valor predeterminado es 60 s. Cuando es tiempo
de comprobar si hay correo, el shell lo hace antes de mostrar el
indicador primario. Si esta variable no est definida, el 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/spool/mail/bfox?"Tienes carta":~/shell-mail?"$_
tiene carta!"'
Bash proporciona un valor predeterminado para esta variable,
pero la localizacin de los ficheros de correo del usuario que
emplea es dependiente del sistema (e.g., /var/spool/mail/$USER).
PS1 El valor de este parmetro se expande (vea INDICADORES abajo) y
se emplea como la cadena del indicador primario. El valor prede-
terminado es ``\s-\v\$ ''.
PS2 El valor de este parmetro se expande como con PS1 y se emplea
como la cadena del indicador secundario. El valor predeterminado
es ``> ''.
PS3 El valor de este parmetro se emplea como el indicador para la
orden select (vea GRAMTICA DEL SHELL ms arriba).
PS4 El valor de este parmetro se expande como con PS1 y el valor se
imprime antes de cada orden que bash muestra durante una traza
de ejecucin. El primer carcter de PS4 se replica mltiples veces,
tantas como sean necesarias, para indicar mltiples niveles de
indireccin. El valor predeterminado es ``+ ''.
TIMEFORMAT
El valor de este parmetro se emplea como una cadena de formato
para especificar cmo debe mostrarse la informacin de tiempos
para tuberas precedidas por la palabra reservada time. El carc-
ter % introduce una secuencia de escape que se expande a un
valor de tiempo o a otra informacin. 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 nmero de segundos de CPU gastados en modo usuario.
%[p][l]S El nmero de segundos de CPU gastados en modo sistema.
%P El porcentaje de CPU, computado como (%U + %S) %R.
La p opcional es un dgito que especifica la precisin, el nmero
de decimales. Un valor de 0 hace que no se muestre ningn deci-
mal, ni el punto o coma decimal. Como mucho se pueden especi-
ficar 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 ms largo, incluyendo minu-
tos, en la forma MMmSS.FFs. El valor de p determina si se
incluye o no la fraccin.
Si esta variable no est definida, bash acta como si tuviera el
valor $'\nreal\t%3lR\nuser\t%3lU\nsys%3lS'. Si el valor es
nulo, no se muestra ninguna informacin de tiempos. Se aade un
salto de lnea al final cuando se muestra la cadena de formato.
HISTSIZE
El nmero de rdenes a recordar en la historia de rdenes (vea HIS-
TORIA abajo). El valor predeterminado es 500.
HISTFILE
El nombre del fichero en el que se guarda la historia de rdenes
(vea HISTORIA abajo). El valor predeterminado es ~/.bash_his-
tory. Si no est definido, no se guarda la historia de rdenes
cuando se acaba un shell interactivo.
HISTFILESIZE
El nmero mximo de lneas contenidas en el fichero de historia.
Cuando se asigna un valor a esta variable, el fichero de histo-
ria se trunca, si es menester, para contener no ms de ese nmero
de lneas. El valor predeterminado es 500. El fichero de historia
se trunca tambin a este tamao tras escribir en l cuando un shell
interactivo termina.
OPTERR Si se pone al valor 1, bash muestra mensajes de error generados
por la orden interna getopts (vea RDENES INTERNAS DEL SHELL
abajo). OPTERR se inicia a 1 cada vez que se llama al shell o
cuando se ejecuta un guin del shell.
LANG Empleado para determinar la categora de localizacin ("esce-
nario") para cualquier categora no seleccionada especficamente
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_ especifi-
cando una categora de localizacin.
LC_COLLATE
Esta variable determina el orden de clasificacin empleado cuando
se ordene el resultado de una expansin de nombres de caminos, y
determina el comportamiento de expresiones de rango, clases de
equivalencia, y secuencias de clasificacin dentro de expansiones
de nombres de caminos y concordancia de patrones.
LC_CTYPE
Esta variable determina la interpretacin de caracteres y el com-
portamiento de clases de caracteres dentro de expansiones de
nombres de caminos y concordancia de patrones.
LC_MESSAGES
Esta variable determina la localizacin empleada para traducir
cadenas entrecomilladas con comillas dobles precedidas por un $.
PROMPT_COMMAND
Si est definido, el valor se ejecuta como una orden antes de
mostrarse cada indicador primario.
IGNOREEOF
Controla la accin de un shell interactivo al recibir un carcter
EOF como sola entrada. Si est definido, el valor es el nmero de
caracteres EOF consecutivos que deben teclearse como los
primeros caracteres de una lnea de entrada antes de que bash
acabe. Si la variable existe pero no tiene un valor numrico, o
ninguno, el valor predeterminado es 10. Si no existe, EOF sig-
nifica el final de la entrada para el shell.
TMOUT Si se define a un valor mayor que cero, el valor se interpreta
como el nmero de segundos que hay que esperar una entrada despus
de mostrarse el indicador primario. Bash termina despus de
esperar ese nmero de segundos si no recibe ninguna entrada.
FCEDIT El editor predeterminado para la orden interna fc.
FIGNORE
Una lista de sufijos separados por dos puntos que no hay que
tener en cuenta cuando se realice una terminacin de nombres de
ficheros (vea READLINE abajo). Un nombre de fichero cuyo sufijo
concuerde con una de las entradas en FIGNORE se excluye de la
lista de nombres de ficheros a completar. Un valor de muestra
es ``.o:~''.
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 expansin de nombres de caminos. Si un nombre de fichero
que concordaba en un patrn de expansin de nombres de caminos
tambin concuerda con uno de los patrones en GLOBIGNORE, se quita
de la lista de concordancias.
INPUTRC
El nombre de fichero para el de inicio de readline, en vez del
predeterminado ~/.inputrc (vea READLINE abajo).
HISTCONTROL
Si se define a un valor de ignorespace, las lneas que comiencen
con un carcter espacio no se meten en la lista de historia. Si
se pone a un valor de ignoredups, las lneas que concuerden con
la ltima lnea de la historia, no se meten. Un valor de ignore-
both combina las dos opciones. Si no est definido, o si lo est
a otro valor distinto de los de antes, todas las lneas ledas por
el analizador lxico se guardan en la lista de la historia,
sujeto esto al valor de HISTIGNORE. La funcin de esta variable
ha sido tomada por HISTIGNORE. La segunda lnea y siguientes de
una orden compuesta multi-lnea no se comprueban, y se aaden a la
historia sin importar el valor de HISTCONTROL.
HISTIGNORE
Una lista de patrones separados por dos puntos empleados para
decidir qu lneas de rdenes deben guardarse en la lista de histo-
ria. Cada patrn se ancla al principio de la lnea y debe especi-
ficar la lnea completamente (no se aade ningn `*'). Cada patrn
se comprueba con la lnea tras aplicarse las comprobaciones
especificadas por HISTCONTROL. Adems de los caracteres normales
de concordancia de patrones del shell, `&' concuerda con la lnea
de historia anterior. `&' puede protegerse empleando una barra
inversa. sta se quita antes de intentarse una concordancia. La
segunda lnea y siguientes de una orden compuesta multi-lnea no
se comprueban, y se aaden a la historia sin importar el valor de
HISTIGNORE.
histchars
Los dos o tres caracteres que controlan la expansin y separacin
en lexemas de la historia (vea EXPANSIN DE HISTORIA abajo). El
primer carcter es el carcter de expansin de historia, el carcter
que seala el comienzo de una expansin de historia, normalmente
`!'. El segundo carcter es el carcter de sustitucin rpida, que
se usa como una abreviatura para reejecutar la orden anterior,
sustituyendo una cadena por otra en la orden. El valor predeter-
minado es `^'. El tercer carcter, opcional, es el carcter que
indica que el resto de la lnea es un comentario cuando se
encuentra como el primer carcter de una palabra, normalmente es
`#'. El carcter de comentario de historia hace que la susti-
tucin de historia se salte en el resto de palabras de la lnea.
No hace que necesariamente el analizador lxico del shell trate
al resto de la lnea como un a un comentario.
HOSTFILE
Contiene el nombre de un fichero con el mismo formato que
/etc/hosts que debera leerse cuando el shell necesite completar
un nombre de anfitrin (computador). El fichero puede ser cambi-
ado interactivamente; la siguiente vez que se intente completar
un nombre de computador, bash aade el contenido del nuevo
fichero a la base de datos ya existente.
auto_resume
Esta variable controla cmo el shell interacta con el usuario
para el control de trabajos. Si esta variable est definida, las
rdenes simples de una palabra sin redireccin se tratan como can-
didatas para reanudar un trabajo existente parado. No se permite
ninguna ambigedad; si hay ms de un trabajo que empiece con la
cadena tecleada, se selecciona el trabajo al que se ha accedido
ms recientemente. El nombre de un trabajo parado, en este con-
texto, es la lnea de rdenes empleada para arrancarlo. Si se
define al valor exact, la cadena suministrada debe concordar
exactamente con el nombre de un trabajo parado; si se define
como substring, la cadena suministrada necesita concordar con
una subcadena del nombre de un trabajo parado. El valor sub-
string proporciona una funcionalidad anloga a la del identifi-
cador de trabajo %? (vea CONTROL DE TRABAJOS adelante). Si se
pone a cualquier otro valor, la cadena suministrada debe ser un
prefijo del nombre de un trabajo parado; esto proporciona una
funcionalidad anloga a la del identificador de trabajo %.
Vectores
Bash proporciona variables vectores, monodimensionales. Cualquier vari-
able puede usarse como un vector; la orden interna declare declarar un
vector explcitamente. No hay un lmite mximo en el tamao de un vector,
ni ningn requisito para que los miembros se indexen o asignen de forma
contigua. Los vectores se indexan empleando enteros y su primer ele-
mento es el de ndice cero, como en C.
Un vector se crea automticamente si se asigna algo a una variable con
la sintaxis nombre[ndice]=valor. El ndice se trata como una expresin
aritmtica que debe evaluarse a un nmero mayor o igual a cero. Para
declarar un vector explcitamente, emplee declare -a nombre (vea RDENES
INTERNAS DEL SHELL abajo). Tambin se acepta declare -a nombre[ndice],
donde el ndice no se tiene en cuenta. Se pueden especificar atributos
para una variable vector mediante las rdenes internas declare y read-
only. Cada atributo se aplica a cada uno de los miembros del vector.
Se asignan valores a los vectores mediante asignaciones compuestas de
la forma nombre=(valor1 ... valorn), donde cada valor es de la forma
[ndice]=cadena. Slo cadena es necesario. Si se suministra el ndice
entre corchetes y la asignacin, se asigna a ese ndice; si no, el ndice
del elemento asignado es el ltimo ndice al que la sentencia le asign
algo, ms uno. Los ndices empiezan en cero. Esta sintaxis tambin la
acepta la orden interna declare. Se puede asignar a los elementos
individuales del vector empleando la sintaxis nombre[ndice]=valor, ya
presentada antes.
Cualquier elemento de un vector puede referenciarse mediante ${nom-
bre[ndice]}. Las llaves son necesarias para evitar conflictos con la
expansin de nombres de caminos. Si ndice es @ o *, la palabra se
expande a todos los miembros de nombre. Estos ndices difieren sola-
mente cuando la palabra aparece entre comillas dobles. Si la palabra
est entre comillas dobles, ${nombre[*]} se expande a una sola palabra
con el valor de cada miembro del vector separados por el primer carcter
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. Esto es anlogo a la expansin de los
parmetros especiales * y @ (vea Parmetros especiales arriba). ${#nom-
bre[ndice]} se expande a la longitud de ${nombre[ndice]}. Si ndice es
* o @, la expansin es el nmero de elementos del vector. Referenciar
una variable vector sin ndice es equivalente a referenciar el elemento
cero.
La orden interna unset se emplea para destruir vectores. unset nom-
bre[ndice] destruye el elemento del vector con el ndice especificado.
unset nombre, donde nombre es un vector, o unset nombre[ndice], donde
ndice es * o @, borra el vector entero.
Las rdenes internas declare, local, y readonly aceptan cada una una
opcin -a para especificar un vector (array). La orden interna read
acepta una -a para asignar una lista de palabras ledas desde la entrada
estndar a un vector. Las rdenes internas set y declare muestran valores
de un vector en una manera tal que les permite ser reutilizadas como
asignaciones.
La expansin se realiza en la lnea de rdenes una vez que la orden ha
sido dividida en palabras. Hay siete clases de expansin: expansin de
llaves, expansin de tilde, expansin de parmetro y variable, sustitucin
de orden, expansin aritmtica, divisin de palabras, expansin de nombre
de camino.
La orden de las expansiones es: expansin de llaves, de tilde, de
parmetro, variable y aritmtica, y sustitucin de orden (hechas de
izquierda a derecha), divisin de palabras, y expansin de nombre de
camino.
En sistemas que puedan admitirla, hay una expansin adicional
disponible: sustitucin de proceso.
Slo la expansin de llaves, divisin de palabras, y expansin de nombre de
camino, pueden cambiar el nmero de palabras de la expansin; las otras
expanden una palabra simple a otra palabra simple. Las nicas excep-
ciones a esto son las expansiones de "$@" y "${nombre[@]}" como se ha
explicado ms arriba (vea PARMETROS).
Expansin de llaves
La expansin de llaves es un mecanismo por el cual pueden generarse
cadenas arbitrarias. Este mecanismo es similar a la expansin de nombre
de camino, pero los nombres de ficheros no necesitan existir. Los
patrones a ser expandidos con la expansin de llaves toman la forma de
un prembulo opcional seguido por una serie de cadenas separadas por
comas entre un par de llaves, seguido por un post scriptum opcional.
El prembulo sirve de prefijo a cada cadena de entre las llaves, y el
post scriptum se aade 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'.
La expansin de llaves se realiza antes que cualquier otra, y cualquier
carcter especial para otras expansiones se preserva en el resultado. Es
estrictamente textual. Bash no aplica ninguna interpretacin sintctica
al contexto de la expansin ni al texto entre las llaves.
Una expansin de llaves correctamente formada debe contener llaves de
apertura y cierre sin entrecomillar, y por lo menos una coma sin entre-
comillar. Cualquier expansin de llaves formada incorrectamente se deja
tal cual. Una { o , puede protegerse con una barra invertida para evi-
tar que sea considerada como parte de una expansin de llaves.
Esta construccin se emplea normalmente como una abreviatura cuando el
prefijo comn 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 expansin de llaves introduce una pequea incompatibilidad con ver-
siones histricas de sh. sh no trata especialmente 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 consecuen-
cia de la expansin de llaves. Por ejemplo, una palabra introducida a sh
como fichero{1,2} aparece as mismo en la entrada. La misma palabra se
muestra como fichero1 fichero2 tras la expansin hecha por bash. Si se
desea una compatibilidad estricta con sh, arranque bash con la opcin +B
o inhabilite la expansin de llaves con la opcin +B de la orden interna
set (vea RDENES INTERNAS DEL SHELL abajo).
Expansin de tilde
Si una palabra comienza con un carcter tilde de la 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 estn 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
vaca, la tilde se reemplaza con el valor del parmetro del shell HOME.
Si HOME no est definida, se sustituye en su lugar el directorio de tra-
bajo inicial del usuario que est ejecutando el 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 del shell PWD
reemplaza al prefijo-tilde. Si el prefijo-tilde es un `~-', el valor
de la variable del shell OLDPWD, si est definido, se sustituye. Si los
caracteres que siguen a la tilde en el prefijo-tilde consisten en un
nmero N, prefijado opcionalmente por un `+' o un `-', el prefijo-tilde
se reemplaza con el elemento correspondiente de la pila de directorios,
como lo mostrara la orden interna dirs llamada con el prefijo-tilde
como argumento. Si los caracteres tras la tilde en el prefijo-tilde
consisten en un nmero sin un `+' ni `-' iniciales, se supone `+'.
Si el nombre de entrada es invlido, o si la expansin de tilde falla, la
palabra se deja tal cual.
A cada asignacin de variable se comprueba si hay prefijos-tilde sin
entrecomillar inmediatamente tras un : o un =. En estos casos, la
expansin de tilde tambin tiene lugar. Consecuentemente, uno puede usar
nombres de ficheros con tildes en asignaciones a PATH, MAILPATH, y
CDPATH, y el shell asigna el valor expandido.
Expansin de parmetro
El carcter `$' introduce la expansin de parmetro, sustitucin de orden,
o expansin aritmtica. El nombre de parmetro o smbolo a ser expandido
puede estar encerrado entre llaves, que son opcionales pero sirven para
proteger a la variable en la expansin 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 expansin aritmtica empotrada, sustitucin de orden, o expansin de
parmetro.
${parmetro}
Se sustituye el valor de parmetro. Se requieren llaves cuando
parmetro es un parmetro posicional de ms de un dgito, o cuando
parmetro viene seguido por un carcter que no debe interpretarse
como parte de su nombre.
Si el primer carcter de parmetro es un signo de cierre de exclamacin,
se introduce un nivel de indireccin de variable. Bash emplea el valor
de la variable formada a partir del resto de parmetro como el nombre de
la variable; luego, esta variable se expande y ese valor se emplea en
el resto de la sustitucin, en vez del propio valor de parmetro. Esto
se conoce como expansin indirecta.
En cada uno de los casos anteriores, palabra est sujeta a expansin de
tilde, expansin de parmetro, sustitucin de orden, y expansin aritmtica.
Cuando no se realiza la expansin de subcadena, bash comprueba si un
parmetro est sin definir o es nulo; si omitimos los dos puntos la com-
probacin slo es para la no definicin del parmetro.
${parmetro:-palabra}
Emplear valores predeterminados. Si parmetro no est definido o
est vaco, se sustituye la expansin de palabra. De otro modo, se
sustituye el valor de parmetro.
${parmetro:=palabra}
Asignar valores predeterminados. Si parmetro no est definido o
es nulo, la expansin de palabra se asigna a parmetro. Luego, el
valor de parmetro se sustituye. No se puede asignar nada de esta
manera a los parmetros posicionales ni a los especiales.
${parmetro:?palabra}
Muestra un error si no est definido o est vaco. Si parmetro es
nulo o no est definido, la expansin de palabra (o un mensaje a
tal efecto si palabra no est presente) se escribe en la salida
estndar de errores y el shell, si no es interactivo, acaba. De
otra manera, se sustituye el valor de parmetro.
${parmetro:+palabra}
Emplear un valor alternativo. Si parmetro est vaco o no est
definido, no se sustituye nada; de otro modo, se sustituye la
expansin de palabra.
${parmetro:desplazamiento}
${parmetro:desplazamiento:longitud}
Expansin de subcadena. Expande hasta longitud caracteres de
parmetro, empezando en los caracteres especificados por
desplazamiento. Si se omite la longitud, se expande a la subca-
dena de parmetro, empezando en el carcter especificado por
desplazamiento. longitud y desplazamiento son expresiones
aritmticas (vea EVALUACIN ARITMTICA ms abajo). longitud debe
evaluarse a un nmero mayor o igual a cero. Si desplazamiento se
evala a un nmero menor que cero, el valor se emplea como un
desplazamiento desde el final del valor de parmetro. Si
parmetro es @, el resultado es longitud parmetros posicionales
empezando en desplazamiento. Si parmetro es un nombre de vector
indexado por @ o *, el resultado es longitud miembros del vector
empezando con ${parmetro[desplazamiento]}. La indexacin de la
subcadena empieza por cero a menos que se empleen los parmetros
posicionales, en cuyo caso empieza por 1.
${#parmetro}
Se sustituye la longitud en caracteres del valor de parmetro.
Si parmetro es * o @, el valor sustituido es el nmero de parmet-
ros posicionales. Si parmetro es un nombre de vector indexado
por * o @, el valor sustituido es el nmero de elementos en el
vector.
${parmetro#palabra}
${parmetro##palabra}
La palabra se expande para producir un patrn lo mismo que en una
expansin de nombre de camino. Si el patrn concuerda con el prin-
cipio del valor de parmetro, entonces el resultado de la
expansin es el valor expandido de parmetro con el patrn ms corto
que concuerde (el caso ``#) o con el patrn ms largo que con-
cuerde (el caso ``##'') eliminado. Si parmetro es @ o *, la
operacin de borrado del patrn se aplica a cada parmetro posi-
cional por turnos, y la expansin es la lista resultante. Si
parmetro es una variable vector indexada con @ o *, la operacin
de borrado del patrn se aplica a cada miembro del vector por
orden, y la expansin es la lista resultante.
${parmetro%palabra}
${parmetro%%palabra}
La palabra se expande para producir un patrn justo como en la
expansin de nombre de camino. Si el patrn concuerda con una
porcin del final del valor expandido de parmetro, entonces el
resultado de la expansin es el valor expandido de parmetro con
el patrn ms corto que concuerde (el caso ``%'') o el ms largo
(el caso ``%%'') borrado. Si parmetro es @ o *, la operacin de
borrado del patrn se aplica a cada parmetro posicional por
orden, y la expansin es la lista resultante. Si parmetro es una
variable vector indexada por @ o *, la operacin de borrado del
patrn se aplica a cada miembro del vector por orden, y la
expansin es la lista resultante.
${parmetro/patrn/cadena}
${parmetro//patrn/cadena}
El patrn se expande para producir un patrn justo como en la
expansin de nombre de camino. parmetro se expande y la concor-
dancia ms larga de patrn contra este valor se reemplaza por
cadena. En la primera forma, slo se reemplaza la primera con-
cordancia. La segunda forma hace que todas las concordancias de
patrn se reemplacen con cadena. Si patrn empieza por #, debe
concordar con el principio de la cadena. Si patrn empieza por
%, debe concordar con el final de la cadena. Si cadena est
vaca, las concordancias de patrn se borran y el / que sigue al
patrn puede omitirse. Si parmetro es @ o *, la operacin de
sustitucin se aplica a cada parmetro posicional por orden, y la
expansin es la lista resultante. Si parmetro es una variable
vector indexada por @ o *, la operacin de sustitucin se aplica a
cada miembro del vector por orden, y la expansin es la lista
resultante.
Sustitucin de orden
La sustitucin de orden permite a la salida de una orden reemplazar al
nombre de la orden. Hay dos formas:
$(orden)
u
`orden`
Bash realiza la expansin ejecutando orden y reemplazando la sustitucin
de orden con la salida estndar de la orden, quitando los saltos de lnea
finales. Los saltos de lnea empotrados no se borran, pero pueden ser
eliminados durante la divisin de palabras. La sustitucin de orden
$(cat fichero) puede reemplazarse por lo equivalente pero ms rpido $(<
fichero).
Cuando se emplea la forma de sustitucin al viejo estilo con las comil-
las 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 sustitucin de orden.
Cuando se emplea la forma $(orden), todos los caracteres entre los
parntesis forman parte de la orden; ninguno se trata especialmente.
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 sustitucin aparece dentro de las dobles comillas, la divisin de
palabras y la expansin de nombres no se realiza en los resultados.
Expansin aritmtica
La expansin aritmtica permite la evaluacin de una expresin aritmtica y
la sustitucin del resultado. El formato para la expansin aritmtica es:
$((expresin))
La expresin se trata como si estuviera entre comillas dobles, pero un
signo de doble comilla dentro de los parntesis no se trata especial-
mente. Todos los lexemas en la expresin estn sujetos a expansin de
parmetro, expansin de cadena, sustitucin de orden, y eliminacin de
comillas. Las sustituciones aritmticas pueden anidarse.
La evaluacin se realiza de acuerdo a las reglas listadas ms abajo en
EVALUACIN ARITMTICA. Si expresin no es vlida, bash imprime un mensaje
indicando el fallo y no ocurre ninguna sustitucin.
Sustitucin de proceso
La sustitucin de proceso se admite en sistemas que acepten tuberas con
nombre (FIFOs) o el mtodo /dev/fd de nombrar ficheros abiertos. Toma
una de las formas siguientes: <(lista) o >(lista). El proceso lista se
ejecuta con su entrada o salida conectada a un FIFO o a algn fichero en
/dev/fd. El nombre de este fichero se pasa como argumento a la orden
en curso como el resultado de la expansin. Si se emplea la forma
>(lista), escribir en el fichero proporciona la entrada para lista. Si
se emplea la forma <(lista), el fichero pasado como argumento deber
leerse para obtener la salida de lista.
Cuando est disponible, se realiza la sustitucin de proceso simultnea-
mente con la expansin de parmetro y variable, sustitucin de orden y
expansin aritmtica.
Divisin de palabras
El shell examina los resultados de la expansin de parmetro, sustitucin
de orden y expansin aritmtica que no ocurrieron dentro de comillas
dobles para realizar la divisin de palabras.
El shell trata cada carcter de IFS como un delimitador, y divide los
resultados de las otras expansiones en palabras separadas por estos
caracteres. Si IFS no est definido, o su valor es exactamente <espa-
cio><tab><nueva-lnea>, el valor predeterminado, entonces cualquier
secuencia de caracteres de IFS sirve para delimitar palabras. Si IFS
tiene algn otro valor, entonces las secuencias de los caracteres blan-
cos espacio y tabulador no se tienen en cuenta al principio y al final
de la palabra, siempre que el carcter de espacio en blanco est en el
valor de IFS (un carcter de espacio en blanco de IFS). Cualquier carc-
ter en IFS que no sea espacio en blanco de IFS, junto con cualquier
carcter de espacio en blanco adyacente de IFS, delimita un campo. Una
secuencia de caracteres de espacio en blanco de IFS tambin se trata
como un delimitador. Si el valor de IFS es nulo, no se realiza la
divisin de palabras.
Los argumentos nulos explcitos ("" o '') se mantienen. Los argumentos
nulos no protegidos implcitos, resultantes de la expansin de parmetros
que no tienen valores, se eliminan. Si un parmetro sin ningn valor se
expande dentro de comillas dobles, el resultado es un argumento nulo, y
es mantenido.
Observe que si no hay expansin, tampoco se realiza la divisin de pal-
abras.
Expansin de nombre de camino
Tras la divisin de palabras, a menos que la opcin -f est puesta, bash
examina cada palabra buscando los caracteres *, ?, (, y [. Si uno de
estos caracteres aparece, entonces la palabra se considera como un
patrn, y se reemplaza por una lista ordenada alfabticamente de nombres
de ficheros que concuerden con el patrn. Si no se encuentran nombres
de ficheros concordantes, y la opcin del shell nullglob est deshabili-
tada, la palabra se deja tal cual. Si la opcin nullglob est puesta, y
no ha habido ninguna concordancia, la palabra se elimina. Si la opcin
del shell nocaseglob est puesta, la bsqueda de la concordancia se real-
iza sin importar si los caracteres alfabticos son letras maysculas o
minsculas. Cuando un patrn se usa para expansin de nombre de camino,
el carcter ``.'' al principio de un nombre o inmediatamente despus de
una barra inclinada debe concordar explcitamente, a menos que est
puesta la opcin del shell dotglob. En la concordancia de un nombre de
camino, el carcter de barra inclinada debe siempre coincidir explcita-
mente. En otros casos, el carcter ``.'' no se trata de forma espe-
cial. Vea la descripcin de shopt ms abajo en RDENES INTERNAS DEL SHELL
para una descripcin de las opciones del shell nocaseglob, nullglob, y
dotglob.
La variable del shell GLOBIGNORE puede utilizarse para restringir el
conjunto de nombres de ficheros que concuerden con un patrn. Si GLO-
BIGNORE est definido, cada nombre de fichero concordante que tambin
coincida con uno de los patrones en GLOBIGNORE se quita de la lista de
concordancias. Los nombres de fichero ``.'' y ``..'' nunca son
tenidos en cuenta, incluso cuando GLOBIGNORE est puesto. Sin embargo,
definir GLOBIGNORE tiene el efecto de activar la opcin del shell dot-
glob, de modo que todos los otros nombres de fichero que comiencen con
un ``.'' concordarn. Para obtener el comportamiento antiguo de no
hacer caso de nombres de ficheros que comienzan con un ``.'', haga que
``.*'' sea uno de los patrones de GLOBIGNORE. La opcin dotglob est
deshabilitada cuando GLOBIGNORE no est definido.
Patrones
Cualquier carcter que aparezca en un patrn, aparte de los especiales
descritos ms adelante, concuerda consigo mismo. El carcter NUL no puede
estar en un patrn. Los caracteres de patrn especiales deben protegerse
si han de concordar literalmente consigo mismos.
Los caracteres de patrn especiales tienen los siguientes significados:
* Concuerda con cualquier cadena de caracteres, incluida la cadena
vaca.
? Concuerda con un solo carcter cualquiera.
[...] Concuerda con uno de los caracteres entre corchetes. Un par de
caracteres separados por un signo menos denota un rango;
cualquier carcter lxicamente entre esos dos, incluidos, con-
cuerda. Si el primer carcter tras el [ es un ! o un ^, entonces
la concordancia es con cualquier carcter de los que no estn
entre los corchetes. Un - puede representarse para la concor-
dancia incluyndolo como el primer o ltimo carcter del conjunto.
Un ] puede hacerse concordar incluyndolo como el primer carcter
del conjunto.
Dentro de [ y ], se pueden especificar clases de caracteres
mediante la sintaxis [:clase:], donde clase es una de las sigu-
ientes clases definidas en el estndar POSIX.2:
alnum alpha ascii blank cntrl digit graph lower print punct
space upper xdigit
Una clase de caracteres concuerda con cualquier carcter que
pertenezca a esa clase.
Dentro de [ y ], una clase de equivalencia se puede especificar
empleando la sintaxis [=c=], que concuerda con todos los carac-
teres con el mismo peso de clasificacin (tal como lo defina la
localizacin en curso) que el carcter c.
Dentro de [ y ], la sintaxis [.smbolo.] concuerda con el smbolo
de clasificacin smbolo.
Si la opcin del shell extglob se activa usando la orden interna shopt,
se reconocen algunos operadores de patrones extendidos. En la siguiente
descripcin, una lista-patrn es una lista de uno o ms patrones separados
por un |. Se pueden formar patrones compuestos usando uno o ms de los
siguientes sub-patrones:
?(lista-patrn)
Concuerda con ninguna o una ocurrencia de los patrones
dados
*(lista-patrn)
Concuerda con ninguna o ms ocurrencias de los patrones
dados
+(lista-patrn)
Concuerda con una o ms ocurrencias de los patrones dados
@(lista-patrn)
Concuerda exactamente con uno de los patrones dados
!(lista-patrn)
Concuerda con cualquier cosa excepto con uno de los
patrones dados
Eliminacin de comillas
Tras las expansiones precedentes, todas las ocurrencias no entrecomil-
ladas de los caracteres \, ', y " que no resulten de una de las expan-
siones anteriores, se eliminan.
Antes de que se ejecute una orden, su entrada y salida pueden ser redi-
rigidas usando una notacin especial interpretada por el shell. La
redireccin tambin se puede emplear para abrir y cerrar ficheros en el
entorno de ejecucin del shell en curso. Los operadores de redireccin
siguientes pueden preceder o aparecer en cualquier sitio de una orden
simple o pueden ir detrs de una orden. Las redirecciones se procesan
en el orden en el que aparecen, de izquierda a derecha.
En las descripciones siguientes, si se omite el nmero del descriptor de
fichero, y el primer carcter del operador de redireccin es <, la redi-
reccin se refiere a la entrada estndar (descriptor de fichero 0). Si el
primer carcter del operador de redireccin es >, la redireccin se
refiere a la salida estndar (descriptor de fichero 1).
La palabra tras el operador de redireccin en las descripciones sigu-
ientes, a menos que se diga otra cosa, est sujeta a la expansin de
llaves, expansin de tilde, expansin de parmetro, sustitucin de orden,
expansin aritmtica, eliminacin de comillas, y expansin de nombre de
camino. Si se expande a ms de una palabra, bash informa de un error.
Observe que el orden de las redirecciones es significativo. Por ejem-
plo, la orden
ls > listadir 2>&1
dirige la salida estndar normal y la de errores, ambas, al fichero lis-
tadir, mientras que la orden
ls 2>&1 > listadir
dirige solamente la salida estndar al fichero listadir, porque la sal-
ida de errores estndar se ha duplicado como salida estndar antes de que
sta se redirigiera a listadir.
Un fallo en la apertura o creacin de un fichero hace que la redireccin
fracase.
Redireccin de la entrada
La redireccin de la entrada hace que el fichero cuyo nombre resulte de
la expansin de palabra se abra para lectura en el descriptor de fichero
n, o la entrada estndar (descriptor de fichero 0) si no se especific n.
El formato general para la redireccin de la entrada es:
[n]<palabra
Redireccin de la salida
la redireccin de la salida hace que el fichero cuyo nombre resulte de
la expansin de palabra se abra para escritura en el descriptor de
fichero n, o la salida estndar (descriptor de fichero 1) si n no se
especific. Si el fichero no existe se crea; si existe se trunca a lon-
gitud cero, se vaca.
El formato general para la redireccin de la salida es:
[n]>palabra
Si el operador de redireccin es >, y la opcin noclobber de la orden
interna set ha sido activada, la redireccin fallar si el nombre de
fichero resultante de la expansin de palabra existiera y fuera un
fichero regular. Si el operador de redireccin es >|, o es > y la opcin
noclobber de la orden interna set no est activada, la redireccin se
intenta incluso si el fichero nombrado por palabra existe.
Aadir a la salida redirigida
La redireccin de la salida en esta forma hace que el fichero cuyo nom-
bre resulte de la expansin de palabra se abra para aadir en el descrip-
tor de fichero n, o la salida estndar (descriptor de fichero 1) si n no
se especific. Si el fichero no existe, se crea.
El formato general para aadir a la salida es:
[n]>>palabra
Redireccin de la salida estndar normal y de errores
Bash permite que ambas salidas estndares, la normal (descriptor de
fichero 1) y la de errores (descriptor de fichero 2) se redirijan hacia
el fichero cuyo nombre sea la expansin de palabra con esta construccin.
hay dos formatos para la redireccin de la salida estndar y la salida de
errores:
&>palabra
y
>&palabra
De las dos formas, es preferible la primera. sta es semnticamente
equivalente a
>palabra 2>&1
Documentos internos
Este tipo de redireccin instruye al shell a leer la entrada desde la
fuente en curso hasta que vea una lnea que contenga solamente palabra
(sin blancos detrs). Todas las lneas ledas hasta ese punto se emplean
como la entrada estndar de una orden.
El formato de los documentos internos es como sigue:
<<[-]palabra
documento-interno
delimitador
No se realiza la expansin de parmetro, sustitucin de orden, expansin de
nombre de camino ni expansin aritmtica en palabra. Si cualquier carc-
ter de palabra est entrecomillado, el delimitador es el resultado de la
eliminacin de comillas en palabra, y las lneas en el documento interno
no se expanden. Si palabra no est entrecomillada, todas las lneas del
documento interno estn sujetas a expansin de parmetro, sustitucin de
orden y expansin aritmtica. En el ltimo caso, el par \<nueva-lnea> no
se tiene en cuenta, y debe emplearse \ para proteger los caracteres \,
$, y `.
Si el operador de redireccin es <<-, entonces se quitan de las lneas de
la entrada todos los caracteres de tabulacin iniciales, as como de la
lnea que contiene delimitador. Esto permite que los documentos inter-
nos dentro de guiones del shell se sangren de manera natural.
Duplicacin de descriptores de fichero
El operador de redireccin
[n]<&palabra
se emplea para duplicar descriptores de ficheros de entrada. Si pal-
abra se expande a uno o ms dgitos, el descriptor de fichero denotado
por n se hace ser una copia de este descriptor de fichero. Si los dgi-
tos en palabra no especifican un descriptor de fichero abierto para
entrada, se produce un error de redireccin. Si palabra se evala a -,
el descriptor de fichero n se cierra. Si n no se especifica, se emplea
la entrada estndar (descriptor de fichero 0).
El operador
[n]>&palabra
se emplea similarmente para duplicar descriptores de ficheros de sal-
ida. Si n no se especific, se emplea la salida estndar (descriptor de
fichero 1). Si los dgitos en palabra no especifican un descriptor de
fichero abierto para salida, se produce un error de redireccin. Como
un caso especial, si n se omite, y palabra no se expande a uno o ms
dgitos, se redirigen la salida estndar y la salida estndar de errores
como se describi con anterioridad.
Apertura de descriptores de ficheros para lectura y escritura
El operador de redireccin
[n]<>palabra
hace que el fichero cuyo nombres sea la expansin 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.
Los alias permiten que una cadena se sustituya por una palabra cuando
se emplee como la primera palabra de una orden simple. El shell
mantiene una lista de alias que pueden ponerse y quitarse con las
rdenes internas alias y unalias (vea RDENES INTERNAS DEL SHELL abajo).
Se mira a ver si la primera palabra de cada orden, si no est entre-
comillada, tiene un alias. Si es as, cada palabra se reemplaza con el
texto del alias. El nombre del alias y el texto de reemplazo pueden
contener cualquier entrada vlida para el shell, incluyendo los metacar-
acteres listados arriba, con la excepcin de que el nombre del alias no
puede contener un =. La primera palabra del texto de reemplazo se com-
prueba si es un alias, pero si es un alias idntico al que se est expan-
diendo, no se expande una segunda vez. Esto significa que uno puede
poner un alias ls a ls -F, por ejemplo, y bash no intenta expandir
recursivamente el texto de reemplazo. Si el ltimo carcter del valor
del alias es un blanco, entonces la siguiente palabra de la orden que
sigue al alias tambin se mira para la expansin de alias.
Los alias se crean y listan con la orden alias, y se quitan con la
orden unalias.
No hay ningn mecanismo para poder usar argumentos en el texto de reem-
plazo. Si se necesitan, debera emplearse mejor una funcin del shell.
Los alias no se expanden cuando el shell no es interactivo, a menos que
se haya puesto la opcin expand_aliases mediante shopt (vea la
descripcin de shopt bajo RDENES INTERNAS DEL SHELL abajo).
Las reglas que conciernen a la definicin y uso de los alias son algo
confusas. Bash siempre lee por lo menos una lnea completa de entrada
antes de ejecutar cualquiera de las rdenes de esa lnea. Los alias se
expanden cuando se lee una orden, no cuando se ejecuta. Por lo tanto,
una definicin de alias que aparezca en la misma lnea que otra orden no
tiene efecto hasta que se lea la siguiente lnea de entrada. Las rdenes
que sigan a la definicin de alias en esa lnea no se ven afectadas por
el nuevo alias. Este comportamiento tambin hay que tenerlo en cuenta
cuando se ejecutan funciones. Los alias se expanden cuando se lee una
definicin de funcin, no cuando la funcin se ejecuta, porque una
definicin de funcin es en s misma una orden compuesta. Como consecuen-
cia, los alias definidos en una funcin no estn disponibles hasta despus
de que esa funcin se ejecute. Para asegurarse, ponga siempre las
definiciones de alias en una lnea separada, y no emplee la orden alias
en rdenes compuestas.
Para casi cualquier propsito, los alias pueden sustituirse por fun-
ciones del shell.
Una funcin del shell, definida como se describi anteriormente bajo
GRAMTICA DEL SHELL, guarda una serie de rdenes para una ejecucin poste-
rior. Las funciones se ejecutan en el contexto del shell en curso; no
se crea ningn nuevo proceso para interpretarlas (en contraste con la
ejecucin de un guin del shell). Cuando una funcin se ejecuta, los
argumentos de la funcin se convierten en los parmetros posicionales
durante su ejecucin. El parmetro especial # se actualiza para reflejar
el cambio. El parmetro posicional 0 permanece intacto. Todos los dems
aspectos del entorno de ejecucin del shell son idnticos entre una
funcin y quien la llama con la excepcin de que la trampa DEBUG (vea la
descripcin de la orden interna trap bajo RDENES INTERNAS DEL SHELL ms
adelante) no se hereda.
Variables locales a la funcin se pueden declarar con la orden interna
local. Normalmente, las variables y sus valores se comparten entre la
funcin y quien la llama, como variables globales.
Si se ejecuta la orden interna return en una funcin, ste se acaba y la
ejecucin se reanuda con la siguiente orden tras la llamada a la funcin.
Cuando una funcin se completa, los valores de los parmetros posi-
cionales y el parmetro especial # se restauran a los valores que tenan
antes de la ejecucin de la funcin.
Los nombres de funcin y sus definiciones pueden listarse con la opcin
-f de las rdenes internas declare o typeset. La opcin -F de declare o
typeset listar solamente los nombres de las funciones. Las funciones
pueden exportarse de modo que los subshells las tengan definidas
automticamente con la opcin -f de la orden interna export.
Las funciones pueden ser recursivas. No se impone ningn lmite en el
nmero de llamadas recursivas.
El shell permite que se evalen expresiones aritmticas, bajo ciertas
circunstancias (vea la orden interna let y Expansin aritmtica). La
evaluacin se hace con enteros largos sin comprobacin de desbordamiento,
aunque la divisin por 0 se atrapa y se seala como un error. La lista
siguiente de operadores se agrupa en niveles de operadores de igual
precedencia. Los niveles se listan en orden de precedencia decre-
ciente.
- + menos y ms unarios
! ~ negacin lgica y de bits
** exponenciacin
* / % multiplicacin, divisin, resto
+ - adicin, sustraccin
<< >> desplazamientos de bits a izquierda y derecha
<= >= < >
comparacin
== != igualdad y desigualdad
& Y de bits (AND)
^ O exclusivo de bits (XOR)
| O inclusivo de bits (OR)
&& Y lgico (AND)
|| O lgico (OR)
expr?expr:expr
evaluacin condicional
= *= /= %= += -= <<= >>= &= ^= |=
asignacin
Se permite que las variables del shell acten como operandos; se realiza
la expansin de parmetro antes de la evaluacin de la expresin. El valor
de un parmetro se fuerza a un entero largo dentro de una expresin. Una
variable del shell no necesita tener activado su atributo de entero
para emplearse en una expresin.
Las constantes con un 0 inicial se interpretan como nmeros octales. Un
0x 0X inicial denota un nmero en hexadecimal. De otro modo, los
nmeros toman la forma [base#]n, donde base es un nmero en base 10 entre
2 y 64 que representa la base aritmtica, y n es un nmero en esa base.
Si base se omite, entonces se emplea la base 10. Los dgitos mayores
que 9 se representan por las letras minsculas, las metras maysculas, _,
y @, en este orden. Si base es menor o igual que 36, las letras min-
sculas y maysculas pueden emplearse indistintamente para representar
nmeros entre 10 y 35.
Los operadores se evalan en orden de precedencia. Las sub-expresiones
entre parntesis se evalan primero y pueden sustituir a las reglas de
precedencia anteriores.
Las expresiones condicionales son empleadas por la orden compuesta [[ y
por las rdenes internas test y [ para comprobar los atributos de
ficheros y realizar comparaciones de cadenas y aritmticas. Las expre-
siones se forman a partir de las primarias monarias o binarias sigu-
ientes. Si cualquier argumento fichero de una de estas primarias es de
la forma /dev/fd/n, entonces se comprueba el descriptor de fichero n.
-a fichero
Verdad si fichero existe.
-b fichero
Verdad si fichero existe y es un fichero especial de bloques.
-c fichero
Verdad si fichero existe y es un fichero especial de caracteres.
-d fichero
Verdad si fichero existe y es un directorio.
-e fichero
Verdad si fichero existe.
-f fichero
Verdad si fichero existe y es un fichero regular.
-g fichero
Verdad si fichero existe y tiene el bit SGID.
-k fichero
Verdad si fichero existe y tiene el bit ``pegajoso'' (STIcky).
-p fichero
Verdad si fichero existe y es una tubera con nombre (FIFO).
-r fichero
Verdad si fichero existe y se puede leer.
-s fichero
Verdad si fichero existe y tiene un tamao mayor que cero.
-t fd Verdad si el descriptor de fichero fd est abierto y se refiere a
una terminal.
-u fichero
Verdad si fichero existe y tiene el bit SUID.
-w fichero
Verdad si fichero existe y se puede modificar.
-x fichero
Verdad si fichero existe y es ejecutable.
-O fichero
Verdad si fichero existe y su propietario es el UID efectivo.
-G fichero
Verdad si fichero existe y su grupo es el GID efectivo.
-L fichero
Verdad si fichero existe y es un enlace simblico o blando.
-S fichero
Verdad si fichero existe y es un zcalo (socket).
-N fichero
Verdad si fichero existe y ha sido modificado desde que se ley
la ltima vez.
fichero1 -nt fichero2
Verdad si fichero1 es ms reciente (segn la fecha de modificacin)
que fichero2.
fichero1 -ot fichero2
Verdad si fichero1 es ms antiguo que fichero2.
fichero1 -ef fichero2
Verdad si fichero1 y fichero2 tienen los mismos nmeros de nodo-
y de dispositivo.
-o nombre-opcin
Verdad si la opcin del shell nombre-opcin est activada. Vea la
lista de opciones bajo la descripcin de la opcin -o de la orden
interna set ms abajo.
-z cadena
Verdad si la longitud de cadena es cero.
-n cadena
cadena Verdad si la longitud de cadena no es cero.
cadena1 == cadena2
Verdad si las cadenas son iguales. Tambin se puede emplear = en
vez de ==.
cadena1 != cadena2
Verdad si las cadenas no son iguales.
cadena1 < cadena2
Verdad si cadena1 se ordena lexicogrficamente antes de cadena2
en la localizacin en curso.
cadena1 > cadena2
Verdad si cadena1 se clasifica lexicogrficamente tras cadena2 en
la localizacin en curso.
arg1 OP arg2
OP es uno de -eq, -ne, -lt, -le, -gt, o -ge. Estos operadores
aritmticos binarios devuelven verdadero si arg1 es igual a, dis-
tinto de, menor que, menor o igual a, mayor que, o mayor o igual
a arg2, respectivamente. Arg1 y arg2 pueden ser enteros posi-
tivos o negativos.
Cuando se ejecuta una orden simple, el shell realiza las siguientes
expansiones, asignaciones y redirecciones, de izquierda a derecha.
1. Las palabras que el analizador ha marcado como asignaciones de
variables (aqullas que preceden al nombre de la orden) y redi-
recciones se guardan para un procesado posterior.
2. Las palabras que no sean asignaciones de variables ni redirec-
ciones se expanden. Si tras la expansin quedan an palabras, la
primera palabra se toma como el nombre de la orden y las pal-
abras restantes son los argumentos.
3. Se ejecutan las redirecciones como se describi ms arriba bajo
REDIRECCIN.
4. El texto tras el = en cada asignacin de variable est sujeto a
expansin de tilde, expansin de parmetro, sustitucin de orden,
expansin aritmtica y eliminado de comillas antes de ser asignado
a la variable.
Si no resulta ningn nombre de orden, las asignaciones de variables
afectan al entorno actual del shell. De otro modo, las variables se
aaden al entorno de la orden ejecutada y no afectan al entorno del
shell en curso. Si cualquiera de las asignaciones intenta dar un valor
a una variable de lectura exclusiva, se produce un error, y la orden
acaba con un estado distinto de cero.
Si no resulta ningn nombre de orden, se hacen las redirecciones, pero
no afectan al entorno del shell en curso. Un error de redireccin hace
que el shell acabe con un estado distinto de cero.
Si hay un nombre de orden tras la expansin, la ejecucin procede como se
describi antes. De otro modo, la orden sale. Si una de las expansiones
contena una sustitucin de orden, el estado de salida de la orden es el
de la ltima sustitucin de orden realizada. Si no haba sustituciones de
rdenes, la orden acaba con un estado de cero.
Despus 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, el shell
intenta localizarla. Si existe una funcin del shell con ese nombre, esa
funcin se llama como se describi arriba en FUNCIONES. Si el nombre no
coincide con el de ninguna funcin, el shell lo busca en la lista de
rdenes internas. Si se encuentra, se llama a la orden interna corre-
spondiente.
Si el nombre no es ni una funcin del shell ni una orden interna, y no
contiene barras inclinadas, bash busca en cada elemento de PATH un
directorio que contenga un fichero ejecutable con ese nombre. Bash
emplea una tabla de dispersin (hash) para recordar los nombres de
camino completos de los ficheros ejecutables (vea hash en RDENES INTER-
NAS DEL SHELL abajo). Slo se realiza una bsqueda completa de los
directorios de PATH si la orden no se encuentra en la tabla de dis-
persin. Si la bsqueda no es satisfactoria, el shell muestra un mensaje
de error y devuelve un estado de salida de 127.
Si la bsqueda fue exitosa, o si el nombre de la orden contiene una o ms
barras inclinadas, el shell ejecuta el programa con ese nombre en un
entorno de ejecucin 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 ejecucin fallara porque el fichero no tuviera un formato eje-
cutable, y el fichero no fuera un directorio, se supone que es un guin
del shell, un fichero que contiene rdenes del shell. Se crea un sub-
shell para ejecutarlo. Este subshell se reinicia a s mismo, as que el
efecto es el mismo que si se hubiera llamado a un nuevo shell para
manejar el guin, con la excepcin de que el hijo retiene las localiza-
ciones de rdenes recordadas por el padre (vea hash abajo en RDENES
INTERNAS DEL SHELL).
Si el programa es un fichero que empieza con los dos caracteres #!, el
resto de la primera lnea especifica un intrprete para el programa. El
shell ejecuta el intrprete especificado en sistemas operativos que no
manejen por s mismos este formato de ejecutable. Los argumentos del
intrprete consisten en un solo argumento opcional tras el nombre del
intrprete en la primera linea del programa, seguido del nombre del pro-
grama, seguido por los argumentos de la orden, si los hubiera.
El shell tiene un entorno de ejecucin, que consiste en lo siguiente:
+o ficheros abiertos heredados por el shell en la llamada, quizs
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 el shell en la llamada
+o la mscara de modo de creacin de ficheros, establecida por umask
o heredada del padre del shell
+o las trampas en curso establecidas por trap
+o parmetros del shell que han sido establecidos por asignaciones
de variables o con set, o heredados del padre del shell en el
entorno
+o funciones del shell definidas durante la ejecucin o heredadas
del padre del shell en el entorno
+o opciones activadas en la llamada (bien por omisin o mediante
argumentos en la lnea de rdenes) o por set
+o opciones activadas mediante shopt
+o alias del shell definidos con alias
+o varios identificadores de proceso, incluyendo los de trabajos en
segundo plano, el valor de $$, y el valor de $PPID
Cuando una orden simple distinta de una interna o una funcin del shell
se va a ejecutar, se llama en un entorno de ejecucin separado que con-
siste en lo siguiente. A menos que se diga otra cosa, los valores se
heredan del shell.
+o los ficheros abiertos del shell, ms las modificaciones y adi-
ciones especificadas en la orden por redirecciones
+o el directorio de trabajo en curso
+o la mscara de modo de creacin de ficheros
+o variables del shell marcadas para la exportacin, junto con vari-
ables exportadas para la orden, pasadas en el entorno
+o las trampas capturadas por el shell se restauran a los valores
del padre del shell, y las trampas que no son tenidas en cuenta
por el shell tampoco lo son
Una orden llamada en este entorno separado no puede afectar al entorno
de ejecucin del shell.
La sustitucin de rdenes y las rdenes asncronas se llaman en un entorno
de subshell que es un duplicado del entorno del shell, excepto que las
trampas capturadas por el shell se restauran a los valores que el shell
hered de su padre en la llamada. Las rdenes internas que se llaman como
parte de una tubera se ejecutan tambin en un entorno de subshell. Los
cambios hechos al entorno del subshell no pueden afectar al entorno de
ejecucin del shell.
Cuando se llama a un programa, se le da un vector de cadenas de carac-
teres llamado el entorno. Esto es una lista de parejas nombre-valor,
de la forma nombre=valor.
El shell le permite manipular el entorno de varias maneras. En la hora
de la llamada, el shell escudria el entorno y crea un parmetro para
cada nombre encontrado, marcndolo automticamente para la exportacin a
procesos hijos. Las rdenes ejecutadas heredan el entorno. Las rdenes
export y declare -x permiten aadir y quitar parmetros y funciones del
entorno. Si el valor de un parmetro 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 del shell, cuyos valores pueden ser modificados en el shell,
menos las parejas quitadas mediante la orden unset ms las adiciones con
las rdenes export y declare -x.
El entorno para cualquier orden simple o funcin puede aumentarse tempo-
ralmente prefijndola con asignaciones de parmetros, como se describi
arriba en PARMETROS. Estas sentencias de asignacin afectan solamente
al entorno visto por esa orden.
Si la opcin -k est puesta (vea la orden interna set ms adelante),
entonces todas las asignaciones de parmetros se ponen en el entorno
para una orden, no slo 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.
Para los propsitos del shell, una orden que acabe con un estado de sal-
ida cero, ha tenido xito. Un estado de salida de cero indica xito. Un
estado de salida distinto de cero indica fallo. Cuando una orden ter-
mina por una seal fatal, bash emplea el valor de 128+seal 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 eje-
cutable, el estado de salida es 126.
Si una orden falla debido a un error durante la expansin o redireccin,
el estado de salida es mayor que cero.
Las rdenes incorporadas en el shell devuelven un estado de 0 (verdad)
si acaban con xito, y distinto de cero (falso) si ocurre un error mien-
tras se ejecutan. Todas las rdenes internas devuelven un estado de
salida de 2 para indicar un modo de empleo incorrecto.
El propio bash devuelve el estado de salida de la ltima orden ejecu-
tada, a menos que ocurra un error de sintaxis, en cuyo caso acaba con
un estado distinto de cero. Vea tambin la orden interna exit abajo.
Cuando bash es interactivo, en la ausencia de trampas, no hace caso de
SIGTERM (de modo que kill 0 no mata un shell interactivo), 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
trabajos tiene efecto, bash no hace caso de SIGTTIN, SIGTTOU, y SIGT-
STP.
Los trabajos sncronos empezados por bash tienen manejadores de seal
puestos a los valores heredados por el shell de su padre. Cuando el
control de trabajo no est en efecto, las rdenes internas no hacen caso
de SIGINT ni SIGQUIT tampoco. Las rdenes ejecutadas como resultado de
sustitucin de orden no hacen caso de las seales de control de trabajo
generadas mediante el teclado SIGTTIN, SIGTTOU, ni SIGTSTP.
El shell, de forma predeterminada, acaba cuando recibe una seal SIGHUP.
Antes de salir, reenva la seal SIGHUP a todos los trabajos, en ejecucin
o parados. A los trabajos parados se les enva SIGCONT para asegurarse
de que reciben la seal SIGHUP. Para prevenir que el shell enve la seal
a un trabajo particular, debera quitarse de la lista de trabajos con la
orden interna disown (vea RDENES INTERNAS DEL SHELL ms abajo) o mar-
carlo para no recibir SIGHUP empleando disown -h.
Si la opcin del shell huponexit se ha puesto mediante shopt, bash enva
una seal SIGHUP a todos los trabajos cuando un shell de entrada inter-
activo se acaba.
Cuando bash recibe una seal para la que se ha puesto una trampa mien-
tras se se est esperando que una orden se complete, la trampa no se
ejecutar hasta que la orden se complete. Cuando bash est esperando una
orden asncrona mediante la orden interna wait, la recepcin de una seal
para la que se ha definido una trampa, har que la orden interna wait
regrese inmediatamente con un estado de salida mayor que 128, inmedi-
atamente tras que se ejecute la trampa.
El control de trabajos se refiere a la capacidad de parar selectiva-
mente (suspender) la ejecucin de procesos y continuar (reanudar) su
ejecucin posteriormente. Un usuario emplea esta facilidad tpicamente a
travs de una interfaz interactiva suministrada conjuntamente por el
controlador de terminal del sistema y bash.
El shell asocia un trabajo con cada tubera. Mantiene una tabla de tra-
bajos ejecutndose actualmente, que pueden listarse con la orden jobs.
Cuando bash arranca un trabajo asncronamente (en segundo plano),
imprime una lnea con un aspecto como sta:
[1] 25647
indicando que este trabajo es el nmero 1 y que el PID del ltimo proceso
en la tubera asociada con l es 25647. Todos los procesos en una misma
tubera son miembros del mismo trabajo. Bash emplea la abstraccin del
trabajo como la base para el control de trabajos.
Para facilitar la implementacin de la interfaz del usuario al control
de trabajos, el sistema mantiene la nocin de un identificador (ID) de
grupo de procesos de la terminal en curso. Los miembros de este grupo
de procesos (procesos cuyo PGID es igual al PGID de la terminal en
curso) reciben seales generadas por el teclado como SIGINT. Se dice
que estos procesos estn en primer plano. Los procesos en segundo plano
son aqullos cuyo PGID difiere del de la terminal; tales procesos son
inmunes a seales generadas desde el teclado. Slo los procesos en
primer plano tienen permitido leer o escribir en la terminal. A los
procesos en segundo plano que intenten leer de (o escribir en) la ter-
minal, el controlador de terminal les manda una seal SIGTTIN (SIGTTOU)
que, a menos que sea capturada, suspende el proceso.
Si el sistema operativo en el que bash se est ejecutando, admite el
control de trabajos (Linux lo admite, por supuesto), bash le permite
usarlo. Teclear el carcter suspender (tpicamente ^Z, Control-Z) mien-
tras que un proceso se est ejecutando, hace que ese proceso se pare y
le devuelve a Ud. al bash. Teclear el carcter suspensin diferida (tpi-
camente ^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 este trabajo, empleando la orden
bg para continuar con l en segundo plano, la orden fg para continuar
con l en primer plano, o la orden kill para matarlo. Un ^Z tiene efecto
inmediatamente, y tiene el efecto adicional colateral de que la salida
pendiente y lo que haya en el bfer de entrada del teclado se descartan.
Hay varias formas de referirse a un trabajo en el shell. El carcter %
introduce un nombre de trabajo. El trabajo nmero n puede ser referenci-
ado como %n. Un trabajo puede ser referenciado utilizando un prefijo
del nombre empleado para arrancarlo, o usando una subcadena que
aparezca en su lnea de rdenes. Por ejemplo. %ce se refiere a un tra-
bajo ce parado. Si un prefijo concuerda con ms de un trabajo, bash
informa de un error. Usar %?ce, por otra parte, se refiere a cualquier
trabajo que contenga la cadena ce en su lnea de rdenes. Si la subcadena
concuerda con ms de un trabajo, bash informa de un error. Los smbolos
%% y %+ se refieren a la nocin que tiene el shell del trabajo en curso,
que es el ltimo trabajo parado mientras estaba en primer plano o se
arranc en segundo plano. El trabajo anterior puede referenciarse
usando %-. En la salida relativa a trabajos (e.g., la salida de la
orden jobs), el trabajo actual se marca siempre con un +, y el anterior
con un -.
Si simplemente damos el nombre de un trabajo, esto puede traerlo a
primer plano: %1 es un sinnimo de ``fg %1'', que trae el trabajo nmero
1 desde el segundo plano al primero. Similarmente, ``%1 &'' reanuda el
trabajo 1 en el segundo plano, equivalente a ``bg %1''.
El shell se entera inmediatamente de cuando un trabajo cambia de
estado. Normalmente, bash espera hasta que est a punto de mostrar un
indicador antes de informar de cambios en el estado de un trabajo, para
no interrumpir cualquier otra salida. Si la opcin -b de la orden
interna set est activada, bash informa de tales cambios inmediatamente.
Si se intenta salir de bash mientras hay trabajos parados, el shell
muestra un mensaje de aviso. La orden jobs se puede usar entonces para
inspeccionar sus estados. Si se hace un segundo intento de salir sin
ninguna otra orden intermedia, el shell no muestra ningn otro aviso, y
los trabajos parados se hacen terminar.
Cuando se ejecuta interactivamente, bash muestra el indicador primario
PS1 cuando est dispuesto para leer una orden, y el secundario PS2
cuando necesita ms entrada para completar una orden. Bash permite que
estas cadenas indicadoras se personalicen insertando un nmero de carac-
teres especiales protegidos con la barra inversa, que se interpretan
como sigue:
\a un carcter de alerta ASCII (07)
\d la fecha en el formato "Da-Semana Mes Da" (ejemplo, "Tue
May 26") en ingls
\e un carcter de escape (ESC) ASCII (033)
\h el nombre del computador anfitrin hasta el primer `.'
\H el nombre del computador anfitrin completo
\n salto de lnea
\r retorno de carro
\s el nombre del shell, el nombre base de $0 (la porcin que
sigue a la ltima 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
\u el nombre de usuario del usuario en curso
\v la versin de bash (e.g., 2.00)
\V la distribucin de bash, versin + nivel de parcheo (e.g.,
2.00.0)
\w el directorio de trabajo en curso
\W el nombre base del directorio de trabajo
\! el nmero de historia de esta orden
\# el nmero de orden de esta orden
\$ si el UID efectivo es 0 (el super-usuario), un #, si no
un $
\nnn el carcter correspondiente al nmero 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 nmero de orden y el nmero de historia son usualmente diferentes: el
nmero de historia de una orden es su posicin en la lista de historia,
que puede incluir rdenes restauradas desde el fichero de historia (vea
HISTORIA ms abajo), mientras que el nmero de orden es la posicin en la
secuencia de rdenes ejecutadas durante la sesin de shell actual. Des-
pus de que la cadena es descodificada, se expande mediante la expansin
de parmetros, sustitucin de rdenes, expansin aritmtica, expansin de
cadena, y eliminacin de comillas, sujeta al valor de la opcin del shell
promptvars (vea la descripcin de la orden shopt bajo RDENES INTERNAS
DEL SHELL ms adelante).
Readline (leer lnea) es la biblioteca que maneja la lectura de la
entrada cuando se usa un shell interactivo, a menos que se haya dado la
opcin --noediting cuando se llam. De forma predeterminada, las rdenes
de edicin de la lnea son similares a las de emacs. Tambin se dispone
de una interfaz de edicin de lneas al estilo de vi. Para desactivar la
edicin de lneas una vez que el shell est en ejecucin, use las opciones
+o emacs o +o vi de la orden interna set (vea RDENES INTERNAS DEL SHELL
abajo).
Notacin de Readline
En esta seccin, se emplea la notacin al estilo de emacs para denotar
las teclas. Las teclas de control se representan por medio de C-tecla;
as, 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 tecla-
dos 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 combinacin 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 rdenes de readline pueden recibir argumentos numricos que actan
normalmente como un nmero de repeticin. Algunas veces, empero, lo que
tiene significado es el signo del argumento. Pasar un argumento nega-
tivo a una orden que acta en la direccin adelante (p. ej., kill-line)
hace que esa orden acte en la direccin contraria, hacia atrs. Las
rdenes cuyo comportamiento con argumentos se desve de esto se sealan ms
adelante.
Cuando una orden se describe como que corta texto, el texto borrado se
guarda para una posible futura recuperacin (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 rdenes que no cortan texto separan los trozos de texto en el anillo
de corte.
Inicio de Readline
Readline se personaliza poniendo rdenes en un fichero de inicio (el
fichero inputrc). El nombre de este fichero se toma del valor de la
variable INPUTRC. Si esta variable no est definida, el valor predeter-
minado es ~/.inputrc. Cuando un programa que hace uso de la biblioteca
readline arranca, el fichero de inicio se lee, y se establecen las
definiciones de teclas y variables. Slo se permiten unas pocas con-
strucciones bsicas en el fichero de inicio de readline. Las lneas en
blanco no se tienen en cuenta. Las lneas que comiencen con un # son
comentarios. Las lneas que comiencen con un $ indican construcciones
condicionales. Otras lneas 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 aadir
sus propias rdenes y definiciones.
Por ejemplo, el poner
M-Control-u: universal-argument
o
C-Meta-u: universal-argument
dentro del fichero inputrc hara que M-C-u ejecutara la orden de read-
line universal-argument.
Se reconocen los siguientes nombres simblicos de caracteres: RUBOUT,
DEL, ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE, y TAB. Adems de los
nombres de rdenes, 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 simblico de tecla, posiblemente con prefijos Meta- o Control-, o
como una secuencia de teclas. Cuando se use la forma nombre-tecla:nom-
bre-funcin o macro, nombre-tecla es el nombre de una tecla en ingls.
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 funcin universal-argument,
M-DEL se vincula a la funcin backward-kill-word, y C-o se define como
que se ejecute la macro expresada en la parte derecha (esto es, inser-
tar el texto > salida en la lnea).
En la segunda forma, "sectecla":nombre-funcin 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. As se pueden utilizar algunas teclas de escape
al estilo de GNU Emacs, como en el siguiente ejemplo.
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Tecla de Funcin 1"
En este ejemplo, C-u se enlaza de nuevo a la funcin universal-argument.
C-x C-r se vincula a la funcin re-read-init-file, y ESC [ 1 1 ~ se
define como que se inserte el texto Tecla de Funcin 1. El conjunto
completo de las secuencias de escape al estilo de GNU Emacs es
\C- prefijo de control
\M- prefijo meta
\e un carcter de Escape
\\ barra inclinada inversa
\" una " literal
\' un ' literal
Adems de las secuencias de escape al estilo de GNU Emacs, se dispone de
un segundo conjunto de escapes con la barra invertida:
\a alerta (campana)
\b espacio atrs
\d borrado
\f salto de pgina
\n salto de lnea
\r retorno de carro
\t tabulador horizontal
\v tabulador vertical
\nnn el carcter cuyo cdigo es el valor octal nnn (de 1 a 3
dgitos)
\xnnn el carcter cuyo cdigo es el valor hexadecimal nnn (de 1 a
3 dgitos)
Cuando se mete el texto de una macro, se deben emplear comillas simples
o dobles para indicar una definicin de macro. El texto no entrecomil-
lado se supone un nombre de funcin. En el cuerpo de la macro, los
escapes con barra inversa de arriba se expanden. La barra inversa pro-
teger a cualquier otro carcter 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 edicin puede cambiarse
durante una sesin interactiva empleando la opcin -o de la orden interna
set (vea RDENES INTERNAS DEL SHELL abajo).
Variables de Readline
Readline tiene variables que se pueden usar para personalizar ms an su
comportamiento. Una variable se puede definir en el fichero inputrc con
una sentencia de la forma
set nombre-variable valor
Excepto cuando se diga, las variables de readline pueden tomar los val-
ores On u Off. Las variables y sus valores predeterminados son:
bell-style (audible)
Controla qu pasa cuando readline quiere tocar el pito de la ter-
minal. Si se define como none, readline nunca toca el pito. Si
se pone a visible, readline usa una alerta visible si est
disponible. Si se pone como audible, readline intenta hacer
sonar el pito de la terminal.
comment-begin (``#'')
La cadena que se inserta cuando se ejecuta la orden de readline
insert-comment. Esta orden est enlazada a M-# en modo emacs y a
# en modo vi.
completion-ignore-case (Off)
Si se pone a On, readline realiza la concordancia y terminacin
de nombres de ficheros sin importar si las letras son maysculas
o minsculas.
completion-query-items (100)
Esto determina cundo se pregunta al usuario si quiere ver el
nmero de terminaciones posibles generadas por la orden possi-
ble-completions. Puede ponerse a cualquier valor entero mayor o
igual a cero. Si el nmero 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 ter-
minal.
convert-meta (On)
Si se pone a On, readline convertir caracteres con el octavo bit
a uno a una secuencia de teclas ASCII poniendo el octavo bit a
cero y prefijando un carcter Esc (en efecto, usando Esc como el
prefijo meta).
disable-completion (Off)
Si se pone a On, readline inhibir la terminacin de palabras. Los
caracteres para la terminacin se insertarn en la lnea como si se
hubieran hecho corresponder con self-insert.
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.
enable-keypad (Off)
Cuando se pone a On, readline intentar activar el teclado auxil-
iar cuando se llame. Algunos sistemas necesitan esto para acti-
var las teclas de flechas de cursor.
expand-tilde (Off)
Si se pone a on, la expansin de tilde se realiza cuando readline
intenta la terminacin de palabras.
horizontal-scroll-mode (Off)
Cuando se pone a On, esto hace que readline use una sola lnea
para pantalla, haciendo rodar la entrada horizontalmente en una
sola lnea de la pantalla cuando sta es ms larga que la anchura
de la pantalla; en lugar de seguir en la lnea siguiente.
input-meta (Off)
Si se pone a On, readline habilitar la entrada de 8 bits (esto
es, no pondr 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 sinnimo para esta variable.
keymap (emacs)
Establece el mapa de teclado actual para readline. El conjunto
de nombres de mapas de teclado vlidos 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 tam-
bin afecta al mapa de teclado predeterminado.
mark-directories (On)
Si se pone a On, los nombres de directorios completados tendrn
una barra inclinada aadida al final.
mark-modified-lines (Off)
Si se pone a On, las lneas de historia que hayan sido modifi-
cadas se muestran con un asterisco precedindolas (*).
output-meta (Off)
Si se pone a On, readline mostrar directamente los caracteres
con el octavo bit a uno, en vez de como una secuencia de escape
prefijada con meta.
print-completions-horizontally (Off)
Si se pone a On, readline mostrar terminaciones con concordan-
cias clasificadas horizontalmente en orden alfabtico, en vez de
verticalmente.
show-all-if-ambiguous (Off)
Esto altera el comportamiento predeterminado de las funciones de
terminacin. Si se pone a on, las palabras que tienen ms de una
posible terminacin hacen que las concordancias se muestren
inmediatamente en vez de tocarse el pito de la terminal.
visible-stats (Off)
Si se pone a On, se aade un carcter que represente un tipo de
fichero segn lo que devuelve stat(2) cuando se listan las termi-
naciones posibles.
Construcciones condicionales de Readline
Readline implementa una facilidad similar en espritu a las caractersti-
cas de compilacin condicional del preprocesador de C que permite que
las definiciones de teclas y variables se realicen en funcin de pruebas
o condiciones. Hay cuatro directivas del analizador que se usan.
$if La construccin $if permite que las definiciones se hagan segn el
modo de edicin, la terminal en uso, o la aplicacin que haga uso
de readline. El texto de la condicin se extiende hasta el final
de la lnea; no se requieren caracteres para aislarla.
mode La forma mode= de la directiva $if se usa para ver si
readline est en modo emacs o vi. Esto se puede emplear
en conjuncin con la orden set keymap, por ejemplo, para
poner el teclado en los mapas emacs-standard y emacs-ctlx
slo si readline est arrancando en modo emacs.
term La forma term= puede emplearse para incluir definiciones
de teclas especficas de una terminal determinada, quizs
para enlazar las secuencias de teclas generadas por las
teclas de funcin de la terminal. La palabra en la parte
derecha del = se prueba contra el nombre completo de la
terminal y contra la porcin del nombre de la terminal
antes del primer -. Esto permite que sun concuerde con
sun y con sun-cmd, por ejemplo.
application
La construccin application se emplea para incluir defini-
ciones especficas de la aplicacin. Cada programa que usa
la biblioteca readline define el nombre de la aplicacin,
y en un fichero de arranque se puede comprobar si existe
un valor en particular. Esto se podra emplear para
enlazar secuencias de teclas a funciones tiles para un
programa especfico. Por ejemplo, la orden siguiente aade
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
$endif Esta orden, como se ha visto en el ejemplo precedente, termina
una orden $if.
$else Las rdenes en esta rama de la directiva $if se ejecutan si la
comprobacin falla.
$include
Esta directiva toma como argumento un solo nombre de fichero y
lee rdenes y definiciones de ese fichero. Por ejemplo, la sigu-
iente directiva leera de /etc/inputrc:
$include /etc/inputrc
Bsquedas
Readline proporciona rdenes para buscar a travs de la historia de
rdenes (vea HISTORIA abajo) lneas que contengan una cadena especifi-
cada. Hay dos modos de bsqueda: incremental y no incremental.
La bsqueda incremental comienza antes de que el usuario haya acabado de
teclear la cadena a buscar. Tan pronto como se teclea cada carcter de
la cadena de bsqueda, readline muestra la siguiente entrada de la his-
toria que concuerde con la cadena que se est tecleando hasta este
punto. Una bsqueda incremental requiere solamente tantos caracteres
como se necesiten para encontrar la entrada deseada en la lista de his-
toria. El carcter Escape se emplea para terminar una bsqueda incremen-
tal. Control-J tambin dar por terminada la bsqueda. Control-G parar
abruptamente una bsqueda incremental y restaurar la lnea original.
Cuando la bsqueda se termine, la entrada de la historia que contuviera
la cadena de bsqueda se convierte en la lnea en curso. Para encontrar
otras entradas en la lista de historia, teclee Control-S o Control-R,
segn sea apropiado. Esto buscar hacia atrs o adelante en la historia
la siguiente entrada concordante con la cadena de bsqueda tecleada
hasta este punto. Cualquier otra secuencia de teclas asociada a una
orden de readline terminar la bsqueda y ejecutar esa orden. Por ejem-
plo, una nueva-lnea terminar la bsqueda y aceptar la lnea, ejecutando
de ese modo la orden de la lista de historia.
Las bsquedas no incrementales leen la cadena de bsqueda entera antes de
empezar a buscar en las lneas de la lista de historia. La cadena de
bsqueda puede ser tecleada por el usuario o ser parte de los contenidos
de la lnea en curso.
Nombres de rdenes de Readline
Lo siguiente es una lista de los nombres de las rdenes y las secuencias
de teclas predeterminadas a las que estn asociadas. Los nombres de
rdenes sin una secuencia de tecla acompaante pertenecen a rdenes que no
estn asociadas a ninguna secuencia de teclas de forma predeterminada.
rdenes para el movimiento
beginning-of-line (C-a)
Mover al principio de la lnea en curso.
end-of-line (C-e)
Mover al final de la lnea.
forward-char (C-f)
Mover un carcter hacia adelante.
backward-char (C-b)
Mover un carcter hacia atrs.
forward-word (M-f)
Mover adelante hasta el final de la siguiente palabra. Las pal-
abras se componen de caracteres alfanumricos (letras y dgitos).
backward-word (M-b)
Mover atrs hasta el principio de esta palabra o la anterior.
Las palabras se componen de caracteres alfanumricos (letras y
dgitos).
clear-screen (C-l)
Limpiar la pantalla dejando la lnea en curso al principio de la
pantalla. Con un argumento, refresca la lnea en curso sin borrar
la pantalla.
redraw-current-line
Refrescar la lnea en curso.
rdenes para manipular la lista de historia
accept-line (Nueva-lnea, Intro)
Aceptar la lnea sin importar dnde est el cursor. Si esta lnea no
est vaca, aadirla a la lista de historia de acuerdo con el
estado de la variable HISTCONTROL. Si la lnea es una de las de
la historia, modificada, entonces restaurar la lnea de la histo-
ria a su estado original.
previous-history (C-p)
Obtener la orden anterior de la lista de historia, movindose
hacia atrs en ella.
next-history (C-n)
Obtener la orden siguiente de la lista de historia, movindose
hacia delante en ella.
beginning-of-history (M-<)
Mover a la primera lnea de la lista de historia.
end-of-history (M->)
Mover al final de la historia de entrada; esto es, la lnea que
est siendo introducida en la actualidad.
reverse-search-history (C-r)
Buscar hacia atrs empezando en la lnea en curso y movindose
`arriba' a travs de la lista de historia si es necesario. Esta
bsqueda es incremental.
forward-search-history (C-s)
Buscar hacia adelante empezando en la linea en curso y movindose
`abajo' a travs de la lista de historia si es necesario. Esta
bsqueda es incremental.
non-incremental-reverse-search-history (M-p)
Buscar hacia atrs a travs de la lista de historia empezando en
la lnea en curso empleando una bsqueda no incremental de una
cadena suministrada por el usuario.
non-incremental-forward-search-history (M-n)
Buscar hacia delante a travs de la lista de historia empezando
en la lnea en curso empleando una bsqueda no incremental de una
cadena suministrada por el usuario.
history-search-forward
Buscar hacia delante a travs de la lista de historia una cadena
de caracteres entre el comienzo de la lnea en curso y la posicin
actual del cursor (el punto). Esta bsqueda no es incremental.
history-search-backward
Buscar hacia atrs a travs de la lista de historia una cadena de
caracteres entre el comienzo de la lnea en curso y la posicin
actual del cursor (el punto). Esta bsqueda no es incremental.
yank-nth-arg (M-C-y)
Insertar el primer argumento de la orden anterior (normalmente
la segunda palabra de la lnea previa) en el punto (la posicin
actual del cursor). Con un argumento n, insertar la n-sima pal-
abra 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.
yank-last-arg (M-., M-_)
Insertar el ltimo argumento de la orden anterior (la ltima pal-
abra de la entrada anterior de la lista de historia). Con un
argumento, se comporta exactamente como yank-nth-arg. Llamadas
sucesivas a yank-last-arg mueven hacia atrs en la lista de his-
toria, insertando cada vez el ltimo argumento de cada lnea.
shell-expand-line (M-C-e)
Expandir la lnea como hace el shell. Esto realiza la expansin de
alias y de historia as como todas las expansiones de palabra del
shell. Vea EXPANSIN DE HISTORIA abajo para una descripcin de la
expansin de historia.
history-expand-line (M-^)
Realizar la expansin de historia en la lnea en curso. Vea
EXPANSIN DE HISTORIA abajo para una descripcin de la expansin de
historia.
magic-space
Efectuar la expansin de historia en la lnea en curso e insertar
un espacio. Vea EXPANSIN DE HISTORIA abajo para una descripcin
de la expansin de historia.
alias-expand-line
Realizar la expansin de alias en la lnea en curso. Vea ALIAS
arriba para una descripcin de la expansin de alias.
history-and-alias-expand-line
Realizar la expansin de historia y alias en la lnea en curso.
insert-last-argument (M-., M-_)
Un sinnimo para yank-last-arg.
operate-and-get-next (C-o)
Aceptar la lnea en curso para la ejecucin y obtener la lnea
siguiente relativa a la actual desde la lista de historia, para
la edicin. Cualquier argumento no se tiene en cuenta.
rdenes para cambiar el texto
delete-char (C-d)
Borrar el carcter bajo el cursor. Si el punto est al principio
de la lnea, no hay caracteres en la lnea, y el ltimo carcter
tecleado no estaba asociado a delete-char, entonces devolver
EOF.
backward-delete-char (<X], DEL)
Borrar el carcter tras el cursor. Cuando se da un argumento num-
rico, guardar el texto borrado en el anillo de corte.
quoted-insert (C-q, C-v)
Aadir el siguiente carcter tecleado a la lnea tal cual. As es
como se pueden insertar caracteres como C-q, por ejemplo.
tab-insert (C-v TAB)
Insertar un carcter de tabulacin.
self-insert (a, b, A, 1, !, ...)
Insertar el carcter tecleado.
transpose-chars (C-t)
Arrastrar el carcter antes del punto hacia adelante sobre el
carcter en el punto. El punto se mueve adelante tambin. Si el
punto est al final de la lnea, entonces transpone los dos carac-
teres antes del punto. Los argumentos negativos no funcionan.
transpose-words (M-t)
Arrastrar la palabra tras el cursor al lugar pasado la palabra
enfrente del cursor, moviendo el cursor tambin sobre esa pal-
abra.
upcase-word (M-u)
Poner en maysculas 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 minsculas 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 mayscula la inicial de la palabra en curso (o la sigu-
iente). Con un argumento negativo, pone la anterior, pero no
mueve el punto.
Cortar y pegar
kill-line (C-k)
Cortar el texto desde la posicin actual del cursor hasta el
final de la lnea.
backward-kill-line (C-x DEL)
Cortar hacia atrs hasta el principio de la lnea.
unix-line-discard (C-u)
Cortar hacia atrs desde el punto hasta el principio de la lnea.
El texto cortado se guarda en el anillo de corte.
kill-whole-line
Cortar todos los caracteres de la lnea en curso, sin importar
dnde est el cursor.
kill-word (M-d)
Cortar desde el cursor 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 for-
ward-word.
backward-kill-word (M-DEL)
Cortar la palabra tras el cursor. Los extremos de las palabras
son los mismos que los empleados por backward-word.
unix-word-rubout (C-w)
Cortar la palabra tras el cursor, empleando el espacio en blanco
como un lmite de palabra. Los extremos de las palabras son
diferentes de los de backward-kill-word.
delete-horizontal-space (M-\)
Borrar todos los espacios y tabuladores alrededor del punto.
kill-region
Cortar el texto entre el punto y la marca (posicin registrada
del cursor). Este texto se conoce como la regin.
copy-region-as-kill
Copiar el texto en la regin al anillo de corte.
copy-backward-word
Copiar la palabra antes del punto al bfer de corte. Los
extremos de palabras son los mismos que con backward-word.
copy-forward-word
Copiar la palabra que sigue al punto al bfer 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 bfer en donde est el
cursor.
yank-pop (M-y)
Rotar en el anillo de corte, y pegar la nueva cima. Slo funciona
tras un yank o yank-pop.
Argumentos numricos
digit-argument (M-0, M-1, ..., M--)
Aadir este dgito al argumento, acumulndolo, o comenzar con un
nuevo argumento. M-- empieza un argumento negativo.
universal-argument
sta es otra forma de especificar un argumento. Si esta orden se
hace seguir de uno o ms dgitos, opcionalmente con un signo menos
inicial, estos dgitos definen el argumento. Si a la orden
siguen dgitos, ejecutar de nuevo universal-argument finaliza el
argumento numrico, pero si no, no se tiene en cuenta. Como un
caso especial, si a esta orden sigue inmediatamente un carcter
que no es ni un dgito ni un signo menos, el nmero del argumento
para la siguiente orden se multiplica por cuatro. El nmero del
argumento es inicialmente uno, as que ejecutar esta funcin por
primera vez hace que el nmero del argumento sea cuatro, una
segunda vez lo hace diecisis, y as sucesivamente.
Terminacin
complete (TAB)
Intentar realizar una terminacin del texto antes del punto.
Bash intenta la terminacin 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 computador anfitrin (si
el texto comienza con @), o como una orden (incluyendo alias y
funciones), por este orden. Si nada de esto concuerda, se
intenta la terminacin 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
habran sido generadas por possible-completions.
menu-complete
Similar a complete, pero reemplaza la palabra a ser completada
con una sola concordancia de la lista de terminaciones posibles.
La ejecucin repetida de menu-complete camina por la lista de
terminaciones posibles, insertando cada concordancia por turnos.
Al final de la lista de terminaciones, se hace sonar el pito de
la terminal y el texto original se restaura. Un argumento n
mueve n posiciones hacia delante en la lista de concordancias;
un argumento negativo se puede emplear para moverse hacia atrs
en la lista. Esta orden est pensada para ser asociada a TAB,
pero no est asociada a ninguna tecla de forma predeterminada.
complete-filename (M-/)
Intentar la terminacin 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,
tratndolo como un nombre de fichero.
complete-username (M-~)
Intentar la terminacin del texto antes del punto, tratndolo como
un nombre de usuario.
possible-username-completions (C-x ~)
Listar las posibles terminaciones del texto antes del punto,
tratndolo como un nombre de usuario.
complete-variable (M-$)
Intentar la terminacin del texto antes del punto, tratndolo como
una variable del shell.
possible-variable-completions (C-x $)
Listar las posibles terminaciones del texto antes del punto,
tratndolo como una variable del shell.
complete-hostname (M-@)
Intentar la terminacin del texto antes del punto, tratndolo como
un nombre de computador anfitrin.
possible-hostname-completions (C-x @)
Listar las posibles terminaciones del texto antes del punto,
tratndolo como un nombre de computador anfitrin.
complete-command (M-!)
Intentar la terminacin del texto antes del punto, tratndolo como
un nombre de orden. La terminacin de orden intenta hacer concor-
dar el texto con alias, palabras reservadas, funciones del
shell, rdenes internas del shell, y finalmente nombres de
ficheros ejecutables, en ese orden.
possible-command-completions (C-x !)
Listar las posibles terminaciones del texto antes del punto,
tratndolo como un nombre de orden.
dynamic-complete-history (M-TAB)
Intentar la terminacin del texto antes del punto, comparando el
texto con lneas de la lista de historia buscando concordancias
para la terminacin.
complete-into-braces (M-{)
Efectuar la terminacin de nombres de ficheros y devolver la
lista de terminaciones posibles encerrada entre llaves de forma
que la lista est disponible al shell (vea Expansin 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 definicin.
call-last-kbd-macro (C-x e)
Reejecutar la ltima macro de teclado definida, haciendo que los
caracteres en la macro aparezcan como si se hubieran pulsado en
el teclado.
Miscelnea
re-read-init-file (C-x C-r)
Leer los contenidos del fichero inputrc, e incorporar cua-
lesquiera definiciones de teclas o asignaciones de variables que
se hubieran encontrado en l.
abort (C-g)
Terminar abruptamente la orden de edicin en curso y tocar el
pito de la terminal (segn el establecimiento de bell-style).
do-uppercase-version (M-a, M-b, M-x, ...)
Si el carcter meta x est en minscula, ejecutar la orden que est
asociada al carcter correspondiente en mayscula.
prefix-meta (ESC)
Convertir en meta el siguiente carcter tecleado. ESC f es
equivalente a Meta-f.
undo (C-_, C-x C-u)
Deshacer de forma incremental, recordado separadamente para cada
lnea.
revert-line (M-r)
Deshacer todos los cambios hechos a esta lnea. Esto es como eje-
cutar la orden undo las veces suficientes como para devolver la
lnea a su estado inicial.
tilde-expand (M-~)
Efectuar la expansin de tilde en la palabra en curso.
set-mark (C-@, M-<espacio>)
Establecer la marca en el punto actual. Si se da un argumento
numrico, la marca se establece en esa posicin.
exchange-point-and-mark (C-x C-x)
Cambia el punto con la marca. La posicin actual del cursor se
pone en la posicin guardada, y la vieja posicin del cursor se
guarda como la marca.
character-search (C-])
Se lee un carcter y el punto se mueve a la siguiente ocurrencia
de ese carcter. Un argumento numrico negativo hace que la
bsqueda sea de las ocurrencias anteriores.
character-search-backward (M-C-])
Se lee un carcter y el punto se mueve a la anterior ocurrencia
de ese carcter. Un argumento numrico negativo hace que la
bsqueda sea de las ocurrencias siguientes.
insert-comment (M-#)
El valor de la variable de readline comment-begin se inserta al
principio de la lnea en curso, y la lnea se acepta como si se
hubiera tecleado Intro (nueva-lnea). Esto convierte la lnea en
curso en un comentario del shell.
glob-expand-word (C-x *)
La palabra antes del punto se trata como un patrn para la
expansin de nombres de caminos y la lista de nombres de fichero
concordantes se inserta, reemplazando a la palabra.
glob-list-expansions (C-x g)
Mostrar la lista de expansiones que habran sido generadas por
glob-expand-word y redibujar la lnea.
dump-functions
Mostrar todas las funciones y sus asociaciones de teclas en el
flujo de salida de readline. Si se da un argumento numrico, 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 stos, en el flujo de salida de readline. Si
se da un argumento numrico, 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 numrico, la salida se formatea de tal man-
era que pueda formar parte de un fichero inputrc.
display-shell-version (C-x C-v)
Mostrar informacin de versin acerca de la instancia actual de
bash.
Cuando se habilita la opcin -o history de la orden interna set, el
shell da acceso a la historia de rdenes, la lista de rdenes tecleadas
con anterioridad. El texto de los ltimos HISTSIZE mandatos (por omisin,
500) se guarda en una lista de historia. El shell almacena cada orden
en la lista de historia antes de la expansin de parmetros y variables
(vea EXPANSIN arriba) pero tras efectuar la expansin de historia,
sujeta a los valores de las variables del shell HISTIGNORE e HISTCON-
TROL. En el arranque, la historia se inicia a partir del fichero nom-
brado en la variable HISTFILE (por omisin ~/.bash_history). HISTFILE
se trunca, si es necesario, para contener no ms de HISTFILESIZE lneas.
Cuando un shell interactivo termina, las ltimas HISTSIZE lneas se
copian de la lista de historia a HISTFILE. Si la opcin del shell
histappend est activa (vea la descripcin de shopt bajo RDENES INTERNAS
DEL SHELL ms adelante), las lneas se aaden al fichero de historia; si
no, el fichero de historia se sobreescribe. Si HISTFILE no est
definido, o si no se puede escribir en el fichero de historia, la his-
toria no se guarda. Tras guardar la historia, el fichero de historia se
trunca para contener no ms de HISTFILESIZE lneas. Si HISTFILESIZE no
est definido, no se trunca.
La orden interna fc (vea RDENES INTERNAS DEL SHELL abajo) puede
emplearse para listar o editar y re-ejecutar una porcin de la lista de
historia. La orden interna history se puede utilizar para mostrar o
modificar la lista de historia y manipular el fichero de historia.
Cuando se emplea la edicin de lneas de rdenes, estn disponibles las
rdenes de bsqueda en cada modo de edicin que proporcionan acceso a la
lista de historia.
El shell permite el control sobre qu rdenes se guarden en la lista de
historia. Las variables HISTCONTROL y HISTIGNORE se pueden definir de
forma que el shell guarde solamente un subconjunto de las rdenes intro-
ducidas. La opcin del shell cmdhist, si est habilitada, hace que el
shell intente guardar cada lnea de una orden multi-lnea en la misma
entrada de la historia, aadiendo punto y comas donde sea necesario para
preservar la correccin sintctica. La opcin del shell lithist hace que
el shell guarde la orden con saltos de lnea empotrados en vez de punto
y comas. Vea la descripcin de la orden interna shopt abajo en RDENES
INTERNAS DEL SHELL para informacin sobre cmo establecer y anular
opciones del shell.
El shell admite una caracterstica de expansin de historia que es pare-
cida a la expansin de historia en csh. Esta seccin describe qu carac-
tersticas sintcticas estn disponibles. Esta caracterstica est habili-
tada de forma predeterminada en shells interactivos, y puede ser desac-
tivada mediante la opcin +H de la orden interna set (vea RDENES INTER-
NAS DEL SHELL abajo). Los shells no interactivos no realizan la
expansin de la historia de forma predeterminada.
Las expansiones de historia introducen palabras desde la lista de his-
toria en el flujo de entrada, facilitando as la repeticin de rdenes, la
insercin de argumentos de una orden anterior en la lnea de entrada en
curso, o la correccin rpida de errores en una orden anterior.
La expansin de historia se realiza inmediatamente tras la lectura de
una lnea completa, antes de que el shell la divida en palabras. Tiene
lugar en dos fases. En la primera se determina qu lnea de la lista de
historia hay que emplear durante la sustitucin. En la segunda se
seleccionan porciones de esa lnea para su inclusin en la actual. La
lnea seleccionada desde la historia es el evento, y la porcin de esa
lnea sobre la que se acta son palabras. Se dispone de varios modifi-
cadores para manipular las palabras seleccionadas. La lnea 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 de historia se introducen
por la aparicin del carcter de expansin de historia, que es por omisin
!. Slo las barras inversas (\) y las comillas simples pueden proteger
al carcter de expansin de historia.
Se pueden emplear ciertas opciones que se ponen con la orden interna
shopt para cambiar el comportamiento de la expansin de historia. Si la
opcin del shell histverify est activa (vea la descripcin de la orden
interna shopt), y se est usando readline, las sustituciones de historia
no se pasan inmediatamente al analizador del shell. En vez de eso, la
lnea expandida se vuelve a cargar en el bfer de edicin de readline para
una modificacin posterior. Si se est usando readline y la opcin del
shell histreedit est activada, una sustitucin de historia fallida se
volver a cargar en el bfer de edicin de readline para su correccin. La
opcin -p de la orden interna history se puede emplear para ver qu har
una expansin de historia antes de usarse. La opcin -s de la orden
interna history se puede emplear para aadir rdenes al final de la lista
de historia sin ejecutarlas realmente, de modo que estn disponibles
para rellamadas posteriores.
El shell permite el control de los diversos caracteres empleados por el
mecanismo de expansin de historia (vea la descripcin de histchars
arriba en Variables del shell).
Designadores de eventos
Un designador de evento es una referencia a una entrada de lnea de
orden en la lista de historia.
! Comenzar una sustitucin de historia, excepto cuando le siga un
blanco, salto de lnea, = o (.
!n Referirse a la lnea de rdenes nmero n.
!-n Referirse a la lnea de orden en curso menos n.
!! Referirse a la orden anterior. Esto es lo mismo que `!-1'.
!cadena
Referirse a la orden ms reciente que comience con cadena.
!?cadena[?]
Referirse a la orden ms reciente que contenga cadena. El ? del
final puede omitirse si a cadena le sigue inmediatamente un
salto de lnea.
^cadena1^cadena2^
Sustitucin rpida. Repetir la ltima orden, reemplazando cadena1
con cadena2. Equivalente a ``!!:s/cadena1/cadena2/'' (vea Modi-
ficadores abajo).
!# La lnea 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 especificacin 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 lnea, con la primera palabra denotada por 0 (cero).
Las palabras se insertan en la lnea en curso separadas por espacios
simples.
0 (cero)
La palabra nmero 0. Para el shell, sta es la palabra de la
orden.
n La n-sima palabra.
^ El primer argumento. Esto es, la palabra nmero 1.
$ El ltimo argumento.
% La palabra que concordaba con la ms reciente bsqueda con
`?cadena?'.
x-y Un rango de palabras; `-y' abrevia `0-y'.
* Todas las palabras menos la nmero cero. Esto es un sinnimo de
`1-$'. No es un error emplear * si slo hay una palabra en el
evento; en este caso se devuelve la cadena vaca.
x* Abreviatura de x-$.
x- Abrevia x-$ como x*, pero omite la ltima palabra.
Si se suministra un designador de palabra sin una especificacin de
evento, se usa la orden anterior como el evento.
Modificadores
Tras el designador opcional de palabra, puede haber una secuencia de
uno o ms de los siguientes modificadores, precedido cada uno por un
`:'.
h Quitar un componente final de nombre de fichero, dejando slo la
parte izquierda.
t Quitar todos los primeros componentes de un nombre de fichero,
dejando la ltima 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 romper
entre palabras en los blancos y saltos de lnea.
s/viejo/nuevo/
Substituir nuevo por la primera ocurrencia de viejo en la lnea
de evento. Se puede emplear cualquier delimitador en vez de /.
El delimitador final es opcional si es el ltimo carcter de la
lnea 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 proteger
el &. Si viejo est vaco, se pone al ltimo viejo substituido, o,
si no tuvo lugar ninguna sustitucin de historia previa, a la
ltima cadena en una bsqueda del tipo !?cadena[?].
& Repetir la sustitucin anterior.
g Hace que los cambios se apliquen sobre la lnea entera de evento.
Esto se emplea en conjuncin con `:s' (p.ej., `:gs/viejo/nuevo/')
o `:&'. Si se usa con `:s', cualquier delimitador se puede uti-
lizar en lugar de /, y el delimitador final es opcional si es el
ltimo carcter de la linea de evento.
A menos que se diga otra cosa, cada orden interna documentada en esta
seccin que acepte opciones precedidas por - tambin acepta -- para sig-
nificar el final de las opciones.
: [argumentos]
Sin efecto; la orden no hace nada ms que expandir argumentos y
realizar cualquier redireccin que se haya especificado. Se
devuelve un cdigo de salida cero.
. nombre-fichero [argumentos]
source nombre-fichero [argumentos]
Lee y ejecuta rdenes desde nombre-fichero en el entorno actual
del shell y devuelve el estado de salida de la ltima orden eje-
cutada desde nombre-fichero. Si nombre-fichero no contiene una
barra inclinada, se usan los nombres de fichero en PATH para
encontrar el directorio que contenga a nombre-fichero. El
fichero que se busca en PATH no necesita ser ejecutable. Se
busca en el directorio de trabajo si no se encontr el fichero en
PATH. Si la opcin sourcepath de la orden interna shopt est
desactivada, la bsqueda en PATH no se realiza. Si se suminis-
tran argumentos, se convierten en los parmetros posicionales
cuando se ejecuta nombre-fichero. Si no, los parmetros posi-
cionales permanecen inalterados. El estado de retorno es el de
la ltima orden de dentro del guin (0 si no se ejecut ninguna
orden), y `falso' si nombre-fichero no se encontr o no se pudo
leer.
alias [-p] [nombre[=valor] ...]
Alias sin argumentos o con la opcin -p muestra la lista de alias
en la forma alias nombre=valor en la salida estndar. 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 sustitucin 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 d un nombre para
el que no se haya definido un alias.
bg [espectrab]
Reanuda el trabajo suspendido espectrab en segundo plano, como
si se hubiera arrancado con &. Si espectrab no est presente, se
emplea la nocin que tiene el shell del trabajo en curso. bg
espectrab devuelve 0 a menos que se ejecute cuando el control de
trabajos est deshabilitado, o cuando se ejecute con el control
de trabajos habilitado si espectrab no se encontr, o cuando se
hubo arrancado sin control de trabajos.
bind [-m mapatecl] [-lpsvPSV]
bind [-m mapatecl] [-q funcin] [-u funcin] [-r sectecl]
bind [-m mapatecl] -f nombre-fichero
bind [-m mapatecl] sectecl:nombre-funcin
Muestra las asociaciones actuales de readline de teclas y fun-
ciones, o asocia una secuencia de teclas a una funcin o macro de
readline. La sintaxis aceptada es idntica a la de .inputrc,
pero cada asociacin 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
Usar mapatecl como el mapa de teclado que va a verse
afectado por subsiguientes asociaciones. Los nombres
aceptables de mapatecl son emacs, emacs-standard,
emacs-meta, emacs-ctlx, vi, vi-command y vi-insert. vi
equivale a vi-command; emacs es equivalente a emacs-stan-
dard.
-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 ledas.
-P Lista los nombres de funciones de readline actuales y las
asociaciones.
-v Muestra los nombres de variables de readline y los val-
ores de tal manera que puedan volver a ser ledas.
-V Lista los nombres de variables de readline actuales y los
valores.
-s Muestra las secuencias de teclas de readline asociadas a
macros y las cadenas correspondientes de tal manera que
puedan ser ledas de nuevo.
-S Muestra las secuencias de teclas de readline asociadas a
macros y las cadenas de caracteres correspondientes.
-f nombre-fichero
Lee las asociaciones de teclas desde nombre-fichero.
-q funcin
Pregunta qu teclas llaman a la funcin especificada.
-u funcin
Desenlaza todas las teclas asociadas a la funcin nom-
brada.
-r sectecl
Borra cualquier asociacin actual de sectecl.
El valor devuelto es 0 a menos que se d una opcin no reconocida
o que ocurra un error.
break [n]
Sale de un bucle for, while, until, o select. Si se especifica
n, sale de n niveles. n debe ser >= 1. Si n es mayor que el
nmero de bucles, se sale de todos. El valor devuelto es 0 a
menos que el shell no est ejecutando un bucle cuando se ejecute
break.
builtin orden-interna [argumentos]
Ejecuta la orden interna del shell especificada, pasndole los
argumentos, y devuelve su estado de salida. Esto es til cuando
se define una funcin cuyo nombre es el mismo que una orden
interna del shell, reteniendo la funcionalidad de esa orden
interna dentro de la funcin. 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
del shell.
cd [-LP] [dir]
Cambia el directorio de trabajo en curso a dir. La variable
HOME contiene el nombre del directorio predeterminado dir. La
variable CDPATH define el camino de bsqueda del directorio que
contenga dir. Los nombres de directorios alternativos en CDPATH
se separan por dos puntos (:). Un nombre de directorio vaco en
CDPATH es lo mismo que el directorio de trabajo en curso, o sea,
``.''. Si dir comienza con una barra inclinada (/), entonces
CDPATH no se usa. La opcin -P dice que se va a emplear la
estructura fsica de directorios en vez de seguir enlaces simbli-
cos (vea tambin la opcin -P de la orden interna set); la opcin
-L hace que se sigan siempre los enlaces simblicos. El argumento
- es equivalente a $OLDPWD. El valor de retorno es `verdad' si
el directorio de trabajo se cambi con xito; `falso' en otro
caso.
command [-pVv] orden [arg ...]
Ejecuta orden con args suprimiendo la bsqueda normal de fun-
ciones del shell. Slo se ejecutarn rdenes incorporadas en el
shell o programas encontrados en la variable PATH. Si se da la
opcin -p, se busca la orden emplendose un valor predeterminado
para PATH que garantiza encontrar todas las utilidades estndar
del sistema. Si se da la opcin -V o la -v, se muestra una
descripcin de orden. La opcin -v muestra una sola palabra que
indica la orden o nombre de fichero ejecutable empleado para la
llamada a orden; la opcin -V produce una descripcin algo ms pro-
lija. Si se dan las opciones -V o -v, el estado de salida es 0
si orden se encontr, y 1 si no. Si no se da ninguna de las dos
opciones y ocurri un error u orden no se encontr, el estado de
salida es 127. Si no, el estado de salida de command es el
estado de salida de orden.
continue [n]
Reanuda la siguiente iteracin del bucle for, while, until, o
select donde estamos. Si se especifica n, la reanudacin es en
el n-simo bucle que nos rodea. n debe ser >= 1. Si n es mayor
que el nmero de bucles que nos rodean, se reanuda el bucle ms
exterior (el de ``ms alto nivel''). El valor de retorno es 0 a
menos que el shell no est ejecutando un bucle cuando se ejecute
continue.
declare [-afFirx] [-p] [nombre[=valor]]
typeset [-afFirx] [-p] [nombre[=valor]]
Declaran variables o les dan atributos. Si no se dan nombres,
entonces muestran los valores de las variables. La opcin -p
mostrar los atributos y valores de cada nombre. Cuando se
emplee -p, otras opciones que se hayan dado no se tienen en
cuenta. La opcin -F inhibe la presentacin de las definiciones
de funciones; slo se muestran sus nombres y atributos. La opcin
-F implica -f. Se pueden emplear las siguientes opciones para
restringir la salida a variables con el atributo especificado o
para dar atributos a variables:
-a Cada nombre es una variable vector (vea Vectores arriba).
-f Usar solamente nombres de funciones.
-i La variable se trata como un entero; se realiza la evalu-
acin aritmtica (vea EVALUACIN ARITMTICA) cuando a la
variable se le asigne un valor.
-r Hace que nombres sean de lectura exclusiva. A estos nom-
bres no se les pueden asignar valores por medio de sub-
siguientes asignaciones, ni se puede anular su definicin
con unset.
-x Marca nombres para la exportacin a rdenes subsecuentes a
travs del entorno.
Usar `+' en vez de `-' desactiva el atributo en vez de acti-
varlo, con la excepcin de que no puede emplearse +a para
destruir una variable vector. Cuando se usa en una funcin, hace
local cada nombre, como con la orden interna local. El valor de
retorno es 0 a menos que se encuentre una opcin invlida, se
intente definir una funcin utilizando "-f fuu=bar", se intente
asignar un valor a una variable de lectura exclusiva, se intente
asignar un valor a una variable vector sin emplear la sintaxis
de asignacin compuesta (vea Vectores arriba), uno de los nombres
no sea un nombre vlido de variable del shell, se intente desac-
tivar el estado de lectura exclusiva para una variable de slo
lectura, se intente desactivar el estado de vector para una
variable vector, o se intente mostrar una funcin no existente
con -f.
dirs [-clpv] [+n] [-n]
Sin opciones, muestra la lista de directorios actualmente recor-
dados. La forma predeterminada de mostrarlos es en una sola
lnea con los nombres de directorios separados por espacios. Los
directorios se aaden a la lista (en realidad, una pila) con la
orden pushd; la orden popd los quita de 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.
-c Limpia la pila de directorios borrando todas las
entradas.
-l Produce un listado ms largo; el formato predeterminado de
listado emplea una tilde de la ee para sealar el directo-
rio inicial de trabajo (el "hogar").
-p Muestra la pila de directorios con una entrada por cada
lnea.
-v Muestra la pila de directorios con una entrada por lnea,
prefijando cada entrada con su ndice en la pila.
El valor de retorno es 0 a menos que se d una opcin invlida o
que n indexe ms all del final de la pila de directorios.
disown [-ar] [-h] [espectrab ...]
Sin opciones, cada espectrab se quita de la tabla de trabajos
activos. Si se da la opcin -h, cada espectrab no se quita de la
tabla, sino que se marca de manera que no se le enviar la seal
SIGHUP si el shell recibe una seal SIGHUP. Si no hay ningn
espectrab presente, y ni se dan las opciones -a ni -r, se uti-
liza el trabajo en curso. Si no se suministra espectrab, la
opcin -a significa quitar o marcar todos los trabajos; la opcin
-r sin un argumento espectrab restringe la operacin a los traba-
jos en ejecucin. El valor de retorno es 0 a menos que espectrab
no se refiera a un trabajo vlido.
echo [-neE] [arg ...]
Repite los args, separados por espacios, seguidos por un salto
de lnea. El estado de retorno es siempre 0. Si se especifica
-n, se suprime el salto de lnea final. Si se da la opcin -e, se
activa la interpretacin de los siguientes caracteres de escape
(con barra inversa). La opcin -E desactiva la interpretacin de
estos caracteres de escape, incluso en sistemas donde se inter-
preten de forma predeterminada. echo no interpreta -- como el
fin de las opciones. echo interpreta las siguientes secuencias
de escape:
\a alerta (pito)
\b espacio atrs
\c suprime el salto de lnea final
\e un carcter Escape
\f salto de pgina
\n nueva lnea
\r retorno de carro
\t tabulador horizontal
\v tabulador vertical
\\ barra inclinada invertida
\nnn el carcter cuyo cdigo es el valor octal nnn (de uno a
tres dgitos)
\xnnn el carcter cuyo cdigo es el valor hexadecimal nnn (de uno
a tres dgitos)
enable [-adnps] [-f nombre-fichero] [nombre ...]
Activa y desactiva rdenes internas incorporadas en el shell.
Desactivar una orden incorporada en el shell permite que un pro-
grama cuya imagen ejecutable est en el disco con el mismo nom-
bre, se ejecute sin tener que especificar un camino completo,
aun cuando el shell normalmente busca las rdenes internas antes
que las rdenes externas en disco. Si se da -n, cada nombre se
desactiva; si no, nombres se activan. Por ejemplo, para emplear
el programa binario test encontrado en el PATH en vez de la
versin incorporada en el shell, ejecute enable -n test. La
opcin -f significa cargar la nueva orden incorporada nombre
desde el objeto compartido nombre-fichero, en sistemas que
admiten la carga dinmica. La opcin -d borrar una orden interna
cargada previamente con -f. Si no se dan argumentos nombre, o
si se da la opcin -p, se muestra una lista de rdenes internas
del shell. Sin ninguna opcin ms, la lista consiste en todas las
rdenes internas activas. Si se da -n, slo se muestran las
rdenes desactivadas. Si se da -a, la lista impresa incluye
todas las rdenes internas, con una indicacin en cada una de si
est activada o no. Si se da -s, la salida se restringe a las
rdenes internas especiales de POSIX. El valor de retorno es 0 a
menos que un nombre no sea una orden interna del shell o que
haya un problema cargando una nueva orden incorporada desde un
objeto compartido.
eval [arg ...]
Los args se leen y concatenan juntos para formar una sola orden.
Entonces el shell lee y ejecuta esta orden, y su estado de sal-
ida se devuelve como el valor de eval. Si no hay args, o sola-
mente argumentos vacos, eval devuelve 0.
exec [-cl] [-a nombre] [orden [argumentos]]
Si se especifica orden, reemplaza al shell. No se crea ningn
proceso nuevo. Los argumentos se convierten en los argumentos de
orden. Si se da la opcin -l, el shell pone un guin en el argu-
mento nmero cero pasado a orden. Esto es lo que hace login(1).
La opcin -c hace que orden se ejecute con un entorno vaco. Si se
da -a , el shell pasa nombre como el argumento nmero cero de la
orden ejecutada. Si orden no puede ejecutarse por alguna razn,
un shell no interactivo se acaba, a menos que se haya activado
la opcin del shell execfail, en cuyo caso devuelve `fallo'. Un
shell interactivo devuelve `fallo' si el fichero no puede ejecu-
tarse. Si orden no se especifica, cualquier redireccin tiene
efecto en el shell en curso, y el estado devuelto es 0. Si hay
un error de redireccin, el estado de retorno es 1.
exit [n]
Hace que el shell acabe con un estado de valor n. Si n se omite,
el valor de salida es el de la ltima orden ejecutada. Se eje-
cuta una trampa puesta en EXIT antes de que el shell termine.
export [-fn] [nombre[=palabra]] ...
export -p
Los nombres suministrados se marcan para exportacin automtica al
entorno de rdenes que se ejecuten de ah en adelante. Si la opcin
-f se da, los nombres se referirn a funciones. Si no se dan
nombres, o si se da la opcin -p, se muestra una lista de todos
los nombres que estn exportados en este shell. La opcin -n hace
que la propiedad de exportacin se quite de las variables nom-
bradas; o sea, que se quiten del entorno. export devuelve un
estado de salida de 0 a menos que se encuentre una opcin invl-
ida, uno de los nombres no sea un nombre vlido de variable del
shell, o que se d -f no siendo nombre una funcin.
fc [-e editor] [-nlr] [primero] [ltimo]
fc -s [pat=rep] [ord]
Corrige orden (Fix Command). En la primera forma, se selecciona
un rango de rdenes desde primero hasta ltimo de la lista de his-
toria. Primero y ltimo pueden especificarse como una cadena de
caracteres (para localizar la ltima orden que empezara con esa
cadena) o como un nmero (un ndice en la lista de historia, donde
un nmero negativo se emplea como un desplazamiento a partir del
nmero de orden actual). Si no se da ltimo, se pone a la orden en
curso para un listado (de forma que fc -l -10 muestra las 10
ltimas rdenes) o a primero en otro caso. Si no se especifica
primero, se pone a la orden previa para una edicin y a -16 para
un listado.
La opcin -n suprime los nmeros de orden en un listado. La opcin
-r invierte el orden de los mandatos. Si se da la opcin -l , las
rdenes se listan en la salida estndar. Si no, se llama al editor
dado por editor en un fichero conteniendo esas rdenes. Si no se
da editor, se emplea el valor de la variable FCEDIT, o el valor
de EDITOR si FCEDIT no est definido. Si no est definida ni una
variable ni otra, vi es el editor que se emplear. Cuando la
edicin se haya completado, las rdenes editadas se muestran y
ejecutan.
En la segunda forma, orden se re-ejecuta tras que cada instancia
de pat se reemplace por rep. Un alias de utilidad para emplear
con esto es ``r=fc -s'', de tal modo que al teclear ``r cc'' se
ejecute la ltima orden que empezara con ``cc'' y que al teclear
``r'' se re-ejecute la ltima orden.
Si se usa la primera forma, el valor de retorno es 0 a menos que
se encuentre una opcin invlida o que primero o ltimo especi-
fiquen lneas de historia fuera de rango. Si se suministra la
opcin -e, el valor de retorno es el de la ltima orden ejecutada,
o `fallo' si ocurre un error con el fichero temporal de rdenes.
Si se emplea la segunda forma, el estado de retorno es de la
orden reejecutada, a menos que ord no especifique una lnea vlida
de historia, en cuyo caso fc devuelve `fallo'.
fg [espectrab]
Reanuda espectrab en primer plano, y lo hace ser el trabajo en
curso. Si espectrab no est presente, se usa la nocin que tiene
el 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 trabajos est desactivado o, cuando se ejecuta con
el control de trabajos activado, si espectrab no especifica un
trabajo vlido o espectrab se refiere a una trabajo que se arranc
sin control de trabajos.
getopts cadenaopcs nombre [args]
getopts se usa en procedimientos del shell para analizar los
parmetros posicionales. cadenaopcs contiene las letras de opcin
que se reconocern; si a una letra le sigue un signo de dos pun-
tos, se espera que la opcin tenga un argumento, que debera estar
separado de ella por espacio en blanco. Cada vez que se llama,
getopts pone la siguiente opcin en la variable del shell nombre,
inicializando nombre si no existe, y el ndice del siguiente
argumento a ser procesado en la variable OPTIND. OPTIND se ini-
cializa a 1 cada vez que se llama al shell o al guin del shell.
Cuando una opcin requiera un argumento, getopts pone ese argu-
mento en la variable OPTARG. El shell no pone a cero OPTIND
automticamente; debe ser puesto a cero manualmente entre lla-
madas mltiples a getopts dentro de la misma llamada al shell si
hubiera que usar un nuevo conjunto de parmetros.
Cuando se encuentra el fin de las opciones, getopts sale con un
valor de retorno mayor que cero. OPTIND se pone al ndice del
primer argumento que no es una opcin, y nombre se pone a "?".
getopts normalmente analiza los parmetros posicionales, pero si
se dan ms argumentos en args, getopts analiza aqullos en su
lugar.
getopts puede informar de errores de dos maneras. Si el primer
carcter de optstring es dos puntos, se emplea un informe de
error silencioso. En un modo normal de operacin se muestran
mensajes de diagnsticos cuando se encuentran opciones invlidas o
faltan argumentos de opciones que los requieran. Si la variable
OPTERR se pone a 0, no se mostrar ningn mensaje de error,
incluso si el primer carcter de optstring no es dos puntos.
Si se ve una opcin invlida, 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 carcter de opcin
encontrado se pone en OPTARG y no se muestra ningn mensaje de
diagnstico.
Si no se encuentra un argumento necesario, y getopts no es
silencioso, se pone un signo de cierre de interrogacin (?) en
nombre, OPTARG se anula, y se muestra un mensaje de diagnstico.
Si getopts es silencioso, entonces se pone un signo de dos pun-
tos (:) en nombre y OPTARG toma el valor del carcter de opcin
encontrado.
getopts devuelve `verdad' si una opcin, especificada o no, se
encuentra. Devuelve `falso' si se encuentra el final de las
opciones o si ocurre un error.
hash [-r] [-p nombre-fichero] [nombre]
Para cada nombre, se determina el nombre completo del fichero
correspondiente buscando los directorios en $PATH y dicho nombre
completo se registra. Si se da la opcin -p no se busca en el
PATH, y se emplea en su lugar nombre-fichero como el nombre com-
pleto de fichero para la orden. La opcin -r hace que el shell
se olvide de todas las localizaciones registradas. Si no se dan
argumentos, se muestra informacin acerca de las rdenes recor-
dadas. El estado de salida es `verdad' a menos que un nombre no
se encuentre o se d una opcin invlida.
help [patrn]
Muestra informacin de ayuda sobre las rdenes internas. Si se
especifica patrn, help da ayuda detallada sobre todas las rdenes
que concuerden con patrn; si no, se muestra ayuda para todas las
rdenes internas y estructuras de control del shell. El estado de
retorno es 0 a menos que ninguna orden concuerde con patrn.
history [-c] [n]
history -anrw [nombre-fichero]
history -p arg [arg ...]
history -s arg [arg ...]
Sin opciones, muestra la lista de historia de rdenes con nmeros
de lnea. Las lneas marcadas con un * han sido modificadas. Un
argumento de n lista solamente las ltimas n lneas. Si nombre-
fichero se da, se emplea como el nombre del fichero de historia;
si no, se usa el valor de HISTFILE. Las opciones, si se dan,
tienen los siguientes significados:
-a Aade las lneas de historia ``nuevas'' (las introducidas
desde el inicio de la sesin de bash en curso) al fichero
de historia.
-n Lee las lneas de historia que an no han sido ledas del
fichero de historia y las mete en la lista de historia
actual. stas son las lneas aadidas al fichero de historia
desde el comienzo de la sesin de bash actual.
-r Lee los contenidos del fichero de historia y los usa como
la historia en curso.
-w Escribe la historia en curso en el fichero de historia,
sobreescribiendo sus contenidos.
-c Limpia la lista de historia borrando todas las entradas.
-p Realiza la sustitucin de historia de los siguientes args
y muestra el resultado en la salida estndar. No almacena
los resultados en el fichero de historia. Cada arg debe
protegerse para deshabilitar la expansin de historia nor-
mal.
-s Almacena los args en la lista de historia como una sola
entrada. La ltima orden en la lista de historia se elim-
ina antes de que se aadan los args.
El valor de retorno es 0 a menos que se encuentre una opcin
invlida o que ocurra un error mientras se lee o se escribe el
fichero de historia.
jobs [-lnprs] [ espectrab ... ]
jobs -x orden [ args ... ]
La primera forma lista los trabajos activos. Las opciones tienen
los significados siguientes:
-l Lista PIDs adems de la informacin normal.
-p Lista solamente el PID del lder del grupo de proceso del
trabajo.
-n Muestra informacin solamente sobre trabajos que han cam-
biado de estado desde que se notific al usuario por ltima
vez de su estado.
-r Restringe la salida a los trabajos en ejecucin.
-s Restringe la salida a los trabajos parados.
Si se da espectrab, la salida se restringe a la informacin sobre
ese trabajo. El estado de retorno es cero a menos que se
encuentre una opcin invlida o se suministre un espectrab
invlido.
Si se da la opcin -x, jobs reemplaza cualquier espectrab encon-
trado en orden o args con el ID de grupo de proceso correspondi-
ente, y ejecuta orden pasndole args, devolviendo su estado de
salida.
kill [-s nombre-seal | -n numseal | -nombre-seal] [pid | espectrab] ...
kill -l [nombre-seal | status_salida]
Enva la seal especificada por nombre-seal o numseal a los proce-
sos nombrados por pid o espectrab. nombre-seal es o bien un
nombre de seal como SIGKILL o un nmero de seal; numseal es un
nmero de seal. Si nombre-seal es un nombre de seal, ste puede
darse con o sin el prefijo SIG. Si nombre-seal no est presente,
entonces se supone SIGTERM. Un argumento de -l lista los nom-
bres de seales. Si se suministran ms argumentos cuando se da
-l, se listan los nombres de las seales correspondientes a los
argumentos, y el estado de retorno es 0. El argumento sta-
tus_salida de -l es un nmero que especifica o bien un nmero de
seal o el estado de salida de un proceso terminado por una seal.
kill devuelve ``verdad'' si por lo menos se envi con xito una
seal, o ``falso'' si ocurri un error o se encontr una opcin
invlida.
let arg [arg ...]
Cada arg es una expresin aritmtica a ser evaluada (vea EVALUACIN
ARITMTICA). Si el ltimo arg se evala a 0, let devuelve 1; si
no, devuelve 0.
local [nombre[=valor] ...]
Para cada argumento, se crea una variable local llamada nombre,
y se le asigna el valor valor. Cuando local se emplea dentro de
una funcin, hace que la variable nombre tenga una visibilidad
restringida a esa funcin y sus hijas. Sin operandos, local
escribe en la salida estndar una lista de las variables locales.
Es un error emplear local fuera de una funcin. El estado de
retorno es 0 a menos que local se use fuera de una funcin, o se
d un nombre invlido.
logout Hace terminar un shell de entrada.
popd [-n] [+n] [-n]
Quita entradas de la pila de directorios. Sin argumentos,
desapila el directorio de la cima de la pila, y realiza un cd al
nuevo directorio de la pila. Los argumentos, si se suministran,
tienen los siguientes significados:
+n Quita la n-sima entrada contando desde la izquierda de la
lista mostrada por dirs, empezando por cero. Por ejemplo:
``popd +0'' quita el primer directorio, ``popd +1'' el
segundo.
-n Quita la n-sima entrada contando desde la derecha de la
lista mostrada por dirs, empezando por cero. Por ejemplo:
``popd -0'' quita el ltimo directorio, ``popd -1'' el
penltimo.
-n Suprime el normal cambio de directorio cuando se desapi-
lan directorios, de forma que solamente la pila se manip-
ula.
Si la orden popd es exitosa, tambin se realiza un dirs, y el
estado de retorno es 0. popd devuelve `falso' si se encuentra
una opcin invlida, la pila de directorios est vaca, se especi-
fica una entrada de la pila de directorios no existente, o falla
el cambio de directorio.
printf formato [argumentos]
Escribe los argumentos formateados en la salida estndar bajo el
control del formato. El formato es una cadena de caracteres que
contiene tres tipos de objetos: caracteres normales, que simple-
mente se copian en la salida estndar, caracteres de secuencias
de escape, que se convierten y copian en la salida estndar, y
especificaciones de formato, cada una de las cuales causa la
impresin del siguiente argumento sucesivo de una determinada
manera. Adems de los formatos estndares normales de printf(1),
%b hace que printf expanda las secuencias de escape de barras
inversas en el correspondiente argumento, y %q causa que printf
muestre en la salida el argumento correspondiente en un formato
tal que pueda ser reutilizado como entrada para el shell.
El formato se reutiliza tanto como sea necesario para consumir
todos los argumentos. Si el formato requiere ms argumentos que
los que se suministran, las especificaciones de formato extra se
comportan como si se hubiera dado un valor cero o una cadena
vaca, segn lo apropiado.
pushd [-n] [dir]
pushd [-n] [+n] [-n]
Aade 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, intercambia los dos
directorios de ms arriba y devuelve 0, a menos que la pila de
directorios est vaca. Los argumentos, si se suministran, tienen
los siguientes significados:
+n Rota la pila de forma que el n-simo directorio (contando
desde la izquierda de la lista mostrada por dirs,
empezando por cero) est 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) est en la cima.
-n Suprime el cambio normal de directorio cuando se aaden
directorios a la pila, de forma que solamente se manipula
la pila.
dir Aade dir a la pila de directorios en la cima, hacindolo
el nuevo directorio de trabajo.
Si la orden pushd acaba con xito, se realiza un dirs tambin. Si
se emplea la primera forma, pushd devuelve 0 a menos que falle
el cambio a dir. Con la segunda forma, pushd devuelve 0 a menos
que la pila de directorios est vaca, que se especifique un ele-
mento de la pila de directorios inexistente, o que el cambio de
directorio falle.
pwd [-LP]
Muestra el nombre de fichero absoluto del directorio de trabajo
en curso. El nombre de fichero mostrado no contiene enlaces
simblicos si se da la opcin -P o est puesta la opcin -o physical
de la orden interna set. Si se usa la opcin -L, los enlaces
simblicos se siguen. El estado de retorno es 0 a menos que
ocurra un error mientras se lea el nombre del directorio actual
o se d una opcin invlida.
read [-er] [-a array] [-p prompt] [nombre ...]
Se lee una lnea desde la entrada estndar, y la primera palabra
se asigna al primer nombre, la segunda palabra al segundo nom-
bre, y as sucesivamente, con las palabras que sobren y sus sepa-
radores intervinientes asignadas al ltimo nombre. Si hay menos
palabras ledas de la entrada estndar que nombres, a los
sobrantes se les asignan valores vacos. Se emplean los carac-
teres en IFS para dividir la lnea en palabras. Las opciones, si
se dan, tienen los siguientes significados:
-r Un par formado por una barra inclinada inversa y un salto
de lnea a continuacin s es tenido en cuenta, y la barra
inversa se considera parte de la lnea.
-p Muestra prompt, sin un salto de lnea al final, antes de
intentar leer nada de la entrada. El indicador se muestra
solamente si la entrada viene de una terminal.
-a Las palabras se asignan secuencialmente a los elementos
de la variable vector array, empezando por 0. Se anula
la posible previa definicin de array antes de que se
asignen nuevos valores. Otros argumentos nombre no se
tienen en consideracin.
-e Si la entrada estndar viene de una terminal, se emplea
readline (vea READLINE arriba) para obtener la lnea.
Si no se suministran nombres, la lnea leda se asigna a la vari-
able REPLY. El cdigo de retorno es cero, a menos que se llegue
al fin de la entrada.
readonly [-apf] [nombre ...]
Los nombres dados se marcan como de lectura exclusiva; los val-
ores de estos nombres no pueden cambiarse por posteriores
asignaciones. Si se da la opcin -f, se marcan as las funciones
correspondientes a los nombres. La opcin -a restringe las vari-
ables a vectores. Si no se da ningn argumento nombre, o si se
da la opcin -p, se muestra una lista de todos los nombres de
lectura exclusiva. La opcin -p hace que la salida se muestre en
un formato que puede ser reutilizado como entrada. El estado de
retorno es 0 a menos que se encuentre una opcin invlida, uno de
los nombres no sea un nombre vlido de variable del shell, o se d
-f con un nombre que no es una funcin.
return [n]
Hace que una funcin acabe y devuelva el valor especificado por
n. Si n se omite, el estado devuelto es el de la ltima orden
ejecutada en el cuerpo de la funcin. Si se emplea fuera de una
funcin, pero durante la ejecucin de un guin por la orden .
(source), hace que el shell pare la ejecucin de ese guin y
devuelva o n o el estado de salida de la ltima orden ejecutada
dentro del guin como el estado de salida del guin. Si se emplea
fuera de una funcin y no durante la ejecucin de un guin por .,
el estado de salida es `falso'.
set [--abefhkmnptuvxBCHP] [-o opcin] [arg ...]
Sin opciones, se muestra el nombre y valor de cada variable del
shell en un formato que puede ser reutilizado como entrada. La
salida se clasifica segn la localizacin en curso. Cuando se dan
opciones, se establecen o quitan atributos del shell. Cua-
lesquier argumentos que queden tras que se procesen las opciones
se tratan como valores para los parmetros posicionales y se
asignan, en orden, a $1, $2, ... $n. Las opciones, si se
especifican, tienen los siguientes significados:
-a Automticamente marca variables, que se modifiquen o
creen, para exportacin al entorno de las rdenes subsigu-
ientes.
-b Informa del estado de los trabajos en segundo plano ter-
minados inmediatamente, en vez de esperar a justo antes
de mostrar el siguiente indicador primario. Esto slo es
efectivo cuando el control de trabajos est habilitado.
-e Sale inmediatamente si una orden simple (vea GRAMTICA
DEL SHELL arriba) acaba con un estado distinto de cero.
El shell no acaba si la orden que falle es parte de un
bucle until o while, parte de una sentencia if, parte de
una lista && o ||, o si el valor devuelto por la orden
se invierte mediante !.
-f Deshabilita la expansin de nombres de caminos.
-h Recuerda la localizacin de rdenes una vez que se buscan
para la 1 ejecucin. Esto est habilitado de forma prede-
terminada.
-k Todos los argumentos en forma de sentencias de asignacin
se ponen en el entorno para una orden, no solamente
aqullos que precedan al nombre de la orden.
-m Modo de monitor. Se habilita el control de trabajos.
Esta opcin est puesta de forma predeterminada para
shells interactivos en sistemas que lo admitan (vea CON-
TROL DE TRABAJOS arriba). Los procesos en segundo plano
se ejecutan en un grupo de proceso separado, y se
imprime cuando se completan una lnea conteniendo su
estado de salida.
-n Lee rdenes pero no las ejecuta. Esto puede emplearse
para comprobar si un guin del shell tiene errores de
sintaxis. Para shells interactivos esta opcin no tiene
efecto.
-o nombre-opcin
El nombre-opcin puede ser uno de los siguientes:
allexport
Lo miso que -a.
braceexpand
Lo miso que -B.
emacs Emplea una interfaz de edicin de lneas de rdenes
al estilo de emacs. Esto est activo de forma
predeterminada cuando el shell es interactivo, a
menos que se haya arrancado con la opcin
--noediting.
errexit Lo mismo que -e.
hashall Lo mismo que -h.
histexpand
Lo mismo que -H.
history Habilita la historia de rdenes, segn se describi
arriba bajo HISTORIA. Esta opcin est habilitada
por omisin en shells interactivos.
ignoreeof
El efecto es como si se hubiera ejecutado la
orden del shell IGNOREEOF=10 (vea Variables del
shell arriba).
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.
notify Lo mismo que -b.
nounset Lo mismo que -u.
onecmd Lo mismo que -t.
physical
Lo mismo que -P.
posix Cambia el comportamiento de bash donde la
operacin predeterminada difiera del estndar
POSIX 1003.2, de forma que se siga ste.
privileged
Lo mismo que -p.
verbose Lo mismo que -v.
vi Emplea una interfaz de edicin de la lnea de
rdenes al estilo de vi.
xtrace Lo mismo que -x.
Si se da -o sin ningn nombre-opcin, se muestran los val-
ores de las opciones activas. Si se da +o sin ningn
nombre-opcin, se muestra en la salida estndar una serie
de rdenes set para recrear las opciones segn estn pues-
tas o no actualmente.
-p Activa el modo privilegiado. En este modo, el fichero
correspondiente a $ENV no es procesado, las funciones
del shell no se heredan desde el entorno,y la variable
SHELLOPTS, si aparece en el entorno, no se tiene en con-
sideracin. Esta opcin se activa automticamente en el
arranque si el identificador efectivo del usuario (o
grupo) no es igual al identificador real del usuario (o
grupo). Desactivar esta opcin hace que los identifi-
cadores efectivos de usuario y grupo se pongan con los
valores de los identificadores reales de usuario y grupo
respectivamente.
-t Sale tras leer y ejecutar una sola orden.
-u Trata las variables no definidas como un error cuando
realiza la expansin de parmetros. Si la expansin se
intenta hacer sobre una variable no definida, el shell
muestra un mensaje de error y, si no es interactivo,
sale con un estado distinto de cero.
-v Repite en la salida las lneas de entrada del shell tras
leerlas.
-x Tras expandir cada orden simple, muestra el valor
expandido de PS4, seguido por la orden y sus argumentos
expandidos.
-B El shell realiza la expansin de llaves (vea Expansin de
llaves arriba). Esto est activado de forma predetermi-
nada.
-C Si est activo, bash no sobreescribe un fichero existente
con los operadores de redireccin >, >&, ni <>. Esto
puede cambiarse cuando se crean ficheros de salida medi-
ante el empleo del operador >| en vez de >.
-H Permite la sustitucin de historia mediante !. Esta
opcin est activada por omisin cuando el shell es inter-
activo.
-P Si est activada, el shell no sigue enlaces simblicos
cuando ejecuta rdenes como cd que cambian el directorio
de trabajo. En su lugar emplea la estructura de directo-
rio fsica. De forma predeterminada, bash sigue la cadena
lgica de directorios cuando ejecuta rdenes que cambian
el directorio de trabajo.
-- Si a esta opcin no sigue ningn argumento ms, entonces
los parmetros posicionales se anulan. Si no, los parmet-
ros posicionales se ponen con los valores dados por los
args, incluso si alguno de ellos comienza con un -.
- Seala el final de las opciones, haciendo que el resto de
args se asignen a los parmetros posicionales. Las
opciones -x y -v se desactivan. Si no hay ms args, los
parmetros posicionales permanecen sin cambios.
Las opciones estn desactivadas de forma predeterminada a menos
que se diga otra cosa. Usar + en vez de - hace que estas
opciones se desactiven. Las opciones tambin pueden darse como
argumentos al llamar al shell. El conjunto de opciones acti-
vadas puede examinarse en $-. El estado de retorno es siempre
`verdad' a menos que se encuentre una opcin invlida.
shift [n]
Los parmetros posicionales desde n+1 ... se renombran a $1 ...
Los parmetros representados por los nmeros desde $# hasta $#-n+1
se anulan. n debe ser un nmero no negativo menor o igual a $#.
Si n es 0, no se cambia ningn parmetro. Si n no se da, se
supone 1. Si n es mayor que $#, los parmetros 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 ...]
Cambia los valores de variables que controlan un comportamiento
determinado opcional del shell. Sin opciones, o con la opcin -p,
se muestra una lista de todas las opciones disponibles, con una
indicacin en cada una de si est activa o no. La opcin -p hace
que la salida se muestre de una forma tal que pueda reutilizarse
como entrada. Otras opciones tienen los significados sigu-
ientes:
-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 est activado o no. Si se
dan varios argumentos nombreopc con -q, el estado de sal-
ida es cero si todos los nombreopcs estn activados; dis-
tinto de cero en otro caso.
-o Restringe los valores de nombreopc a aqullos definidos
para la opcin -o de la orden interna set.
Si se emplean -s o -u sin argumentos nombreopc, la lista
mostrada se limita a aquellas opciones que estn activadas o
desactivadas, respectivamente. A menos que se diga otra cosa,
las opciones de shopt estn inactivas (unset) de forma predeter-
minada.
El estado de retorno cuando se listan opciones es cero si todos
los nombreopcs estn 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 opcin del shell vlida.
La lista de las opciones de shopt es:
cdable_vars
Si est 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 cam-
biarse.
cdspell Si est activa, se corregirn pequeos 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 carcter que falte, y un carcter que
sobre. Si se encuentra una correccin, se muestra el
nombre de fichero corregido y la orden procede. Esta
opcin slo se emplea en shells interactivos.
checkhash
Si est activa, bash comprueba que una orden encontrada
en la tabla de dispersin existe antes de intentar ejecu-
tarlo. Si una orden en la tabla de dispersin ya no
existe, se realiza una bsqueda normal en el PATH.
checkwinsize
Si est activa, bash comprueba el tamao de ventana tras
cada orden y, si es necesario, actualiza los valores de
LINES y COLUMNS.
cmdhist Si est activa, bash intenta guardar todas las lneas de
una orden de varias lneas en la misma entrada de histo-
ria. Esto permite una re-edicin fcil de dichas rdenes.
dotglob Si est activa, bash incluye los nombres de ficheros que
comiencen con un `.' en los resultados de la expansin de
nombres de caminos.
execfail
Si est activa, un shell no interactivo no acabar si no
puede ejecutar el fichero especificado como un argumento
de la orden interna exec. Un shell interactivo no acaba
si exec falla.
expand_aliases
Si est activa, los alias se expanden como se describi
arriba bajo ALIAS. Esta opcin est habilitada de forma
predeterminada para shells interactivos.
extglob Si est activa, se habilitan las caractersticas de con-
cordancia de patrones extendidas descritas ms arriba en
Expansin de nombres de camino.
histappend
Si est activa, la lista de historia se aade al fichero
nombrado segn el valor de la variable HISTFILE cuando el
shell acaba, en vez de sobreescribir el fichero.
histreedit
Si est activa, y readline se est utilizando, se le da al
usuario la oportunidad de re-editar la sustitucin de
historia fallida.
histverify
Si est activa, y readline se est utilizando, los resul-
tados de la sustitucin de historia no se pasan inmedi-
atamente al analizador del shell. En vez de eso, la lnea
resultante se carga en el bfer de edicin de readline,
permitiendo as una modificacin posterior.
hostcomplete
Si est activa, y readline se est utilizando, bash inten-
tar terminar de escribir un nombre de computador
anfitrin cuando se est completando una palabra que con-
tenga una @ (vea Terminacin bajo READLINE arriba). Esto
est activado de forma predeterminada.
huponexit
Si est activa, bash enviar una seal SIGHUP a todos los
trabajos cuando un shell de entrada interactivo final-
ice.
interactive_comments
Si est activa, permite a una palabra que empiece por #
hacer que esa palabra y todos los caracteres restantes
de esa lnea no sean tenidos en cuenta en un shell inter-
activo (vea COMENTARIOS arriba). Esta opcin est habili-
tada por omisin.
lithist Si est activa, y la opcin cmdhist tambin lo est, las
rdenes multi-lnea se guardan en la historia con saltos
de lnea empotrados en vez de emplear como separador el
punto y coma, donde sea posible.
mailwarn
Si est activa, y a un fichero donde bash est buscando
correo nuevo se ha accedido desde la ltima vez que se
busc, se muestra el mensaje ``The mail in mailfile has
been read'', o su equivalente en el idioma local, que en
espaol sera ``El correo en buzn ha sido ledo''.
nocaseglob
Si est activa, bash busca concordancias de nombres de
ficheros sin importar maysculas o minsculas cuando real-
ice la expansin de nombres de caminos (vea Expansin de
nombres de caminos arriba).
nullglob
Si est activa, bash permite que los patrones que no con-
cuerden con ningn fichero (vea Expansin de nombres de
caminos arriba) se expandan a una cadena vaca, en vez de
a s mismos.
promptvars
Si est activa, las cadenas de caracteres que sirven de
indicadores estn sujetas a expansin de variable y
parmetro tras ser expandidas como se describi en INDI-
CADORES arriba. Esta opcin est activa de forma prede-
terminada.
shift_verbose
Si est activa, la orden interna shift muestra un mensaje
de error cuando el nmero de shift excede al de parmetros
posicionales.
sourcepath
Si est activa, la orden interna source (.) emplea el
valor de PATH para buscar el directorio que contenga al
fichero suministrado como argumento. Esta opcin est
activa por omisin.
suspend [-f]
Suspende la ejecucin de este shell hasta que reciba una seal
SIGCONT. La opcin -f dice que no hay que protestar si ste es un
shell de entrada; simplemente suspenderlo de todas formas. El
estado de retorno es 0 a menos que el shell sea de entrada y la
opcin -f no se haya dado, o si el control de trabajos no est
habilitado.
test expr
[ expr ]
Devuelve un estado de 0 1 dependiendo de la evaluacin de la
expresin condicional expr. Cada operador y operando debe ser un
argumento separado. Las expresiones se componen de las pri-
marias descritas ms arriba bajo EXPRESIONES CONDICIONALES.
Las expresiones se pueden combinar mediante los operadores sigu-
ientes, listados en orden decreciente de precedencia.
! expr Verdad si expr es falsa.
( expr )
Devuelve el valor de expr. Esto puede emplearse para
cambiar la precedencia normal de los operadores.
expr1 -a expr2
Verdad si tanto expr1 como expr2 son verdad.
expr1 -o expr2
Verdad si uno al menos de expr1 o expr2 es verdad.
test y [ evalan expresiones condicionales segn un conjunto de
reglas basadas en el nmero de argumentos.
0 argumentos
La expresin es falsa.
1 argumento
La expresin es verdad si y slo si el argumento no est
vaco.
2 argumentos
Si el primer argumento es !, la expresin es verdad si y
slo si el segundo argumento es nulo. Si el primer argu-
mento es uno de los operadores condicionales monarios
listados arriba en EXPRESIONES CONDICIONALES, la expresin
es verdad si el test monario es verdad. Si el primer
argumento no es un operador condicional monario vlido, la
expresin es falsa.
3 argumentos
Si el segundo argumento es uno de los operadores condi-
cionales binarios listados arriba en EXPRESIONES CONDI-
CIONALES, el resultado de la expresin es el resultado del
test binario empleando el primer y tercer argumentos como
operandos. Si el primer argumento es !, el valor es la
negacin del test de dos argumentos empleando el segundo y
tercer argumentos. Si el primer argumento es exactamente
( y el tercer argumento es exactamente ), el resultado es
el test de un argumento del segundo argumento. De otro
modo, la expresin es falsa. Los operadores -a y -o se
consideran como operadores binarios en este caso.
4 argumentos
Si el primer argumento es !, el resultado es la negacin
de la expresin de tres argumentos compuesta por los argu-
mentos restantes. De otra forma, la expresin se analiza
y evala de acuerdo con la precedencia utilizando las
reglas listadas arriba.
5 ms argumentos
La expresin se analiza y evala de acuerdo con la prece-
dencia usando las reglas mencionadas arriba.
times Muestra los tiempos acumulados de usuario y sistema para el
shell y para procesos ejecutados desde l. El estado de retorno
es 0.
trap [-lp] [arg] [nombre-seal ...]
La orden arg va a leerse y ejecutarse cuando el shell reciba
la(s) seal(es) especificada(s) por nombre-seal. Si arg est
ausente o es -, todas las seales especificadas se reestablecen a
sus valores originales (los que tenan cuando se entr en el
shell). Si arg es la cadena vaca, la seal especificada por cada
nombre-seal no se tiene en cuenta por parte del shell y de las
rdenes que se llamen desde l. Si arg es -p entonces se muestran
las rdenes de las trampas asociadas con cada nombre-seal. Si no
se pasan argumentos o si slo se da -p, trap muestra la lista de
rdenes asociadas con cada nmero de seal. Cada nombre-seal es o
bien un nombre de seal de los definidos en <signal.h>, o un
nmero de seal. Si un nombre-seal es EXIT (0), la orden arg se
ejecuta cuando se sale del shell. Si un nombre-seal es DEBUG, la
orden arg se ejecuta tras cada orden simple (vea GRAMTICA DEL
SHELL arriba). La opcin -l hace que el shell muestre una lista
de nombres de seal y sus nmeros correspondientes. Las seales
que no se tienen en cuenta ya cuando se entra en el shell no
pueden ser atrapadas ni restablecidas. Las seales atrapadas se
reestablecen a sus valores originales en un proceso hijo cuando
se crea. El estado de retorno es `falso' si cualquier nombre-
seal no es vlido; de otro modo, trap devuelve `verdad'.
type [-atp] nombre [nombre ...]
Sin opciones, indica cmo ser interpretado cada nombre si se usa
como un nombre de orden. Si se emplea la opcin -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 del shell, una funcin, una orden interna
incorporada en el shell, o un fichero 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 opcin -p, type
devuelve o bien el nombre del fichero de disco que se ejecutara
si se especificara nombre como un nombre de orden, o bien nada
si type -t nombre no devolviera file. Si una orden est en la
tabla de dispersin, -p muestra el valor de dicha tabla, no nece-
sariamente el fichero que aparezca primero en PATH. Si se
emplea la opcin -a, type muestra todos los sitios que contengan
un ejecutable llamado nombre. Esto incluye alias y funciones,
si y slo si la opcin -p no se ha usado tambin. La tabla de
dispersin de las rdenes no se consulta cuando se emplea -a.
type devuelve `verdad' si cualquiera de los argumentos se
encuentra, `falso' si no se encuentra ninguno.
ulimit [-SHacdflmnpstuv [lmite]]
Proporciona control sobre los recursos disponibles para el shell
y para los procesos arrancados por l, en sistemas que permitan
tal control (Linux por ejemplo, y por supuesto). El valor de
lmite puede ser un nmero en la unidad especificada para el
recurso, o el valor unlimited, o sea, ilimitado. Las opciones
-H y -S especifican que el lmite para el recurso dado va a ser
duro o blando. Un lmite duro es aqul que no puede ser aumentado
una vez puesto; un lmite blando puede incrementarse hasta el
valor dado por el lmite duro. Si no se especifican ni -H ni -S,
se establecen ambos lmites. Si lmite se omite, se muestran los
valores del lmite blando del recurso, a menos que se d la opcin
-H. Cuando se especifica ms de un recurso, se imprime el nombre
del lmite y la unidad antes del valor. Otras opciones se inter-
pretan como sigue:
-a Se informa de todos los lmites actuales
-c El tamao mximo de ficheros de volcados de memoria (core)
-d El tamao mximo del segmento de datos de un proceso
-f El tamao mximo de ficheros creados por el shell
-l El tamao mximo que puede ser bloqueado en memoria
-m El tamao del mximo conjunto residente (memoria)
-n EL nmero mximo de descriptores de ficheros abiertos (la
mayora de sistemas no permiten establecer este valor)
-p El tamao de una tubera en bloques de 512 B (esto puede no
estar establecido)
-s El tamao mximo de pila
-t La mxima cantidad de tiempo de CPU en segundos
-u El nmero mximo de procesos disponibles para un solo
usuario
-v La mxima cantidad de memoria virtual disponible para el
shell
Si se da lmite, es el nuevo valor del recurso especificado (la
opcin -a es slo para mostrar los valores). Si no se da ninguna
opcin, entonces se supone -f. Los valores estn en incrementos
de 1024 B, excepto para -t, que est en segundos, -p, que est en
unidades de bloques de 512 B, y -n y -u, que son valores adimen-
sionales. El estado de retorno es 0 a menos que se encuentre una
opcin invlida, se d como lmite un argumento no numrico distinto
de unlimited, o bien ocurra un error mientras se establece un
nuevo lmite.
umask [-p] [-S] [modo]
La mscara de creacin de ficheros del usuario se establece a
modo. Si modo empieza con un dgito, se interpreta como un nmero
octal; si no, se interpreta como un modo simblico similar al
aceptado por chmod(1). Si modo se omite, o si se da la opcin
-S, se muestra el valor actual de la mscara. La opcin -S hace
que la mscara se imprima en forma simblica; la salida predeter-
minada es como un nmero octal. Si se da la opcin -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 cambi exitosa-
mente o si no se dio el argumento modo, y `falso' en otra cir-
cunstancia.
unalias [-a] [nombre ...]
Quita nombres de la lista de alias definidos. Si se da la opcin
-a, se quitan todas las definiciones de alias. El estado de sal-
ida es `verdad' a menos que un nombre dado no sea un alias
definido.
unset [-fv] [nombre ...]
Para cada nombre, borra la variable o funcin correspondiente.
Si no se dan opciones, o se da la opcin -v, cada nombre se
refiere a una variable del shell. Las variables de lectura
exclusiva no pueden borrarse. Si se especifica -f, cada nombre
se refiere a una funcin del shell, y se borra la definicin de la
funcin. Cada variable o funcin se quita del entorno pasado a
rdenes subsiguientes. Si se quita cualquiera de RANDOM, SEC-
ONDS, LINENO, HISTCMD, o DIRSTACK, pierde su propiedad especial,
incluso aunque ms adelante se vuelva a definir. El estado de
salida es `verdad' a menos que nombre no exista o sea de lectura
exclusiva.
wait [n]
Espera al proceso especificado y devuelve su estado de termi-
nacin. n puede ser un identificador de proceso (PID) o una
especificacin de trabajo; si se da una espec. de trabajo, se
espera a todos los procesos en la tubera de ese trabajo. Si n no
se da, se espera a todos los procesos hijos activos actualmente,
y el estado de retorno es cero. Si n especifica un proceso o
trabajo no existente, el estado de retorno es 127. De otro modo,
el estado de retorno es el estado de salida del ltimo proceso o
trabajo al que se esper.
Si bash se arranca con el nombre rbash, o se da la opcin -r en la lla-
mada, el shell se convierte en restringido. Un shell restringido se
emplea para establecer un ambiente ms controlado que el que el shell
estndar proporciona. Se comporta de forma idntica a bash con la
excepcin de que lo siguiente no est permitido o no se realiza:
+o cambiar de directorio con cd
+o establecer o anular los valores de SHELL o de PATH
+o especificar nombres de rdenes que contengan /
+o especificar un nombre de fichero que contenga al menos una /
como un argumento de la orden interna . (source)
+o importar definiciones de funciones desde el entorno del shell en
el arranque
+o analizar el valor de SHELLOPTS desde el entorno del shell en el
arranque
+o redirigir la salida usando los operadores de redireccin >, >|,
<>, >&, &>, y >>
+o utilizar la orden interna exec para reemplazar el shell por otro
programa
+o aadir o eliminar rdenes incorporadas con las opciones -f o -d de
la orden interna enable.
+o dar la opcin -p a la orden interna command.
+o desactivar el modo restringido con set +r o set +o restricted.
Estas restricciones entran en vigor despus de que se lean los ficheros
de arranque que hubiera.
Cuando se ejecuta una orden que resulta ser un guin del shell (vea EJE-
CUCIN DE RDENES arriba), rbash desactiva todas las restricciones en el
shell lanzado para ejecutar el guin.
Bash Features (Caractersticas de Bash), Brian Fox & 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 Transportables (POSIX) Parte 2:
Shell y Utilidades), IEEE
zsh(1), ash(1), sh(1), ksh(1), csh(1), tcsh(1).
emacs(1), vi(1)
readline(3)
/bin/bash
La imagen ejecutable de bash
/etc/profile
El fichero de inicio general, ledo en shells de entrada
~/.bash_profile
El fichero de inicio personal, ledo para shells de entrada
~/.bashrc
El fichero individual de arranque para shells interactivos
~/.inputrc
El fichero de inicio individual de readline
Brian Fox, Free Software Foundation
bfox [AT] gnu.Edu
Chet Ramey, Case Western Reserve University
chet [AT] ins.Edu
Traduccin al espaol: Gerardo Aburruzaga Garca, para el proyecto PAMELI.
Gerardo [AT] CICA.es
Si Ud. encuentra un fallo en bash, debera informar de ello. Pero
primero debera asegurarse de que realmente es un fallo, y de que
aparece en la ltima versin de bash que tenga.
Una vez que Ud. ha determinado que realmente existe un fallo, utilice
la orden bashbug para enviar el informe correspondiente. Si Ud. ha
encontrado cmo corregirlo, se le anima a que nos mande tambin la cor-
reccin! Las sugerencias y los informes de fallos `filosficos' se
pueden enviar por correo electrnico a bug-bash [AT] gnu.org o se pueden pub-
licar en el grupo de discusiones de Usenet gnu.bash.bug.
TODOS los informes de fallos deben incluir:
El nmero de versin de bash
El tipo de computador (hardware) y el sistema operativo
El compilador que se emple para compilarlo
Una descripcin del comportamiento del fallo
Un corto guin o `receta' para reproducir el fallo
bashbug inserta automticamente 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 pgina de
manual deben dirigirse a chet [AT] ins.Edu.
Los relativos a la traduccin de esta pgina deben dirigirse a ger-
ardo [AT] cica.es o discutirse en el marco del proyecto PAMELI; contacte con
nosotros en http://elcano.dif.um.es/~piernas/manpages-es.
Es demasiado grande y demasiado lento.
Hay algunas sutiles diferencias entre bash y versiones tradicionales
del shell de Bourne sh, mayormente debidas a la especificacin POSIX.
Los alias son confusos en algunos casos.
Las rdenes internas del shell y las funciones no son interrumpi-
bles/rearrancables.
Las rdenes compuestas y las secuencias de rdenes de la forma `a ; b ;
c' no se manejan de forma muy elegante cuando se intenta suspender el
proceso. Cuando un proceso es parado, el shell ejecuta inmediatamente
la siguiente orden de la secuencia. Para remediar esto es suficiente
poner la secuencia de rdenes entre parntesis; as la forzamos a ejecu-
tarse en un subshell, que puede pararse como una unidad.
Las rdenes dentro de una sustitucin de orden de tipo $(...) no se anal-
izan hasta que se intenta la sustitucin. Esto provocar un retraso en la
aparicin de mensajes posibles de error hasta algn tiempo despus de que
se introduzca la orden.
Las variables de tipo vector no pueden (an) exportarse.
GNU 1 Abril 1998 BASH(1)