<?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; modificadores</title>
	<atom:link href="http://bitelia.com/tag/modificadores/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>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>
