<?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>Herramientas | ahierro.es</title>
	<atom:link href="https://blog.ahierro.es/category/herramientas/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ahierro.es</link>
	<description>Un blog personal  donde compartir experiencias e inquietudes relacionadas con internet, tecnología y otros asuntos interesantes</description>
	<lastBuildDate>Mon, 17 Jun 2019 21:31:35 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>

<image>
	<url>https://blog.ahierro.es/wp-content/uploads/2018/10/cropped-logo_small-1-2-32x32.png</url>
	<title>Herramientas | ahierro.es</title>
	<link>https://blog.ahierro.es</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Comandos en Vim</title>
		<link>https://blog.ahierro.es/comandos-en-vim/</link>
					<comments>https://blog.ahierro.es/comandos-en-vim/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 01 Apr 2019 06:06:43 +0000</pubDate>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[vim]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=739</guid>

					<description><![CDATA[<p>VIM, Emacs y Nano son los tres editores más utilizados en el terminal de Linux. Personalmente hace muchos años que me decanté por Vim, y como hace poco refrescaba mis conocimientos sobre este editor, me pareció buena idea publicar una entrada al respecto. Esta entrada está pensada para ser una guía de consulta dónde encontrar &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/comandos-en-vim/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Comandos en Vim"</span></a></p>
La entrada <a href="https://blog.ahierro.es/comandos-en-vim/">Comandos en Vim</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>VIM, Emacs y Nano son los tres editores más utilizados en el terminal de Linux. Personalmente hace muchos años que me decanté por Vim, y como hace poco refrescaba mis conocimientos sobre este editor, me pareció buena idea publicar una entrada al respecto.</p>



<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="650" height="438" src="https://blog.ahierro.es/wp-content/uploads/2019/03/vim_logo.png" alt="VIM" class="wp-image-759" srcset="https://blog.ahierro.es/wp-content/uploads/2019/03/vim_logo.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/03/vim_logo-300x202.png 300w" sizes="(max-width: 650px) 100vw, 650px" /></figure>



<span id="more-739"></span>



<p>Esta entrada está pensada para ser una guía de consulta dónde encontrar un resumen de los que a mi modo de ver son los principales comandos. Vim tiene muchísimas opciones, así que evitaremos entrar en las más complejas y en las menos prácticas, así como en el modo visual. De cualquier modo esta información es más que suficiente para hacer un uso habitual y fluido de Vim.</p>



<p style="text-align:left">Para profundizar más te recomiendo consultar el manual, dónde encontrarás la información al completo, las posibilidades de Vim son muchísimas.</p>



<h2 class="wp-block-heading">Convenciones de este documento</h2>



<p>En este documento utilizaremos las siguientes convenciones:</p>



<ul class="wp-block-list"><li>[x] Modificador entre paréntesis. Es un modificador de comando opcional.</li><li>{x} Modificador entre corchetes. Es un modificador de comando obligatorio.</li><li>rango. Especificaremos un rango definiendo el valor inicial y el final separados por una coma. Por ejemplo: 2,5.</li></ul>



<h2 class="wp-block-heading">Comando de ayuda</h2>



<p>La mejor forma de complementar y ampliar esta guía es usar el comando de ayuda:</p>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th><td></td></tr><tr><td>:help<br></td><td>Abrirá el manual de referencia y nos situará al comienzo.<br></td><td></td></tr><tr><td>:help [comando] </td><td>Abrirá el manual y nos situará en la página del comando especificado.</td><td></td></tr></tbody></table>



<p>El manual se visualizará en el propio VIM se comporta como cualquier otro documento que abramos en este editor, y por lo tanto serán efectivos todos los comandos que indicamos en este documento con la excepción de que no permite guardar. Así que para salir y regresar al documento dónde nos encontrábamos antes de consultar el manual escribiremos el comando :q!.</p>





<h2 class="wp-block-heading">Comandos de desplazamiento</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th><td></td></tr><tr><td>[n]l ó [n]flecha derecha</td><td>Mueve el cursor una posición a la derecha.<br>Si está precedido de [n] se desplazará tantos caracteres como [n] indique.</td><td></td></tr><tr><td>[n]j ó  [n]flecha abajo</td><td>Mueve el cursor a la línea siguiente.<br>Si está precedido de [n] se desplazará tantas líneas como [n] indique.</td><td></td></tr><tr><td> [n]h ó  [n]flecha izquierda</td><td>Mueve el cursor una posición a la izquierda.<br>Si está precedido de [n] se desplazará tantos caracteres como [n] indique. </td><td></td></tr><tr><td> [n]k ó  [n]flecha arriba</td><td>Mueve el cursor a la línea anterior.<br>Si está precedido de [n] se desplazará tantas líneas como [n] indique.</td><td></td></tr><tr><td>0 ó Inicio</td><td>Coloca el cursor en el primer carácter de la línea.</td><td></td></tr><tr><td>$ ó Fin</td><td>Mueve el cursor al último carácter de la línea.<br></td><td></td></tr><tr><td>Av Pag<br></td><td>Mueve el cursor una página hacia adelante<br></td><td></td></tr><tr><td>Re Pag<br></td><td>Mueve el cursor una página hacia atrás<br></td><td></td></tr><tr><td>^<br></td><td>Mueve el cursor a la primera posición no blanca de la línea.</td><td></td></tr><tr><td>[n]+<br></td><td>Mueve el cursor a la siguiente línea y lo coloca en el primer carácter no blanco.<br>Si está precedido de [n] avanzará tantas líneas como este indique</td><td></td></tr><tr><td>[n]-</td><td>Mueve el cursor a la línea anterior y lo coloca en el primer caracter no blanco.<br>Si está precedido de un número [n] retrocederá tantas líneas como este indique.</td><td></td></tr><tr><td>[n]b ó [n]B</td><td>Coloca el cursor al comienzo de la palabra inmediatamente anterior a la que estamos situados.<br>Si está precedido de un número [n], retrocederá tantas palabras como este indique.</td><td></td></tr><tr><td>[n]w ó [n]W</td><td>Coloca el cursor al comienzo de la palabra inmediatamente posterior a la que estamos situados.<br>Si esta precedido de un numero  [n] avanzara tantas palabras como este indique.</td><td></td></tr><tr><td>[n]e ó [n]E </td><td>Coloca el cursor al final de la palabra sobre la que estamos situados.<br>Si esta precedido de un numero [n] avanzara tantas palabras como este indique.</td><td></td></tr><tr><td>[n]ge ó [n]gE</td><td> Coloca el cursor al final de la palabra inmediatamente anterior a la que estamos situados.<br>Si esta precedido de un numero  [n] lo hace de tantas palabras como este indique. </td><td></td></tr><tr><td>[n]f{c}</td><td>Desplaza el cursor hasta la siguiente aparición de {c} en la línea en la que nos encontramos.<br>Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter.</td><td></td></tr><tr><td> [n]F{c}</td><td>Desplaza el cursor hasta la primera aparición de {c} en la línea en la que nos encontramos.<br>Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter en la línea en la que estamos situados. </td><td></td></tr><tr><td> [n]t{c}</td><td>Desplaza el cursor hasta la siguiente aparición de {c} en la línea en la que nos encontramos y coloca el cursor en la posición inmediatamente anterior.<br>Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter. </td><td></td></tr><tr><td> [n]T{c}</td><td>Desplaza el cursor hasta la aparición anterior de {c} en la línea en la  que nos encontramos y coloca el cursor en la posición inmediatamente posterior.<br>Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter.  </td><td></td></tr><tr><td>,</td><td> Repite la acción del último comando f ó t.</td><td></td></tr><tr><td>;</td><td> Repite la acción del último comando F ó T. </td><td></td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos de inserción de texto</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>a</td><td>Cambia al modo de edición. Sitúa el cursor en el carácter siguiente al que nos encontramos.</td></tr><tr><td>A</td><td>Cambia al modo de edición. Sitúa el cursor al final de la línea dónde nos encontramos.</td></tr><tr><td>i</td><td>Cambia al modo de edición. Sitúa el cursor en la misma posición en que nos encontramos.</td></tr><tr><td>I</td><td>Cambia al modo de edición. Sitúa el cursor en el primer carácter no blanco que encuentre.</td></tr><tr><td>gI</td><td>Cambia al modo de edición. Sitúa el cursor en la primera columna.</td></tr><tr><td>o</td><td>Cambia al modo de edición. Inserta una nueva línea bajo la posición del cursor y nos sitúa en la primera columna de ésta.</td></tr><tr><td>O</td><td>Cambia al modo de edición. Inserta una nueva línea sobre la posición del cursor y nos sitúa en la primera columna de ésta.</td></tr><tr><td>R</td><td>Cambia a modo de edición. Al escribir sobrescribiremos el texto bajo el cursor en lugar de desplazarlo hacia la derecha.</td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos de eliminación de texto</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>  [n]x<br></td><td>Elimina el carácter en la posición dónde estamos situados.<br> Si está precedido de un número [n] eliminará tantos caracteres cómo [n] indique.</td></tr><tr><td> [n]X</td><td>Elimina el carácter delante de la posición dónde estamos situados.<br> Si está precedido de un número [n] eliminará tantos caracteres cómo [n] indique.</td></tr><tr><td> [n]dd</td><td>Elimina la línea dónde estamos situados.<br>Si está precedido de un número [n] eliminará tantas lineas cómo [n] indique. </td></tr><tr><td>D<br></td><td>Elimina los caracteres desde la posición del cursor hasta el final de la línea.</td></tr><tr><td>:[rango]d<br></td><td>Elimina el rango de filas definido. A tener en cuenta que el conteo de las líneas comienza en 0.<br> :2,5d eliminará las filas de la 2 a la 5 </td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos para reemplazar texto</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>r{c}</td><td>Sustituye el carácter bajo el cursor por un carácter {c}.</td></tr><tr><td>~<br></td><td>Invierte la capitalización del carácter bajo el cursor.</td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos para deshacer y rehacer cambios</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>[n]u</td><td>Deshace el último cambio realizado.<br>Si está precedido de un número [n] deshará tantos cambios como [n] indique.</td></tr><tr><td>U</td><td>Deshace todos los cambios realizados en la línea en la que nos encontramos mientras no nos hayamos movido de ella.<br></td></tr><tr><td>:red</td><td>Rehace el último cambio.</td></tr><tr><td>CTRL+ r<br></td><td>Rehace el último cambio.<br></td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos para buscar textos</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>/{t}/</td><td>Busca la siguiente aparición del texto {t}.</td></tr><tr><td>?{t}?</td><td>Busca la aparición previa de {t}.</td></tr><tr><td>n</td><td>Repite la última búsqueda.</td></tr><tr><td>N</td><td>Repite la última búsqueda en dirección opuesta.</td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos para guardar y salir</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>:w<br></td><td>Guarda los cambios realizados.<br></td></tr><tr><td>:q<br></td><td>Sale de VIM. Si se han realizado cambios devolverá un error.<br></td></tr><tr><td>:wq ó 😡 ó ZZ<br></td><td>Guardar y salir<br></td></tr><tr><td>:q! ó ZQ<br></td><td>Descartar los cambios y salir.<br></td></tr><tr><td>:wq!</td><td>Guarda los cambios y sale. </td></tr></tbody></table>



<h2 class="wp-block-heading">Conclusión</h2>



<p>Para los que vienen de un entorno gráfico el primer contacto con Vim puede ser algo inesperado y quizás chocante. De cualquier forma la curva de aprendizaje de Vim es bastante sencilla y cuando aprendemos su dinámica y unos pocos comandos ya nos manejamos con una soltura difícil de imaginar al principio. Hoy hemos visto una lista de los comandos que he considerado más prácticos, ¿cuáles usas tú?, ¿crees que falta alguno?, ¿echas en falta algo?<br></p>La entrada <a href="https://blog.ahierro.es/comandos-en-vim/">Comandos en Vim</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/comandos-en-vim/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Acceder a Ubuntu por Hostname</title>
		<link>https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/</link>
					<comments>https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Wed, 06 Feb 2019 07:30:31 +0000</pubDate>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://www.ahierro.es/?p=260</guid>

					<description><![CDATA[<p>Para el que está acostumbrado a trabajar con redes de equipos Windows acceder a un equipo mediante hostname es algo habitual. Por el contrario, el que suele trabajar con sistemas basados en Linux en una red local sabe que por defecto suele ser un asunto algo más laborioso. Avahi La mala noticia es que para &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Acceder a Ubuntu por Hostname"</span></a></p>
La entrada <a href="https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/">Acceder a Ubuntu por Hostname</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Para el que está acostumbrado a trabajar con redes de equipos Windows acceder a un equipo mediante hostname es algo habitual. Por el contrario, el que suele trabajar con sistemas basados en Linux en una red local sabe que por defecto suele ser un asunto algo más laborioso.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="365" src="https://blog.ahierro.es/wp-content/uploads/2019/02/hostname_broadcast.png" alt="Hostname broadcast" class="wp-image-509" srcset="https://blog.ahierro.es/wp-content/uploads/2019/02/hostname_broadcast.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/02/hostname_broadcast-300x168.png 300w" sizes="(max-width: 650px) 100vw, 650px" /></figure>



<span id="more-260"></span>



<h3 class="wp-block-heading">Avahi</h3>



<p>La mala noticia es que para lograr acceder por nombre a máquinas Linux en una red local con garantías la mejor solución es disponer de un servidor DNS (Bind es la opción Open Source más extendida), y en esta entrada no hablaremos sobre servidores DNS.</p>



<p>En esta entrada utilizaremos Avahi, una implementación gratuita de Zero-Configuration Networking que permite difundir y descubrir servicios y equipos en una red local. Quizás a alguno le resulte más familiar si citamos a Bonjour, que es la implementación propietaria que tiene Apple de esta tecnología.</p>





<p>Y en función de nuestras necesidades es posible que Avahi nos sirva o no (lógico). El principal motivo es que no basta con instalarlo en la máquina a la que queremos acceder por nombre (llamémosla máquina Destino), sino que cada equipo que quiera acceder por nombre a la máquina Destino debe poder trabajar con la tecnología Zero-Configuration Networking para interpretar la información publicada por nuestra máquina Destino.</p>



<h3 class="wp-block-heading">Máquinas Destino y Clientes</h3>



<p>Pongámonos en situación, de un lado tenemos una máquina corriendo Ubuntu, en mi caso es una Raspberry Pi corriendo la versión 16.0.4.2 de Ubuntu Mate. El hostname de esta máquina es «maquina1», su ip 192.168.1.15 y para agilizar la lectura, como ya hemos dicho, la llamaremos máquina «Destino». En esta máquina hemos instalado un servidor web y queremos acceder a ella mediante hostname.</p>



<p>Del otro lado tenemos una serie de equipos con distintos SSOO que son los que quieren consumir el servicio web accediendo por nombre. A estas máquinas las llamaremos «Clientes» y vamos a suponer que tenemos:</p>



<ol class="wp-block-list"><li>Cliente Linux, corriendo Ubuntu 18.</li><li>Cliente Windows, corriendo Windows 10.</li><li>Cliente Android, corriendo Android Oreo 8.1.</li></ol>



<p>Lo siento por los amantes de Apple pero no tengo ningún dispositivo de la manzanita para probar, aún así si eres uno de ellos sigue leyendo porque estoy convencido que te será de utilidad.</p>



<h3 class="wp-block-heading">Instalar y configurar Avahi</h3>



<p>Comenzaremos realizando las instalaciones necesarias en la máquina Destino. En función de vuestra distro es posible que todos o algunos de estos paquetes ya estén instalados.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo apt-get update
sudo apt-get install avahi-daemon
sudo apt-get install avahi-utils
sudo apt-get install libnss-mdns
</pre></div>


<p>Y acto seguido editaremos la configuración de Avahi. Es buena idea que antes de editar cualquier archivo de configuración guardéis una copia que os ayude a volver al punto inicial si fuera necesario, aunque vamos a tocar muy poca configuración.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
suco cp /ect/avahi/avahi-daemon.conf /etc/avahi/avahi-daemon.conf.bck
sudo vim /etc/avahi/avahi-daemon.conf
</pre></div>


<p>En el archivo de configuración nos centraremos primero en el nombre de la máquina y el dominio. Mi recomendación es que mantengáis la configuración por defecto, es decir ser coherentes y que el host-name coincida con el de la propia máquina y que el dominio sea «local». De esta forma accederemos a la máquina con maquina1.local.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
&#x5B;server]
host-name=maquina1
domain-name=local
</pre></div>


<p>Nos aseguraremos también de que las siguientes opciones se encuentren como mostramos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
&#x5B;publish]
disable-publishing=no
disable-user-service-publishing=no
publish-addresses=yes
</pre></div>


<p>Reiniciamos el servicio y lo agregamos al arranque de nuestra máquina:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo service avahi-daemon restart
sudo update-rc.d avahi-daemon defaults
</pre></div>


<p>Y con esto hemos terminado con la máquina Destino.</p>



<h3 class="wp-block-heading">Maquinas Clientes</h3>



<p>Como ya mencionamos cada máquina cliente debe ser capaz de trabajar con la tecnología Zero-Configuration Networking para poder alcanzar la máquina Destino por nombre, así que veamos caso a caso.</p>





<h4 class="wp-block-heading">Desde Linux</h4>



<p>En cada equipo con sistema operativo Linux con el que queramos acceder por nombre a la máquina Destino deberemos instalar Avahi. Así que no tenemos más que repetir las instrucciones definidas en el apartado «Instalar y Configurar Avahi».</p>



<h4 class="wp-block-heading">Desde Windows</h4>



<p>Por defecto Windows no nos dejará acceder por hostname y por ahora no existe implementación de Avahi para este sistema operativo. En su defecto podemos instalar el programa «Servicios de impresión Bonjour para Windows», de Apple, que aunque está pensado para otro uso nos permitirá cubrir nuestra necesidad y alcanzar la máquina Destino por nombre.</p>



<h4 class="wp-block-heading">Desde Android</h4>



<p>Lamentablemente no he encontrado ninguna aplicación o demonio para Android que permita que cualquier aplicación que corra en este sistema operativo sea capaz de acceder por nombre a nuestra máquina Destino, una lástima. Si conoces alguna solución para ello estaría muy agradecido de que la compartas en un comentario.</p>



<h4 class="wp-block-heading">IOS y MacOSX</h4>



<p>Como he dicho no tengo ningún dispositivo de Apple para realizar pruebas, pero conociendo que tienen su propia implementación de de Zero-Configuration Networking (Bonjour), me atrevería a decir que podremos acceder por nombre a nuestra máquina Destino sin necesidad de instalar ningún software adicional.</p>



<h3 class="wp-block-heading">Comprobar el funcionamiento</h3>



<p>Aunque es de primero de pre-escolar (creo que ahora lo llaman infantil), me gusta comprobar las cosas, y la forma más sencilla de hacerlo es utilizar el comando ping. Si lo hemos conseguido obtendremos algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
ping raspi.local
PING raspi.local (192.168..15) 56(84) bytes of data.
64 bytes from 192.168.1.15 (192.168.1.15): icmp_seq=1 ttl=64 time=6.68 ms
64 bytes from 192.168.1.15 (192.168.1.15): icmp_seq=2 ttl=64 time=4.61 ms

</pre></div>


<p>Y si algo no funciona como esperamos obtendremos algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
ping maquina1.local
ping: maquina1.local: Nombre o servicio desconocido
</pre></div>


<p>Y como dijimos que en la máquina Destino teníamos un servidor web, al escribir maquina1.local en la barra de direcciones del navegador, obviamente, accederemos al contenido publicado.</p>





<h3 class="wp-block-heading">Conclusión</h3>



<p>Con Avahi podemos acceder por nombre a máquinas con sistema operativo Linux en nuestra red local. Su mayor limitación es que nos veremos obligado a que tanto la máquina a la que queremos acceder, como las máquinas con las que queremos acceder deben tener instalada una implementación de Zero-Configuration Networking.</p>



<p>Así que si bien resuelve ciertas situaciones y necesidades, si pensamos en una red de varias decenas de equipos con distintos sistemas operativos existen otras alternativas más escalables.</p>



<p>Como siempre me gustaría saber cómo cual es tu experiencia, ¿has usado Avahi? ¿accedes por ip? ¿utilizas otra tecnología u otros programas? Deja un comentario y danos tu opinión.</p>La entrada <a href="https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/">Acceder a Ubuntu por Hostname</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Crear un repositorio remoto en Git desde archivos locales</title>
		<link>https://blog.ahierro.es/crear-un-repositorio-remoto-en-desde-con-archivos-locales/</link>
					<comments>https://blog.ahierro.es/crear-un-repositorio-remoto-en-desde-con-archivos-locales/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 31 Dec 2018 06:55:49 +0000</pubDate>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[control de versiones]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://www.ahierro.es/?p=192</guid>

					<description><![CDATA[<p>Existen múltiples motivos por los que podemos disponer de código fuente antes de versionarlo: que heredemos un proyecto ya existente, que se nos ocurra una idea y en un impetuoso alarde de entusiasmo vayamos directamente al código, etc. Pero para mi el principal motivo es que es la forma más sencilla de comenzar un proyecto &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/crear-un-repositorio-remoto-en-desde-con-archivos-locales/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Crear un repositorio remoto en Git desde archivos locales"</span></a></p>
La entrada <a href="https://blog.ahierro.es/crear-un-repositorio-remoto-en-desde-con-archivos-locales/">Crear un repositorio remoto en Git desde archivos locales</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Existen múltiples motivos por los que podemos disponer de código fuente antes de versionarlo: que heredemos un proyecto ya existente, que se nos ocurra una idea y en un impetuoso alarde de entusiasmo vayamos directamente al código, etc. Pero para mi el principal motivo es que es la forma más sencilla de comenzar un proyecto y un repositorio en Git: instalo la aplicación o el framework que necesito, realizo una configuración básica y acto seguido creo el repositorio.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="365" src="https://www.ahierro.es/wp-content/uploads/2018/11/git_logo.jpg" alt="Git" class="wp-image-174" srcset="https://blog.ahierro.es/wp-content/uploads/2018/11/git_logo.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/11/git_logo-300x168.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2018/11/git_logo-267x150.jpg 267w" sizes="(max-width: 650px) 100vw, 650px" /></figure>



<span id="more-192"></span>



<p>Por otro lado, en función de diferentes factores relacionados con un proyecto de desarrollo podemos trabajar en equipo, que es lo más probable, o solos. Cuando trabajamos en equipo es lógico que el software de control de versiones se encuentre en un servidor centralizado. Cuando trabajamos solos podemos decidir que solo esté en nuestra máquina.</p>



<p>Personalmente incluso trabajando en solitario en un proyecto me gusta versionar contra en un servidor centralizado por dos motivos principales:</p>



<ol class="wp-block-list"><li>Mayor seguridad ante una eventualidad en mi equipo local, circunstancia que no evita que el proyecto deba estar respaldado por copias de seguridad.</li><li>Posibilidad de trabajar en múltiples dispositivos, una opción más o menos interesante en función de nuestras circunstancias.</li></ol>



<p>En caso de que el proyecto que tengamos entre manos sea de ámbito personal, es más que razonable pensar que no todos disponemos de un servidor en casa dónce centralizar el versionado. Esta situación la podemos resolver con un viejo pc, o si no disponemos de uno con una Raspberry Pi que haga las veces de servidor. Aquí te dejo un enlace al artículo <a href="https://blog.ahierro.es/instalar-y-configurar-git-en-una-raspberry-pi-con-ubuntu-mate/">Instalar y configurar Git en una Raspberry PI con Ubuntu Mate</a>, por si quieres probarlo.</p>





<p>Así que vamos al lío y para ello asumiremos que nuestro servidor está configurado con la ip <em>192.168.1.10</em> y el nombre de nuestro usuario es <em>usuario</em>.</p>



<h3 class="wp-block-heading">Creamos nuestro repositorio remoto</h3>



<p>Lo primero que debemos hacer es crear y configurar correctamente un repositorio vacío en la máquina remota, así que empezaremos por conectarnos a ella:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
ssh usuario@192.168.1.10
</pre></div>


<p>Ya en la consola remota creamos el directorio dónde alojaremos el repositorio que vamos a crear, personalmente creo un directorio en el que incluyo todos los repositorios:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
cd ~
mkdir gitRepositoryRoot
cd gitRepositoryRoot
mkdir nuevoProyecto
cd nuevoProyecto
</pre></div>


<p>Y por fin creamos nuestro repositorio vacío y lo configuramos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
git --bare init
git config core.sharedrepository 1
git config receive.denyNonFastforwards true
git config --bool core.bare true
</pre></div>


<p>El último paso en la máquina remota es asignar los permisos adecuados al repositorio:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
find objects -type d -exec chmod 02770 {} \;
</pre></div>


<h3 class="wp-block-heading">Creamos nuestro repositorio local</h3>



<p>Una vez que nuestro repositorio está correctamente creado en el servidor deberemos crear un repositorio local a partir de los fuentes que ya tenemos para posteriormente enlazarlo y enviarlo al repositorio que previamente hemos creado en la máquina remota.</p>



<p>Creamos el repositorio local y añadimos los fuentes existentes que supondremos que se encuentran en <em>/var/www/nuevoProyecto</em>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
cd /var/www/nuevoProyecto
git init
git add *
git commit -m &quot;Commit inicial&quot;
</pre></div>


<p>Creamos el repositorio y añadimos los fuentes:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
git remote add origin ssh://usuario@192.168.1.10/home/usuario/gitRepositoryRoot/nuevoProyecto
git push -u origin master
</pre></div>


<h3 class="wp-block-heading">Comprobamos que todo ha salido bien</h3>



<p>Por último comprobaremos que hemos realizado el proceso correctamente y todo funciona correctamente.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
git checkout origin/master
git branch -f master origin/master
git checkout master
</pre></div>


<h3 class="wp-block-heading">Conclusión</h3>



<p>Trabajemos en grupo o en solitario versionar nuestro código en una máquina remota es una tarea sencilla que aporta grandes beneficios. Cómo siempre me gustaría saber cómo lo haces tú, qué haces distinto, si este artículo te ha ayudado&#8230; Si te animas a compartir deja un comentario.</p>La entrada <a href="https://blog.ahierro.es/crear-un-repositorio-remoto-en-desde-con-archivos-locales/">Crear un repositorio remoto en Git desde archivos locales</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/crear-un-repositorio-remoto-en-desde-con-archivos-locales/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
