<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Patrones de englobamiento del shell</title><meta name="generator" content="DocBook XSL Stylesheets V1.64.0"><link rel="home" href="index.html" title="Guía de Referencia"><link rel="up" href="cmdline.html" title="Capítulo 3. Introducción a la Línea de comandos"><link rel="previous" href="cmdline-attr.html" title="Manipulación de los atributos de los archivos"><link rel="next" href="shell-pipes.html" title="Redirecciones y tuberías"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Patrones de englobamiento del shell</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="cmdline-attr.html">Anterior</a> </td><th width="60%" align="center">Capítulo 3. Introducción a la Línea de comandos</th><td width="20%" align="right"> <a accesskey="n" href="shell-pipes.html">Siguiente</a></td></tr></table><hr></div><div class="sect1" lang="es"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="glob-regex"></a>Patrones de englobamiento del shell</h2></div></div><div></div></div><p><a name="BId-cmdline-pa69"></a><a class="indexterm" name="BId-cmdline-it33"></a> <a class="indexterm" name="BId-cmdline-it34"></a> <a class="indexterm" name="BId-cmdline-it35"></a>Probablemente Usted ya usa caracteres de <a name="BId-cmdline-gt3" href="glossary.html#term-globbing"><i class="glossterm">englobamiento</i></a> sin saberlo. Cuando Usted especifica un archivo en <span class="application">Windows</span> o cuando busca un archivo, Usted usa <tt class="literal">*</tt> para hacer coincidir con una cadena aleatoria de caracteres. Por ejemplo, <tt class="literal">*.txt</tt> hace coincidir a todos los archivos cuyo nombre termina con <tt class="filename">.txt</tt>. Nosotros también los usamos mucho en la última sección. Pero el englobamiento va más allá que el simple <tt class="literal">*</tt>.</p><p><a name="BId-cmdline-pa70"></a>Cuando Usted ingresa un comando como <span><b class="command">ls *.txt</b></span> y presiona <b class="userinput"><tt>Intro</tt></b>, la tarea de encontrar cuales archivos se corresponden con el patrón <tt class="literal">*.txt</tt> no la realiza el comando <span><b class="command">ls</b></span>, sino el shell en sí mismo. Esto requiere de una pequeña explicación sobre como interpreta el shell la línea de comandos. Cuando Usted ingresa:</p><a name="BId-cmdline-sc11"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen"> $ ls *.txt leerme.txt recetas.txt </pre></td></tr></table><p><a name="BId-cmdline-pa71"></a>primero la línea de comandos se separa en palabras (<tt class="literal">ls</tt> y <tt class="literal">*.txt</tt>, en este ejemplo) . Cuando el shell ve un <tt class="literal">*</tt> en una palabra, interpretará toda la palabra como un patrón de englobamiento y la reemplazará con los nombres de todos los archivos que se correspondan con el patrón. Por lo tanto, justo antes que el shell la ejecute, la línea se convirtió en la línea <span><b class="command">ls leerme.txt recetas.txt</b></span>, lo que da el resultado esperado. El shell reacciona así frente a otros caracteres como:</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-cmdline-pa72"></a><tt class="literal">?</tt> se corresponde con un único caracter (uno y sólo uno), cualquiera que sea este;</p></li><li><p><a name="BId-cmdline-pa73"></a><a class="indexterm" name="BId-cmdline-it36"></a><tt class="literal">[...]</tt> se corresponde con cualquiera de los caracteres que se encuentran entre los corchetes; los caracteres pueden estar referidos por intervalos (por ejemplo, <tt class="literal">1-9</tt>) o por <a name="BId-cmdline-gt4" href="glossary.html#term-discrete-values"><i class="glossterm">valores discretos</i></a>,o una mezcla de ambos. Ejemplo: <tt class="literal">[a-zBE5-7]</tt> se corresponderá con todos los caracteres desde la <tt class="literal">a</tt> hasta la <tt class="literal">z</tt>, una <tt class="literal">B</tt>, una <tt class="literal">E</tt>, un <tt class="literal">5</tt>, un <tt class="literal">6</tt> o un <tt class="literal">7</tt>;</p></li><li><p><a name="BId-cmdline-pa74"></a> <tt class="literal">[!...]</tt>: se corresponde con cualquier caracter que <span class="emphasis"><em>no</em></span> se encuentre en los corchetes. <tt class="literal">[!a-z]</tt>, por ejemplo, se corresponderá con cualquier caracter que no sea una letra minúscula<sup>[<a name="id2537667" href="#ftn.id2537667">7</a>]</sup>;</p></li><li><p><a name="BId-cmdline-pa76"></a><tt class="literal">{c1,c2}</tt> se corresponde con <tt class="literal">c1</tt> o con <tt class="literal">c2</tt>, donde <tt class="literal">c1</tt> y <tt class="literal">c2</tt> también son patrones de englobamiento, lo cual significa que Usted puede escribir <tt class="literal">{[0-9]*,[acr]}</tt> por ejemplo.</p></li></ul></div><p><a name="BId-cmdline-pa77"></a>Aquí tiene algunos patrones y su significado:</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-cmdline-pa78"></a><tt class="literal">/etc/*conf</tt>: todos los archivos del directorio <tt class="filename">/etc</tt> cuyo nombre termine con <tt class="filename">conf</tt>. Se puede corresponder con <tt class="filename">/etc/inetd.conf</tt>, pero también con <tt class="filename">/etc/conf.linuxconf</tt> y también con <tt class="filename">/etc/conf</tt> si existe tal archivo: recuerde que <tt class="literal">*</tt> puede corresponderse con una cadena vacía.</p></li><li><p><a name="BId-cmdline-pa79"></a><tt class="literal">imagen/{autos,espacio[0-9]}/*.jpg</tt>: todos los archivos cuyo nombre termina en <tt class="filename">.jpg</tt> en los directorios <tt class="filename">imagen/autos</tt>, <tt class="filename">imagen/espacio0</tt>, ... , <tt class="filename">imagen/espacio9</tt>, si es que dichos directorios existen.</p></li><li><p><a name="BId-cmdline-pa80"></a><tt class="literal">/usr/share/doc/*/LEAME</tt>: todos los archivos denominados <tt class="filename">LEAME</tt> en todos los subdirectorios inmediatos del directorio <tt class="filename">/usr/share/doc</tt>. Esto hará que <tt class="filename">/usr/share/doc/mandrake/LEAME</tt> corresponda por ejemplo, pero no <tt class="filename">/usr/share/doc/miprog/doc/LEAME</tt>.</p></li><li><p><a name="BId-cmdline-pa81"></a><tt class="filename">*[!a-z]</tt> Todos los archivos en el directorio corriente cuyo nombre <span class="emphasis"><em>no</em></span> termine con una letra minúscula.</p></li></ul></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id2537667" href="#id2537667">7</a>] </sup><a class="indexterm" name="BId-cmdline-it37"></a>¡Cuidado! Aunque esto es cierto para la mayoría de los idiomas, puede no ser cierto bajo su propia configuración de idioma (<tt class="literal">locale</tt>) Esta característica depende del <span class="emphasis"><em>orden de comparación</em></span>. En algunos sistemas, <tt class="literal">[a-z]</tt> se corresponderá con a, A, b, B, (...) , z. Y ni siquiera mencionamos el hecho que algunos idiomas tienen caracteres acentuados...</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="cmdline-attr.html">Anterior</a> </td><td width="20%" align="center"><a accesskey="u" href="cmdline.html">Subir</a></td><td width="40%" align="right"> <a accesskey="n" href="shell-pipes.html">Siguiente</a></td></tr><tr><td width="40%" align="left" valign="top">Manipulación de los atributos de los archivos </td><td width="20%" align="center"><a accesskey="h" href="index.html">Inicio</a></td><td width="40%" align="right" valign="top"> Redirecciones y tuberías</td></tr></table></div></body></html>