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

NOMBRE

       glob - Generacion de nombres de rutas de ficheros

DESCRIPCI'ON

       Hace  mucho  tiempo,  en  Unix  V6,  habia un programa en /etc/glob que
       expandia  patrones  con  comodines.   Poco  despues  este  programa  se
       convirtio en una orden incorporada en el shell.

       Hogano existe tambien una rutina de biblioteca glob(3) que efectua esta
       funcion para un programa de usuario.

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

CONCORDANCIA DE COMODINES

       Una cadena de caracteres es un patron con comodines si contiene uno  al
       menos  de  los  caracteres  `?', `*' o `['. La generacion de nombres de
       caminos (en ingles, `globbing') es la operacion que expande  un  patron
       con  comodines formando una lista de nombres de caminos de ficheros que
       concuerdan con el patron. La concordancia se define asi:

       Un signo de cierre de interrogacion `?' (no entre corchetes)  concuerda
       con cualquier caracter simple.

       Un asterisco `*' (no entre corchetes) concuerda con cualquier cadena de
       caracteres, incluyendo la cadena vacia.

   Clases de caracteres
       Una expresion entre corchetes `[...]' donde el primer caracter tras  el
       corchete  de  apertura  `[' no es un signo de cierre de admiracion `!',
       concuerda con un caracter simple; a saber, cualquiera de los caracteres
       encerrados   entre  los  corchetes.   La  cadena  encerrada  entre  los
       corchetes no puede estar vacia; por ello, el  corchete  de  cierre  `]'
       puede  estar  entre  los  corchetes,  siempre  que  sea  como el primer
       caracter. (Asi, `[][!]' concuerda con uno de los tres  caracteres  `['.
       `]' y `!'.)

   Rangos
       Existe  un convenio especial: dos caracteres separados por el guion `-'
       denotan   un   rango.    (Asi,   `[A-Fa-f0-9]'   es    equivalente    a
       `[ABCDEFabcdef0123456789]'.)   Se  puede  incluir  el  guion `-' con su
       sentido literal poniendolo como el primer o el  ultimo  caracter  entre
       los  corchetes.   (Asi,  `[]-]'  concuerda  justo  con  uno  de los dos
       caracteres `]'  o  `-',  y  `[--/]'  concuerda  con  uno  de  los  tres
       caracteres `-', `.', ' /'.)

   Complementaci'on
       Una  expresion  `[!...]'  concuerda  con  un  caracter simple; a saber,
       cualquier caracter que no concuerde con la expresion obtenida al quitar
       el  primer  cierre de admiracion `!' de ella.  (Asi, `[!]a-]' concuerda
       con cualquier caracter simple excepto `]', `a' y `-'.)

       Uno puede anular el significado especial de `?', `*' y `['  haciendolos
       preceder  de  una  barra  inclinada invertida `\', o, en caso de formar
       parte de una orden del  shell,  encerrandolos  entre  comillas.   Entre
       corchetes,  estos caracteres se representan a si mismos.  Asi, `[[?*\]'
       concuerda con uno de los cuatro caracteres `[', `?', `*' y `\'.

NOMBRES DE CAMINOS

       La expansion 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 comodin  `?'  ni  `*',  ni  con  un  rango  como
       `[.-0]'.  Un  rango  no  puede contener un caracter `/' explicito; esto
       llevaria a un error de sintaxis.

       Si un nombre de fichero comienza con un punto `.', este  caracter  debe
       concordar  explicitamente.   (Asi,  `rm  *'  no  borrara,  por ejemplo,
       .profile, y `tar -c *' no archivara todos sus ficheros; `tar -c  .'  es
       mejor.)

LISTAS VAC'IAS

       La  bonita y simple regla dada arriba: `expandir un patron de comodines
       a una lista de nombres de caminos que  concuerdan'  fue  la  definicion
       original de Unix. Le permitia a uno tener patrones que se `expandian' a
       una lista vacia, como en
            xv -wait 0 *.gif *.jpg
       donde quizas no habia ningun fichero GIF presente  (y  esto  no  es  un
       error).  Sin embargo, POSIX requiere que un patron de comodines se deje
       sin cambios cuando sea sintacticamente incorrecto o cuando la lista  de
       nombres  de  camino concordantes este vacia.  Con bash uno puede forzar
       el comportamiento clasico 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 requeriran
            rm -f no-tal-fichero `find . -name "*~"`
       para evitar mensajes de error de rm llamado con una lista de argumentos
       vacia.)

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 expresion regular `*' significa cero o mas copias
       de lo precedente.

       Ahora  que  las  expresiones  regulares tienen expresiones de corchetes
       donde la negacion se indica por un acento  circunflejo  `^',  POSIX  ha
       declarado  que  el efecto de un patron `[^...]' esta indefinido. En zsh
       tiene el mismo efecto que `[!...]'.

   Clases de caracteres e internacionalizaci'on
       Por supuesto los rangos significaban originalmente  rangos  ASCII,  asi
       que  `[  -%]'  significaba `[ !"#$%]' y `[a-z]' queria decir "cualquier
       letra minuscula".  Algunas implementaciones de Unix generalizaron  esto
       de  forma  que un rango X-Y significara el conjunto de caracteres cuyos
       codigos estuvieran entre los de  X  y  los  de  Y.  Sin  embargo,  esto
       requiere  que  el  usuario conozca la codificacion de caracteres que se
       emplee en el sistema local, y aun mas, esto no  es  conveniente  si  la
       secuencia   de   clasificacion  para  el  alfabeto  local  difiere  del
       ordenamiento de  los  codigos  de  caracteres.   Por  lo  tanto,  POSIX
       extendio  grandemente  la notacion de corchetes, tanto para patrones de
       comodines como para expresiones regulares.  Antes vimos tres  tipos  de
       elementos  que pueden estar en una expresion de corchetes; a saber, (I)
       la negacion, (II) caracteres simples explicitos, y (III) rangos.  POSIX
       especifica los rangos de una manera mas util internacionalmente y anade
       tres tipos mas:

       (III) Los rangos X-Y comprenden todos los caracteres que caigan entre X
       e  Y  (incluidos)  en  la  secuencia de clasificacion en curso segun se
       defina en la categoria LC_COLLATE  para  la  localizacion  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 minuscula, y esto funcione  por  ejemplo
       tambien  en  Dinamarca, donde hay tres letras en el alfabeto despues de
       la zeta.  Estas clases de caracteres estan definidas por  la  categoria
       LC_CTYPE en el escenario en curso.

       (V)  Simbolos  de  colacion,  como  `[.ch.]'  o `[.a-acute.]', donde la
       cadena entre `[.' y `.]' es un elemento de  colacion  definido  por  el
       escenario  en  curso.  Observe  que  esto  puede ser un elemento multi-
       caracter.

       (VI) Expresiones de clase  de  equivalencia,  como  `[=a=]',  donde  la
       cadena  entre `[=' y `=]' es cualquier elemento de colacion de su clase
       de equivalencia, segun se  defina  para  el  escenario  en  curso.  Por
       ejemplo,  `[[=a=]]'  podria ser equivalente a `[aaaaaaaa]' (aviso: esto
       es  Latin1);  esto  es,  equivalente  a   `[a[.a-acute.][.a-grave.][.a-
       umlaut.][.a-circumflex.][.a-tilde.][.a-ring.]]'.

V'EASE TAMBI'EN

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