.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1998 Andries Brouwer .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, see .\" . .\" %%%LICENSE_END .\" .\" 2003-08-24 fix for / by John Kristoff + joey .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH GLOB 7 "13 Agosto 2020" Linux "Manual del Programador de Linux" .SH NOMBRE glob \- Generación de nombres de rutas de archivos .SH DESCRIPCIÓN Tiempo atrás, en UNIX\ V6 existía una aplicación \fI/etc/glob\fP que expandía patrones con comodines. Actualmente es una orden integrada en la shell. .PP Actualmentes, está disponible una rutina de biblioteca \fBglob\fP(3) que efectúa esta función en las aplicaciones de usuario. .PP Las reglas son como sigue (POSIX.2, 3.13). .SS "Concordancia de comodines" Una cadena de caracteres es un patrón con comodines si contiene uno al menos de los caracteres \(aq?\(aq, \(aq*\(aq o \(aq[\(aq. 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í: .PP Un signo de cierre de interrogación \(aq?\(aq (no entre corchetes) concuerda con cualquier carácter simple. .PP Un asterisco \(aq*\(aq (no entre corchetes) concuerda con cualquier cadena de caracteres, incluyendo la cadena vacía. .PP \fBClases de caracteres\fP .PP 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 `!'.) .PP \fBIntervalos\fP .PP Existe un convenio especial: dos caracteres separados por \(aq\-\(aq denotan un intervalo. (Así, "\fI[A\-Fa\-f0\-9]\fP" equivale a "\fI[ABCDEFabcdef0123456789]\fP".) Se puede incluir \(aq\-\(aq con su sentido literal poniéndolo como el primer o el último carácter entre corchetes. (Así, "\fI[]\-]\fP" concuerda justo con uno de los dos caracteres \(aq]\(aq y \(aq\-\(aq y "\fI[\-\-0]\fP" concuerda con los tres caracteres \(aq\-\(aq, \(aq.\(aq, \(aq0\(aq, porque no es posible buscar concordancia de \(aq/\(aq.) .PP \fBComplementación\fP .PP 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 `\-'.) .PP Uno puede anular el significado especial de `?', `*' y `[' haciéndolos preceder de una barra inclinada invertida `\e', 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í, "[[?*\e]" concuerda con uno de los cuatro caracteres `[', `?', `*' y `\e'. .SS "Nombres de Ruta" La expansión se aplica a cada uno de los componentes de un nombre de ruta por separado. \(aq/\(aq en un nombre de ruta no puede concordar con un comodín \(aq?\(aq ni \(aq*\(aq, ni con un rango como "\fI[.\-0]\fP". Un intervalo no puede contener \(aq/\(aq; constituye un error de sintaxis. El estándar POSIX especifica que los patrones incorrectos no debe modificarse. .PP Si un nombre de fichero comienza con un punto `.', este carácter debe concordar explícitamente. (Así, \fIrm\ *\fP no borrará, por ejemplo, .profile, y \fItar\ c\ *\fP no archivará todos sus ficheros; \fItar\ c\ .\fP es mejor.) .SS "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 .PP .nf xv \-wait 0 *.gif *.jpg .fi .PP donde quizás no había ningún archivo 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 ruta concordantes esté vacía. Con \fIbash\fP uno puede forzar el comportamiento clásico mediante esta orden: .PP .\" In Bash v1, by setting allow_null_glob_expansion=true shopt \-s nullglob .PP (Problemas similares ocurren por todas partes. Por ejemplo, si un antiguo script contiene .PP .nf rm \`find . \-name "*\(ti"\` .fi .PP una adapatación moderna requerirá .PP .nf rm \-f no\-tal\-fichero \`find . \-name "*\(ti"\` .fi .PP para evitar mensajes de error de \fIrm\fP llamado con una lista de argumentos vacía.) .SH NOTAS .SS "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 \(aq*\(aq significa cero o más copias de lo precedente. .PP Ahora que las expresiones regulares tienen expresiones de corchetes donde la negación se indica por un acento circunflejo \(aq\(ha\(aq, POSIX ha declarado que el efecto de un patrón "\fI[\(ha...]\fP" está indefinido. .SS "Clases de caracteres e internacionalización" Por supuesto los rangos significaban originalmente rangos ASCII, asíque "\fI[\ \-%]\fP" significaba "\fI[\ !"#$%]\fP" y "\fI[a\-z]\fP" quería decir "cualquierletra 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: .PP (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 \fBLC_COLLATE\fP para la localización o escenario actual. .PP (IV) Clases de caracteres nombradas, como .PP .nf [:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:] .fi .PP de modo que uno pueda decir "\fI[[:lower:]]\fP" en vez de "\fI[a\-z]\fP", 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 \fBLC_CTYPE\fP en el escenario en curso. .PP (V) Símbolos de colación, como "\fI[.ch.]\fP" o "\fI[.a\-acute.]\fP", donde la cadena entre "\fI[.\fP" y "\fI.]\fP" es un elemento de colación definido por el escenario en curso. Observe que esto puede ser un elemento multi\-carácter. .PP (VI) Expresiones de clase de equivalencia, como "\fI[=a=]\fP", donde la cadena entre "\fI[=\fP" y "\fI=]\fP" es cualquier elemento de colación de su clase de equivalencia, según se defina para el escenario en curso. Por ejemplo, "\fI[[=a=]]\fP" podría ser equivalente a "\fI[a\('a\(\`a\(:a\(^a]\fP"; esto es, equivalente a "\fI[a[.a\-acute.][.a\-grave.][.a\-umlaut.][.a\-circumflex.]]\fP". .SH "VÉASE TAMBIÉN" \fBsh\fP(1), \fBfnmatch\fP(3), \fBglob\fP(3), \fBlocale\fP(7), \fBregex\fP(7) .SH COLOFÓN Esta página es parte de la versión 5.10 del proyecto Linux \fIman\-pages\fP. Puede encontrar una descripción del proyecto, información sobre cómo informar errores y la última versión de esta página en \%https://www.kernel.org/doc/man\-pages/. .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Gerardo Aburruzaga García , Miguel Pérez Ibars y Marcos Fouces . Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org>. .ME .