# Glob

En programación de ordenadores glob es una abreviatura de global command, una biblioteca escrita en lenguaje C y muy utilizada en entornos Unix y GNU/Linux. Se diferencia fácilmente de las expresiones regulares por su sencillez y sus diferentes equivalencias en cuanto a los caracteres comodines utilizados y su extenso uso fuera de su entorno. Su código fuente es ampliamente publicado por pertenecer a Software libre y cualquier persona puede consultarlo.
Si bien dicha función tiene estrictas reglas de uso en programación, su utilidad es fácilmente comprensible para la mayoría de los programadores al punto tal que forma parte intrínseca del shell de muchos sistemas operativos (MS-DOS, GNU/Linux) e incluso otros lenguajes como SQL en su Lenguaje de manipulación de datos (DML Data Manipulation Language), Pascal y Python.

## Historia

Su uso se remonta a las primeras versiones de UNIX donde fue incluido desde 1971 como herramienta estándar. Inicialmente expandía el parámetro o parámetros utilizados y a su vez invocaba el mismo comando del cual fue invocado pero con el resultado o los resultados producido por glob. Un ejemplo práctico y conocido es el uso del comando ls en GNU/Linux.
Con el paso de los años, de facto, se ha constituido de forma ubicua y la mayor parte de los programadores ignoran su uso como objeto y no lo incluyen directamente en sus programas. Por tanto, se apoyan de lleno en el soporte que prestan cada uno de los sistemas operativos que lo incluyen mediante POSIX y lo utilizan indirectamente. glob forma parte del conjunto de programas de utilidades comunes para apoyar la portabilidad de las aplicaciones a nivel de código fuente en POSIX. Hoy en día se ha derivado, en idioma inglés, a su uso como verbo, así pues es común decir a web server that supports globbing (un servidor web que tiene apoyo para consultas del tipo glob).

## Comodines mayormente utilizados

Estrictamente hablando, en la función glob utiliza el asterisco, el signo de interrogación y el corchete. De los comodines mayormente utilizados en otros entornos destacan el *(asterisco), %(signo de porcentaje), _(guion bajo), ?(signo de cierre de interrogación) y el signo de exclamación.

## Lenguajes que contienen una utilería con el mismo nombre

A fin de hacerle mejoras en seguridad y uso, los desarrolladores de diferentes lenguajes se han dado a la tarea de incluir versiones para su propio uso, conservando e incluso reconociendo sus similitudes y origen:
* El lenguaje Go en su paquete denominado filepath.
* El lenguaje Java en su paquete de file operations.
* El lenguaje Haskell implementado como System.FilePath.Glob (explícitamente reconocen que se parece a la biblioteca glob de acuerdo a POSIX).
* El lenguaje PHP le dedica un manual completo a la función pero indicando de manera indirecta a glob como está implementado como la mayoría de los SHELL de los sistemas operativos.
* El lenguaje Python, al igual que PHP reconoce también que funciona según normas POSIX (UNIX style) y le dedica un módulo completo al tema.

## Comparación con las Expresiones Regulares

Glob no incluye sintaxis para la Clausura de Kleene que permite múltiples repeticiones de las partes precedentes de la expresión; por lo tanto las expresiones en glob no pueden considerarse expresiones regulares, esto es, expresiones que pueden describir el conjunto completo de las expresiones regulares de un lenguaje dado en cualquier alfabeto finito.
| Common wildcard | Expresión Regular Equivalente |