<?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>Blog di Enrico Saviano &#187; programmazione</title>
	<atom:link href="http://www.enricosaviano.it/blog/tag/programmazione/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.enricosaviano.it/blog</link>
	<description>L&#039;angolo tecnico di Enrico Saviano</description>
	<lastBuildDate>Tue, 10 Jan 2012 19:29:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Debuggare uno script bash</title>
		<link>http://www.enricosaviano.it/blog/2012/01/10/debuggare-uno-script-bash/</link>
		<comments>http://www.enricosaviano.it/blog/2012/01/10/debuggare-uno-script-bash/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 19:29:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://www.enricosaviano.it/blog/?p=70</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.enricosaviano.it/blog/2012/01/10/debuggare-uno-script-bash/' addthis:title='Debuggare uno script bash ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>Quando uno script in bash cresce in dimensioni, diventa sempre più difficile trovare eventuali errori nel codice. La shell GNU bash fornisce a questo scopo alcune funzionalità di debug. La più immediata ed interessante è la &#8220;modalità debug&#8220;, che si attiva eseguendo la sotto-shell con l&#8217;opzione -x; in questa modalità ogni comando più ogni suo [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.enricosaviano.it/blog/2012/01/10/debuggare-uno-script-bash/' addthis:title='Debuggare uno script bash ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.enricosaviano.it/blog/2012/01/10/debuggare-uno-script-bash/' addthis:title='Debuggare uno script bash ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div><p>Quando uno script in bash cresce in dimensioni, diventa sempre più difficile <strong>trovare eventuali errori nel codice</strong>.</p>
<p>La shell <strong>GNU bash</strong> fornisce a questo scopo alcune <strong>funzionalità di debug</strong>.</p>
<p>La più immediata ed interessante è la &#8220;<strong>modalità debug</strong>&#8220;, che si attiva eseguendo la sotto-shell con l&#8217;<strong>opzione -x</strong>; in questa modalità ogni comando più ogni suo argomento è stampato sullo standard output dopo che le variabili sono state sostituite, ma prima di essere eseguito, ad esempio: <span id="more-86"></span></p>
<blockquote>
<pre>~$ cat script.sh
#!/bin/bash
VARTEST="variabile di test"
echo "$VARTEST"
echo ""
~$ bash -x script.sh
+ VARTEST='variabile di test'
+ echo 'variabile di test'
variabile di test
+ echo ''

~$</pre>
</blockquote>
<p>Si può <strong>attivare la modalità</strong> di debug anche solo <strong>in un pezzo del codice</strong>, in questo modo:</p>
<blockquote>
<pre>~$ cat script.sh
#!/bin/bash
VARTEST="variabile di test"
set -x
echo "$VARTEST"
set +x
echo ""
~$ bash script.sh
+ echo 'variabile di test'
variabile di test
+ set +x
~$</pre>
</blockquote>
<p>E&#8217; possibile passare dalla modalità debug alla modalità normale quante volte si vuole all&#8217;interno di uno script.</p>
<p>Altro strumento utile è la &#8220;<strong>modalità di non-esecuzione</strong>&#8220;; in questa modalità la sintassi viene analizzata in cerca di errori, senza però eseguire i comandi dello script. La modalità è attivabile attraverso l&#8217;<strong>opzione -n</strong>, sia per tutto lo script che per una sua parte soltanto, in maniera analoga all&#8217;opzione precedente:</p>
<blockquote>
<pre>~$ cat script.sh
#!/bin/bash
echo "inizio test"
NUM=2
echo "numero = $NUM"
if [[ 1 -lt $NUM ]]
then
 echo $NUM maggiore di 1
~$ bash -n script.sh
script.sh: riga 8: errore di sintassi: fine di file non attesa
~$</pre>
</blockquote>
<p>Applicato su una porzione di codice:</p>
<blockquote>
<pre>~$ cat script.sh
#!/bin/bash
echo "inizio test"
set -n
NUM=2
echo "numero = $NUM"
if [[ 1 -lt $NUM ]]
then
 echo $NUM maggiore di 1
set +n
~$ bash script.sh
inizio test
script.sh: riga 10: errore di sintassi: fine di file non attesa
~$</pre>
</blockquote>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.enricosaviano.it/blog/2012/01/10/debuggare-uno-script-bash/' addthis:title='Debuggare uno script bash ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.enricosaviano.it/blog/2012/01/10/debuggare-uno-script-bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inviare email da shell con file allegati</title>
		<link>http://www.enricosaviano.it/blog/2012/01/10/inviare-email-da-shell-con-file-allegati/</link>
		<comments>http://www.enricosaviano.it/blog/2012/01/10/inviare-email-da-shell-con-file-allegati/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 19:24:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://www.enricosaviano.it/blog/?p=65</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.enricosaviano.it/blog/2012/01/10/inviare-email-da-shell-con-file-allegati/' addthis:title='Inviare email da shell con file allegati ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>Molti programmatori già sanno com&#8217;è facile inviare email da shell. Una semplice invocazione al comando &#8220;mail&#8221; con il destinatario passato come parametro, gli invierà tutti i dati letti dallo standard input. $ mail giovanni@emailprova.it &#60; /tmp/testo.txt $ echo "Ci vediamo questa sera?" &#124; mail milena@emailprova.it Il comando mail accetta anche altri parametri: -b bcc-addr Invia [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.enricosaviano.it/blog/2012/01/10/inviare-email-da-shell-con-file-allegati/' addthis:title='Inviare email da shell con file allegati ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.enricosaviano.it/blog/2012/01/10/inviare-email-da-shell-con-file-allegati/' addthis:title='Inviare email da shell con file allegati ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div><p>Molti programmatori già sanno com&#8217;è facile inviare email da shell. Una semplice invocazione al comando &#8220;<em>mail</em>&#8221; con il destinatario passato come parametro, gli invierà tutti i dati letti dallo standard input.</p>
<blockquote>
<pre>$ mail giovanni@emailprova.it &lt; /tmp/testo.txt
$ echo "Ci vediamo questa sera?" | mail milena@emailprova.it</pre>
</blockquote>
<p>Il comando mail accetta anche altri parametri:</p>
<ul>
<li> <strong>-b bcc-addr</strong> <em>Invia l&#8217;email in copia carbone nascosta agli indirizzi specificati.</em></li>
<li><strong>-c cc-addr</strong> <em>Invia l&#8217;email in copia carbone agli indirizzi specificati.</em></li>
<li><strong>-s subject</strong> <em>Specifica l&#8217;oggetto dell&#8217;email.</em></li>
</ul>
<p>Ad esempio:<span id="more-117"></span></p>
<blockquote>
<pre>$ echo "andiamo fuori per una pizza?" | mail \
 -c "marco@emailtest.it, franco@emailtest.it" \
 -s "Serata pizza" nicola@emailtest.it</pre>
</blockquote>
<p>A volte però, nasce la necessità di inviare uno o più allegati, che non sono semplice testo, ma immagini, o file binari in generale.<br />
Volendo usare il comando &#8220;mail&#8221;, sarebbe necessario codificare questi file secondo lo standard MIME, preparare una email testuale ed inviarla.</p>
<p>A venirci in aiuto, però, c&#8217;è il programma &#8220;<em>mutt</em>&#8220;.</p>
<p>Mutt è un client email, interattivo, orientato al testo, che all&#8217;occorrenza diventa un utilissimo strumento da riga di comando, per inviare email con allegati.</p>
<p>Ad esempio:</p>
<blockquote>
<pre>echo "Ecco la canzone che mi chiedevi." | mutt \
-a "canzone.mp3" \
-s "Canzone" marco@emailtest.it</pre>
</blockquote>
<p>In questo esempio ci sono tutte le parti più importanti di una email:</p>
<ul>
<li>L&#8217;<strong>oggetto</strong>, passato dall&#8217;opzione <em>-s</em>.</li>
<li>Il <strong>corpo principale</strong>, letto dallo standard input.</li>
<li>Il <strong>destinatario </strong>(marco@emailtest.it).</li>
<li>L&#8217;<strong>allegato</strong>, specificato dall&#8217;opzione <em>-a</em>.</li>
</ul>
<p>Se, infine, non si vuole specificare nessun testo è possibile passare una riga vuota:</p>
<blockquote>
<pre>echo | mutt -a "/tmp/backup.tar.gz" \
-s "Backup" sysadmin@serveremail.com</pre>
</blockquote>
<p>O /dev/null:</p>
<blockquote>
<pre>mutt -a "/tmp/backup.tar.gz" -s "Backup" \
sysadmin@serveremail.com &lt; /dev/null</pre>
</blockquote>
<p>É possibile scaricare mutt all&#8217;indirizzo <a href="http://www.mutt.org/">http://www.mutt.org/</a>, questo programma è disponibile per una enorme quantità di dialetti unix / linux e per Microsoft Windows.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.enricosaviano.it/blog/2012/01/10/inviare-email-da-shell-con-file-allegati/' addthis:title='Inviare email da shell con file allegati ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.enricosaviano.it/blog/2012/01/10/inviare-email-da-shell-con-file-allegati/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Includere tutti i file di una directory in php</title>
		<link>http://www.enricosaviano.it/blog/2010/02/15/includere-tutti-i-file-di-una-directory-in-php/</link>
		<comments>http://www.enricosaviano.it/blog/2010/02/15/includere-tutti-i-file-di-una-directory-in-php/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 21:07:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.enricosaviano.it/blog/?p=58</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.enricosaviano.it/blog/2010/02/15/includere-tutti-i-file-di-una-directory-in-php/' addthis:title='Includere tutti i file di una directory in php ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>Ecco un modo rapido per includere tutti i file di una directory in una pagina php, per esempio per caricare delle librerie: foreach (glob("directory/*.php") as $filename) { include_once $filename; }<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.enricosaviano.it/blog/2010/02/15/includere-tutti-i-file-di-una-directory-in-php/' addthis:title='Includere tutti i file di una directory in php ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.enricosaviano.it/blog/2010/02/15/includere-tutti-i-file-di-una-directory-in-php/' addthis:title='Includere tutti i file di una directory in php ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div><p>Ecco un modo rapido per includere tutti i file di una directory in una pagina php, per esempio per caricare delle librerie:</p>
<pre>foreach (glob("directory/*.php") as $filename) {
	include_once $filename;
}</pre>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.enricosaviano.it/blog/2010/02/15/includere-tutti-i-file-di-una-directory-in-php/' addthis:title='Includere tutti i file di una directory in php ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.enricosaviano.it/blog/2010/02/15/includere-tutti-i-file-di-una-directory-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

