Provided by: manpages-es_4.21.0-2_all 

NOMBRE
glob - Generación de nombres de rutas de archivos
DESCRIPCIÓN
Tiempo atrás, en UNIX V6 existía una aplicación /etc/glob que expandía patrones con comodines.
Actualmente es una orden integrada en la shell.
Actualmentes, está disponible una rutina de biblioteca glob(3) que efectúa esta función en las
aplicaciones de usuario.
Las reglas son como sigue (POSIX.2, 3.13).
Concordancia de comodines
Se considera que una cadena de caracteres es un patrón con comodines si contiene al menos uno de los
siguientes caracteres '?', '*' o '['. La generación de nombres de ruta ('globbing') es la operación que
expande un patrón con comodines formando una lista de nombres de ruta de archivos que concuerdan con el
patrón. La concordancia se define así:
Un signo de cierre de interrogación '?' (no entre corchetes) concuerda con cualquier carácter simple.
Un asterisco '*' (no entre corchetes) concuerda con cualquier cadena de caracteres, incluyendo la cadena
vacía.
Clases de caracteres
Una expresión "[...]" donde el primer carácter tras el '[' no es '!' concuerda con un carácter simple; a
saber, cualquiera de los caracteres entre corchetes. La cadena entre corchetes no puede estar vacía; por
ello, ']' puede estar entre corchetes siempre que sea el primer carácter. Así, "[][!]" concuerda con uno
de los tres caracteres '[', ']' y '!'.
Intervalos
Existe un convenio especial: dos caracteres separados por '-' denotan un intervalo. (Así, "[A-Fa-f0-9]"
equivale a "[ABCDEFabcdef0123456789]".) Se puede incluir '-' con su sentido literal poniéndolo como el
primer o el último carácter entre corchetes. (Así, "[]-]" concuerda justo con uno de los dos caracteres
']' y '-' y "[--0]" concuerda con los tres caracteres '-', '.', '0', porque no es posible buscar
concordancia de '/'.)
Complementación
Una expresión "[!...]" concuerda con un carácter simple; a saber, cualquier carácter que no concuerde con
la expresión obtenida al quitar el '!' de ella. Así, "[!]a-]" concuerda con cualquier carácter simple
excepto ']', 'a' y '-'.
Uno puede anular el significado especial de '?', '*' y '[' haciéndolos preceder de una barra invertida o,
en caso de formar parte de una orden de la shell, entrecomillándolos. Entre corchetes, estos caracteres
se representan a sí mismos. Así, "[[?*\]" concuerda con uno de los cuatro caracteres '[', '?', '*' y '\'.
Nombres de Ruta
La expansión se aplica a cada uno de los componentes de un nombre de ruta por separado. '/' en un nombre
de ruta no puede concordar con un comodín '?' ni '*', ni con un rango como "[.-0]". Un intervalo no puede
contener '/'; constituye un error de sintaxis. El estándar POSIX especifica que los patrones incorrectos
no debe modificarse.
Si un nombre de fichero comienza con un punto '.', este carácter debe concordar explícitamente. (Así,
rm * no borrará, por ejemplo, .profile, y tar c * no archivará todos sus ficheros; tar c . es mejor.)
Listas vacías
La bonita y simple regla dada arriba: "expandir un patrón de comodines a una lista de nombres de caminos
que concuerdan" fue la definición original de UNIX. Le permitía a uno tener patrones que se `expandían' a
una lista vacía, como en
xv -wait 0 *.gif *.jpg
donde quizás no había ningún archivo gif presente (y esto no es un error). Sin embargo, POSIX requiere
que un patrón de comodines se deje sin cambios cuando sea sintácticamente incorrecto o cuando la lista de
nombres de ruta concordantes esté vacía. Con bash uno puede forzar el comportamiento clásico mediante
esta orden:
shopt -s nullglob
(Problemas similares ocurren por todas partes. Por ejemplo, si un antiguo script contiene
rm `find . -name "*~"`
una adapatación moderna requerirá
rm -f no-tal-archivo `find . -name "*~"`
para evitar mensajes de error de rm llamado con una lista de argumentos vacía.)
NOTAS
Expresiones regulares
Observe que los patrones de comodines no son expresiones regulares, aunque son algo similares. Lo
primero, concuerdan con nombres de ficheros en vez de con texto, y lo segundo, los convenios no son los
mismos: p.ej., en una expresión regular '*' significa cero o más copias de lo precedente.
Ahora que las expresiones regulares tienen expresiones de corchetes donde la negación se indica por un
acento circunflejo '^', POSIX ha declarado que el efecto de un patrón "[^...]" está indefinido.
Clases de caracteres e internacionalización
Por supuesto los rangos significaban originalmente rangos ASCII, asíque "[ -%]" significaba "[ !"#$%]" y
"[a-z]" quería decir "cualquierletra minúscula". Algunas implementaciones de UNIX generalizaron esto de
forma que un rango X-Y significara el conjunto de caracteres cuyos códigos estuvieran entre los de X y
los de Y. Sin embargo, esto requiere que el usuario conozca la codificación de caracteres que se emplee
en el sistema local, y aún más, esto no es conveniente si la secuencia de clasificación para el alfabeto
local difiere del ordenamiento de los códigos de caracteres. Por lo tanto, POSIX extendió grandemente la
notación de corchetes, tanto para patrones de comodines como para expresiones regulares. Antes vimos tres
tipos de elementos que pueden estar en una expresión de corchetes; a saber, (I) la negación, (II)
caracteres simples explícitos, y (III) rangos. POSIX especifica los rangos de una manera más útil
internacionalmente y añade tres tipos más:
(III) Los rangos X-Y comprenden todos los caracteres que caigan entre X e Y (incluidos) en la secuencia
de clasificación en curso según se defina en la categoría LC_COLLATE para la localización o escenario
actual.
(IV) Clases de caracteres nombradas, como
[:alnum:] [:alpha:] [:blank:] [:cntrl:]
[:digit:] [:graph:] [:lower:] [:print:]
[:punct:] [:space:] [:upper:] [:xdigit:]
de modo que uno pueda decir "[[:lower:]]" en vez de "[a-z]", con el significado de cualquier letra
minúscula, y esto funcione por ejemplo también en Dinamarca, donde hay tres letras en el alfabeto después
de la 'z'. Estas clases de caracteres están definidas por la categoría LC_CTYPE en el escenario en curso.
(V) Símbolos de colación, como "[.ch.]" o "[.a-acute.]", donde la cadena entre "[." y ".]" es un elemento
de colación definido por el escenario en curso. Observe que esto puede ser un elemento multi-carácter.
(VI) Expresiones de clase de equivalencia, como "[=a=]", donde la cadena entre "[=" y "=]" es cualquier
elemento de colación de su clase de equivalencia, según se defina para el escenario en curso. Por
ejemplo, "[[=a=]]" podría ser equivalente a "[aáàäâ]", esto es, equivalente a
"[a[.a-acute.][.a-grave.][.a-umlaut.][.a-circumflex.]]".
VÉASE TAMBIÉN
sh(1), fnmatch(3), glob(3), locale(7), regex(7)
TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Gerardo Aburruzaga García
<gerardo.aburruzaga@uca.es>, Miguel Pérez Ibars <mpi79470@alu.um.es> y Marcos Fouces <marcos@debian.org>
Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con
respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a
debian-l10n-spanish@lists.debian.org.
Páginas de manual de Linux 6.03 5 Febrero 2023 glob(7)