<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.7" -->
<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/"
	>

<channel>
	<title>Ebarbeito</title>
	<link>http://enrique.barbeito.org</link>
	<description>Página personal de Enrique Barbeito García</description>
	<pubDate>Sat, 26 Jan 2008 18:55:52 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.7</generator>
	<language>es-es</language>
			<item>
		<title>Portage utilities not in portage</title>
		<link>http://enrique.barbeito.org/blog/portage-utilities-not-in-portage/</link>
		<comments>http://enrique.barbeito.org/blog/portage-utilities-not-in-portage/#comments</comments>
		<pubDate>Tue, 29 Mar 2005 09:21:49 +0000</pubDate>
		<dc:creator>Enrique Barbeito García</dc:creator>
		
		<category>Gentoo</category>

		<category>Scripts</category>

		<guid isPermaLink="false">/?p=501</guid>
		<description><![CDATA[  En verano de 2003 un interesante hilo comenzó a gestarse en el foro Documentation, Tips &#038; Tricks a manos de Rob Cakebread con el fin de mantener actualizado un listado de herramientas que complementen el sistema de administración de paquetes de Gentoo, Portage, pero que no estén incluidas en el repositorio oficial. Herramientas que [...] ]]></description>
			<content:encoded><![CDATA[<p> En verano de 2003 un <a href="http://forums.gentoo.org/viewtopic-t-67849-postdays-0-postorder-asc-start-0.html" title="Portage utilities not in portage">interesante hilo</a> comenzó a gestarse en el foro <em><a href="http://forums.gentoo.org/viewforum-f-12.html" title="Gentoo Forums - Documentation, Tips &#038; Tricks">Documentation, Tips &#038; Tricks</a></em> a manos de <em><a href="http://dev.gentoo.org/~pythonhead" title="pythonhead">Rob Cakebread</a></em> con el fin de mantener actualizado un listado de herramientas que complementen el sistema de administración de paquetes de Gentoo, <em>Portage</em>, pero que no estén incluidas en el repositorio oficial. Herramientas que se podrían clasificar dentro de la categoría <a href="http://packages.gentoo.org/packages/?category=app-portage" title="The Fresh Ebuilds - app-portage">app-portage</a>.</p>
<p>Una interesante propuesta dada la utilidad práctica de esta lista. Pues por medio de <a href="http://dev.gentoo.org/~pythonhead/blog/archives/2005-03-25T08_51_31.html" title="Script Repository">la bitácora</a> de este desarrollador de Gentoo (también envió un <a href="http://forums.gentoo.org/viewtopic-p-2230283.html#2230283" title="Portage utilities not in portage - Posted: Fri Mar 25, 2005 3:42 am">último mensaje</a> al hilo comentado anteriormente) me acuerdo de la existencia del sitio web, todavía en desarrollo, <a href="http://gentooexperimental.org/content" title="Gentooexperimental.org - things from the future, today">GentooExperimental.org</a> y de su colección de scripts que tenían. Si mal no recuerdo, dicha colección se encontraba listada directamente por ficheros y no parecía estar tan organizado como lo que se puede encontrar ahora :-)</p>
<p>En su mensaje, Rob anuncia el &#8220;<em>cierre</em>&#8221; del hilo en el foro para dar paso a un nuevo repositorio de estos scripts no oficiales para Portage: <a href="http://gentooexperimental.org/script/repo/" title="Gentoo Script Repository">Gentoo Script Repository</a>.</p>
<p>Con el <em>rótulo</em> &#8220;<em>Use the scripts provided on this site at your own risk.</em>&#8220;, el repositorio se <a href="http://gentooexperimental.org/script/about.html" title="About the Gentoo Script Repository">presenta</a> como un proyecto de Gentoo no oficial dedicado al mantenimiento de scripts sin soporte en el Árbol Portage y escritos por desarrolladores de Gentoo. Permiten la inclusión de scripts a cualquiera que haya escrito alguno que sea específico para Gentoo Linux, además de herramientas para paliar tareas de administración del sistema (siempre y cuando estén enfocadas en Gentoo).</p>
<p>Para los interesados, se recomienda un paseo por cada una de las categorías con las que se han catalogado estos scripts. El listado completo se puede obtener de [ <a href="http://gentooexperimental.org/script/repo/list?changes=no_history" title="Gentoo Script Repository - Showing All Scripts">aquí</a> ] y el movimiento de scripts dentro de este repositorio es visible desde [ <a href="http://gentooexperimental.org/script/repo/list?changes=full_history" title="Gentoo Script Repository - Show Full History">aquí</a> ]</p>
<p>Como ya se ha dicho, éste representa un proyecto / repositorio no oficial; el correcto funcionamiento de cada script no se garantiza en ningún momento. Existe una propuesta dentro del <a href="http://glep.gentoo.org" title="Gentoo Linux Enhancement Proposal">GLEP</a> para el desarrollo de un repositorio oficial de scripts para Gentoo/Portage. El nombre para éste es como el de su &#8220;<em>primo hermano</em>&#8220;: Gentoo Script Repository. Para más y mejor nformación, recomendable echar un vistazo al <a href="http://www.gentoo.org/proj/en/glep/glep-0015.html" title="GLEP 15 - Gentoo Script Repository">GLEP 15</a>.</p>
<p>La centralización de esta serie de utilidades específicas para administradores / usuarios de sistemas <a href="http://www.gentoo.org" title="Gentoo Linux">Gentoo Linux</a> es una buena y práctica idea para tener una visión global de todas las ayudas de las que disponemos a la hora de mantener <em>sano</em> nuestro sistema operativo.
</p>]]></content:encoded>
			<wfw:commentRss>http://enrique.barbeito.org/blog/portage-utilities-not-in-portage/feed/</wfw:commentRss>
		</item>
		<item>
		<title>syncDate.sh</title>
		<link>http://enrique.barbeito.org/blog/syncdatesh/</link>
		<comments>http://enrique.barbeito.org/blog/syncdatesh/#comments</comments>
		<pubDate>Sun, 31 Oct 2004 21:21:54 +0000</pubDate>
		<dc:creator>Enrique Barbeito García</dc:creator>
		
		<category>Scripts</category>

		<guid isPermaLink="false">/?p=446</guid>
		<description><![CDATA[  Veo que tengo la categoría scripts un poco descuidada (en fin, como la mayoría de categorías que deberían estar saturadas de anotaciones&#8230;) así que nada, como no tengo nada mejor que poner, aquí cuelgo un pequeño script que acabo de ver olvidado por alguno de mis directorios. Lo llamé syncDate.sh y se vale de [...] ]]></description>
			<content:encoded><![CDATA[<p> Veo que tengo la categoría <a href="http://blog.enrique.barbeito.org/categorias/scripts/" title="scripts">scripts</a> <em>un poco</em> descuidada (en fin, como la mayoría de categorías que deberían estar saturadas de anotaciones&#8230;) así que nada, como no tengo nada mejor que poner, aquí cuelgo un pequeño script que acabo de ver olvidado por alguno de mis directorios. Lo llamé syncDate.sh y se vale de <a href="http://freshmeat.net/projects/rdate/" title="rdate">rdate</a> para sincronizar la hora del ordenador con el servidor de tiempo que le digamos (se ve que incluí una pequeña lista comentada y todo, <em>que apañao</em>).</p>
<p><pre class="bash"><span style="color: #808080; font-style: italic;">#!/bin/sh</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># script  : syncDate.sh</span>
<span style="color: #808080; font-style: italic;"># version : 1.0</span>
<span style="color: #808080; font-style: italic;"># author  : enrique@barbeito.org</span>
<span style="color: #808080; font-style: italic;"># date    : mié ago 27 01:50:53 CEST 2003</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Requirements:</span>
<span style="color: #808080; font-style: italic;">#  - rdate (http://www.freshmeat.net/projects/rdate)</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Description:</span>
<span style="color: #808080; font-style: italic;">#  Un simple script para sincronizar la hora de nuestro sistema.</span>
<span style="color: #808080; font-style: italic;">#  Muy útil si lo usamos con CRON</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># ##</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># lista de servidores. deja descomentado el que quieras:</span>
&nbsp;
<span style="color: #0000ff;">SERVIDOR=</span><span style="color: #ff0000;">&quot;ntp.escomposlinux.org&quot;</span>
<span style="color: #808080; font-style: italic;"># SERVIDOR=&quot;gong.uv.es&quot;</span>
<span style="color: #808080; font-style: italic;"># SERVIDOR=&quot;hora.unex.es&quot;</span>
<span style="color: #808080; font-style: italic;"># SERVIDOR=&quot;hora.unizar.es&quot;</span>
<span style="color: #808080; font-style: italic;"># SERVIDOR=&quot;hora.ua.es&quot;</span>
<span style="color: #808080; font-style: italic;"># SERVIDOR=&quot;time.nist.gov&quot;</span>
&nbsp;
rdate -s <span style="color: #0000ff;">$SERVIDOR</span>
hwclock --systohc
&nbsp;
<span style="color: #808080; font-style: italic;"># </span></pre></p>
<p>Hoy que se ha producido el cambio de hora es una buena oportunidad de sincronizar tu reloj con el de algún servidor ;-)
</p>]]></content:encoded>
			<wfw:commentRss>http://enrique.barbeito.org/blog/syncdatesh/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Your all time favorite tips</title>
		<link>http://enrique.barbeito.org/blog/your-all-time-favorite-tips/</link>
		<comments>http://enrique.barbeito.org/blog/your-all-time-favorite-tips/#comments</comments>
		<pubDate>Tue, 10 Feb 2004 12:28:13 +0000</pubDate>
		<dc:creator>Enrique Barbeito García</dc:creator>
		
		<category>Gentoo</category>

		<category>Scripts</category>

		<guid isPermaLink="false">/?p=323</guid>
		<description><![CDATA[  Por cierto, los trucos comentados de las anteriores anotaciones (1, 2, 3) los he obtenido gracias a un hilo muy interesante que se está cociendo (desde hace ya meses) en los foros de Gentoo
Es un hilo que conozco desde hace tiempo y que creo le puede venir muy muy bien a todo aquel que [...] ]]></description>
			<content:encoded><![CDATA[<p> Por cierto, los <i>trucos</i> comentados de las anteriores anotaciones (<a href="archives/000336.php" title="'Colgado' a los árboles">1</a>, <a href="archives/000335.php" title="Una función para extracción de tu IP en Internet">2</a>, <a href="archives/000334.php" title="grep coloreado">3</a>) los he obtenido gracias a <a href="http://forums.gentoo.org/viewtopic.php?t=60071" target="nwindow" title="Your all time favorite tips">un hilo</a> muy interesante que se está cociendo (desde hace ya meses) en los <a href="http://forums.gentoo.org/" target="nwindow" title="Gentoo Forums">foros de Gentoo</a></p>
<p>Es un hilo que conozco desde hace tiempo y que creo le puede venir muy muy bien a todo aquel que le gusten esta serie de cosillas a modo de trucos. Se llama <em>Your all time favorite tips</em> y la idea es que entre todos los usuarios del foro se consiga hacer un hilo realmente lúdico ;-) Consiste en ir colocando aquellos trucos, que como bien dice el título, sean de los que más te gusten.</p>
<p>Algunos requieren utilizar <a href="http://forums.gentoo.org" target="nwindow" title="Gentoo Linux">Gentoo Linux</a>, pero no todos. Así que seguro que más de uno te puede venir como anillo al dedo.</p>
<p>- <a href="http://forums.gentoo.org/viewtopic.php?t=60071" target="nwindow" title="Your all time favorite tips">Your all time favorite tips</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://enrique.barbeito.org/blog/your-all-time-favorite-tips/feed/</wfw:commentRss>
		</item>
		<item>
		<title>sacaFiles.sh</title>
		<link>http://enrique.barbeito.org/blog/sacafilessh/</link>
		<comments>http://enrique.barbeito.org/blog/sacafilessh/#comments</comments>
		<pubDate>Tue, 10 Feb 2004 10:55:38 +0000</pubDate>
		<dc:creator>Enrique Barbeito García</dc:creator>
		
		<category>Scripts</category>

		<guid isPermaLink="false">/?p=321</guid>
		<description><![CDATA[  #!/bin/sh
#
# script : sacaFiles.sh
# version : 0.1
# author : enrique@barbeito.org
# date : mar feb 10 13:27:03 CET 2004
#
# Requirements:
# - tree (http://mama.indstate.edu/users/ice/tree/)
#
# Description:
# Calcula el número de directorios (-d) o ficheros (-f)
# en función a nuestros más perturbados deseosâ?Š
#
# ##
&#160;
kDIR=`pwd`
&#160;
function showInfo &#40;&#41;
&#123;
    case &#34;$1&#34;
    in
    [...] ]]></description>
			<content:encoded><![CDATA[<p> <pre class="bash"><span style="color: #808080; font-style: italic;">#!/bin/sh</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># script : sacaFiles.sh</span>
<span style="color: #808080; font-style: italic;"># version : 0.1</span>
<span style="color: #808080; font-style: italic;"># author : enrique@barbeito.org</span>
<span style="color: #808080; font-style: italic;"># date : mar feb 10 13:27:03 CET 2004</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Requirements:</span>
<span style="color: #808080; font-style: italic;"># - tree (http://mama.indstate.edu/users/ice/tree/)</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Description:</span>
<span style="color: #808080; font-style: italic;"># Calcula el número de directorios (-d) o ficheros (-f)</span>
<span style="color: #808080; font-style: italic;"># en función a nuestros más perturbados deseosâ?Š</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># ##</span>
&nbsp;
<span style="color: #0000ff;">kDIR=</span>`<span style="color: #000066;">pwd</span>`
&nbsp;
<span style="color: #b1b100;">function</span> showInfo <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span>
    <span style="color: #b1b100;">in</span>
        <span style="color: #ff0000;">&quot;-d&quot;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #0000ff;">dirs=</span>`tree . |tail -n <span style="color: #cc66cc;">1</span> | cut -f <span style="color: #cc66cc;">1</span> -d <span style="color: #ff0000;">' '</span>`
            <span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;El directorio $kDIR tiene $dirs directorios<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        ;;
        <span style="color: #ff0000;">&quot;-f&quot;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #0000ff;">fics=</span>$<span style="color: #66cc66;">&#40;</span>tree |tail -n <span style="color: #cc66cc;">1</span> | cut -f <span style="color: #cc66cc;">3</span> -d <span style="color: #ff0000;">' '</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;El directorio $kDIR tiene $fics ficheros<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        ;;
        *<span style="color: #66cc66;">&#41;</span>
            <span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Uso: `basename $0` {-d | -f}&quot;</span>
    <span style="color: #b1b100;">esac</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
showInfo $<span style="color: #cc66cc;">1</span>
<span style="color: #808080; font-style: italic;"># </span></pre>
</p>]]></content:encoded>
			<wfw:commentRss>http://enrique.barbeito.org/blog/sacafilessh/feed/</wfw:commentRss>
		</item>
		<item>
		<title>I Concurso de Bash Scripting</title>
		<link>http://enrique.barbeito.org/blog/i-concurso-de-bash-scripting/</link>
		<comments>http://enrique.barbeito.org/blog/i-concurso-de-bash-scripting/#comments</comments>
		<pubDate>Thu, 15 Jan 2004 07:35:45 +0000</pubDate>
		<dc:creator>Enrique Barbeito García</dc:creator>
		
		<category>Scripts</category>

		<guid isPermaLink="false">/?p=305</guid>
		<description><![CDATA[ 
Aunque ya ha sido perfectamente comentado en otros sitios (1 y 2) no quería desaprovechar la oportunidad de anunciarlo yo también por aquí.
Parece ser que un pequeño grupo de personas han tenido la interesante idea de organizar una especie de concurso (más bien, una pachanga entre usuarios de BASH :)) de programación del shell BASH, [...] ]]></description>
			<content:encoded><![CDATA[<div class="cajitaIzq"><a href="http://bashcon.homelinux.com/" title="Concurso de Bash Scripting"><img src="http://enrique.barbeito.org/img/bashcon.jpg" border="0" /></a></div>
<p>Aunque ya ha sido perfectamente comentado en otros sitios (<a href="http://www.userlinux.net/lanza.php?s=3&#038;id=148" target="nwindw" title="Concurso bash-scripting">1</a> y <a href="http://barrapunto.com/article.pl?sid=04/01/11/1844241&#038;mode=thread" target="nwindow" title="I Concurso de Bash Scripting [BashCON]">2</a>) no quería desaprovechar la oportunidad de anunciarlo yo también por aquí.</p>
<p>Parece ser que un pequeño grupo de personas han tenido la interesante idea de organizar una especie de concurso (más bien, <em>una pachanga</em> entre usuarios de <a href="http://www.gnu.org/software/bash/bash.html" target="nwindow" title="Bourne-Again SHell">BASH</a> :)) de programación del shell BASH, uno de los más utilizados y populares que existen. El fin del concurso es agrupar una serie de scripts enviados por todo aquel que desee participar y elegir uno de ellos ganador &#8212; ya sea por su originalidad, utilidad, calidad del código&#8230; no sé qué patrones seguirán para juzgar un script ganador al resto &#8212; El objetivo, de mayor importancia que la finalidad del mismo, es <abbr title="extraído de la propia web del concurso">«</abbr><em>el compartir todos esos scripts con la comunidad, para aprender en conjunto y motivar la creatividad.</em><abbr title="extraído de la propia web del concurso">»</abbr></p>
<p>Los organizadores, y verdugos :), son tres personajes que se hacen llamar <a href="http://www.devigoaordes.com/" target="nwindow">sh0ckwave</a>, <a href="http://www.digital-style.org/" target="nwindow">Tigrezno</a> y <a href="http://pez.digital-style.org/" target="nwindow">Pez</a>, que encima tengo el placer (o el horror XD) de conocer &#8212; espero que esto influya en sus decisiones finales, de otro modo no gano este BashCON ni de coña jaja :) &#8212;</p>
<p>Desde que todo esto se hizo público, y hasta el próximo 23 de abril, podemos ir enviando toda clase de <abbr title="scripts">guiones</abbr> que empleen el shell BASH: no es necesario escribir uno nuevo, si ya tienes <em>chorrocientos</em> hechos y no sabes qué hacer ya con ellos, ¡ni te lo pienses! envíalos y participa &#8212; ¿o a caso no confías en tus scripts ehhh? Tus scripts confían en ti, ¡haz lo mismo! &#8212; [lo siento pero creo que ya se me ha ido la cabeza y no puedo más que soltar chorradas XD]</p>
<p>Más información:
<ul>
<li><a href="http://bashcon.homelinux.com/" target="nwindow" title="Concurso de Bash Scripting">Página oficial</a></li>
<li><a href="http://bashcon.homelinux.com/concurso.html" target="nwindow">Sobre el concurso y las bases del mismo</a></li>
<li><a href="http://www.tldp.org/LDP/abs/html/" target="nwindow" title="Advanced Bash-Scripting Guide">Advanced Bash-Scripting Guide</a>, ¡usa la fuerza Luck!</li>
<li><a href="http://xinfo.sourceforge.net/documentos/bash-scripting/" target="nwindow" title="bash-scripting como introduccion por xento">bash-scripting como introduccion por xento</a>, documento de reciente aparición. Por <em>Xento Figal</em></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://enrique.barbeito.org/blog/i-concurso-de-bash-scripting/feed/</wfw:commentRss>
		</item>
		<item>
		<title>multi(Un)packer</title>
		<link>http://enrique.barbeito.org/blog/multiunpacker/</link>
		<comments>http://enrique.barbeito.org/blog/multiunpacker/#comments</comments>
		<pubDate>Tue, 30 Dec 2003 13:41:27 +0000</pubDate>
		<dc:creator>Enrique Barbeito García</dc:creator>
		
		<category>Scripts</category>

		<guid isPermaLink="false">/?p=299</guid>
		<description><![CDATA[  Hace unos días encontré una idea genial para ponerme a escribir otro script en BASH que me fuera sumamente útil y, a la vez, intentar que también lo fuese para cualquiera.  En los foros de Lmulespana, concretamente en los foros dedicados a la programación: [ aquí ], encontré un script llamado uz.sh, escrito [...] ]]></description>
			<content:encoded><![CDATA[<p> Hace unos días encontré una idea <u>genial</u> para ponerme a escribir otro script en BASH que me fuera sumamente útil y, a la vez, intentar que también lo fuese para cualquiera.  En los <a href="http://www.emulespana.net/~xmule/phpBB2/index.php" target="nwindow" title="Foros - Indice">foros</a> de <a href="http://www.lmulespana.tk/" target="nwindow" title="Todo sobre Linux y sus P2P">Lmulespana</a>, concretamente en los foros <a href="http://www.emulespana.net/~xmule/phpBB2/viewforum.php?f=16" target="nwindow" title="Ver foro - Programación">dedicados a la programación</a>: [ <a href="http://www.emulespana.net/~xmule/phpBB2/viewtopic.php?t=308" target="nwindow" title="Tus scripts">aquí</a> ], encontré un script llamado <em>uz.sh</em>, escrito por <a href="http://www.emulespana.net/~xmule/phpBB2/profile.php?mode=viewprofile&#038;u=3" target="nwindow" title="Viendo perfil">Rondagorn</a>, el cual sirve para descomprimir en la carpeta desde la que se llama al script los archivos comprimidos del tipo <em>gzip, zip, bzip2 o rar</em> :) Su script me sirvió para descubrir la gran utilidad del comando file pero, más importante que eso, me dio la idea de escribir <em>algo parecido</em> que trabajara con unos cuantos formatos de compresión más y que sirviera no solo para descomprimir, que también comprimiera uno o más archivos y que listara por pantalla los ficheros contenidos en uno o más ficheros comprimidos que deseamos ver.</p>
<p><em>multi(Un)packer</em> se encuentra en la versión 2.0_rc1, creo que ya está terminado y por ello es que he decidido ponerlo por aquí. Todavía es una <em>release candidate</em> digamos porque no he tenido la oportunidad de probarlo demasiado (bueno, he hecho muchísimas pruebas pero seguramente queden cosas por arreglar/probar). Requiere de varias herramientas de las cuales se vale para realizar ficheros comprimidos, descomprimir o listar contenidos en diferentes formatos:</p>
<p><pre class="bash"><span style="color: #808080; font-style: italic;"># Requirements:</span>
<span style="color: #808080; font-style: italic;">#  - tar (http://www.gnu.org/software/tar/)</span>
<span style="color: #808080; font-style: italic;">#  - gzip (http://www.gnu.org/software/gzip/gzip.html)</span>
<span style="color: #808080; font-style: italic;">#  - zip (ftp://ftp.freesoftware.com/pub/infozip/Zip.html)</span>
<span style="color: #808080; font-style: italic;">#  - rar (http://www.rarsoft.com/)</span>
<span style="color: #808080; font-style: italic;">#  - unace (http://www.winace.com/)</span>
<span style="color: #808080; font-style: italic;">#  - arj (http://arj.sourceforge.net/)</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Description:</span>
<span style="color: #808080; font-style: italic;">#  Utilidad para el uso de multiples compresores.</span>
<span style="color: #808080; font-style: italic;">#  Trabaja con tipos de archivo: tar, gzip, bzip2, zip, rar, ace y arj</span>
<span style="color: #808080; font-style: italic;">#  Comprime, descomprime y lista el contenido de archivos comprimidos </span></pre>
<p class='referencia'>nombre: <b>mup.sh</b> - <i>BASH script</i></p>
<p>Y poco más que decir antes de pastearos el código&#8230; solo decir que, a diferencia de otros scripts que haya puesto por aquí, creo que este si puede tener verdadera utilidad para cualquier usuario de escritorio que trabaje con cualquier tipo de formato de compresión más usual; somos muchos los que conectamos a redes <acronym title="Peer to Peer">P2P</acronym> y descargamos discos, videos, y demás <em>souvenires</em> que vienen debidamente comprimidos en zip, rar, ace, &#8230;</p>
<p>Un ejemplo de uso sería, si hubiésemos descargado un archivo empaquetado con tar: &#8220;<em>G-Unit - Beg For Mercy.tar</em>&#8221; desde nuestro xMule (~/.xMule/Incoming/G-Unit - Beg For Mercy.tar)</p>
<pre class="codigoUnix">meteora:~$ mup.sh -d .xMule/Incoming/G-Unit - Beg For Mercy.tar
mup.sh: desempaquetando ".xMule/Incoming/G-Unit - Beg For Mercy.tar" ...

Terminado. 1 fichero(s) descomprimido(s).

meteora:~$ ls |grep G-Unit
drwxr-xr-x    4 neuronal users        4,0K 2003-11-04 14:29 G-Unit-Beg_For_Mercy-(Retail)-2003-RNS/</pre>
<p>Ahi lo tenemos :-) Utilizamos el parámetro &#8220;-d&#8221; (de <em><b>d</b>escomprimir</em>) y otro parámetro que es el fichero citado anteriormente. Lo descomprime en el directorio en donde nos encontremos, en este caso en nuestro directorio $HOME</p>
<p>Por último decir que tengo pensado añadir una funcionalidad <em>extra especial</em> para usuarios de <a href="http://www.gentoo.org" target="nwindow" title="Gentoo Linux">Gentoo Linux</a>. No va a ser gran cosa (solo es una chorrada jeje), consistirá en valerse de emerge para realizar aquellas instalaciones de los paquetes que requiera el script y el usuario no tenga instalados; advertirá de que <em>X</em> utilidad no se encuentra instalada y preguntará si se desea proceder a instalarla &#8211;dependiendo de la respuesta del usuario, el script hará una llamada a emerge o finalizará la ejecución del mismo&#8211;</p>
<p>A continuación tenéis el código del script.</p>
<p><a id="more-299"></a></p>
<p><pre class="bash"><span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># script  : multi(Un)packer</span>
<span style="color: #808080; font-style: italic;"># version : 2.0_rc1</span>
<span style="color: #808080; font-style: italic;"># author  : enrique@barbeito.org</span>
<span style="color: #808080; font-style: italic;"># date    : mar dic 30 16:05:14 CET 2003</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Requirements:</span>
<span style="color: #808080; font-style: italic;">#  - tar (http://www.gnu.org/software/tar/)</span>
<span style="color: #808080; font-style: italic;">#  - gzip (http://www.gnu.org/software/gzip/gzip.html)</span>
<span style="color: #808080; font-style: italic;">#  - zip (ftp://ftp.freesoftware.com/pub/infozip/Zip.html)</span>
<span style="color: #808080; font-style: italic;">#  - rar (http://www.rarsoft.com/)</span>
<span style="color: #808080; font-style: italic;">#  - unace (http://www.winace.com/)</span>
<span style="color: #808080; font-style: italic;">#  - arj (http://arj.sourceforge.net/)</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Description:</span>
<span style="color: #808080; font-style: italic;">#  Utilidad para el uso de multiples compresores.</span>
<span style="color: #808080; font-style: italic;">#  Trabaja con tipos de archivo: tar, gzip, bzip2, zip, rar, ace y arj</span>
<span style="color: #808080; font-style: italic;">#  Comprime, descomprime y lista el contenido de archivos comprimidos</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># ##</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># =========</span>
<span style="color: #808080; font-style: italic;"># ChangeLog</span>
<span style="color: #808080; font-style: italic;"># =========</span>
<span style="color: #808080; font-style: italic;"># 2003-12-29	ebarbeito	</span>
<span style="color: #808080; font-style: italic;">#  * soporte para tipo de archivos TAR</span>
<span style="color: #808080; font-style: italic;">#  * tratamiento de ficheros con espacios en sus nombres arreglado</span>
<span style="color: #808080; font-style: italic;">#    gracias a pushakk (#linux @ irc-hispano.org) por la ayuda :-)</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># 2003-12-22	ebarbeito	</span>
<span style="color: #808080; font-style: italic;">#  * funcion &quot;fExt&quot; creada --para simplificar codigo--</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># 2003-12-19	ebarbeito	</span>
<span style="color: #808080; font-style: italic;">#  * version 2.0_rc1 out!</span>
<span style="color: #808080; font-style: italic;">#  * &quot;fListar&quot; retocada</span>
<span style="color: #808080; font-style: italic;">#  * soporte para tipo de archivos ARJ</span>
<span style="color: #808080; font-style: italic;">#  * selector &quot;case&quot; de la funcion &quot;fComprime&quot;</span>
<span style="color: #808080; font-style: italic;">#    refinado con el uso de expresiones regulares</span>
<span style="color: #808080; font-style: italic;">#  * Agrupacion de codigo en &quot;fArgs&quot; para simplificar</span>
<span style="color: #808080; font-style: italic;">#  * funcion &quot;fComprime&quot; creada</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># 2003-12-17	ebarbeito	</span>
<span style="color: #808080; font-style: italic;">#  * funcion &quot;fListar&quot; creada</span>
<span style="color: #808080; font-style: italic;">#  * funcion &quot;fDecomprimir&quot; ampliada:</span>
<span style="color: #808080; font-style: italic;">#      soporte para tipo de archivos RAR</span>
<span style="color: #808080; font-style: italic;">#      soporte para tipo de archivos ACE</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># 2003-12-16	ebarbeito 	</span>
<span style="color: #808080; font-style: italic;">#  * funcion &quot;fVersion&quot; creada.</span>
<span style="color: #808080; font-style: italic;">#  * funcion &quot;fHelp&quot; creada.</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># 2003-12-15	ebarbeito	</span>
<span style="color: #808080; font-style: italic;">#  * version 1.0</span>
<span style="color: #808080; font-style: italic;">#  * reordenacion del codigo</span>
<span style="color: #808080; font-style: italic;">#  * changelog iniciado</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># ##</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># ====</span>
<span style="color: #808080; font-style: italic;"># TODO</span>
<span style="color: #808080; font-style: italic;"># ====</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;">#  **** creacion de flags especial para Gentoo (instalacion de compresores)</span>
<span style="color: #808080; font-style: italic;">#  DONE soporte para gzip, bzip2, zip, rar, ace (listar contenido)</span>
<span style="color: #808080; font-style: italic;">#  DONE soporte para gzip, bzip2, zip, rar, ace (compresion)</span>
<span style="color: #808080; font-style: italic;">#  DONE centralizar la ayuda del script</span>
<span style="color: #808080; font-style: italic;">#  DONE soporte para gzip, bzip2, zip, rar, ace (descompresion)</span>
<span style="color: #808080; font-style: italic;">#  DONE TODO iniciado</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># ##</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># constantes y variables globales iniciadas</span>
<span style="color: #808080; font-style: italic;">#</span>
	<span style="color: #0000ff;">kSCRIPT=</span>`basename $<span style="color: #cc66cc;">0</span>`
	<span style="color: #0000ff;">kVERSION=</span><span style="color: #cc66cc;">2</span>.0_rc1
	<span style="color: #0000ff;">totales=</span><span style="color: #cc66cc;">0</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># fVersion() , muestra la version y autor del script</span>
<span style="color: #808080; font-style: italic;"># ==================================================</span>
<span style="color: #b1b100;">function</span> fVersion
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\0</span>33[1;37m$kSCRIPT<span style="color: #000099; font-weight: bold;">\0</span>33[0m version $kVERSION, 20031219 (!c)&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Enrique Barbeito García, &quot;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># fHelp() , muestra ayuda de uso del script</span>
<span style="color: #808080; font-style: italic;"># =========================================</span>
<span style="color: #b1b100;">function</span> fHelp
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Uso: `basename $0` [opcion] fichero1 [fichero2 fichero3...]&quot;</span>
	<span style="color: #000066;">echo</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Opciones disponibles:&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;   -c out fichero1 [fichero2...]  Comprime uno o varios ficheros generando el fichero &quot;</span>out<span style="color: #ff0000;">&quot;&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;   -d fichero1 [fichero2...]      Descomprime uno o varios ficheros en el directorio actual.&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;   -l fichero1 [fichero2...]      Lista el contenido de uno o varios ficheros comprimidos.&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;   -h, --help                     Muestra esta ayuda y finaliza.&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;   -v, --version                  Informa de la version y finaliza.&quot;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># fArgs() , muestra error cuando no se introducen los argumentos necesarios</span>
<span style="color: #808080; font-style: italic;"># =========================================================================</span>
<span style="color: #b1b100;">function</span> fArgs
<span style="color: #66cc66;">&#123;</span>
		<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$kSCRIPT: numero de argumentos insuficiente&quot;</span>
		<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Utilice '$kSCRIPT --help' para obtener ayuda.&quot;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># fExt() , muestra error cuando se introducen extensiones no validas</span>
<span style="color: #808080; font-style: italic;"># ==================================================================</span>
<span style="color: #b1b100;">function</span> fExt
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$kSCRIPT: Extension del fichero de $1 desconocida.&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Debes utilizar cualquier nombre de archivo con extension:&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;  - .tar.gz : si quieres crear un fichero &quot;</span>tar.gz<span style="color: #ff0000;">&quot;&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;  - .tgz    : si quieres crear un fichero &quot;</span>tgz<span style="color: #ff0000;">&quot;&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;  - .gz     : si quieres crear un fichero &quot;</span>gz<span style="color: #ff0000;">&quot;&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;  - .bzip2  : si quieres crear un fichero &quot;</span>bzip2<span style="color: #ff0000;">&quot;&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;  - .tbz2   : si quieres crear un fichero &quot;</span>tbz2<span style="color: #ff0000;">&quot;&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;  - .zip    : si quieres crear un fichero &quot;</span>zip<span style="color: #ff0000;">&quot;&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;  - .rar    : si quieres crear un fichero &quot;</span>rar<span style="color: #ff0000;">&quot;&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;  - .ace    : si quieres crear un fichero &quot;</span>ace<span style="color: #ff0000;">&quot;&quot;</span>
	<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;  - .arj    : si quieres crear un fichero &quot;</span>arj<span style="color: #ff0000;">&quot;&quot;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># fComprime() , procedimiento de generacion de un archivo comprimido</span>
<span style="color: #808080; font-style: italic;"># ==================================================================</span>
<span style="color: #b1b100;">function</span> fComprime
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #000066;">local</span> <span style="color: #0000ff;">out=</span><span style="color: #ff0000;">&quot;$1&quot;</span>
	<span style="color: #0000ff;">extension=</span>`expr <span style="color: #ff0000;">&quot;$1&quot;</span> : <span style="color: #ff0000;">'.*<span style="color: #000099; font-weight: bold;">\(</span><span style="color: #000099; font-weight: bold;">\.</span>.*<span style="color: #000099; font-weight: bold;">\)</span>'</span> <span style="color: #ff0000;">'|'</span> <span style="color: #ff0000;">&quot;$1&quot;</span>`
&nbsp;
	<span style="color: #000066;">shift</span>
	<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;$extension&quot;</span>
	<span style="color: #b1b100;">in</span>
		.<span style="color: #66cc66;">&#91;</span>Gg<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Zz<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			tar cvfz <span style="color: #ff0000;">&quot;$out&quot;</span> <span style="color: #ff0000;">&quot;$@&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=$<span style="color: #808080; font-style: italic;">#</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Tt<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Gg<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Zz<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			tar cvfz <span style="color: #ff0000;">&quot;$out&quot;</span> <span style="color: #ff0000;">&quot;$@&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=$<span style="color: #808080; font-style: italic;">#</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Bb<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Zz<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Ii<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Pp<span style="color: #66cc66;">&#93;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>
			tar cvfj <span style="color: #ff0000;">&quot;$out&quot;</span> <span style="color: #ff0000;">&quot;$@&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=$<span style="color: #808080; font-style: italic;">#</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Tt<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Bb<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Zz<span style="color: #66cc66;">&#93;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>
			tar cvfj <span style="color: #ff0000;">&quot;$out&quot;</span> <span style="color: #ff0000;">&quot;$@&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=$<span style="color: #808080; font-style: italic;">#</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Zz<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Ii<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Pp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			zip <span style="color: #cc66cc;">-9</span> <span style="color: #ff0000;">&quot;$out&quot;</span> <span style="color: #ff0000;">&quot;$@&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=$<span style="color: #808080; font-style: italic;">#</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Rr<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Aa<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Rr<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			rar a <span style="color: #ff0000;">&quot;$out&quot;</span> <span style="color: #ff0000;">&quot;$@&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=$<span style="color: #808080; font-style: italic;">#</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Aa<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Cc<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Ee<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;no he encontrado compresor para ace, lo siento :(&quot;</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Aa<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Rr<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Jj<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			arj a <span style="color: #ff0000;">&quot;$out&quot;</span> <span style="color: #ff0000;">&quot;$@&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=$<span style="color: #808080; font-style: italic;">#</span>
			;;
		*<span style="color: #66cc66;">&#41;</span>
			fExt <span style="color: #ff0000;">&quot;salida&quot;</span>
			;;
	<span style="color: #b1b100;">esac</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># fDescomprime() , procedimiento de descompresion de archivos</span>
<span style="color: #808080; font-style: italic;"># ===========================================================</span>
<span style="color: #b1b100;">function</span> fDescomprime
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;$2&quot;</span>
	<span style="color: #b1b100;">in</span>
		<span style="color: #ff0000;">'gzip'</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$kSCRIPT: descomprimiendo &quot;</span>$<span style="color: #cc66cc;">1</span><span style="color: #ff0000;">&quot; ...&quot;</span>
			tar xvfz <span style="color: #ff0000;">&quot;$1&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		<span style="color: #ff0000;">'bzip2'</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$kSCRIPT: descomprimiendo &quot;</span>$<span style="color: #cc66cc;">1</span><span style="color: #ff0000;">&quot; ...&quot;</span>
			tar xvfj <span style="color: #ff0000;">&quot;$1&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		<span style="color: #ff0000;">'tar'</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$kSCRIPT: desempaquetando &quot;</span>$<span style="color: #cc66cc;">1</span><span style="color: #ff0000;">&quot; ...&quot;</span>
			tar xvf <span style="color: #ff0000;">&quot;$1&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		<span style="color: #ff0000;">'Zip'</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$kSCRIPT: descomprimiendo &quot;</span>$<span style="color: #cc66cc;">1</span><span style="color: #ff0000;">&quot; ...&quot;</span>
			unzip <span style="color: #ff0000;">&quot;$1&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		<span style="color: #ff0000;">'RAR'</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$kSCRIPT: descomprimiendo &quot;</span>$<span style="color: #cc66cc;">1</span><span style="color: #ff0000;">&quot; ...&quot;</span>
			unrar x <span style="color: #ff0000;">&quot;$1&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		<span style="color: #ff0000;">'ACE'</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$kSCRIPT: descomprimiendo &quot;</span>$<span style="color: #cc66cc;">1</span><span style="color: #ff0000;">&quot; ...&quot;</span>
			unace e <span style="color: #ff0000;">&quot;$1&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		<span style="color: #ff0000;">'ARJ'</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$kSCRIPT: descomprimiendo &quot;</span>$<span style="color: #cc66cc;">1</span><span style="color: #ff0000;">&quot; ...&quot;</span>
			arj e <span style="color: #ff0000;">&quot;$1&quot;</span> &gt; /dev/null
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		*<span style="color: #66cc66;">&#41;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #000066;">test</span> ! -e <span style="color: #ff0000;">&quot;$1&quot;</span>
			<span style="color: #b1b100;">then</span>
				<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$kSCRIPT: $1 no existe.&quot;</span>
			<span style="color: #b1b100;">else</span>
				<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$kSCRIPT: el tipo de archivo &quot;</span>$<span style="color: #cc66cc;">2</span><span style="color: #ff0000;">&quot; no esta soportado.&quot;</span>
			<span style="color: #b1b100;">fi</span>
			;;
	<span style="color: #b1b100;">esac</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># fListar() , muestra el contenido de uno/varios archivo(s) comprimido(s)</span>
<span style="color: #808080; font-style: italic;"># =======================================================================</span>
<span style="color: #b1b100;">function</span> fListar
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #000066;">local</span> <span style="color: #0000ff;">lookFile=</span><span style="color: #ff0000;">&quot;$1&quot;</span>
	<span style="color: #0000ff;">extension=</span>`expr <span style="color: #ff0000;">&quot;$1&quot;</span> : <span style="color: #ff0000;">'.*<span style="color: #000099; font-weight: bold;">\(</span><span style="color: #000099; font-weight: bold;">\.</span>.*<span style="color: #000099; font-weight: bold;">\)</span>'</span> <span style="color: #ff0000;">'|'</span> <span style="color: #ff0000;">&quot;$1&quot;</span>`
	<span style="color: #000066;">shift</span>
	<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;$extension&quot;</span>
	<span style="color: #b1b100;">in</span>
		.<span style="color: #66cc66;">&#91;</span>Gg<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Zz<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			tar tvfz <span style="color: #ff0000;">&quot;$lookFile&quot;</span>
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Tt<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Gg<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Zz<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			tar tvfz <span style="color: #ff0000;">&quot;$lookFile&quot;</span>
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Bb<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Zz<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Ii<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Pp<span style="color: #66cc66;">&#93;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>
			tar tvfj <span style="color: #ff0000;">&quot;$lookFile&quot;</span>
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Tt<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Bb<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Zz<span style="color: #66cc66;">&#93;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>
			tar tvfj <span style="color: #ff0000;">&quot;$lookFile&quot;</span>
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Tt<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Aa<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Rr<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			tar tvf <span style="color: #ff0000;">&quot;$lookFile&quot;</span>
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Zz<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Ii<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Pp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			unzip -l <span style="color: #ff0000;">&quot;$lookFile&quot;</span>
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Rr<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Aa<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Rr<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			rar t <span style="color: #ff0000;">&quot;$lookFile&quot;</span>
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Aa<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Cc<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Ee<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			unace -l <span style="color: #ff0000;">&quot;$lookFile&quot;</span>
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		.<span style="color: #66cc66;">&#91;</span>Aa<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Rr<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>Jj<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
			arj l <span style="color: #ff0000;">&quot;$lookFile&quot;</span>
			<span style="color: #000066;">let</span> totales+=<span style="color: #cc66cc;">1</span>
			;;
		*<span style="color: #66cc66;">&#41;</span>
			fExt <span style="color: #ff0000;">&quot;entrada&quot;</span>
			;;
	<span style="color: #b1b100;">esac</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># ==================== #</span>
<span style="color: #808080; font-style: italic;">#  PROGRAMA PRINCIPAL  #</span>
<span style="color: #808080; font-style: italic;"># ==================== #</span>
&nbsp;
<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span>
<span style="color: #b1b100;">in</span>
	<span style="color: #ff0000;">'-c'</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #000066;">shift</span>
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#91;</span> $<span style="color: #808080; font-style: italic;"># -lt 2 ]</span>
		<span style="color: #b1b100;">then</span>
			fArgs
			<span style="color: #000066;">echo</span>
		<span style="color: #b1b100;">else</span>
			fComprime <span style="color: #ff0000;">&quot;$@&quot;</span>
&nbsp;
			<span style="color: #000066;">echo</span>
			<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Terminado. $totales fichero(s) comprimido(s).&quot;</span>
			<span style="color: #000066;">echo</span>
		<span style="color: #b1b100;">fi</span>
		;;
	<span style="color: #ff0000;">'-d'</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #000066;">shift</span>
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#91;</span> $<span style="color: #808080; font-style: italic;"># -lt 1 ]</span>
		<span style="color: #b1b100;">then</span>
			fArgs
			<span style="color: #000066;">echo</span>
		<span style="color: #b1b100;">else</span>
			<span style="color: #b1b100;">for</span> fichero <span style="color: #b1b100;">in</span> <span style="color: #ff0000;">&quot;$@&quot;</span>
			<span style="color: #b1b100;">do</span>
				<span style="color: #0000ff;">fileType=</span>`file <span style="color: #ff0000;">&quot;$1&quot;</span> | cut -f <span style="color: #cc66cc;">2</span> -d : |cut -f <span style="color: #cc66cc;">2</span> -d <span style="color: #ff0000;">' '</span>`
				fDescomprime <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #0000ff;">$fileType</span> <span style="color: #0000ff;">$totales</span>
				<span style="color: #000066;">shift</span>
			<span style="color: #b1b100;">done</span>
&nbsp;
			<span style="color: #000066;">echo</span>
			<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Terminado. $totales fichero(s) descomprimido(s).&quot;</span>
			<span style="color: #000066;">echo</span>
		<span style="color: #b1b100;">fi</span>
		;;
	<span style="color: #ff0000;">'-l'</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #000066;">shift</span>
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#91;</span> $<span style="color: #808080; font-style: italic;"># -lt 1 ]</span>
		<span style="color: #b1b100;">then</span>
			fArgs
			<span style="color: #000066;">echo</span>
		<span style="color: #b1b100;">else</span>
			<span style="color: #b1b100;">for</span> fichero <span style="color: #b1b100;">in</span> <span style="color: #ff0000;">&quot;$@&quot;</span>
			<span style="color: #b1b100;">do</span>
				<span style="color: #000066;">echo</span>
				fListar <span style="color: #ff0000;">&quot;$1&quot;</span>
				<span style="color: #000066;">shift</span>
			<span style="color: #b1b100;">done</span>
&nbsp;
			<span style="color: #000066;">echo</span>
			<span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Terminado. $totales fichero(s) listado(s)&quot;</span>
		<span style="color: #b1b100;">fi</span>
		;;
	<span style="color: #ff0000;">'-h'</span><span style="color: #66cc66;">&#41;</span>
		fHelp
		<span style="color: #000066;">echo</span>
		;;
	<span style="color: #ff0000;">'--help'</span><span style="color: #66cc66;">&#41;</span>
		fHelp
		<span style="color: #000066;">echo</span>
		;;
	<span style="color: #ff0000;">'-v'</span><span style="color: #66cc66;">&#41;</span>
		fVersion
		<span style="color: #000066;">echo</span>
		;;
	<span style="color: #ff0000;">'--version'</span><span style="color: #66cc66;">&#41;</span>
		fVersion
		<span style="color: #000066;">echo</span>
		;;
	*<span style="color: #66cc66;">&#41;</span>
		fArgs
		<span style="color: #000066;">echo</span>
		;;
<span style="color: #b1b100;">esac</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># </span></pre>
<p class='referencia'>nombre: <b>mup.sh</b> - <i>BASH script</i></p>
<p>¡A disfrutarlo con salud!
</p>]]></content:encoded>
			<wfw:commentRss>http://enrique.barbeito.org/blog/multiunpacker/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Herramientas de Programación para el Shell de UNIX</title>
		<link>http://enrique.barbeito.org/blog/herramientas-de-programacin-para-el-shell-de-unix/</link>
		<comments>http://enrique.barbeito.org/blog/herramientas-de-programacin-para-el-shell-de-unix/#comments</comments>
		<pubDate>Mon, 20 Oct 2003 22:03:08 +0000</pubDate>
		<dc:creator>Enrique Barbeito García</dc:creator>
		
		<category>Scripts</category>

		<category>Libros</category>

		<guid isPermaLink="false">/?p=252</guid>
		<description><![CDATA[ 
Llevaba ya algún tiempo buscando algún libro de estas características. Sobre todo buscaba un manual que se centrara en detallar la programación del entorno BASH: la sintaxis y herramientas existentes para la construcción de scripts y un buen puñado de ejemplos organizados que reforzaran visualmente cada una de las distintas explicaciones.
La primera vez que me [...] ]]></description>
			<content:encoded><![CDATA[<div class="cajitaIzq"><a href="http://tecnoandinas.netfirms.com/Linux_Unix/herr_prog_shell_unix.htm" target="nwindow" title="Herramientas de Programación para el Shell de UNIX"><img src="http://enrique.barbeito.org/img/prog_unix.jpg" border="0" /></a></div>
<p>Llevaba ya algún tiempo buscando algún libro de estas características. Sobre todo buscaba un manual que se centrara en detallar la programación del entorno BASH: la sintaxis y herramientas existentes para la construcción de scripts y un buen puñado de ejemplos organizados que reforzaran visualmente cada una de las distintas explicaciones.</p>
<p>La primera vez que me topé con este libro fue hará un año y unos meses, en el <a href="http://www.elcorteingles.es" target="nwindow" title="El Corte Inglés">Corte Inglés</a>, sección <a href="http://libros.elcorteingles.es" target="nwindow" title="El Corte Inglés - Libros">libros</a>. Como de costumbre, estaba yo en esta librería junto a las estanterías donde se encuentran multitud de libros de Informática. Me dio por rebuscar entre todos los estantes, tanto los libros que se veían a primera vista como aquellos que parecían olvidados detrás y encima de ellos, mal ubicados. Fue en esa ocasión, buscando libros sobre BASH (solo había uno visible acerca de shells pero era sobre KSH), cuando precisamente encontré justo lo que andaba buscando: ¡un libro de programación en bash! Le eché un vistazo y me encantó. El problema, el precio: 47€. No llevaba dinero en ese momento; así que lo escondí entre varios libros de modo que nadie pudiera encontrarlo. Al cabo de unos día volví con dinero en mano pero el libro no estaba y los del Corte Inglés decían que nunca habían tenido un libro con el título que les decía (aproximado al real ya que no lo recordaba del todo). Fue como un sueño: visto y no visto. Pregunté en FNAC y en alguna otra librería pero nada. Y hasta hace cosa de un mes aproximadamente que me dio por buscarlo de nuevo y, milagrosamente, di con él :)</p>
<p>El libro no he tenido tiempo para leerlo del todo. Estoy en ello, poco a poco cuando no tengo nada que hacer. No es un libro de lectura, aunque me lo estoy tomando como tal en cierta parte. Y al mismo tiempo, me estoy sacando unos apuntes sobre aquellas cosas que leo en el libro y no sabía. Empecé a leerlo desde la primera página y aunque por ahora casi todo lo leído es conocido en un porcentaje elevado, me está dejando un gran sabor de boca; sobre todo por la forma tan clara, concisa y con ejemplos de refuerzo con los que te encuentras casi a cada pasito que das :) A lo mejor ahora me parece todo tan extremadamente claro porque no es nuevo para mí pero en fin, está muy bien detallado.</p>
<p><a id="more-252"></a></p>
<div class="cajita"><em>« Este paquete compuesto de libro y <acronym title="Compact Disc">CD</acronym>-ROM le ayudará a controlar todo el poder del sistema operativo UNIX a través de la programación en Bash, <acronym title="Practical Extraction and Report Language">Perl</acronym> y Tcl »</em></div>
<p>Llevo ya un buen trozo escrito y aun no he dicho cómo se llama el libro jeje. Se llama <em>Herramientas de Programación para el Shell de UNIX</em> del autor <em><a href="http://www.codebits.com" target="nwindow" title="Codebits, by David Medinets">David Medinets</a></em> y editado por <em><a href="http://www.mcgrawhill.com/" target="nwindow" title="The McGraw-Hill Companies">McGraw-Hill</a></em>. De modo global, destacar que trata generalmente sobre la programación para el shell Bash pero que no se queda ahí, sino que también abarca otros dos lenguajes bastante populares para la programación en entornos UNIX, como son <acronym title="Practical Extraction and Report Language">Perl</acronym> y Tcl. El nivel hacia ambos lenguajes no es muy profundo, limitándose a dar una extensa introducción y que sirva de base firme a la hora de aprender en profundidad estos dos lenguajes de programación. La razón del por qué de mezclar estos tres lenguajes en un solo libro viene fundamentada en la poca potencia que tiene la programación en Bash frente a otras opciones (como <acronym title="Practical Extraction and Report Language">Perl</acronym> o Tcl) disponibles. Digamos que dentro de la potencia que Bash ofrece &#8211;que no es poca&#8211;, este libro pretende darnos la habilidad de cuándo elegir el lenguaje/herramienta para según que tareas nos propongamos. Sin duda, una genial idea por parte del autor. No es el libro más extenso sobre Bash que se puede encontrar (el libro por excelencia de Bash lo encontramos de manera libre en la Red, se llama: <em>The Advanced Bash-Scripting Guide</em> (ABS) y lo podemos encontrar <a href="http://www.tldp.org/LDP/abs/html/" target="nwindow" title="The Advanced Bash-Scripting Guide">aquí</a>) pero sin duda sus más de 500 páginas sí conforman un gran manual donde aprender muchas muchas cosas que, por ejemplo a mí &#8211;interesado en la administración de sistemas UNIX&#8211;, me puede venir de perlas.</p>
<p>Y bueno, referente al contenido, cabe señalar que se compone de dos partes como el propio autor diferencia:
<ul>
<li>La primera parte abarca ocho de los doce capítulos de los que dispone. Todos estos, se centran en detallar fundamentos de programación en Bash, <acronym title="Practical Extraction and Report Language">Perl</acronym> y Tcl: desde conceptos tan básicos como edición/ejecución de scripts, variables, estructuras de selección/repetición y cosas así hasta aspectos no tan básicos y fáciles como son la comparación de patrones de texto &#8211;de los cuales yo no tengo prácticamente idea :)&#8211;</li>
<li>La segunda parte, capítulos nueve al doce, ya se centra en mostrar <em>el mundo</em> que tiene el programador a su alrededor, dando un repaso detallado a muchas de las utilidades que hay disponibles y que vienen de serie en el entorno Bash. Se dedica un capítulo a describir las diferencias y fortalezas para estos tres lenguajes y , también, las similitudes que presentan. El tema de depuración de scripts no se olvida y se le dedica todo el capítulo once detallando diferentes técnicas que el programador pueda emplear. Y sobre todo, si a lo largo y ancho del libro puedes hartarte a ejemplos, este bloque está mucho más hinchado y, lógicamente, con scripts ya con cierto peso e interesantes. Incluso el capítulo doce está dedicado a multitud de ejemplos de programación para Bash, <acronym title="Practical Extraction and Report Language">Perl</acronym> y Tcl :)</li>
</ul>
<p>A parte de esto nos encontramos con un listado, al principio del libro, de códigos (scripts) que se verán a lo largo del libro (he contado 108 códigos en este listado, ¿no está mal eh?). Al final nos podemos encontrar con dos apéndices en donde poder recurrir a más recursos citados por el autor, a través de Internet: tanto páginas web como redes de <acronym title="Internet Relay Chat">IRC</acronym> o grupos de noticias de Usenet. Eso referente al primer apéndice; respecto al segundo, tendremos la tabla ASCII: ya un clásico para cualquier libro de programación que se precie, jeje. Y bueno, ya por decir, decir que hay un índice de palabras &#8211;aunque esto es también normal&#8211;</p>
<blockquote><div class="cita"><b>Título</b>: Herramientas de Programación para el Shell de UNIX.<br />
<b>Autor</b>: David Medinets.<br />
<b>Traducción</b>: Roberto Valero Valdés.<br />
<b>Revisión Técnica</b>: José Antonio Ramos Rubio.<br />
<b>ISBN</b>: 970-10-3024-9<br />
<b>Precio</b>: 47€ (aproximado)<br />
<b>Edición en español</b>: McGRAW-HILL Interamericana Editores, S.A. de C.V.<br />
<b>Copyright</b> by The McGraw-Hill Companies, Inc.<br />
Imprimido en México en Enero de 2001.</div>
</blockquote>]]></content:encoded>
			<wfw:commentRss>http://enrique.barbeito.org/blog/herramientas-de-programacin-para-el-shell-de-unix/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Liberando espacio (y II)</title>
		<link>http://enrique.barbeito.org/blog/liberando-espacio-y-ii/</link>
		<comments>http://enrique.barbeito.org/blog/liberando-espacio-y-ii/#comments</comments>
		<pubDate>Thu, 28 Aug 2003 22:02:00 +0000</pubDate>
		<dc:creator>Enrique Barbeito García</dc:creator>
		
		<category>Gentoo</category>

		<category>Scripts</category>

		<guid isPermaLink="false">/?p=210</guid>
		<description><![CDATA[  Esta anotación es continuación de la anterior. Se recomienda (aunque no es del todo necesario) previa lectura a la anotación anterior. Voy a mostraros un sencillo script que he hecho en BASH esta mañana que se basa en lo dicho en la primera parte de esta historia y que está inspirado en este hilo [...] ]]></description>
			<content:encoded><![CDATA[<p> Esta anotación es continuación de <a href="archives/000225.html" title="Liberando espacio (I) , 27/08/2003">la anterior</a>. Se recomienda (aunque no es del todo necesario) previa lectura a la anotación anterior. Voy a mostraros un sencillo script que he hecho en <acronym class='ayuda' title="Bourne Again SHell">BASH</acronym> esta mañana que se basa en lo dicho en la primera parte de esta historia y que está inspirado en <a href="http://forums.gentoo.org/viewtopic.php?t=8993" target="nwindow">este hilo</a> de los <a href="http://forums.gentoo.org" target="nwindow">foros de Gentoo</a>. Básicamente consiste en una función que es llamada tres veces con parámetros distintos en cada una de ellas (directorios, tamaños máximos que pueden almacenar y tamaños actuales). En dichas llamadas se realiza una comprobación entre tamaños (el máximo y el actual) de uno u otro directorio dando como resultado la eliminación del contenido en los directorios en donde el tamaño actual de estos sobrepase al tamaño máximo fijado en el script. Es un modo sencillo de automatizar lo que en el post anterior hablábamos; en fin, aquí lo tenéis:</p>
<p><pre class="bash"><span style="color: #808080; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># script  : checkDisk.sh</span>
<span style="color: #808080; font-style: italic;"># version : 1.0</span>
<span style="color: #808080; font-style: italic;"># author  : enrique@barbeito.org</span>
<span style="color: #808080; font-style: italic;"># date    : jue ago 28 10:36:18 CEST 2003</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Requirements:</span>
<span style="color: #808080; font-style: italic;">#  - none</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Description:</span>
<span style="color: #808080; font-style: italic;">#  Script de mantenimiento para Gentoo Linux.</span>
<span style="color: #808080; font-style: italic;">#  Comprueba los tamaños de ciertos directorios</span>
<span style="color: #808080; font-style: italic;">#  que tienden a llenarse y si superan el máximo</span>
<span style="color: #808080; font-style: italic;">#  de bytes determinado, los vacia.</span>
<span style="color: #808080; font-style: italic;">#  Se recomienda colocarlo en /etc/cron.monthly/</span>
<span style="color: #808080; font-style: italic;">#</span>
 
<span style="color: #808080; font-style: italic;"># tamaños máximos (en bytes)</span>
<span style="color: #0000ff;">kTAM_1=</span><span style="color: #cc66cc;">500000</span> <span style="color: #808080; font-style: italic;"># 500MB</span>
<span style="color: #0000ff;">kTAM_2=</span><span style="color: #cc66cc;">50000</span>  <span style="color: #808080; font-style: italic;"># 50 MB</span>
<span style="color: #0000ff;">kTAM_3=</span><span style="color: #cc66cc;">10000</span>  <span style="color: #808080; font-style: italic;"># 10 MB</span>
 
<span style="color: #808080; font-style: italic;"># directorios de trabajo</span>
<span style="color: #0000ff;">kDIR_1=</span>/usr/portage/distfiles
<span style="color: #0000ff;">kDIR_2=</span>/var/tmp/portage
<span style="color: #0000ff;">kDIR_3=</span>/tmp
 
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># checkDir(); , comprobación de directorios</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #b1b100;">function</span> checkDir
<span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#91;</span> $<span style="color: #cc66cc;">1</span> -gt $<span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">&#93;</span>; <span style="color: #b1b100;">then</span>
                <span style="color: #000066;">let</span> <span style="color: #ff0000;">&quot;i=$2/1000&quot;</span>
                <span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;$3 : ocupa más de $i MB&quot;</span>
                <span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Limpiando directorio ...<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
                rm -Rf $<span style="color: #cc66cc;">3</span>/*
        <span style="color: #b1b100;">fi</span>
<span style="color: #66cc66;">&#125;</span>
 
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># comprobacion de usuario</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#91;</span> `/usr/bin/whoami` != <span style="color: #ff0000;">'root'</span> <span style="color: #66cc66;">&#93;</span>; <span style="color: #b1b100;">then</span>
        <span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Error: debes ser root.&quot;</span>
<span style="color: #b1b100;">else</span>
        <span style="color: #808080; font-style: italic;"># tamaños (en bytes) de los directorios</span>
        <span style="color: #0000ff;">tamanyo_1=</span>`du -s <span style="color: #0000ff;">$kDIR_1</span> | cut -f <span style="color: #cc66cc;">1</span>`
        <span style="color: #0000ff;">tamanyo_2=</span>`du -s <span style="color: #0000ff;">$kDIR_2</span> | cut -f <span style="color: #cc66cc;">1</span>`
        <span style="color: #0000ff;">tamanyo_3=</span>`du -s <span style="color: #0000ff;">$kDIR_3</span> | cut -f <span style="color: #cc66cc;">1</span>`
 
        <span style="color: #808080; font-style: italic;"># llamadas a la funcion</span>
        checkDir <span style="color: #0000ff;">$tamanyo_1</span> <span style="color: #0000ff;">$kTAM_1</span> <span style="color: #0000ff;">$kDIR_1</span>
        checkDir <span style="color: #0000ff;">$tamanyo_2</span> <span style="color: #0000ff;">$kTAM_2</span> <span style="color: #0000ff;">$kDIR_2</span>
        checkDir <span style="color: #0000ff;">$tamanyo_3</span> <span style="color: #0000ff;">$kTAM_3</span> <span style="color: #0000ff;">$kDIR_3</span>
 
        <span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot;Completado.&quot;</span>
<span style="color: #b1b100;">fi</span>
 
<span style="color: #808080; font-style: italic;"># </span></pre>
<p class='referencia'>nombre: <b>checkDisk.sh</b> - <i>BASH script</i></p>
</blockquote>
<h5>Ejemplo de ejecución:</h5>
<pre class='codigoUnix'># df -hT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/hda3     ext3    8.8G  <b>5.1G</b>  3.3G  61% /

# ./checkDir.sh
/usr/portage/distfiles : ocupa más de 500 <acronym title="Megabyte">MB</acronym>
Limpiando directorio &#8230;

/var/tmp/portage : ocupa más de 50 <acronym title="Megabyte">MB</acronym>
Limpiando directorio &#8230;

/tmp : ocupa más de 10 <acronym title="Megabyte">MB</acronym>
Limpiando directorio &#8230;

Completado.

# df -hT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/hda3     ext3    8.8G  <b>3.3G</b>  5.1G  40% /</pre>
<p>Ahí lo tenéis :) Inicialmente he hecho un <b>df -hT</b> para comprobar el espacio usado de la partición <b>/</b> (5.1G), después he ejecutado el script y he vuelto a comprobar el espacio usado; ¡¡ este ha bajado hasta 3.3G !! El tiempo de ejecución del script es proporcional al número de ficheros y tamaño del contenido total a explorar/[eliminar]. Es decir, que tardará más cuantas más cosas haya (y más ocupen) en los directorios que explora (<b>/usr/portage/distfiles/</b>, <b>/var/tmp/portage/</b> y <b>/tmp/</b>).</p>
<p>¡A disfrutarlo con salud!<br />
<b>exit</b>
</p>]]></content:encoded>
			<wfw:commentRss>http://enrique.barbeito.org/blog/liberando-espacio-y-ii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ssh2host</title>
		<link>http://enrique.barbeito.org/blog/ssh2host/</link>
		<comments>http://enrique.barbeito.org/blog/ssh2host/#comments</comments>
		<pubDate>Thu, 26 Jun 2003 10:57:34 +0000</pubDate>
		<dc:creator>Enrique Barbeito García</dc:creator>
		
		<category>Programación</category>

		<category>Scripts</category>

		<guid isPermaLink="false">/?p=146</guid>
		<description><![CDATA[  Bueno, pues parece que hoy tengo uno de esos días tontos y, si hace unas horas os enseñé mi log2monitor patatero, ahora quiero que os despichorréis deleitéis con otra banalidad de cosecha propia: ssh2host v0.1 es su nombre y establecer conexiones vía SSH a hosts previamente configurados es su objetivo.
Es que&#8230; antes solía usar [...] ]]></description>
			<content:encoded><![CDATA[<p> Bueno, pues parece que hoy tengo uno de esos días tontos y, si hace unas horas os enseñé mi <a href="archives/000160.html"><em>log2monitor</em></a> patatero, ahora quiero que os <strike>despichorréis</strike> deleitéis con otra banalidad de cosecha propia: <b><i>ssh2host</i> v0.1</b> es su nombre y establecer conexiones vía <i><acronym title="Secure Shell">SSH</acronym></i> a hosts previamente configurados es su objetivo.</p>
<p>Es que&#8230; antes solía usar mucho el servicio ssh, pues tengo una cuenta de usuario en unos cuantos ordenadores. No eran chorrocientos, tranquilidad, pero para contrarrestar mi mala memoria, decidí anotarme las direcciones y hacerme un pequeño script que mostrara sus nombres asociados y con los que pudiese fácilmente conectarme a ellos. Y bueno, hoy día lo sigo utilizando &#8211;aunque no tanto como hace unos meses&#8211; y, tal vez, este script <u>sí</u> que le puede venir bien a alguien (¡qué cosas! ¿eh? ;)</p>
<p><pre class="bash"><span style="color: #808080; font-style: italic;">#  ssh2host v0.1</span>
<span style="color: #808080; font-style: italic;">#  neuronal@systemfailure.org - 11/08/2002 -</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #b1b100;">in</span>
  <span style="color: #ff0000;">'phear'</span><span style="color: #66cc66;">&#41;</span>
        ssh -l $<span style="color: #cc66cc;">2</span> ssh.systemfailure.org
        ;;
  <span style="color: #ff0000;">'barbeito'</span><span style="color: #66cc66;">&#41;</span>
        ssh -l $<span style="color: #cc66cc;">2</span> -P <span style="color: #cc66cc;">2223</span> nombreServidor.com
        ;;
  <span style="color: #ff0000;">'alcoy'</span><span style="color: #66cc66;">&#41;</span>
        ssh -l $<span style="color: #cc66cc;">2</span> -P <span style="color: #cc66cc;">23</span> aaa.bbb.ccc
        ;;
&nbsp;
<span style="color: #808080; font-style: italic;"># 'nombre')</span>
<span style="color: #808080; font-style: italic;">#     ssh -l $2 [-P puerto] direccion</span>
<span style="color: #808080; font-style: italic;">#     ;;</span>
&nbsp;
  *<span style="color: #66cc66;">&#41;</span>
       <span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot; Uso: `basename $0` { phear|barbeito|alcoy } usuario&quot;</span>
        <span style="color: #000066;">echo</span>
<span style="color: #b1b100;">esac</span></pre></p>
<p>He cambiado un poco el archivo quitando algunas direcciones y modificando otras para que resulten erróneas. El tema es que, si os apetece probarlo, cambiéis los nombres y direcciones de acceso por los vuestros propios. Un ejemplo de uso sería:</p>
<pre class='codigoUnix'>evil:~$ which ssh2host
/usr/local/bin/ssh2host

evil:~$ ssh2host
 Uso: ssh2host { phear<b>|</b>barbeito<b>|</b>alcoy } usuario

evil:~$ ssh2host phear ebarbeito

    [   welcome to Systemfailure&#8217;s ssh server
                       root@systemfailure.org
                                                ]

ebarbeito@ssh.systemfailure.org&#8217;s password:</pre>
<p>Ahí lo tenéis. El script está colocado en <font face="courier new">/usr/local/bin/</font> con permisos <i><acronym class='ayuda' title="lectura/escritura/ejecución para el propietario(root) y lectura/ejecucion para el resto">755</acronym></i>. Si se ejecuta sin parámetros, imprime el listado de <i>nombres de hosts</i> disponibles; luego se han de utilizar dos parámetros: el primero para indicar alguno de esos <i>nombres de hosts</i> y otro para indicar el usuario con el que os queréis conectar a dicho host.</p>
<p>Qué mega guay ¿eh? Pues nada&#8230; <a href="code/ssh2host">ssh2host</a> <i><acronym class='ayuda' title="Use at your own risk!">to pa vosotros</acronym></i>. Disfrutarlo con salud ;)</p>]]></content:encoded>
			<wfw:commentRss>http://enrique.barbeito.org/blog/ssh2host/feed/</wfw:commentRss>
		</item>
		<item>
		<title>log2monitor</title>
		<link>http://enrique.barbeito.org/blog/log2monitor/</link>
		<comments>http://enrique.barbeito.org/blog/log2monitor/#comments</comments>
		<pubDate>Thu, 26 Jun 2003 00:08:13 +0000</pubDate>
		<dc:creator>Enrique Barbeito García</dc:creator>
		
		<category>Programación</category>

		<category>Seguridad</category>

		<category>Scripts</category>

		<guid isPermaLink="false">/?p=145</guid>
		<description><![CDATA[  Es frecuente, y algo muy común, el crearse pequeños scripts que nos automaticen o, de algún modo, nos hagan las cosas más sencillas a quienes alguna vez trabajamos en entornos en modo texto que nos permitan programar [por llamarlo de algún modo] esta clase de pequeños artefactos, como en el caso del entorno BASH [...] ]]></description>
			<content:encoded><![CDATA[<p> Es frecuente, y algo muy común, el crearse pequeños <i>scripts</i> que nos automaticen o, de algún modo, nos hagan las cosas más sencillas a quienes alguna vez trabajamos en entornos en modo texto que nos permitan <i>programar</i> [por llamarlo de algún modo] esta clase de <i>pequeños artefactos</i>, como en el caso del entorno <i>BASH</i> en UNIX. Normalmente estos suelen ser banalidades que, aunque son de gran ayuda para su creador, realmente sirven poco a terceras personas, ya sea porque realizan rutinas muy concretas o porque estas son tan insignificantes que los scripts quedan reducidos a un simple par de líneas.</p>
<p>A mí, pues&#8230; francamente, poco me gusta publicar las <i>banalidades</i>/scripts que me he hecho en <a href="http://www.gnu.org/software/bash/bash.html" target="nwindow"><acronym title="GNU\'s Not Unix!">GNU</acronym> bash</a> durante este tiempo o que vaya haciendo. Porque son <i>scripts</i> tan simples y poco útiles que&#8230; dan hasta vergüenza enseñarlas jaja.</p>
<p>Pero ahora roperé con mis falsos ideales; os voy a <strike>descojonar</strike> deleitar con uno de mis artefactos estúpidos. Preparados para conocer a&#8230;. <i>tata tachánnn</i>&#8230;.<b><i>log2monitor</i> v0.1</b>: una de mis maravillas que utilizo <u>a diario</u> para monitorear algunos de los logs que generan determinados servicios/demonios de mi servidor. El script en sí es una chorrada. La idea es buena. Y las implementaciones disponibles para esa <i><acronym class='ayuda' title="monitorear determinados logs del sistema">buena idea</acronym></i> deben contarse por docenas y seguro son mucho más sofisticadas y eficaces que lo que acontinuación os voy a enseñar. Pero en fin&#8230; que me la suda vamos :D</p>
<p><pre class="bash"><span style="color: #808080; font-style: italic;">#  log2monitor v0.1</span>
<span style="color: #808080; font-style: italic;">#  neuronal@systemfailure.org - 20/12/2002 -</span>
<span style="color: #808080; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #0000ff;">DIR_LOG=</span><span style="color: #ff0000;">&quot;/var/log&quot;</span>
&nbsp;
<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #b1b100;">in</span>
  <span style="color: #ff0000;">'start'</span><span style="color: #66cc66;">&#41;</span>
        tail -f <span style="color: #0000ff;">$DIR_LOG</span>/messages 
                <span style="color: #0000ff;">$DIR_LOG</span>/syslog 
                <span style="color: #0000ff;">$DIR_LOG</span>/kern.log 
                <span style="color: #0000ff;">$DIR_LOG</span>/auth.log 
                <span style="color: #0000ff;">$DIR_LOG</span>/apache-perl/access_log 
                <span style="color: #0000ff;">$DIR_LOG</span>/apache-perl/error_log 
                <span style="color: #0000ff;">$DIR_LOG</span>/apache-ssl/access.log 
                <span style="color: #0000ff;">$DIR_LOG</span>/apache-ssl/error.log 
                <span style="color: #0000ff;">$DIR_LOG</span>/vsftpd.log 
                <span style="color: #0000ff;">$DIR_LOG</span>/mysql.log 
                <span style="color: #0000ff;">$DIR_LOG</span>/mysql/mysql.err &amp;
<span style="color: #808080; font-style: italic;">#              $DIR_LOG/</span>
<span style="color: #808080; font-style: italic;">#              $DIR_LOG/</span>
        ;;
  <span style="color: #ff0000;">'stop'</span><span style="color: #66cc66;">&#41;</span>
        skill -KILL tail
        ;;
  *<span style="color: #66cc66;">&#41;</span>
        <span style="color: #000066;">echo</span> -e <span style="color: #ff0000;">&quot; Uso: `basename $0` { start|stop }&quot;</span>
        <span style="color: #000066;">echo</span>
<span style="color: #b1b100;">esac</span></pre></p>
<p>Ya veis que simplicidad. Lo único que hace es ejecutar un <font face="courier new">tail</font> seguido de un puñado de rutas hacia logs determinados, dejándolo en segundo plano. El chisme es alta y fácilmente modificable: podéis eliminar/cambiar las líneas de los logs que queráis, así como agregar otras nuevas.</p>
<pre class="codigoUnix">
# which log2monitor
/usr/local/sbin/log2monitor

# log2monitor
 Uso: log2monitor { start<b>|</b>stop }</pre>
<p>Con <i>start</i> se pone en marcha. Con <i>stop</i>, obviamente, detiene el proceso matándolo al <i>viejo estilo</i>. Si os fijáis, yo por ejemplo tengo el script ubicado en <font face="courier new">/usr/local/sbin/</font>, pero se puede poner donde queráis. ¿Por qué allí? Pues porque es un script un tanto basura que solo root debería correrlo (aunque por poder, quizás algunos logs puedan ser leídos por usuarios <acronym class='ayuda' title="no root">!uid0</acronym> pero bueno, no debería). Todos mis scripts los coloco en dos sitios: <font face="courier new">/usr/local/bin/</font> para los que sean ejecutables por cualquier usuario y <font face="courier new">/usr/local/sbin/</font> para los ejecutables solo por el usuario root.</p>
<p>Pues nada&#8230; mi <a href="code/log2monitor">log2monitor</a> todo vuestro (<em>Use at your own risk</em>) y no os riáis mucho, porfa ;)</p>]]></content:encoded>
			<wfw:commentRss>http://enrique.barbeito.org/blog/log2monitor/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
