Provided by: manpages-es_1.55-10_all bug

NOMBRE

       glob - Generación de nombres de rutas de ficheros

DESCRIPCIÓN

       Hace  mucho tiempo, en Unix V6, había un programa en /etc/glob que expandía patrones con comodines.  Poco
       después este programa se convirtió en una orden incorporada en el shell.

       Hogaño existe también una rutina de biblioteca glob(3) que efectúa  esta  función  para  un  programa  de
       usuario.

       Las reglas son como sigue (POSIX 1003.2, 3.13).

CONCORDANCIA DE COMODINES

       Una cadena de caracteres es un patrón con comodines si contiene uno al menos de los caracteres `?', `*' o
       `['.  La  generación  de nombres de caminos (en inglés, `globbing') es la operación que expande un patrón
       con comodines formando una lista de nombres de caminos de ficheros  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 entre corchetes `[...]' donde el primer carácter tras el corchete de apertura `[' no es  un
       signo  de  cierre  de  admiración  `!',  concuerda  con  un  carácter  simple; a saber, cualquiera de los
       caracteres encerrados entre los corchetes.  La cadena encerrada entre los corchetes no puede estar vacía;
       por ello, el corchete de cierre `]' puede estar entre los corchetes,  siempre  que  sea  como  el  primer
       carácter. (Así, `[][!]' concuerda con uno de los tres caracteres `['. `]' y `!'.)

   Rangos
       Existe  un  convenio especial: dos caracteres separados por el guión `-' denotan un rango.  (Así, `[A-Fa-
       f0-9]' es equivalente a `[ABCDEFabcdef0123456789]'.)  Se puede  incluir  el  guión  `-'  con  su  sentido
       literal poniéndolo como el primer o el último carácter entre los corchetes.  (Así, `[]-]' concuerda justo
       con  uno  de los dos caracteres `]' o `-', y `[--/]' concuerda con uno de los tres caracteres `-', `.', '
       /'.)

   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 primer cierre de admiración `!' 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  inclinada
       invertida  `\',  o,  en caso de formar parte de una orden del shell, encerrándolos entre comillas.  Entre
       corchetes, estos caracteres se representan a sí mismos.  Así, `[[?*\]' concuerda con uno  de  los  cuatro
       caracteres `[', `?', `*' y `\'.

NOMBRES DE CAMINOS

       La  expansión  se  aplica  a  cada  uno de los componentes de un nombre de camino por separado. Una barra
       inclinada `/' en un nombre de camino no puede concordar con un comodín `?' ni `*', ni con un  rango  como
       `[.-0]'. Un rango no puede contener un carácter `/' explícito; esto llevaría a un error de sintaxis.

       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 fichero 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  camino  concordantes  esté  vacía.   Con  bash  uno  puede  forzar el comportamiento clásico
       estableciendo allow_null_glob_expansion=true y  con  zsh  con  setopt  null_glob.   (Problemas  similares
       ocurren por todas partes. Por ejemplo, donde guiones viejos tengan
            rm `find . -name "*~"`
       los nuevos requerirán
            rm -f no-tal-fichero `find . -name "*~"`
       para evitar mensajes de error de rm llamado con una lista de argumentos vacía.)

OBSERVACIONES

   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.  En  zsh
       tiene el mismo efecto que `[!...]'.

   Clases de caracteres e internacionalización
       Por supuesto los rangos significaban originalmente rangos ASCII, así que `[ -%]' significaba `[ !"#$%]' y
       `[a-z]' quería decir "cualquier letra 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 zeta.  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áàäâãäå]' (aviso: esto es Latin1); esto es, equivalente a
       `[a[.a-acute.][.a-grave.][.a-umlaut.][.a-circumflex.][.a-tilde.][.a-ring.]]'.

VÉASE TAMBIÉN

       sh(1), glob(3), fnmatch(3), locale(7), regex(7)

Unix                                              12 Junio 1998                                          GLOB(7)