Provided by: manpages-es_1.55-9_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)