Sophie

Sophie

distrib > Mandriva > 10.0 > i586 > by-pkgid > 48e6004f7274ccc2095a5ab8f2460dd2 > files > 99

mandrake-doc-es-10.0-5.1.100mdk.noarch.rpm

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Redirecciones y tuberías</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="glob-regex.html" title="Patrones de englobamiento del
   shell"><link rel="next" href="cmdline-completion.html" title="El completado de la línea de comandos"></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">Redirecciones y tuberías</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="glob-regex.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="cmdline-completion.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="shell-pipes"></a>Redirecciones y tuberías</h2></div></div><div></div></div><div class="sect2" lang="es"><div class="titlepage"><div><div><h3 class="title"><a name="id2537956"></a>Un poco más sobre los procesos</h3></div></div><div></div></div><p><a name="BId-cmdline-pa82"></a>Para entender el principio de
    las redirecciones y las tuberías, necesitamos explicar una noción
    acerca de los procesos que todavía no ha sido introducida. Cada
    proceso <span class="application">UNIX</span> (esto también incluye a las aplicaciones
    gráficas, pero excluye a la mayoría de los demonios) abre un
    mínimo de tres descriptores de archivo: la entrada estándar, la
    salida estándar, y el error estándar.
    <a class="indexterm" name="BId-cmdline-it38"></a>
    <a class="indexterm" name="BId-cmdline-it39"></a>
    <a class="indexterm" name="BId-cmdline-it40"></a>
    Sus números respectivos son 0, 1 y 2. En general, estos tres
    descriptores están asociados con la terminal desde la cual se
    inició el proceso, siendo el teclado la entrada. El objetivo de
    las redirecciones y las tuberías es redirigir estos descriptores.
    Los ejemplos en esta sección lo ayudarán a comprender mejor este
    concepto.</p></div><div class="sect2" lang="es"><div class="titlepage"><div><div><h3 class="title"><a name="id2538056"></a>Redirecciones</h3></div></div><div></div></div><p><a name="BId-cmdline-pa83"></a>Suponga, por ejemplo, que Usted quiere una
    lista de los archivos que terminan en
    <tt class="filename">.png</tt><sup>[<a name="id2538079" href="#ftn.id2538079">8</a>]</sup>en el directorio
    <tt class="filename">imagenes</tt>. Esta lista es muy larga, por lo que
    Usted desea almacenarla en un archivo para consultarla a gusto más
    tarde. Puede ingresar el comando siguiente:</p><a name="BId-cmdline-sc12"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">
$ ls imagenes/*.png 1&gt;lista_de_archivos
</pre></td></tr></table><p><a name="BId-cmdline-pa85"></a><a class="indexterm" name="BId-cmdline-it41"></a> Esto
    significa que la salida estándar de este comando
    (<tt class="literal">1</tt>) se redirecciona (<tt class="literal">&gt;</tt>)
    al archivo denominado <tt class="filename">lista_de_archivos</tt>. El
    operador <tt class="literal">&gt;</tt> es el operador de redirección de
    la salida. Si el archivo de redirección no existe, se crea, pero
    si existe se sobre-escribe su contenido. Sin embargo, el
    descriptor predeterminado que redirecciona este operador es la
    salida estándar y no es necesario especificarla en la línea de
    comandos. Entonces podría haber escrito simplemente:</p><a name="BId-cmdline-sc13"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">
$ ls imagenes/*.png &gt;lista_de_archivos
</pre></td></tr></table><p><a name="BId-cmdline-pa86"></a><a class="indexterm" name="BId-cmdline-it42"></a>y el resultado será
   exactamente el mismo. Luego, puede mirar el archivo usando un
   visualizador de archivos de texto tal como <span><b class="command">less</b></span>.</p><p><a name="BId-cmdline-pa87"></a><a class="indexterm" name="BId-cmdline-it43"></a>Imagine ahora que Usted
     quiere saber cuantos de estos archivos hay. En vez de contarlos a
     mano, puede usar el utilitario denominado <span><b class="command">wc</b></span>
     (<span class="foreignphrase"><i class="foreignphrase">Word Count</i></span>, Contador de palabras)
     con la opción <tt class="option">-l</tt>, que escribe en la salida
     estándar el número de líneas en el archivo. Una solución es la
     siguiente:</p><a name="BId-cmdline-sc14"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">
wc -l 0&lt;lista_de_archivos
</pre></td></tr></table><p><a name="BId-cmdline-pa88"></a>y esto da el resultado deseado. El operador
    <tt class="literal">&lt;</tt> es el operador de redirección de la
    entrada, y el descriptor redirigido predeterminadamente es el de
    la entrada estándar, es decir, <tt class="literal">0</tt>, y Usted
    simplemente tiene que escribir la línea:</p><a name="BId-cmdline-sc15"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">
wc -l &lt;lista_de_archivos
</pre></td></tr></table><p><a name="BId-cmdline-pa89"></a><a class="indexterm" name="BId-cmdline-it44"></a>Suponga ahora que desea
     quitar todas las “<span class="quote">extensiones</span>” de los archivos y
     poner el resultado en otro archivo. Una herramienta para hacer
     esto es <span><b class="command">sed</b></span>, por <span class="foreignphrase"><i class="foreignphrase">Stream
     EDitor</i></span> (Editor de flujo). Simplemente Usted
     redirecciona la entrada estándar del comando
     <span><b class="command">sed</b></span> al archivo
     <tt class="filename">lista_de_archivos</tt> y redirecciona su salida
     al archivo resultado, por ejemplo
     <tt class="filename">la_lista</tt>:</p><a name="BId-cmdline-sc16"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">
sed -e 's/\.png$//g' &lt;lista_de_archivos &gt;la_lista
</pre></td></tr></table><p><a name="BId-cmdline-pa90"></a>y aquí tiene creada su lista, disponible
    para ser consultada a gusto con cualquier visualizador.</p><p><a name="BId-cmdline-pa91"></a>También puede ser útil redirigir el error
    estándar. Por ejemplo, desea saber a cuales directorios de
    <tt class="filename">/shared</tt> no tiene acceso: una solución es
    listar este directorio recursivamente y redirigir los errores a un
    archivo, a la vez que no se muestra la salida estándar:</p><a name="BId-cmdline-sc17"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">
ls -R /shared &gt;/dev/null 2&gt;errores
</pre></td></tr></table><p><a name="BId-cmdline-pa92"></a>lo que significa que se redireccionará la
    salida estándar (<tt class="literal">&gt;</tt>) a
    <tt class="filename">/dev/null</tt>, un archivo especial donde todo lo
    que escribe se pierde (es decir que, como efecto secundario, no se
    muestra la salida estándar) y el canal de error estándar
    (<tt class="literal">2</tt>) se redirecciona (<tt class="literal">&gt;</tt>)
    al archivo <tt class="filename">errores</tt>.</p></div><div class="sect2" lang="es"><div class="titlepage"><div><div><h3 class="title"><a name="id2538510"></a>Tuberías</h3></div></div><div></div></div><p><a name="BId-cmdline-pa93"></a><a class="indexterm" name="BId-cmdline-it45"></a> Las
    tuberías (<span class="foreignphrase"><i class="foreignphrase">pipes</i></span>, en inglés) son de
    alguna forma, una combinación de redirecciones de la entrada y la
    salida. Su principio es el de un tubo físico, de aquí el nombre:
    un proceso envía datos por un extremo del tubo y otro proceso lee
    los datos en el otro extremo. El operador de la tubería es
    <tt class="literal">|</tt>. Volvamos al ejemplo anterior de la lista de
    archivos. Suponga que Usted quiere encontrar directamente cuantos
    archivos hay sin tener que almacenar la lista en un archivo
    temporal, entonces Usted usaría el comando siguiente:</p><a name="BId-cmdline-sc18"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">
ls imagenes/*.png | wc -l
</pre></td></tr></table><p><a name="BId-cmdline-pa94"></a>lo cual significa que la salida estándar
    del comando <span><b class="command">ls</b></span> (es decir, la lista de archivos) se
    redirecciona a la entrada estándar del comando <span><b class="command">wc</b></span>. Así, Usted
    obtiene el resultado deseado.</p><p><a name="BId-cmdline-pa95"></a>Usted también puede construir directamente
    una lista de archivos “<span class="quote">sin las extensiones</span>” usando el
    comando siguiente:</p><a name="BId-cmdline-sc19"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">
ls imagenes/*.png | sed -e 's/\.png$//g' &gt;la_lista
</pre></td></tr></table><p><a name="BId-cmdline-pa96"></a>o, si desea consultar la lista
    directamente sin almacenarla en un archivo:</p><a name="BId-cmdline-sc20"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">
ls imagenes/*.png | sed -e 's/\.png$//g' | less
</pre></td></tr></table><p><a name="BId-cmdline-pa97"></a><a class="indexterm" name="BId-cmdline-it46"></a>Las tuberías y las
     redirecciones no están limitadas solamente a textos que pueden
     ser leídos por seres humanos. Por ejemplo, el comando siguiente
     enviado desde una <tt class="systemitem">Terminal</tt>:</p><a name="BId-cmdline-sc21"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">
xwd -root | convert - ~/mi_escritorio.png
</pre></td></tr></table><p><a name="BId-cmdline-pa98"></a><a class="indexterm" name="BId-cmdline-it47"></a> enviará una captura
   de pantalla de su escritorio al archivo
   <tt class="filename">mi_escritorio.png</tt><sup>[<a name="id2538720" href="#ftn.id2538720">9</a>]</sup> en su directorio personal.</p></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id2538079" href="#id2538079">8</a>] </sup>Usted
    podría creer que decir “<span class="quote">los archivos que terminan en
    <tt class="filename">.png</tt></span>” en vez de “<span class="quote">las imágenes
    <span class="acronym">PNG</span></span>” es una locura. Sin embargo, una vez más, los
    archivos bajo <span class="application">UNIX</span> sólo tienen una extensión por convención:
    de ninguna manera las extensiones definen un tipo de archivo. Un
    archivo que termina en <tt class="filename">.png</tt> podría ser
    perfectamente una imagen <span class="acronym">JPEG</span>, una aplicación, un archivo de
    texto o cualquier otro tipo de archivo. ¡Lo mismo es cierto
    también bajo <span class="application">Windows</span>!</p></div><div class="footnote"><p><sup>[<a name="ftn.id2538720" href="#id2538720">9</a>] </sup>Sí, de hecho, será una imagen <span class="acronym">PNG</span> <span><b class="keycap">:-)</b></span>
   (Siempre y cuando tenga instalado el paquete
   “<span class="quote"><tt class="filename">ImageMagick</tt></span>”
   ...)</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="glob-regex.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="cmdline-completion.html">Siguiente</a></td></tr><tr><td width="40%" align="left" valign="top">Patrones de englobamiento del
   shell </td><td width="20%" align="center"><a accesskey="h" href="index.html">Inicio</a></td><td width="40%" align="right" valign="top"> El completado de la línea de comandos</td></tr></table></div></body></html>