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)