<?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>Silveira Neto &#187; Shell Script</title>
	<atom:link href="http://silveiraneto.net/tag/shell-script/feed/" rel="self" type="application/rss+xml" />
	<link>http://silveiraneto.net</link>
	<description></description>
	<lastBuildDate>Fri, 09 Mar 2012 04:13:27 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>substitution on a XML file shell script snippet</title>
		<link>http://silveiraneto.net/2010/05/13/substitution-on-a-xml-file-shell-script-snippet/</link>
		<comments>http://silveiraneto.net/2010/05/13/substitution-on-a-xml-file-shell-script-snippet/#comments</comments>
		<pubDate>Thu, 13 May 2010 13:55:38 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[Shell Script]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=3413</guid>
		<description><![CDATA[<a href="http://silveiraneto.net/2010/05/13/substitution-on-a-xml-file-shell-script-snippet/" title="substitution on a XML file shell script snippet"></a>One more Shell script snippet. Scenario: I have several directories, each one with a file called strings.xml. The problem with those files is that they are like: &#60;string desc=&#34;whatever&#34;&#62;&#34;text&#34;&#60;/string&#62; I&#8217;d like to remove those double quotation marks inside the string &#8230;<p class="read-more"><a href="http://silveiraneto.net/2010/05/13/substitution-on-a-xml-file-shell-script-snippet/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://silveiraneto.net/2010/05/13/substitution-on-a-xml-file-shell-script-snippet/" title="substitution on a XML file shell script snippet"></a><p><center><a href="http://www.flickr.com/photos/statelibraryofnsw/3210838977/sizes/m/"><img alt="" src="http://farm4.static.flickr.com/3464/3210838977_5bba45254c.jpg" class="alignnone" width="500" height="389" /></a></center></p>
<p>One more Shell script snippet.</p>
<p><strong>Scenario: </strong>I have several directories, each one with a file called strings.xml. The problem with those files is that they are like:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string</span> <span style="color: #000066;">desc</span>=<span style="color: #ff0000;">&quot;whatever&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>&quot;text&quot;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>I&#8217;d like to remove those double quotation marks inside the string element.</p>
<p>I&#8217;m already in the directory which contains all others directories with the xml files.</p>
<p><strong>Solution:</strong> A script that for each directory, cat it xml file and substitute the occurrences of >&#8221; for > and &#8220;< for <.</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">for file in `ls`; do cat $file/strings.xml| sed 's/&gt;&quot;/&gt;/g'| sed 's/&quot;&lt;/&lt;/g' &gt; $file/strings.xml; done</pre></div></div>

<p><strong>Warning:</strong> Shell script and regular expressions are not the correct way to parse XML because there are special cases where you can not handle properly. But in simple cases like this one it can be useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2010/05/13/substitution-on-a-xml-file-shell-script-snippet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Miojo Script</title>
		<link>http://silveiraneto.net/2010/01/28/miojo-script/</link>
		<comments>http://silveiraneto.net/2010/01/28/miojo-script/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 05:37:29 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[libnotify]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[miojo]]></category>
		<category><![CDATA[notify]]></category>
		<category><![CDATA[notify-send]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Shell Script]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=3133</guid>
		<description><![CDATA[<a href="http://silveiraneto.net/2010/01/28/miojo-script/" title="Miojo Script"></a>O pre-requisito é o notify-send, um utilitário de linha de comando do libnotify. No Ubuntu: sudo aptitude install libnotify-bin E aqui o script em si: sleep 5m; notify-send "aviso" "tirar o miojo do fogo" Pronto, depois de cinco minutos isso &#8230;<p class="read-more"><a href="http://silveiraneto.net/2010/01/28/miojo-script/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://silveiraneto.net/2010/01/28/miojo-script/" title="Miojo Script"></a><p>O pre-requisito é o notify-send, um utilitário de linha de comando do libnotify. No Ubuntu:</p>
<p><code>sudo aptitude install libnotify-bin</code></p>
<p>E aqui o script em si:</p>
<p><code>sleep 5m; notify-send "aviso" "tirar o miojo do fogo"</code></p>
<p>Pronto, depois de cinco minutos isso vai aparecer:</p>
<p style="text-align: center;"><img class="size-full wp-image-3134 aligncenter" title="notify" src="http://silveiraneto.net/wp-content/uploads/2010/01/notify.png" alt="" width="427" height="258" /></p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2010/01/28/miojo-script/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Twitter Bot @rudaufc versão 1</title>
		<link>http://silveiraneto.net/2009/11/09/twitter-bot-rudaufc-versao-1/</link>
		<comments>http://silveiraneto.net/2009/11/09/twitter-bot-rudaufc-versao-1/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 19:54:18 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
				<category><![CDATA[português]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[Comida]]></category>
		<category><![CDATA[CRON]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[culinária]]></category>
		<category><![CDATA[CURL]]></category>
		<category><![CDATA[ia]]></category>
		<category><![CDATA[inteligência artificial]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Restaurante Universitário]]></category>
		<category><![CDATA[robô]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[SH]]></category>
		<category><![CDATA[Shell Script]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[ufc]]></category>
		<category><![CDATA[Universidade Federal do Ceará]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=2927</guid>
		<description><![CDATA[<a href="http://silveiraneto.net/2009/11/09/twitter-bot-rudaufc-versao-1/" title="Twitter Bot @rudaufc versão 1"></a>Este aqui é um bot bem simples para Twitter. Diariamente, as nove da manhã ele posta qual vai ser o cardápio do RU (Restaurante Universitário) da UFC naquele dia. Assim, quando vai batendo a hora da fome, os alunos podem &#8230;<p class="read-more"><a href="http://silveiraneto.net/2009/11/09/twitter-bot-rudaufc-versao-1/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://silveiraneto.net/2009/11/09/twitter-bot-rudaufc-versao-1/" title="Twitter Bot @rudaufc versão 1"></a><p><center><img src="http://silveiraneto.net/wp-content/uploads/2009/11/robo.jpg" alt="robô" title="robô" width="117" height="227" class="alignnone size-full wp-image-2933" /></center></p>
<p>Este aqui é um bot bem simples para Twitter.</p>
<p>Diariamente, as nove da manhã ele posta qual vai ser o cardápio do RU (<a href="http://www.ufc.br/portal/index.php?option=com_content&#038;task=view&#038;id=6842&#038;Itemid=87">Restaurante Universitário</a>) da <a href="http://www.ufc.br">UFC</a> naquele dia.</p>
<p>Assim, quando vai batendo a hora da fome, os alunos podem entrar no perfil <a href="http://www.twitter.com/rudaufc">@rudaufc</a> e olhar qual vai ser o prato do dia, ou quem está seguindo ele no Twitter pode ter a agradável surpresa de ver todo dia o que vai ser servido hoje.</p>
<p>Aqui está o código fonte do arquivo rudaufc.sh:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># Twitter bot @rudaufc</span>
<span style="color: #007800;">login</span>=<span style="color: #ff0000;">&quot;rudaufc&quot;</span>
<span style="color: #007800;">senha</span>=<span style="color: #ff0000;">&quot;suasenhaaqui&quot;</span>
&nbsp;
<span style="color: #007800;">segunda</span>=<span style="color: #ff0000;">&quot;Picadinho com legumes ou bife na chapa. Salada de macarrão com cenoura. Arroz. Feijão com abóbora e batata doce.&quot;</span>
<span style="color: #007800;">terca</span>=<span style="color: #ff0000;">&quot;Franco guisado ou coxas de frango ao forno . Salada de acelga, cenoura e passas. Arroz. Feijão com abóbora e batata doce.&quot;</span>
<span style="color: #007800;">quarta</span>=<span style="color: #ff0000;">&quot;# Feijoada à moda RU ou bisteca . Salada de repolho branco, cenoura e abacaxi. Arroz. Feijão com abóbora e batata doce&quot;</span>
<span style="color: #007800;">quinta</span>=<span style="color: #ff0000;">&quot;Frango à passarinho ou frango chinês. Salada de Alface, Tomate e Cebola. Arroz. Feijão com abóbora e batata doce.&quot;</span>
<span style="color: #007800;">sexta</span>=<span style="color: #ff0000;">&quot;# Isca ao molho ou maravilha de carne. Salada de acelga com cenoura. Arroz. Feijão com abóbora e batata doce.&quot;</span>
&nbsp;
<span style="color: #007800;">dia</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span><span style="color: #c20cb9; font-weight: bold;">w</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">log</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y-<span style="color: #000000; font-weight: bold;">%</span>m-<span style="color: #000000; font-weight: bold;">%</span>d-<span style="color: #000000; font-weight: bold;">%</span>s<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #000000; font-weight: bold;">`</span><span style="color: #ff0000;">&quot;-$$.log&quot;</span>
<span style="color: #007800;">dir</span>=<span style="color: #ff0000;">&quot;/home/silveiraneto/rudaufc&quot;</span>
<span style="color: #007800;">msg</span>=<span style="color: #ff0000;">&quot;&quot;</span>
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$dia</span>&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
<span style="color: #666666; font-style: italic;">#	&quot;0&quot;) msg=$domingo ;;</span>
	<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #007800;">msg</span>=<span style="color: #007800;">$segunda</span> <span style="color: #000000; font-weight: bold;">;;</span>
	<span style="color: #ff0000;">&quot;2&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #007800;">msg</span>=<span style="color: #007800;">$terca</span> <span style="color: #000000; font-weight: bold;">;;</span>
	<span style="color: #ff0000;">&quot;3&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #007800;">msg</span>=<span style="color: #007800;">$quarta</span> <span style="color: #000000; font-weight: bold;">;;</span>
	<span style="color: #ff0000;">&quot;4&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #007800;">msg</span>=<span style="color: #007800;">$quinta</span> <span style="color: #000000; font-weight: bold;">;;</span>
	<span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #007800;">msg</span>=<span style="color: #007800;">$sexta</span> <span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #666666; font-style: italic;">#	&quot;6&quot;) msg=$sabado ;;</span>
<span style="color: #000000; font-weight: bold;">esac</span>
&nbsp;
curl <span style="color: #660033;">-u</span> <span style="color: #007800;">$login</span>:<span style="color: #007800;">$senha</span> <span style="color: #660033;">-d</span> <span style="color: #007800;">status</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$msg</span>&quot;</span> http:<span style="color: #000000; font-weight: bold;">//</span>twitter.com<span style="color: #000000; font-weight: bold;">/</span>statuses<span style="color: #000000; font-weight: bold;">/</span>update.xml <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$log</span></pre></div></div>

<p>A mágica toda está na capacidade do <a href="http://en.wikipedia.org/wiki/CURL">Curl</a> de acessar facilmente a <a href="http://apiwiki.twitter.com/">API do Twitter</a> para enviar mensagens.</p>
<p>Para que o script execute diariamente as nove da manhã ele está alocado em um servidor com a <a href="http://pt.wikipedia.org/wiki/Crontab">crontab</a> configurada da seguinte maneira:</p>
<pre>
0 5 * * *  . /caminho_para_onde_ele_esta/rudaufc.sh
</pre>
<p><small>ps: leve em conta que o servidor está em um fuso horário diferente do Brasil.</small></p>
<p>Nessa versão o prato de cada dia está hardcoded no script, o que não é o ideal e faz com que semanalmente eu tenha que atualizar o script inserindo os pratos da semana manualmente. Eu espero que a próxima versão seja capaz de descobrir esses pratos e se atualizar sem nenhuma interferência.</p>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2009/11/09/twitter-bot-rudaufc-versao-1/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

