<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bitelia &#187; shell</title>
	<atom:link href="http://bitelia.com/tag/shell/feed" rel="self" type="application/rss+xml" />
	<link>http://bitelia.com</link>
	<description>Software y Web 2.0</description>
	<lastBuildDate>Sat, 26 May 2012 23:38:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Comando Linux gt5: analiza los cambios en el uso de tu espacio en disco</title>
		<link>http://bitelia.com/2010/07/comando-linux-gt5</link>
		<comments>http://bitelia.com/2010/07/comando-linux-gt5#comments</comments>
		<pubDate>Wed, 28 Jul 2010 08:00:57 +0000</pubDate>
		<dc:creator>Alan Lazalde</dc:creator>
				<category><![CDATA[Guías/Trucos]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Comando Linux]]></category>
		<category><![CDATA[disco duro]]></category>
		<category><![CDATA[du]]></category>
		<category><![CDATA[espacio almacenamiento]]></category>
		<category><![CDATA[espacio en disco]]></category>
		<category><![CDATA[espacios disco duro]]></category>
		<category><![CDATA[gt5]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://bitelia.com/?p=61000</guid>
		<description><![CDATA[El comando gt5 es ideal para quienes los comandos du y df no les son suficientes. Sobre todo si se requiere de una forma de revisar los cambios de almacenamiento en disco. En particular, gt5 Despliega el espacio en disco usado por archivos y directorios Despliega qué ha sucedido desde la última vez que fue ejecutado Provee una interfaz de navegación de archivos en modo texto Cada entrada mostrada incluye tamaño y porcentaje con respecto al resto Omite resultados de archivos o directorios de tamaño insignificante Instalación En Ubuntu: shell&#62;...]]></description>
			<content:encoded><![CDATA[<p><img src="http://s2.bitelia.com/files/2010/07/harry-tux.jpg" alt="" title="Harry Tux" width="256" height="256" class="alignright size-full wp-image-61005" /></p>
<p>El comando <a href="http://gt5.sourceforge.net/"><strong>gt5</strong></a> es ideal para quienes los comandos <strong>du</strong> y <strong>df</strong> no les son suficientes. Sobre todo si se requiere de una forma de revisar los cambios de almacenamiento en disco. En particular, <strong>gt5</strong></p>
<ul>
<li>Despliega el espacio en disco usado por archivos y directorios </li>
<li>Despliega qué ha sucedido desde la última vez que fue ejecutado</li>
<li>Provee una interfaz de navegación de archivos en modo texto </li>
<li>Cada entrada mostrada incluye tamaño y porcentaje con respecto al resto</li>
<li>Omite resultados de archivos o directorios de tamaño insignificante</li>
</ul>
<h3>Instalación</h3>
<p><span id="more-61000"></span></p>
<p>En Ubuntu:</p>
<pre><code>  shell&gt; sudo apt-get install gt5 links
</code></pre>
<p>Agrego la instalación de <strong>links</strong> porque es el navegador web de línea de comandos recomendado por el desarrollador de <strong>gt5</strong>.</p>
<h3>Uso</h3>
<p>Simplemente ejecuta <strong>gt5</strong>. Te recomiendo hacerlo sobre tu directorio de inicio.</p>
<pre><code>  shell&gt; gt5
</code></pre>
<p><img src="http://s2.bitelia.com/files/2010/07/gt5-antes.png" alt="" title="gt5 - antes" width="576" height="292" class="aligncenter size-full wp-image-61008" /></p>
<p>Hasta ahora sólo podrás ver cuánto espacio ocupan tus archivos y directorios, así como navegar entre ellos; hazlo con las flechas del teclado y ENTER para ingresar a los directorios; si quieres salir, presiona <strong>q</strong>.</p>
<p>Luego, en mi caso, eliminé uno que otro archivo para notar la diferencia a continuación.</p>
<pre><code>  shell&gt; gt5
</code></pre>
<p><img src="http://s3.bitelia.com/files/2010/07/gt5-despues.png" alt="" title="gt5 - después" width="576" height="297" class="aligncenter size-full wp-image-61009" /></p>
<p>El directorio <strong>Videos</strong> apareció con muchos megabytes menos, y por alguna extraña razón Mozilla Firefox aumentó en 6.2MB.</p>
<h3>Comentarios</h3>
<p>El comando <strong>gt5</strong> es el diff del almacenamiento en disco. Interesante, ¿no?</p>
]]></content:encoded>
			<wfw:commentRss>http://bitelia.com/2010/07/comando-linux-gt5/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comando Linux boxes: enmarca tus palabras</title>
		<link>http://bitelia.com/2010/07/comando-linux-boxes-enmarca-tus-palabras</link>
		<comments>http://bitelia.com/2010/07/comando-linux-boxes-enmarca-tus-palabras#comments</comments>
		<pubDate>Wed, 14 Jul 2010 07:37:05 +0000</pubDate>
		<dc:creator>Alan Lazalde</dc:creator>
				<category><![CDATA[Guías/Trucos]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[arte ASCII]]></category>
		<category><![CDATA[ASCII]]></category>
		<category><![CDATA[boxes]]></category>
		<category><![CDATA[Comando Linux]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://bitelia.com/?p=59391</guid>
		<description><![CDATA[La documentación es &#8212;-o debería ser&#8212;- fundamental para un programador. Cada función, procedimiento, método, clase merece por lo menos unas palabras que los describan. Si es así, es muy común que los comentarios queden enmarcados por cajas hechas con asteriscos, signos de número u otros. Sin embargo, a pesar de que los resultados pueden llegar a ser agradables, la realización es engorrosa y aburrida. Entonces merece la pena delegar esta tarea a boxes, nuestro Comando Linux de hoy. Instalación Descárgalo para muchas plataformas (incluso Windows). En Ubuntu: shell&#62; sudo apt-get...]]></description>
			<content:encoded><![CDATA[<p><img src="http://s1.bitelia.com/files/2010/07/linux-boxes.png" alt="" title="Boxes" width="300" height="345" class="alignright size-full wp-image-59455" /></p>
<p>La documentación es &#8212;-o debería ser&#8212;- fundamental para un programador. Cada función, procedimiento, método, clase merece por lo menos unas palabras que los describan. Si es así, es muy común que los comentarios queden enmarcados por cajas hechas con asteriscos, signos de número u otros. Sin embargo, a pesar de que los resultados pueden llegar a ser agradables, la realización es engorrosa y aburrida. Entonces merece la pena delegar esta tarea a <a href="http://boxes.thomasjensen.com/"><strong>boxes</strong></a>, nuestro <a href="http://bitelia.com/tag/comando-linux">Comando Linux</a> de hoy.</p>
<h3>Instalación</h3>
<p><a href="http://boxes.thomasjensen.com/download.shtml">Descárgalo</a> para muchas plataformas (incluso Windows). En Ubuntu:</p>
<pre><code>  shell&gt; sudo apt-get install boxes
</code></pre>
<h3>Uso</h3>
<p>Para los ejemplos voy a utilizar archivos con el mismo nombre &#8212;-<code>bitelia</code>&#8212;- pero con diferente contenido &#8212;-texto simple&#8212;-. Ahora digamos que estás programando en lenguaje C y quieres enmarcar la documentación de tu función principal:</p>
<p><span id="more-59391"></span></p>
<pre><code>  shell&gt; boxes bitelia
  /*********************************************************/
  /* PROGRAMA PRINCIPAL: Recupera el password de cada host */
  /* que encuentra a su paso... Jojojo!                    */
  /*********************************************************/
</code></pre>
<p>O tal vez programas en Python, Bash, o algún otro lenguaje de <em>scripts</em> que entienda los #&#8217;s al inicio de línea como comentarios. Indica con la opción <strong>-d</strong> el diseño que usarás:</p>
<pre><code>  shell&gt; boxes -d bitelia
  #######################################################
  #                                                     #
  # Hola, soy el Gran Administrador de este sistema. Te #
  # advierdo  que cada  uno de tus comandos esta siendo #
  # monitoreado por mi ejercito de scripts...   &lt;(=.=)&gt; #
  #                                                     #
  #######################################################
</code></pre>
<p>Revisa extensa lista de diseños disponibles con la opción <strong>-l</strong> (te recomiendo navegarla con el comando <strong>less</strong>).</p>
<pre><code>  shell&gt; boxes -l | less
  43 Available Styles in "/etc/boxes/boxes-config":
  -------------------------------------------------

  cat (Joan G. Stark &lt;spunk1111@juno.com&gt;):

                   /\             /\
                  |`\\_,--="=--,_//`|
                  \ ."  :'. .':  ". /
                 ==)  _ :  '  : _  (==
                   |&gt;/O\   _   /O\&lt;|
                   | \-"~` _ `~"-/ |
                  &gt;|`===. \_/ .===`|&lt;
        jgs .-"-.   \==='  |  '===/   .-"-.
     .-----{'. '`}---\,  .-'-.  ,/---{.'. '}-----.
      )    `"---"`     `~-===-~`     `"---"`    (
     (                 joan  stark               )
      )           &lt; spunk1111@juno.com &gt;        (
     (              ASCII ART GALLERY:           )
      ) &lt; http://www.geocities.com/SoHo/7373/ &gt; (
     '-------------------------------------------'
</code></pre>
<p>Si escribes poemas y a ellos les agregas un poco de <a href="http://www.chris.com/ascii/">Arte ASCII</a>, cualquier geek caerá rendido/a a tus pies:</p>
<pre><code>    ___________________________________________________________
   /\                                                          \
   \_|                                                         |
     |             Eres el compilador de mi código             |
     |                El GIF que anima mi vida                 |
     |            Siempre estas en /root/mi/corazón            |
     |   Te pienso mas que las paginas indexadas por Google    |
     | Eres como el Firefox que me saco del Internet Explorer  |
     |                Eres el ENTER de mi vida                 |
     |          Si me dejas hago Alt-F4 a mi vida...           |
     |                                                         |
     |   ______________________________________________________|_
      \_/________________________________________________________/
</code></pre>
<p>Usé la opción <strong>-a c</strong> para alinear el texto al centro. Usa <strong>-a l</strong> o <strong>-a r</strong> para justificar el texto al izquierda o derecha, respectivamente.</p>
<h3>Comentarios</h3>
<p>Como siempre, esta sólo fue una introducción, una invitación a que pruebes el comando y explores todas sus opciones; hay otras que posiblemente encuentres de mucha utilidad o divertimento, o ¡los ambos! No me despido despido sin antes decir, efusivamente&#8230;</p>
<pre><code>          _ ._  _ , _ ._
        (_ ' ( `  )_  .__)
      ( (  (    )   `)  ) _)
     (__ (_   (_ . _) _) ,__)
         `~~`\ ' . /`~~`
         ,::: ;   ; :::,
        ':::::::::::::::'
   __________/_ __ \__________
  |                           |
  |        ¡Gracias!          |
  |___________________________|
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://bitelia.com/2010/07/comando-linux-boxes-enmarca-tus-palabras/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comando Linux imsniff: analiza conversaciones de MSN</title>
		<link>http://bitelia.com/2010/06/comando-linux-imsniff</link>
		<comments>http://bitelia.com/2010/06/comando-linux-imsniff#comments</comments>
		<pubDate>Wed, 16 Jun 2010 08:00:21 +0000</pubDate>
		<dc:creator>Alan Lazalde</dc:creator>
				<category><![CDATA[Guías/Trucos]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Comando Linux]]></category>
		<category><![CDATA[Debian Developer]]></category>
		<category><![CDATA[imsniff]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Proyecto debian]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[sniffer]]></category>

		<guid isPermaLink="false">http://bitelia.com/?p=56381</guid>
		<description><![CDATA[Decir que imsniff &#8220;analiza&#8221; conversaciones es un eufemismo. Lo que hace es husmearlas, ni más ni menos. De hecho, lo que hace nuestro comando de la semana es usar la biblioteca libcap para capturar paquetes de red relacionados con las conversaciones llevadas con el protocolo MSN. Por cierto, imsniff fue desarrollado por la madrileña Amaya Rodrigo Sastre, la primera Debian developer en toda Europa. ¿Cómo utilizar el comando? Instalación Como siempre &#8212;-usuarios de otras distribuciones, lo siento&#8212;- ejemplificaré la instalación con un Linux de la familia Debian. sudo apt-get install...]]></description>
			<content:encoded><![CDATA[<p><img src="http://s2.bitelia.com/files/2010/06/tux-msn.jpg" alt="" title="Imsniff - Husmea MSN desde Linux" width="350" height="463" class="alignright size-full wp-image-56395" /></p>
<p>Decir que imsniff &#8220;analiza&#8221; conversaciones es un eufemismo. Lo que hace es <strong>husmearlas</strong>, ni más ni menos. De hecho, lo que hace nuestro comando de la semana es usar la biblioteca <a href="http://www.tcpdump.org/">libcap</a> para capturar paquetes de red relacionados con las conversaciones llevadas con el protocolo MSN.</p>
<p>Por cierto, <strong>imsniff</strong> fue desarrollado por la madrileña <a href="http://women.debian.org/profiles/#Amaya%20Rodrigo%20Sastre">Amaya Rodrigo Sastre</a>, la <a href="http://www.mujeresenred.net/spip.php?article650">primera</a> <em>Debian developer</em> en toda Europa.</p>
<p>¿Cómo utilizar el comando?</p>
<h3>Instalación</h3>
<p>Como siempre &#8212;-usuarios de otras distribuciones, lo siento&#8212;- ejemplificaré la instalación con un Linux de la familia Debian.</p>
<pre><code>  sudo apt-get install imsniff
</code></pre>
<h3>Uso</h3>
<p>Primero abre inicia una conversación con <a href="http://bitelia.com/tag/pidgin">Pidgin</a> o tu cliente MSN favorito. Ejecuta el comando con privilegios de administrador, indicando siempre el identificador de tu interfaz de red.</p>
<p><span id="more-56381"></span></p>
<pre><code>  sudo imsniff wlan0
  Wed Jun 15 01:48:46 2010 | 0 | SB event: laz...@msn.com: pues
  Wed Jun 15 01:49:08 2010 | 0 | SB event: laz...@msn.com: estoy probando imsniff
  Wed Jun 15 01:49:22 2010 | 0 | SB event: laz...@msn.com: husmea conversaciones de MSN
  Wed Jun 15 01:49:42 2010 | 0 | SB event: nig...@hotmail.com: :-O
  Wed Jun 15 01:50:26 2010 | 0 | SB event: nig...@hotmail.com: como funciona?
  Wed Jun 15 01:50:51 2010 | 0 | SB event: laz...@msn.com: lo verás en bitelia.com ;)
</code></pre>
<p>En el ejemplo indico que wlan0 es la interfaz de red que el comando debe husmear. Si usas Ethernet, probablemente debas usar eth0. Consulta la salida del comando ifconfig para verificarlo.</p>
<p>La salida de <strong>imsniff</strong> no da lugar a mayores comentarios: hace su trabajo estupendamente pues captura las conversaciones en toda su extensión. También reporta otros eventos del protocolo, como el cambio de nombre de alguno de tus contactos.</p>
<h3>Comentario final</h3>
<p><strong>Imsniff</strong> es un programa muy pequeño, casi insignificante, pero poderoso. ¿Para qué sirve? Desde un punto de vista <em>näive</em> es una curiosidad. Desde otro, es una herramienta que puesta en el lugar adecuado puede ofrecer excelentes resultados para oscuros y desconocidos propósitos. Dejo a tu consideración los usos alternativos de <strong>imsniff</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bitelia.com/2010/06/comando-linux-imsniff/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Comando Linux axel: ligero y poderoso acelerador de descargas HTTP/FTP</title>
		<link>http://bitelia.com/2010/06/comando-linux-axel-un-ligero-acelerador-de-descargar-http</link>
		<comments>http://bitelia.com/2010/06/comando-linux-axel-un-ligero-acelerador-de-descargar-http#comments</comments>
		<pubDate>Wed, 09 Jun 2010 08:00:01 +0000</pubDate>
		<dc:creator>Alan Lazalde</dc:creator>
				<category><![CDATA[Guías/Trucos]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[acelerador de descargas]]></category>
		<category><![CDATA[axel]]></category>
		<category><![CDATA[Comando Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://bitelia.com/?p=55397</guid>
		<description><![CDATA[Así de simple: el comando axel es un acelerador de descargas. ¿Cómo lo hace? Abre más de una conexión HTTP o FTP por cada intento de descarga, de tal modo que cada una de ellas transfiere su propia parte del archivo. El comando es particularmente útil cuando los servidores limitan el ancho de banda disponible por conexión. Te mostraré el funcionamiento y características de axel a través de ejemplos. Instalación Una vez más, la distribución de referencia será Ubuntu. sudo apt-get install axel En otros sabores de Linux puedes descargar...]]></description>
			<content:encoded><![CDATA[<p><img src="http://s2.bitelia.com/files/2010/06/flash-tux.jpg" alt="" title="Axel - Acelerador de descargas (Tux es Flash)" width="289" height="312" class="alignright size-full wp-image-55400" /></p>
<p>Así de simple: el comando <strong>axel es un acelerador de descargas</strong>. ¿Cómo lo hace? Abre más de una conexión HTTP o FTP por cada intento de descarga, de tal modo que cada una de ellas transfiere su propia parte del archivo. El comando es particularmente útil cuando los servidores limitan el ancho de banda disponible por conexión. Te mostraré el funcionamiento y características de <strong>axel a través de ejemplos</strong>.</p>
<h4>Instalación</h4>
<p>Una vez más, la distribución de referencia será Ubuntu.</p>
<pre><code>sudo apt-get install axel
</code></pre>
<p>En otros <em>sabores</em> de Linux puedes <a href="http://axel.alioth.debian.org/">descargar</a> y compilar el código fuente de <strong>axel</strong>, si no es que ya está incluido en los repositorios correspondientes.</p>
<p><span id="more-55397"></span></p>
<h4>Uso</h4>
<p>Digamos que quieres descargar los 66049 KB comprimidos con bzip2 de la versión 2.6.34 del kernel Linux.</p>
<pre><code>axel ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
Initializing download: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
File size: 67633622 bytes
Opening output file linux-2.6.34.tar.bz2
Starting download

[  0%]  .......... .......... .......... .......... ..........  [  43.5KB/s]
[  0%]  .......... .......... .......... .......... ..........  [  87.3KB/s]
[  0%]  .......... .......... .......... .......... ..........  [ 118.3KB/s]
---
[ 18%]  .......... .......... .......... .......... ..........  [ 790.3KB/s]
[ 18%]  .......... .......... .......... .......... ..........  [ 793.1KB/s]
</code></pre>
<p>Si la descarga fue interrumpida por obra y gracia de tu ISP, luego puedes reanudar la descarga simplemente ejecutando el mismo comando.</p>
<pre><code>Initializing download: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
File size: 67633622 bytes
Opening output file linux-2.6.34.tar.bz2
State file found: 12853085 bytes downloaded, 54780537 to go.
Starting download
        ,......... .......... .......... .......... ..........  [  33.9KB/s]
[ 19%]  .......... .......... .......... .......... ..........  [  51.2KB/s]
</code></pre>
<p>Nada nuevo bajo el sol. Axel funcionó igual que wget, pero solo en apariencia porque en realidad lanzó cuatro conexiones simultáneas para descargar el archivo. Para hacerlo más claro, cambia la manera en que axel indica el progreso de la descarga -la anterior muy verbosa, por cierto- por una que exponga el trabajo de cada conexión con la opción <strong>-a</strong>. También indica que sólo quieres ¡8 conexiones! para descargar Ubuntu Netbook Edition con la opción <strong>-n</strong>.</p>
<pre><code>axel -n 8 -a http://ubuntu.media.mit.edu/ubuntu-releases/10.04/ubuntu-10.04-netbook-i386.iso
Initializing download: http://ubuntu.media.mit.edu/ubuntu-releases/10.04/ubuntu-10.04-netbook-i386.iso
File size: 733837312 bytes
Opening output file ubuntu-10.04-netbook-i386.iso
Starting download

[ 45%] [..0      1     ...2    ..3      ..4     ..5     .6     ...7     ] [   1.3MB/s] [05:58]
</code></pre>
<p>Las ocho conexiones son un abuso, lo sé. Con un poco más de ética, aún podemos usar axel para descargar a gran velocidad el mismo archivo pero desde distintos servidores. Para ello regresa al ejemplo del kernel Linux y descárgalo desde tres servidores distintos: España (es), Brazil (br) y México (mx).</p>
<pre><code>axel -n 3 -a ftp://ftp.{es,br,mx}.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
Initializing download: ftp://ftp.es.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
File size: 67633622 bytes
Opening output file linux-2.6.34.tar.bz2
Starting download

Connection 0 finished                                                          ]
Connection 2 finished                                                          ]
Connection 1 finished                                                          ]
[ 98%] [................................................3 ] [ 360.8KB/s] [00:02]
</code></pre>
<p>Solo tienes que listar los servidores como argumentos para axel. En el ejemplo anterior aprovechamos que las llaves expanden su contenido en Bash.</p>
<h4>Brevísimo comentario final</h4>
<p>Axel no debe faltar en tu colección de comandos de uso diario.</p>
]]></content:encoded>
			<wfw:commentRss>http://bitelia.com/2010/06/comando-linux-axel-un-ligero-acelerador-de-descargar-http/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Descarga vídeos de Vimeo desde el shell en Linux</title>
		<link>http://bitelia.com/2010/05/descarga-videos-de-vimeo-desde-el-shell-en-linux</link>
		<comments>http://bitelia.com/2010/05/descarga-videos-de-vimeo-desde-el-shell-en-linux#comments</comments>
		<pubDate>Tue, 25 May 2010 08:00:32 +0000</pubDate>
		<dc:creator>Alan Lazalde</dc:creator>
				<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash script]]></category>
		<category><![CDATA[Big Buck Bunny]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[vídeos]]></category>
		<category><![CDATA[vimeo]]></category>

		<guid isPermaLink="false">http://bitelia.com/?p=53837</guid>
		<description><![CDATA[Esta es una pregunta típica de todo primer usuario de los sitios de vídeo en línea: ¿Cómo hago para descargar lo que estoy viendo? Pues para el caso de Vimeo, uno de los sitios más populares, te traigo una práctica solución para la línea de comandos. Descarga el script creado por Denver Gingerich (ossguy): wget http://ossguy.com/video&#95;hosts/vimeo&#95;downloader.sh Luego elige el vídeo y recupera su identificador. Por ejemplo, para descargar Big Buck Bunny, mira la URL del vídeo en Vimeo, http://vimeo.com/1084537, y descargalo así: bash vimeo&#95;downloader.sh 1084537 El vídeo es descargado en...]]></description>
			<content:encoded><![CDATA[<p><img src="http://s1.bitelia.com/files/2010/05/big-buck-bunny.jpg" alt="" title="Big Buck Bunny" width="400" height="250" class="alignright size-full wp-image-53842" /></p>
<p>Esta es una pregunta típica de todo primer usuario de los sitios de vídeo en línea: ¿Cómo hago para descargar lo que estoy viendo? Pues para el caso de <strong>Vimeo</strong>, uno de los sitios más populares, te traigo una práctica solución para la línea de comandos.</p>
<p>Descarga el <em>script</em> creado por <a href="http://ossguy.com">Denver Gingerich</a> (ossguy):</p>
<p><code>wget http://ossguy.com/video&#95;hosts/vimeo&#95;downloader.sh</code></p>
<p>Luego elige el vídeo y recupera su identificador. Por ejemplo, para descargar <a href="http://www.bigbuckbunny.org/">Big Buck Bunny</a>, mira la URL del vídeo en Vimeo, <code>http://vimeo.com/<strong>1084537</strong></code>, y descargalo así:</p>
<p><code>bash vimeo&#95;downloader.sh 1084537</code></p>
<p>El vídeo es descargado en formato FLV. Luego puedes reproducirlo sin salir del shell con <a href="http://bitelia.com/2010/03/comando-linux-mplayer-reproduce-audio-y-video">mplayer</a>. Listo. ¿Puede ser más fácil? (Sí, ya sé, con un complemento para tu navegador&#8230;) He probado con <strong>vídeos disponibles y no</strong> para descarga desde el sitio, y el <em>script</em> funciona con éxito en ambos casos.</p>
]]></content:encoded>
			<wfw:commentRss>http://bitelia.com/2010/05/descarga-videos-de-vimeo-desde-el-shell-en-linux/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comando Linux Z: es el tradicional &#8220;cd&#8221;, pero más inteligente</title>
		<link>http://bitelia.com/2010/05/comando-linux-z</link>
		<comments>http://bitelia.com/2010/05/comando-linux-z#comments</comments>
		<pubDate>Wed, 19 May 2010 08:18:28 +0000</pubDate>
		<dc:creator>Alan Lazalde</dc:creator>
				<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash script]]></category>
		<category><![CDATA[Comando Linux]]></category>
		<category><![CDATA[Comando Z]]></category>
		<category><![CDATA[Github]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://bitelia.com/?p=53203</guid>
		<description><![CDATA[Z no es un comando Linux en el sentido tradicional del término. Es decir, no pertenece a las GNU Binutils y vamos, ni siquiera es un software escrito en C: se trata de un pequeño, aunque no por esto simple, script programado en Bash. Como me imagino que quieres saber qué hace Z, te explicaré: intenta hacer más inteligente al indispensable comando cd. ¿Cómo? Creando un base de datos de directorios, tanto de los más usados (frecuencia), como de los recientes (inmediatez). De este modo, podrás acceder al directorio deseado...]]></description>
			<content:encoded><![CDATA[<p><img src="http://s1.bitelia.com/files/2010/05/zeta-tux.jpg" alt="" title="Comando Linux Z" width="400" height="292" class="alignright size-full wp-image-53209" /></p>
<p><strong>Z</strong> no es un comando Linux en el sentido tradicional del término. Es decir, no pertenece a las <a href="http://www.gnu.org/software/binutils/">GNU Binutils</a> y vamos, ni siquiera es un software escrito en C: se trata de un pequeño, aunque no por esto simple, <em>script</em> programado en Bash.</p>
<p>Como me imagino que quieres saber <strong>qué hace Z</strong>, te explicaré: intenta hacer más inteligente al indispensable comando <strong>cd</strong>.  ¿Cómo? Creando un <strong>base de datos de directorios</strong>, tanto de los más usados (<strong>frecuencia</strong>), como de los recientes (<strong>inmediatez</strong>). De este modo, podrás acceder al directorio deseado mucho más rápido. Ya lo verás.</p>
<p>Como creo que los comandos se entienden mejor usándolos, vamos a iniciarnos con <strong>Z</strong>. Así que <strong>comencemos por el principio y luego sigamos hasta el final</strong>, como le hace decir Lewis Carroll a su Rey de Corazones:</p>
<p><span id="more-53203"></span></p>
<h3>Instalación</h3>
<p>Descarga los 4.0K que pesa el <em>script</em> desde <a href="http://github.com/rupa/z/blob/master/z.sh">GitHub</a>. En la página da clic en botón Download Source como te muestro aquí:</p>
<p><img src="http://s3.bitelia.com/files/2010/05/z-github.png" alt="" title="Z en GitHub" width="640" height="209" class="aligncenter size-full wp-image-53237" /></p>
<p>Descomprime el archivo e ingresa al directorio del <em>script</em>.</p>
<pre><code>    unzip rupa-z-91c3b9e.zip
    cd rupa-z-91c3b9e
</code></pre>
<p>Lee el archivo README, o bien, sigue estos otros pasos. Primero mueve o copia el <em>script</em> <strong>z.sh</strong> a un directorio de tu entera confianza. Te recomiendo hacerlo así:</p>
<pre><code>    cp z.sh $HOME/.z.sh
</code></pre>
<p>Ahora agrega esta línea al archivo de configuración de tus sesiones con Bash:</p>
<pre><code>    echo source $HOME/.z.sh &gt;&gt; $HOME/.bashrc
</code></pre>
<p>Con eso harás que en cada una de tus siguientes sesiones con el intérprete de comandos se cargue el ambiente de  configuración de <strong>Z</strong>.</p>
<h3>Uso</h3>
<p>Abre una nueva terminal o bien ejecuta esto para recargar la configuración de tu shell:</p>
<pre><code>    source $HOME/.bashrc
</code></pre>
<p>Ahora simplemente muévete un rato a lo largo de los directorios del sistema o de tu directorio de inicio con el comando <strong>cd</strong>. Con esto crearás una base de datos con las características que mencioné al principio. Deja que pase el tiempo, tal vez minutos o días, no sé, pero cuando decidas que has usado <strong>cd</strong> con suficiente frecuencia, cámbialo por <strong>Z</strong>. Por ejemplo:</p>
<pre><code>    cd /etc
    z Documentos
    pwd
    /home/alan/Documentos
</code></pre>
<p>Como podrás notar, <strong>el comando z</strong> me envió, aún desde /etc, al directorio Documentos en mi HOME. Existen más opciones; la documentación dice (traduzco al español):</p>
<pre><code>    USO:
       * z foo       # va al directorio más frecuente/reciente que coincida con foo
       * z foo bar   # igual, pero con foo y bar
       * z -r foo    # va al directorio mejor clasificado coincidente con foo
       * z -t foo    # va al directorio accedido más recientemente coincidente con foo
       * z -l foo    # lista las clasificaciones para foo (por frecuencia/inmediatez)
</code></pre>
<p>Espero que esta pequeña introducción a Z te anime a probarlo y así, con el paso del tiempo, tengas mejores y más eficientes ratos frente al shell. Si no fui muy claro (me suele pasar),  entérame con tus comentarios, estaré atento a ellos.</p>
]]></content:encoded>
			<wfw:commentRss>http://bitelia.com/2010/05/comando-linux-z/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Comando Linux wakeonlan: enciende tus equipos de manera remota</title>
		<link>http://bitelia.com/2010/05/comando-linux-wakeonlan-enciende-tus-equipos-de-manera-remota</link>
		<comments>http://bitelia.com/2010/05/comando-linux-wakeonlan-enciende-tus-equipos-de-manera-remota#comments</comments>
		<pubDate>Wed, 12 May 2010 08:38:29 +0000</pubDate>
		<dc:creator>Alan Lazalde</dc:creator>
				<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Comando Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[dirección MAC]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[lan]]></category>
		<category><![CDATA[línea de comandos]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[wake-on-lan]]></category>
		<category><![CDATA[wakeonlan]]></category>

		<guid isPermaLink="false">http://bitelia.com/?p=52519</guid>
		<description><![CDATA[El Wake-on-LAN es un estándar, digamos, para lograr encender equipos de cómputo a través de un mensaje entre dispositivos de red. Esto quiere decir que es independiente de sistema operativo, aunque éste puede servir para configurar la conducta del dispositivo. Dicho mensaje se conoce como &#8220;paquete mágico&#8221;. Un dispositivo de red puede esperar por paquetes mágicos cuando el ordenador ha sido apagado sin ser desconectado de la fuente de energía (estados globales G1 y G2 de ACPI). El paquete mágico viaja a través de la capa 2 del modelo OSI...]]></description>
			<content:encoded><![CDATA[<p><img src="http://s1.bitelia.com/files/2010/05/tux-sysadmin.gif" alt="" title="Tux - Sysadmin" width="393" height="398" class="alignright size-full wp-image-52525" /></p>
<p>El <a href="http://es.wikipedia.org/wiki/Wake_on_LAN"><strong>Wake-on-LAN</strong></a> es un estándar, digamos, para lograr encender equipos de cómputo a través de <strong>un mensaje</strong> entre dispositivos de red. Esto quiere decir que es independiente de sistema operativo, aunque éste puede servir para configurar la conducta del dispositivo. Dicho mensaje se conoce como <strong>&#8220;paquete mágico&#8221;</strong>.</p>
<p>Un dispositivo de red puede esperar por paquetes mágicos cuando el ordenador ha sido apagado sin ser desconectado de la fuente de energía (<a href="http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface#Global_states">estados globales G1 y G2 de ACPI</a>). El paquete mágico viaja a través de la capa 2 del modelo OSI (i.e., no utiliza la dirección IP, sino la MAC). Si el dispositivo recibe el paquete, lo valida y entonces, a través de su conexión con la placa madre, enciende o despierta el ordenador, según sea el caso.</p>
<p><strong>¿En qué consiste tal paquete mágico?</strong> De una trama Ethernet que en su <a href="http://en.wikipedia.org/wiki/Payload_%28software%29">carga útil</a> contiene la dirección de todos los equipos, es decir, la dirección <em>broadcast</em> FF FF FF FF FF FF, seguida por dieciséis repeticiones de la dirección MAC del dispositivo de red del equipo a encender.</p>
<p><span id="more-52519"></span></p>
<p>Sirva esta pequeña introducción a Wake-on-LAN para presentarles el comando <strong>wakeonlan</strong> escrito por José Pedro Oliveira. Se trata de un pequeño <em>script</em> programado en Perl para hacer el envío de paquetes mágicos, encapsulados en paquetes UDP, a las direcciones MAC de nuestro interés. En sistemas de la familia Debian, <strong>wakeonlan</strong> se instala simplemente así.</p>
<pre><code>    sudo apt-get install wakeonlan
</code></pre>
<p>Para usarlo ni siquiera requieres privilegios de administración. Con este comando enviamos el paquete mágico a una dirección MAC específica.</p>
<pre><code>    wakeonlan 01:02:03:04:05:06
</code></pre>
<p>También es posible hacerlo con grupos de direcciones MAC.</p>
<pre><code>    wakeonlan 01:02:03:04:05:06 01:02:03:04:05:07
</code></pre>
<p>O bien a una subred específica.</p>
<pre><code>    wakeonlan -i 192.168.1.255 01:02:03:04:05:06
</code></pre>
<p>Y si eres sysadmin de un laboratorio con decenas de ordenadores, lo mejor será que tengas todas las MAC en un archivo de texto.</p>
<pre><code>    wakeonlan -f macs.txt
</code></pre>
<p>Para recolectar direcciones MAC, te recomiendo usar <a href="http://bitelia.com/2010/04/comando-linux-nast">nast</a> o <strong>arp</strong> desde la línea de comandos. El comando <strong>wakeonlan</strong> es sencillo y, créeme (lo digo por experiencia), muy efectivo.</p>
<p>Imagen: <a href="http://www.yolinux.com/TUTORIALS/LinuxTutorialSysAdmin.html">YoLinux</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bitelia.com/2010/05/comando-linux-wakeonlan-enciende-tus-equipos-de-manera-remota/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Comando Linux zenity: ventanas de diálogo GTK+ para enriquecer tus scripts</title>
		<link>http://bitelia.com/2010/04/comando-linux-zenity-ventanas-de-dialogo-gtk</link>
		<comments>http://bitelia.com/2010/04/comando-linux-zenity-ventanas-de-dialogo-gtk#comments</comments>
		<pubDate>Wed, 28 Apr 2010 08:00:45 +0000</pubDate>
		<dc:creator>Alan Lazalde</dc:creator>
				<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Comando Linux]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[GTK]]></category>
		<category><![CDATA[intérprete de comandos]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[zenity]]></category>

		<guid isPermaLink="false">http://bitelia.com/?p=51203</guid>
		<description><![CDATA[Zenity es un programa para desplegar ventanas de diálogo que reciben o entregan información procesable con scripts en bash, por ejemplo. Es algo así como la versión moderna del comando dialog, pero que usa las bibliotecas GTK+ para sus propósitos. Si eres usuario de GNOME ten por seguro que zenity viene integrado. Si no, pues no&#8230; Así que tendrás que instalarlo con el gestor de paquetes de tu distribución. Los manuales en español están disponibles en línea. Los cuadros de diálogo provistos por zenity son, entre otros: Calendario. Seleccionador de...]]></description>
			<content:encoded><![CDATA[<p><img src="http://s2.bitelia.com/files/2010/04/zenity.png" alt="" title="Zenity" width="300" height="191" class="alignright size-full wp-image-51225" /></p>
<p><a href="http://live.gnome.org/Zenity"><strong>Zenity</strong></a>  es un programa para desplegar ventanas de diálogo que reciben o entregan información procesable con <em>scripts</em> en bash, por ejemplo. Es algo así como la versión moderna del <a href="http://en.wikipedia.org/wiki/Dialog_%28software%29">comando dialog</a>, pero que usa las bibliotecas <a href="http://www.gtk.org/">GTK+</a> para sus propósitos.</p>
<p>Si eres usuario de <strong>GNOME</strong> ten por seguro que <strong>zenity</strong> viene integrado. Si no, pues no&#8230; Así que tendrás que instalarlo con el gestor de paquetes de tu distribución. Los manuales en español están <a href="http://library.gnome.org/users/zenity/index.html.es">disponibles en línea</a>.</p>
<p>Los cuadros de diálogo provistos por <strong>zenity</strong> son, entre otros:</p>
<ul>
<li>Calendario. </li>
<li>Seleccionador de archivos.</li>
<li>Mensajes de error, información, pregunta y advertencia.</li>
<li>Entrada de texto.</li>
<li>Ícono de notificación.</li>
</ul>
<p><span id="more-51203"></span></p>
<p>Teclea este comando para conocer todas las opciones disponibles para <strong>zenity</strong>:</p>
<pre><code>$ zenity --help-all | less
Usage:
  zenity [OPTION...]

Help Options:
  -h, --help                              Show help options
  --help-all                              Show all help options
  --help-general                          Show general options
  --help-calendar                         Show calendar options
  ...
  ...
  --question                              Display question dialog
  --warning                               Display warning dialog
  --scale                                 Display scale dialog
  --text-info                             Display text information dialog
  --display=DISPLAY                       X display to use
</code></pre>
<p>Probemos con el calendario. Sabemos que <strong>Cervantes y Shakespeare</strong> murieron el 23 de abril de 1616. Ahora conozcamos con <strong>zenity</strong> el día de tan singular fecha:</p>
<pre><code>$ zenity --calendar --month=04 --day=23 --year=1616
04/23/1616
</code></pre>
<p><img src="http://s1.bitelia.com/files/2010/04/zenity-calendario.png" alt="" title="Zenity - Calendario" width="270" height="328" class="aligncenter size-full wp-image-51221" /></p>
<p>Fue sábado (con respecto a nuestro calendario, por supuesto). ¿Notaste que <strong>zenity</strong> devuelve la fecha? Selecciona otra fecha interactivamente y verás un cambio en la salida. Es una característica útil para crear <em>scripts</em>.</p>
<p>Ahora creemos una incoherente ventana de diálogo para aumentar el estrés de un usuario neuróticos:</p>
<pre><code>$ zenity --question --title "Error 0xAE34D6" --ok-label="Definitivamente" \
--cancel-label="Sí" --text 'Encontré Windows. ¿Desea eliminarlo?'
</code></pre>
<p><img src="http://s1.bitelia.com/files/2010/04/zenity-pregunta.png" alt="" title="Zenity - Pregunta" width="347" height="154" class="aligncenter size-full wp-image-51222" /></p>
<p>¿Deseas iniciar el día leyendo algún blog de la red Hipertextual, pero por alguna extraña razón quieres elegirlo de una lista incrustada en una ventana GTK+? Házlo <strong>zenity</strong>:</p>
<pre><code>$ blog=$(zenity --list --text "Selecciona tus blogs..." \
--title "Hipertextual" --checklist  --column "Blog" --column "URL" \
FALSE http://alt1040.com \
FALSE http://bitelia.com  \
FALSE http://motorfull.com | tr "|" " ")
</code></pre>
<p><img src="http://s1.bitelia.com/files/2010/04/zenity-lista.png" alt="" title="Zenity - Lista" width="310" height="225" class="aligncenter size-full wp-image-51223" /></p>
<pre><code>$ echo $blog
http://bitelia.com http://motorfull.com

$ firefox $blog
</code></pre>
<p>Lo anterior aparenta cierta complejidad, pero no hay tal si revisas con calma. Te invito a intentar con esas y otras opciones. Verás que con <strong>zenity</strong> serás capaz de enriquecer tus <em>scripts</em> de forma insospechada y sin necesidad que programar directamente con GTK+. Por cierto, hay un <em>easter egg</em> asociado a <strong>zenity</strong>&#8230; pregúntale a Google por él.</p>
]]></content:encoded>
			<wfw:commentRss>http://bitelia.com/2010/04/comando-linux-zenity-ventanas-de-dialogo-gtk/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comando Linux fish: el shell más amistoso e interactivo</title>
		<link>http://bitelia.com/2010/03/comando-linux-fish-el-shell-amistoso-e-interactivo</link>
		<comments>http://bitelia.com/2010/03/comando-linux-fish-el-shell-amistoso-e-interactivo#comments</comments>
		<pubDate>Wed, 17 Mar 2010 09:00:26 +0000</pubDate>
		<dc:creator>Alan Lazalde</dc:creator>
				<category><![CDATA[Guías/Trucos]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash completion]]></category>
		<category><![CDATA[Comando Linux]]></category>
		<category><![CDATA[fish]]></category>
		<category><![CDATA[friendly interactive shell]]></category>
		<category><![CDATA[intérprete de comandos]]></category>
		<category><![CDATA[línea de comandos]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://bitelia.com/?p=47622</guid>
		<description><![CDATA[Para muchos usuarios de sistemas tipo UNIX, el shell es una excelente interfaz de comunicación entre ellos y el sistema operativo. Es una interfaz de texto que en ocasiones, si le sabemos preguntar, lo puede decir todo. También puede verse como la lengua más hablada por los sysadmins UNIX, una con docenas de dialectos como bash, ash, csh, ksh, zsh. El shell bash domina entre todos ellos, sobre todo en Linux. Pero esto no significa que no halla nuevos intentos para mejorar la comunicación, la simbiosis, hombre-shell. Y este es...]]></description>
			<content:encoded><![CDATA[<p><img src="http://s1.bitelia.com/files/2010/03/fish-logo.png" alt="" title="fish-logo" width="300" height="300" class="alignleft size-full wp-image-47627" /></p>
<p>Para muchos usuarios de sistemas tipo UNIX, el <strong><em>shell</em> es una excelente interfaz</strong> de comunicación entre ellos  y el sistema operativo. Es una interfaz de texto que en ocasiones, si le sabemos preguntar, lo puede decir todo. También puede verse como <strong>la lengua más hablada por los sysadmins UNIX</strong>, una con docenas de dialectos como bash, ash, csh, ksh, zsh.</p>
<p>El shell <strong>bash</strong> domina entre todos ellos, sobre todo en <strong>Linux</strong>. Pero esto no significa que no halla nuevos intentos para mejorar la comunicación, la simbiosis, hombre-shell. Y este es el caso de <strong>fish</strong>, un amistoso e interactivo <strong>intérprete de comandos</strong>.</p>
<p><span id="more-47622"></span></p>
<p>¿Quieres conocer fish? A continuación te presento una guía <del>interactiva</del> mínima para darte a conocer este curioso software para comandar Linux y los entes que allí viven.</p>
<h3>Instalación</h3>
<p>En la familia Debian:</p>
<p><code>$ sudo apt-get install fish</code></p>
<p>Para otras distros, consulta con tu gestor de paquetes.</p>
<h3>Uso</h3>
<p>Lo primero que notarás en <strong>fish</strong> son los colores. Cada comando es coloreado por defecto con el color verde. Algo así sucede con los directorios, ligas, y demás tipos de archivo. Los directorios y comandos aparecen subrayados cada vez se utilizan en el shell. En el siguiente ejemplo ejecuto el comando <strong>ls</strong> sobre el directorio <strong>/var/run</strong>.</p>
<p><img src="http://s2.bitelia.com/files/2010/03/fish-colores.png" alt="" title="fish-colores" width="640" height="229" class="aligncenter size-full wp-image-47642" /></p>
<p>¿Ya notaste que hay un coloreado distinto comparado con el de <strong>bash</strong>? Hay más aún. Mira la cantidad de información que nos entrega la tecla TAB presionada en seguida de la letra &#8220;n&#8221; en /var/run: <strong>fish</strong> identifica a cada elemento en el directorio.</p>
<p><img src="http://s3.bitelia.com/files/2010/03/fish-tab-completar-dirs.png" alt="" title="fish-tab-completar-directorios" width="640" height="277" class="aligncenter size-full wp-image-47650" /></p>
<p>En este ejemplo pruebo tecleando <strong>ls &#8212;h[TAB]</strong>, es decir, le pido a <strong>fish</strong> que me diga qué otras opciones acompañan a <strong>&#8212;h</strong>.</p>
<p><img src="http://s3.bitelia.com/files/2010/03/fish-tab-completar-opciones.png" alt="" title="fish-tab-completar-opciones" width="603" height="209" class="aligncenter size-full wp-image-47644" /></p>
<p>Ahora utilizo TAB para conocer información sobre manuales cuyo nombre inicie con <strong>ls</strong>.</p>
<p><img src="http://s2.bitelia.com/files/2010/03/fish-tab-completar-manuales.png" alt="" title="fish-tab-completar-manuales" width="619" height="362" class="aligncenter size-full wp-image-47651" /></p>
<h3>Programación</h3>
<p>Quizá te agrade saber que <strong>fish es también un lenguaje de programación</strong>. Creo que aún <strong>no tiene el poder de bash</strong>, pero sí es suficiente para tareas sencillas. A continuación te ofrezco algunos ejemplos.</p>
<p>Aquí declaro una función llamada <strong>ll</strong> con la intención de que sea un alias del comando <strong>ls -l</strong>. Te sorprenderá ver que <strong>fish</strong> indenta automáticamente el código. Desde ya puedes ver que la sintaxis es sencilla, también en comparación con <strong>bash</strong>.</p>
<p><img src="http://s3.bitelia.com/files/2010/03/fish-programacion-funcion.png" alt="" title="fish-programacion-funcion" width="491" height="226" class="aligncenter size-full wp-image-47653" /></p>
<p>La declaración de variables es más intuitiva también:</p>
<p><code>$ set x y</code></p>
<p><code>$ echo $x </code></p>
<p><code>y</code></p>
<p>Aquí declaro un arreglo compuesto por una secuencia de 7 enteros usando el comando <strong>seq</strong>. Nota que la manera de obtener los valores devueltos por un comando es encerrándolo entre paréntesis.</p>
<p><code>$ set A (seq 7)</code></p>
<p><code>$ echo $A </code></p>
<p><code>1 2 3 4 5 6 7</code></p>
<p>Si quieres ayuda con esas y otras funciones, ejecuta</p>
<p><code>$ help [opcionalmente, algún comando]</code></p>
<p>desde <strong>fish</strong> y éste abrirá una ventana de tu navegador con la documentación oficial.</p>
<h3>Conclusiones</h3>
<p>Si <strong>fish</strong> te convenció de dejar <strong>bash</strong> o algún otro shell, házlo para siempre ejecutando este comando:</p>
<p><code>$ chsh -s /usr/bin/fish</code></p>
<p>Con esto <strong>fish</strong> será tu shell por defecto a partir de tu siguiente inicio de sesión.</p>
<p>Estoy convencido de que <strong>fish</strong> es una excelente opción para aquellos que se inician en la línea de comandos y/o quieren opciones que les permitan aprender más rápido y en un futuro dar el salto a <strong>bash</strong> u otro shell, sobre todo si su intención es convertirse en todo un sysadmin, amo y señor de UNIX&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://bitelia.com/2010/03/comando-linux-fish-el-shell-amistoso-e-interactivo/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Cómo utilizar más eficazmente el historial de la terminal</title>
		<link>http://bitelia.com/2009/11/como-utilizar-eficazmente-historial-terminal</link>
		<comments>http://bitelia.com/2009/11/como-utilizar-eficazmente-historial-terminal#comments</comments>
		<pubDate>Thu, 19 Nov 2009 09:00:33 +0000</pubDate>
		<dc:creator>Jorge Suárez</dc:creator>
				<category><![CDATA[Guías/Trucos]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[designadores de eventos]]></category>
		<category><![CDATA[designadores de palabras]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[Historial]]></category>
		<category><![CDATA[modificadores]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://bitelia.com/?p=38545</guid>
		<description><![CDATA[El entorno de la terminal en GNU/Linux almacena las órdenes que escribimos, de forma que podemos utilizar las flechas para movernos por las entradas anteriores, modificarlas según nuestras necesidades y volverlas a ejecutar. Sin embargo, hay algunos atajos que nos lo ponen todavía más fácil. Hoy hablaremos de tres elementos: los designadores de eventos, los designadores de palabras y los modificadores. ¿Te suena todo a chino? No te preocupes, es normal. Poniendo un poco de atención y teniendo al lado una terminal con la que practicar enseguida dominarás todas estas...]]></description>
			<content:encoded><![CDATA[<p><img src="http://s2.bitelia.com/files/2009/11/terminal.jpg" alt="Una terminal dentro de una terminal. Un chiste que nunca se ha hecho antes." title="Una terminal dentro de una terminal. Un chiste que nunca se ha hecho antes." width="339" height="331" class="alignright size-full wp-image-38602" /></p>
<p>El entorno de la terminal en <a href="http://bitelia.com/tag/gnu/linux">GNU/Linux</a> almacena las órdenes que escribimos, de forma que podemos utilizar las flechas para movernos por las entradas anteriores, modificarlas según nuestras necesidades y volverlas a ejecutar. Sin embargo, hay algunos atajos que nos lo ponen <strong>todavía más fácil</strong>.</p>
<p>Hoy hablaremos de <strong>tres elementos</strong>: los <em>designadores de eventos</em>, los <em>designadores de palabras</em> y los <em>modificadores</em>. ¿Te suena todo a chino? No te preocupes, es normal. Poniendo un poco de atención y teniendo al lado una terminal con la que practicar enseguida dominarás todas estas técnicas que, si utilizas la terminal a menudo, seguro que te interesan.</p>
<p><span id="more-38545"></span></p>
<p>El primer elemento que veremos son los <strong>designadores de eventos</strong>, un nombre un tanto barroco que en realidad se refiere a reemplazos por líneas del historial. Solo deberemos poner un símbolo «<em>!</em>» seguido del número de líneas que queremos retroceder en el historial, o seguido de la búsqueda que deseemos hacer.</p>
<ul>
<li><strong>!-1</strong> o <strong>!!</strong> es reemplazado por el contenido de la línea anterior.</li>
<li><strong>!-3</strong> es reemplazado por el contenido de hace tres líneas.</li>
<li><strong>!vlc</strong> es reemplazado por el contenido de la última línea que empezaba por <em>vlc</em>.</li>
<li><strong>!?vlc?</strong> es reemplazado por el contenido de la última que contenía <em>vlc</em>.</li>
<li><strong>!#</strong> es reemplazado por el contenido de la línea en la que estamos desde el principio hasta ese punto.</li>
</ul>
<p>El segundo elemento de esta receta son los <strong>designadores de palabras</strong>, que se utilizan en conjunción con los anteriores para referirse a palabras dentro de las líneas seleccionadas con los <em>designadores de eventos</em> que acabamos de ver. Se encadenan mediante un símbolo «<em>:</em>».</p>
<ul>
<li>!!<strong>:0-2</strong> se refiere al rango de palabras desde la primera a la tercera de la línea anterior.</li>
<li>!!<strong>:3</strong> se refiere a la cuarta palabra, mientras que !!<strong>:$</strong> a la última.</li>
</ul>
<p>Por último, están los <strong>modificadores</strong>, que pueden utilizarse para modificar esas palabras o líneas, que es lo más interesante de todo este asunto, a mi parecer. Se utilizan como los <em>designadores de palabras</em>, encadenados con un símbolo «<em>:</em>» cada uno.</p>
<ul>
<li>!!:$<strong>:h</strong> quita el componente final de la última palabra de la línea anterior, suponiendo que es una ruta a un archivo.</li>
<li>!!:$<strong>:t</strong> hace lo contrario, quita todos los componentes de la ruta salvo el último.</li>
<li>!!:$<strong>:r</strong> y !!:$<strong>:e</strong> hacen lo mismo que los dos anteriores, pero con extensiones de archivos.</li>
<li>!!:$<strong>:s/<em>viejo</em>/<em>nuevo</em>/</strong> o <strong>^viejo^nuevo</strong> sustituye <em>viejo</em> por <em>nuevo</em>.</li>
</ul>
<p>Cuando utilices los <em>designadores de eventos</em> verás la línea resultante ya con todos los reemplazos hechos después que pulses la tecla <em>intro</em>, así puedes ir viendo los resultados de tus acciones. De todas formas unos ejemplos nunca están de más, así que:</p>
<pre><code>cat /etx/apt/sources.list
^etx^etc
cp !!:$ !!:$:t:h
</code></pre>
<p>En la primera línea lo que hago es intentar listar el contenido del archivo «<em>/etc/apt/sources.list</em>», pero me equivoco. En la segunda línea corrijo el primer comando, cambiando «<em>etx</em>» por «<em>etc</em>». Rizando un poco el rizo, en la tercera línea copio «<em>/etc/apt/sources.list</em>» en el archivo «<em>sources</em>» del directorio actual.</p>
<pre><code>sudo cp /etc/apt/sources.list !#:$.bak
</code></pre>
<p>En este otro ejemplo, estoy haciendo una copia de seguridad de «<em>/etc/apt/sources.list</em>» en «<em>/etc/apt/sources.list.bak</em>» pero en lugar de volver a escribir el archivo por segunda vez, utilizo el <em>designador de evento</em> que me devuelve toda la línea escrita hasta ese punto «<em>!#</em>», obtengo solo la última palabra «<em>:$</em>» y finalmente le añado el «<em>.bak</em>».</p>
<p>Vía: <a href="http://rwmj.wordpress.com/2009/11/16/tip-and-in-the-shell/">Richard WM Jones</a> | Foto original: <a href="http://www.flickr.com/photos/hyougushi/211781912/">Hyougushi</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bitelia.com/2009/11/como-utilizar-eficazmente-historial-terminal/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
