<?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>shell &#8211; paologironi blog</title>
	<atom:link href="https://www.gironi.it/blog/category/shell-it/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.gironi.it/blog</link>
	<description>Appunti sparsi di (retro) informatica, analisi dei dati, statistica, seo, e cose che cambiano</description>
	<lastBuildDate>Thu, 18 Jun 2026 13:31:25 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Come generare la chiave ssh per accedere via shell a un servizio di hosting</title>
		<link>https://www.gironi.it/blog/come-generare-la-chiave-pubblica-e-privata-per-laccesso-ssh-a-un-servizio-di-hosting/</link>
					<comments>https://www.gironi.it/blog/come-generare-la-chiave-pubblica-e-privata-per-laccesso-ssh-a-un-servizio-di-hosting/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Thu, 05 Dec 2019 13:25:50 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[chiave privata]]></category>
		<category><![CDATA[chiave pubblica]]></category>
		<category><![CDATA[ssh]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=1503</guid>

					<description><![CDATA[In pochi semplici passi la procedura per poter abilitare l&#8217;autenticazione tramite chiavi ssh ad un comune servizio hosting. Molti servizi di hosting condiviso, anche economici, offrono l&#8217;interessante possibilità di accedere in ssh al proprio spazio server. Non è possibile agire liberamente, in questi casi, installando alcunchè. Però c&#8217;è la possibilità di eseguire semplici comandi di &#8230; <a href="https://www.gironi.it/blog/come-generare-la-chiave-pubblica-e-privata-per-laccesso-ssh-a-un-servizio-di-hosting/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Come generare la chiave ssh per accedere via shell a un servizio di hosting"</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In pochi semplici passi la procedura per poter abilitare l&#8217;autenticazione tramite chiavi ssh ad un comune servizio hosting.</p>



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



<p class="wp-block-paragraph">Molti servizi di hosting condiviso, anche economici, offrono l&#8217;interessante possibilità di accedere in ssh al proprio spazio server. Non è possibile agire liberamente, in questi casi, installando alcunchè. Però c&#8217;è la possibilità di eseguire semplici comandi di shell, compresa la creazione di backup compressi, la copia di files e cartelle e tanto altro.</p>



<p class="wp-block-paragraph">Alcuni gestori non offrono altro che un accesso &#8220;jailed&#8221; all&#8217;interno del pannello cPanel, altri richiedono di comunicare un indirizzo IP statico dal quale collegarsi, ponendo quell&#8217;IP in whitelist. Malgrado tutte queste limitazioni, generare la coppia di chiavi pubblica/privata per garantirsi l&#8217;accesso da shell al pc remoto è comunque una possibilità utile. <strong>Vediamo per i meno esperti come fare per generare la chiave ssh in pochi, semplici passaggi</strong>.</p>



<h2 class="wp-block-heading">Entro nel cPanel e vado in Accesso SSH</h2>



<p class="wp-block-paragraph">Il primo passaggio è entrare nel cPanel fornito dal servizio di hosting e trovare l&#8217;icona di &#8220;SSH Access&#8221;, cliccandola.</p>



<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2019/12/ssh-1024x351.jpg" alt="Accesso ssh" class="wp-image-1507" width="512" height="176" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/12/ssh-1024x351.jpg 1024w, https://www.gironi.it/blog/wp-content/uploads/2019/12/ssh-300x103.jpg 300w, https://www.gironi.it/blog/wp-content/uploads/2019/12/ssh-1200x411.jpg 1200w, https://www.gironi.it/blog/wp-content/uploads/2019/12/ssh.jpg 1365w" sizes="(max-width: 512px) 85vw, 512px" /></figure>



<h2 class="wp-block-heading">Genero e autorizzo la chiave pubblica</h2>



<p class="wp-block-paragraph">Clicco su &#8220;Manage ssh keys&#8221; e scelgo un nome significativo per la mia chiave.</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2019/12/manage-ssh-keys-1024x550.jpg" alt="Come generare la chiave ssh" class="wp-image-1510" width="512" height="275" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/12/manage-ssh-keys-1024x550.jpg 1024w, https://www.gironi.it/blog/wp-content/uploads/2019/12/manage-ssh-keys-300x161.jpg 300w, https://www.gironi.it/blog/wp-content/uploads/2019/12/manage-ssh-keys.jpg 1083w" sizes="(max-width: 512px) 85vw, 512px" /></figure>



<p class="wp-block-paragraph"> Scelgo una password robusta (mi raccomando) e genero la chiave.</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2019/12/generate-key.jpg" alt="Generare una nuova chiave ssh" class="wp-image-1512" width="426" height="273" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/12/generate-key.jpg 852w, https://www.gironi.it/blog/wp-content/uploads/2019/12/generate-key-300x192.jpg 300w" sizes="(max-width: 426px) 85vw, 426px" /></figure>



<p class="wp-block-paragraph"><br>A questo punto, comparirà la mia nuova chiave. Non è ancora autorizzata (lo vedo dallo status accanto al nome): non mi resta allora che cliccare su &#8220;Autorizzo&#8221; e attendere la conferma.</p>



<h2 class="wp-block-heading">Scarico la chiave privata</h2>



<p class="wp-block-paragraph">Ora devo scaricare la mia chiave privata. E&#8217; facilissimo: accanto al nome della mia chiave privata, sulla pagina, troverò il link &#8220;View/Download&#8221;. La salvo in una cartellina sicura del mio computer. <br>Nel mio esempio uso:</p>



<pre class="wp-block-preformatted"> ~/.ssh </pre>



<p class="wp-block-paragraph">quindi alla fine avrò nel mio pc il file </p>



<pre class="wp-block-preformatted"> ~/.ssh/nomemiachiaveprivata</pre>



<h2 class="wp-block-heading">Cambio i permessi al file</h2>



<p class="wp-block-paragraph">Per poter aggiungere la mia chiave, è necessario che il file abbia i giusti permessi. Quindi digito:</p>



<pre class="wp-block-preformatted">chmod 400 ~/.ssh/nomemiachiaveprivata</pre>



<h2 class="wp-block-heading">Memorizzo la chiave sul mio pc</h2>



<p class="wp-block-paragraph">Non voglio dover inserire password, quindi aggiungo la mia chiave con:<br></p>



<pre class="wp-block-preformatted">ssh-add ~/.ssh/nomemiachiaveprivata</pre>



<p class="wp-block-paragraph">Il sistema mi chiederà, solo per questa volta, di digitare la password.<br>Fatto! Tutto qua&#8230;</p>



<h2 class="wp-block-heading">E ora, mi collego con la mia chiave ssh!</h2>



<p class="wp-block-paragraph">Nulla di più semplice. Basterà il comando:</p>



<pre class="wp-block-preformatted">ssh -i ~/.ssh/nomemiachiaveprivata nomeutente@indirizzoip</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/come-generare-la-chiave-pubblica-e-privata-per-laccesso-ssh-a-un-servizio-di-hosting/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>La magia del testo nella console: figlet, boxes, lolcat, toilet.</title>
		<link>https://www.gironi.it/blog/la-magia-del-testo-nella-console-figlet-boxes-lolcat-toilet/</link>
					<comments>https://www.gironi.it/blog/la-magia-del-testo-nella-console-figlet-boxes-lolcat-toilet/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Wed, 20 Nov 2019 15:53:16 +0000</pubDate>
				<category><![CDATA[cli]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[boxes]]></category>
		<category><![CDATA[figlet]]></category>
		<category><![CDATA[lolcat]]></category>
		<category><![CDATA[vi]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=1318</guid>

					<description><![CDATA[Il mondo degli amministratori di sistema, degli sviluppatori &#8220;vecchia-scuola&#8221; o più semplicemente degli utenti curiosi vive l&#8217;ambiente testuale della console come una vera e propria palestra di libertà. Libertà da mouse e icone, puntatori e widget. Espressività, velocità, senso di controllo. Chi ha detto, tuttavia, che il testo debba essere noioso? Che non ci possa &#8230; <a href="https://www.gironi.it/blog/la-magia-del-testo-nella-console-figlet-boxes-lolcat-toilet/" class="more-link">Leggi tutto<span class="screen-reader-text"> "La magia del testo nella console: figlet, boxes, lolcat, toilet."</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Il mondo degli amministratori di sistema, degli sviluppatori &#8220;vecchia-scuola&#8221; o più semplicemente degli utenti curiosi vive l&#8217;ambiente testuale della console come una vera e propria palestra di libertà. Libertà da mouse e icone, puntatori e widget. Espressività, velocità, senso di controllo.</p>



<p class="wp-block-paragraph">Chi ha detto, tuttavia, che il testo debba essere noioso? Che non ci possa e debba essere un piacere funzionale e/o estetico nell&#8217;usare in maniera creativa ciò che la console mette a disposizione?</p>



<p class="wp-block-paragraph">Gli strumenti che possono essere utilizzati con piacere sono numerosi. Ne segnalerò quattro, i miei preferiti. </p>



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



<h2 class="wp-block-heading">Titoli, titoli, titoli&#8230; Figlet</h2>



<p class="wp-block-paragraph">Di tutti i tool pensati al fine di evidenziare del testo a schermo, <a href="http://www.figlet.org/" target="_blank" rel="noreferrer noopener" aria-label="Figlet (apre in una nuova scheda)">Figlet</a> è probabilmente il più conosciuto. E&#8217; presente nei repository di qualsiasi distribuzione e l&#8217;uso più semplice è quello che ci si può aspettare: si passa un output di testo al programma con una pipe&#8230;ed ecco il risultato:</p>



<figure class="wp-block-image"><img decoding="async" width="701" height="197" src="https://www.gironi.it/blog/wp-content/uploads/2019/10/figlet-e1572456504842.png" alt="figlet e1572456504842" class="wp-image-1321" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/10/figlet-e1572456504842.png 701w, https://www.gironi.it/blog/wp-content/uploads/2019/10/figlet-e1572456504842-300x84.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption>Benvenuti nel mondo della tipografia ASCII&#8230;</figcaption></figure>



<p class="wp-block-paragraph">Ma Figlet ovviamente è, o può essere, molto di più. In primo luogo perchè presenta un bel numero di possibilità, in seconda battuta perchè può essere un passaggio in un flusso di elaborazioni in puro stile Unix, la cui concatenazione può portare a risultati davvero sorprendenti e stimolare la fantasia di chiunque.</p>



<p class="wp-block-paragraph">Figlet è disponibile per la più ampia varietà possibile di sistemi operativi. <br>Ci sono proprio tutti, anche i più venerabili: MsDos, Amiga, Atari, Acorn, Os2, BeOs&#8230;</p>



<p class="wp-block-paragraph">La <a href="http://www.figlet.org/fontdb.cgi" target="_blank" rel="noreferrer noopener" aria-label="varietà dei font  (apre in una nuova scheda)">varietà dei font </a>è notevole e consente di &#8220;giocare&#8221; con la fantasia. </p>



<h2 class="wp-block-heading">Boxes: non solo riquadri</h2>



<figure class="wp-block-image"><img decoding="async" width="737" height="339" src="https://www.gironi.it/blog/wp-content/uploads/2019/10/boxes-e1572456444706.png" alt="boxes e1572456444706" class="wp-image-1324" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/10/boxes-e1572456444706.png 737w, https://www.gironi.it/blog/wp-content/uploads/2019/10/boxes-e1572456444706-300x138.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption><em>boxes non è solo per tracciare semplici riquadri&#8230;</em></figcaption></figure>



<p class="wp-block-paragraph">Il nome di questo comando è già esplicativo: si tratta di disegnare un bordo attorno a un testo. Ma boxes non si limita a tratteggiare un bordo: consente infatti di dare libero sfogo alla fantasia, di strappare un sorriso, di venire in aiuto a chi scrive codice e agli amministratori di sistema.</p>



<p class="wp-block-paragraph">Digitate un semplice</p>



<pre class="wp-block-preformatted">boxes -l</pre>



<p class="wp-block-paragraph">e potrete vedere la miriade di stili a vostra disposizione: riquadri di ogni genere, ma anche pergamene, babbi natale, animali&#8230; Il comando poi è ricco di opzioni per gestire al meglio le dimensioni e le spaziature. Insomma, vi troverete presto a voler riquadrare ogni cosa!</p>



<h2 class="wp-block-heading">Toilet: il nome è così così, ma il risultato&#8230;</h2>



<figure class="wp-block-image"><img decoding="async" width="737" height="191" src="https://www.gironi.it/blog/wp-content/uploads/2019/10/toilet-e1572456414761.png" alt="toilet e1572456414761" class="wp-image-1327" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/10/toilet-e1572456414761.png 737w, https://www.gironi.it/blog/wp-content/uploads/2019/10/toilet-e1572456414761-300x78.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption><em>Bordi e arcobaleni&#8230;tutta l&#8217;allegria di Toilet</em></figcaption></figure>



<p class="wp-block-paragraph">Lo so. Un comando che si chiama toilet certo non fa venire in mente nulla di buono. Eppure posso assicurare che toilet è capace di aggiungere una nota di colore e creatività di sapore &#8220;vecchia scuola ansi art&#8221; ad ogni scritta. </p>



<p class="wp-block-paragraph">Provate qualcosa tipo:</p>



<pre class="wp-block-preformatted">echo "Ciao Mondo!" | toilet -f small -F border --gay</pre>



<p class="wp-block-paragraph">e sono certo che passerete un sacco di tempo a giocare con gli effetti di colore che lolcat può donare a un testo.</p>



<h2 class="wp-block-heading">Lolcat: la bellezza delle sfumature</h2>



<figure class="wp-block-image"><img decoding="async" width="737" height="451" src="https://www.gironi.it/blog/wp-content/uploads/2019/10/lolcat.png" alt="Screenshot Lolcat" class="wp-image-1329" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/10/lolcat.png 737w, https://www.gironi.it/blog/wp-content/uploads/2019/10/lolcat-300x184.png 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption>Un font isometrico di Figlet incontra i gradienti di Lolcat&#8230;</figcaption></figure>



<p class="wp-block-paragraph">La definitiva dimostrazione del fatto che la linea di comando non è affatto noiosa o seriosa viene dalle sfumature arcobaleno di Lolcat: aggiungete il comando in una concatenazione di comandi, magari &#8220;sposandolo&#8221; con un font spettacolare di Figlet e potrete sperimentare una varietà di forme e colori capaci di soprendervi.</p>



<h2 class="wp-block-heading">Usare questi strumenti in VI</h2>



<p class="wp-block-paragraph">A me piace avere la possbilità di usare questi strumenti all&#8217;interno dell&#8217;editor che uso quotidianamente, dunque ho inserito questa mappatura nel mio file .vimrc:</p>



<pre class="wp-block-preformatted">vmap &lt;F2&gt; !boxes &lt;CR&gt;
vmap &lt;F3&gt; !boxes -d shell &lt;CR&gt; 
vmap &lt;F4&gt; !figlet &lt;CR&gt;</pre>



<p class="wp-block-paragraph">basta selezionare la frase da evidenziare e poi usare uno dei tasti funzione mappati per ottenere l&#8217;effetto desiderato.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/la-magia-del-testo-nella-console-figlet-boxes-lolcat-toilet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tmux &#8211; più programmi dalla riga di comando</title>
		<link>https://www.gironi.it/blog/tmux-piu-programmi-dalla-riga-di-comando/</link>
					<comments>https://www.gironi.it/blog/tmux-piu-programmi-dalla-riga-di-comando/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Sat, 12 Oct 2019 14:56:08 +0000</pubDate>
				<category><![CDATA[cli]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tools]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=1235</guid>

					<description><![CDATA[Parlare di &#8220;Terminal Multiplexer&#8221; può spaventare: cosa sarà mai? La risposta è: qualcosa di molto utile, specialmente se siete soliti lavorare su server remoti. Se poi la linea di comando per voi è un piacere, allora Tmux può riservarvi ore di gioia… Tmux consente infatti di aprire sessioni su server remoti, lanciare operazioni, staccare la &#8230; <a href="https://www.gironi.it/blog/tmux-piu-programmi-dalla-riga-di-comando/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Tmux &#8211; più programmi dalla riga di comando"</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Parlare di &#8220;<em>Terminal Multiplexer</em>&#8221; può spaventare: cosa sarà mai?<br> La risposta è: qualcosa di molto utile, specialmente se siete soliti lavorare su server remoti. Se poi la linea di comando per voi è un piacere, allora Tmux può riservarvi ore di gioia…<br></p>



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



<p class="wp-block-paragraph">Tmux consente infatti di aprire sessioni su server remoti, lanciare operazioni, staccare la finestra, andarsene a casa e riattaccare la sessione ritrovando tutto come se nulla fosse accaduto.<br> Si tratta della funzione principale del glorioso <a rel="noreferrer noopener" href="https://www.gnu.org/software/screen/" target="_blank">GNU Screen</a>, ma cui Tmux aggiunge una moltitudine di migliorie.</p>



<p class="wp-block-paragraph"><strong>Con Tmux lo schermo si può suddividere come si vuole. L&#8217;organizzazione in sessioni/finestre/pannelli consente di avere spazi di lavoro straordinariamente razionali e organizzati</strong>. <br>Al punto che per alcuni è diventato un&#8217;alternativa ai comuni (e pesanti) window manager.<br></p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://www.gironi.it/blog/wp-content/uploads/2019/10/tmux-esempio.jpg" alt="Esempio di Tmux" class="wp-image-1244" width="677" height="340" srcset="https://www.gironi.it/blog/wp-content/uploads/2019/10/tmux-esempio.jpg 1353w, https://www.gironi.it/blog/wp-content/uploads/2019/10/tmux-esempio-300x151.jpg 300w, https://www.gironi.it/blog/wp-content/uploads/2019/10/tmux-esempio-1024x515.jpg 1024w, https://www.gironi.it/blog/wp-content/uploads/2019/10/tmux-esempio-1200x603.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption>Esempio di sessione Tmux: nello stesso schermo ho disposto Vi, Htop, Newsboat, Sc-Im&#8230;</figcaption></figure></div>



<p class="wp-block-paragraph"> Tornando alla nostra amata linea di comando, Tmux presenta un vantaggio, che è anche un&#8217;arma a doppio taglio: l&#8217;<a href="#personalizzare" class="rank-math-link">estrema configurabilità</a>.<br> Ho conosciuto persone impegnate più nel configurare la linea di stato e il key mapping di Tmux che a usarlo realmente…anzi, una di quelle persone sono proprio io 🙂</p>



<p class="wp-block-paragraph"> Il mio consiglio allora è quello di &#8220;farsi le ossa&#8221; smanettando con il file di configurazione<em> .tmux.conf</em>, esultare per le migliorie e giocando con <em><a rel="noreferrer noopener" href="https://github.com/powerline/powerline" target="_blank">powerline</a></em> e <a rel="noreferrer noopener" href="https://github.com/tmux-plugins" target="_blank">plugins</a>, ma poi tornare all&#8217;essenzialità. Perchè la velocità, il poter non staccare mai le mani dalla tastiera, la pulizia nell&#8217;organizzazione delle informazioni sono il segreto e la forza di Tmux. Che è un programma &#8220;esigente&#8221;, come Vi. Ma alla fine ripaga per lo sforzo, e lo fa con gli interessi.</p>



<div class="wp-block-uagb-advanced-heading uagb-block-b8f08a83"><h2 class="uagb-heading-text">Sessioni, finestre, pannelli</h2><div class="uagb-separator-wrap"><div class="uagb-separator"></div></div><p class="uagb-desc-text">dove comincia il divertimento</p></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Per poter lavorare con profitto con Tmux è necessario capire la &#8220;logica&#8221; dell&#8217;applicazione. E questa logica è tutta compresa nel modo in cui il programma gestisce gli elementi base: <strong>sessioni</strong>, <strong>finestre</strong>, <strong>pannelli</strong>.</p>



<p class="wp-block-paragraph">Si comincia dalla <strong>sessione</strong>. Ogni volta che lanciamo Tmux viene creata una sessione. Se vogliamo dare un nome alla nostra sessione (cosa che consiglio sempre di fare, assegnando nomi significativi, a differenza di ciò che farò in questo esempio&#8230;) basterà digitare </p>



<pre class="wp-block-preformatted">​tmux​​ ​new​​ ​-s​​ ​primasessione</pre>



<p class="wp-block-paragraph">Il risultato sarà uno schermo nero con la riga di stato in basso che riporterà il nome della sessione.</p>



<hr class="wp-block-separator"/>



<div class="wp-block-uagb-info-box uagb-infobox__outer-wrap uagb-block-77e32502"><div class="uagb-infobox__content-wrap uagb-infobox uagb-infobox-has-icon uagb-infobox-icon-left uagb-infobox-left uagb-infobox-stacked-tablet uagb-infobox-image-valign-middle uagb-infobox-enable-border-radius "><div class="uagb-ifb-left-right-wrap"><div class="uagb-ifb-image-icon-content uagb-ifb-imgicon-wrap"><div class="uagb-ifb-icon-wrap"><span class="uagb-ifb-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 512 512"><path d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg></span></div></div><div class="uagb-ifb-content"><div class="uagb-ifb-title-wrap"><h4 class="uagb-ifb-title">L&#8217;onnipresente prefisso</h4></div><div class="uagb-ifb-text-wrap"><p class="uagb-ifb-desc">I comandi Tmux vengono inseriti attraverso una sequenza di tasti che comincia con il prefisso CTRL-B. <a href="#personalizzare">Vedremo più avanti</a> come ridefinire questa scomoda combinazione con la più agevole (per le dita) sequenza CTRL-A tipica di screen. Ogni volta che scriverò dunque PREFISSO intenderò questa combinazione di tasti.</p></div></div></div></div></div>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">La sessione può essere staccata</h2>



<p class="wp-block-paragraph">Se nel mio terminale lancio un applicativo, ad esempio htop, mi basterà digitare la sequenza PREFISSO-D per tornare al prompt. Cosa è successo? <br>Semplice. Il programma in realtà è ancora &#8220;vivo&#8221;, ma è stato <em>staccato</em>. Se digito:</p>



<pre class="wp-block-preformatted">tmux ls</pre>



<p class="wp-block-paragraph">posso notare come la sessione che ho staccato &#8220;esista ancora&#8221;. Mi basterà &#8220;riattaccarla&#8221; con:</p>



<pre class="wp-block-preformatted">tmux​​ attach​​ -t primasessione​​ </pre>



<p class="wp-block-paragraph">e come per magia ritroverò il mio htop in azione! Non è magia, ma ci si avvicina.<br>Per inciso, se voglio &#8220;uccidere&#8221; la sessione il comando è:</p>



<pre class="wp-block-preformatted">tmux​​ kill-session​​ -t​​ primasessione</pre>



<p class="wp-block-paragraph">E&#8217; giunto il momento di creare una sessione che presenti due finestre. Diciamo una prima finestra con una shell, e la seconda con un Midnight Commander. Digito dunque:</p>



<pre class="wp-block-preformatted">tmux new -s miasessione -n miashell</pre>



<p class="wp-block-paragraph">Tutto come previsto. Si apre la finestra con la sessione &#8220;miasessione&#8221; e il prompt della shell. Ora mi basta creare una nuova finestra con PREFISSO-C e lanciare mc.</p>



<p class="wp-block-paragraph">Visto? nella riga di stato posso vedere la presenza, nella sessione miasessione, delle due finestre: miashell e mc. Per rinominare una finestra mi basta usare PREFISSO-, (il prefisso CTRL-B oppure CTRL-A se l&#8217;ho ridefinito, seguito da una virgola).</p>



<p class="wp-block-paragraph">Le finestre sono precedute da un numero. Di default la prima finestra ha il numero 0, ma <a href="#personalizzare">vedremo in seguito</a> come ridefinire la cosa per far iniziare la sequenza dal numero 1. </p>



<p class="wp-block-paragraph">Mi basterà digitare PREFISSO+numero per &#8220;saltare&#8221; da una finestra a un&#8217;altra.</p>



<p class="wp-block-paragraph">La parte più bella però è la successiva. Posso infatti dividere ogni mia finestra in più <strong>pannelli</strong>.</p>



<p class="wp-block-paragraph">Se guardate l&#8217;immagine più sopra con i 4 applicativi disposti in uno schema 2&#215;2 potete facilmente capire cosa si possa ottenere. In pratica, lo schermo può essere suddiviso a piacimento, disponendo i programmi come risulta più comodo. L&#8217;esempio classico di un amministratore di server che può monitorare più macchine o il programmatore che tiene a schermo editor, debugger e riga comando / output possono bastare a far capire l&#8217;utilità di una soluzione di questo tipo.</p>



<p class="wp-block-paragraph">La suddivisione dello schermo avviene con i comandi PREFISSO-% per la suddivisione verticale e PREFISSO-&#8221; per quella orizzontale, ma redifiniremo questi tasti in maniera più intuitiva agendo sul file di configurazione.</p>



<h2 class="has-text-align-center wp-block-heading" id="personalizzare">La gioia della personalizzazione</h2>



<p class="wp-block-paragraph">La personalizzazione di Tmux avviene tutta attraverso la <strong>scrittura del file <em>.tmux.conf</em></strong> presente di default nella propria home directory.</p>



<p class="wp-block-paragraph">La fantasia e le innumerevoli possibilità possono fornire ore e ore di svago per chiunque coltivi la passione della customizzazione, consentendo anche soluzioni assai avanzate. Non è questa la sede per spingerci verso arditi settaggi (lascio ai link e ai libri qua sotto il compito per i più curiosi e interessati), ma mi limito a &#8220;ritoccare&#8221; alcuni aspetti molto importanti per quanto riguarda le funzionalità base del programma.</p>



<p class="wp-block-paragraph">Apro dunque con il mio editor preferito (oppure creo) il file .tmux.conf</p>



<p class="wp-block-paragraph">La primissima cosa che andrò a modificare è il PREFISSO. CTRL-B è infatti una sequenza che giudico infelicissima. Meglio, molto meglio CTRL-A, che non a caso è il prefisso standard di GNU Screen:</p>



<pre class="wp-block-preformatted"># Ctrl-a al posto di Ctrl-b
# Cancello la combinazione C-b
unbind C-b
# e setto C-a
set -g prefix C-a</pre>



<p class="wp-block-paragraph">Voglio poi che l&#8217;indice base per finestre e pannelli parta da 1 anzichè da 0:</p>



<pre class="wp-block-preformatted"># Indice base per le finestre a 1 invece di 0
set -g base-index 1
# Indice per i pannelli a 1 invece di 0
setw -g pane-base-index 1</pre>



<p class="wp-block-paragraph">Voglio avere il manuale a portata di tasto PREFISSO-?, e voglio poter cambiare la mia configurazione e ricaricarla con una semplice sequenza di tasti (PREFISSO-r) per fare i miei esperimenti:</p>



<pre class="wp-block-preformatted"># mostra il manuale
bind-key ? command-prompt "split-window -h 'exec man %%'"
# ricarica il file di configurazione
bind r source-file ~/.tmux.conf  \; display  "Ricaricato!"</pre>



<p class="wp-block-paragraph">Voglio divertirmi a suddividere la mia finestra in più pannelli in maniera intuitiva. Uso \ oppure | per la suddivisione verticale e &#8211; per quella orizzontale. Semplice e intuitivo!</p>



<pre class="wp-block-preformatted"># Dividi
bind-key - split-window -v
bind-key \ split-window -h
bind-key | split-window -h</pre>



<p class="wp-block-paragraph">Abilitiamo il mouse, e poi voglio i colori!</p>



<pre class="wp-block-preformatted"># Attiva il mouse
set -g mouse on

# 256 colori
set -g default-terminal "screen-256color"</pre>



<p class="wp-block-paragraph">Su riga di comando, taglia e incolla personalizzati, potenziamento della clipboard, temi e plugin lascio il divertimento a voi, e le spiegazioni ai testi consigliati. E&#8217; tutto molto facile, tutto molto ma molto ricco di soddisfazioni. Buon divertimento con Tmux!</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-uagb-advanced-heading uagb-block-f87ef893"><h2 class="uagb-heading-text">Approfondimenti</h2><div class="uagb-separator-wrap"><div class="uagb-separator"></div></div><p class="uagb-desc-text">le risorse in rete, i testi per sapere tutto</p></div>



<h3 class="has-text-align-center wp-block-heading">Risorse online</h3>



<ul class="wp-block-list"><li><a rel="noreferrer noopener" aria-label="The Tao of tmux - leggilo online (apre in una nuova scheda)" href="https://leanpub.com/the-tao-of-tmux/read" target="_blank">The Tao of tmux &#8211; leggilo online</a> (inglese)</li><li><a rel="noreferrer noopener" aria-label="Il manuale di Tmux (apre in una nuova scheda)" href="http://man.openbsd.org/OpenBSD-current/man1/tmux.1" target="_blank">Il manuale di Tmux</a> (inglese)</li><li><a href="https://www.linode.com/docs/networking/ssh/persistent-terminal-sessions-with-tmux/" target="_blank" rel="noreferrer noopener" aria-label="Una sintetica introduzione ai comandi principali  (apre in una nuova scheda)">Una sintetica introduzione ai comandi principali </a>(inglese)</li></ul>



<h3 class="has-text-align-center wp-block-heading">Due ottimi libri acquistabili su Amazon</h3>



<p class="wp-block-paragraph"></p>

]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/tmux-piu-programmi-dalla-riga-di-comando/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Google Analytics da riga di comando: generare un report</title>
		<link>https://www.gironi.it/blog/google-analytics-report-da-riga-di-comando/</link>
					<comments>https://www.gironi.it/blog/google-analytics-report-da-riga-di-comando/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Sun, 22 Sep 2019 16:36:43 +0000</pubDate>
				<category><![CDATA[analytics]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[script]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=1213</guid>

					<description><![CDATA[Per chi lavora prevalentemente da terminale &#8211; penso ad esempio agli amministratori di sistema, a chi preferisce un ambiente senza fronzoli e distrazioni, a chi vuole risparmiare memoria o semplicemente trova più appagante la &#8220;vecchia scuola&#8221; &#8211; può nascere se non l&#8217;esigenza almeno il desiderio di consultare i dati di Google Analytics senza ricorrere al &#8230; <a href="https://www.gironi.it/blog/google-analytics-report-da-riga-di-comando/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Google Analytics da riga di comando: generare un report"</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Per chi lavora prevalentemente da terminale &#8211; penso ad esempio agli amministratori di sistema, a chi preferisce un ambiente senza fronzoli e distrazioni, a chi vuole risparmiare memoria o semplicemente trova più appagante la &#8220;vecchia scuola&#8221; &#8211; può nascere se non l&#8217;esigenza almeno il desiderio di <strong>consultare i dati di Google Analytics senza ricorrere al browser</strong>.</p>



<p class="wp-block-paragraph">Personalmente, trovo utile avere nella mia scatola degli attrezzi informatici uno script che mi consenta di avere i dati salienti di Analytics, quelli per me utili da monitorare quotidianamente, in breve tempo.</p>



<p class="wp-block-paragraph">La procedura per realizzare l&#8217;obiettivo tramite python e l&#8217;API Google Analytics non è delle più immediate&#8230; però vale bene la mezz&#8217;oretta di tempo necessaria per la messa in opera.</p>



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



<p class="wp-block-paragraph">Occorre procedere per passaggi. In primo luogo ho installato i moduli python necessari via pip:</p>



<h2 class="wp-block-heading">Installo i moduli python</h2>



<pre class="wp-block-preformatted">pip install --upgrade google-api-python-client
pip install --upgrade oauth2client</pre>



<p class="wp-block-paragraph">Ho seguito i passaggi indicati da Google per la creazione di un&#8217;utenza di servizio nelle API.</p>



<h2 class="wp-block-heading">Creo il progetto</h2>



<p class="wp-block-paragraph">Per creare il progetto si parte da qua:</p>



<pre class="wp-block-preformatted"><a rel="noreferrer noopener" aria-label=" (apre in una nuova scheda)" href="https://console.developers.google.com/flows/enableapi?apiid=analyticsreporting.googleapis.com&amp;credential=client_key" target="_blank">https://console.developers.google.com/flows/enableapi?apiid=analyticsreporting.googleapis.com&amp;credential=client_key</a></pre>



<p class="wp-block-paragraph">Nella piattaforma di sviluppo Google ho creato un progetto (io l&#8217;ho chiamato &#8220;analytics&#8221;, che fantasia&#8230;).</p>



<h2 class="wp-block-heading">Creo il service account</h2>



<p class="wp-block-paragraph">A questo punto, ho creato il service account scegliendo quel progetto:</p>



<pre class="wp-block-preformatted"><a href="https://console.cloud.google.com/iam-admin/serviceaccounts" target="_blank" rel="noreferrer noopener" aria-label=" (apre in una nuova scheda)">https://console.cloud.google.com/iam-admin/serviceaccounts</a></pre>



<p class="wp-block-paragraph">Ho creato la chiave. Ho generato e scaricato il file json nella cartella dove ho salvato il mio script, rinominandolo <strong>google_secrets.json</strong></p>



<p class="wp-block-paragraph">Ho associato al mio account Analytics la casella email generata da Google come utente con poteri di analisi e visualizzazione. (Dalle <em>impostazioni, account, utenti</em>).</p>



<p class="wp-block-paragraph">La parte più noiosa è terminata, e per fortuna non dovrò più ripeterla. Ora viene la parte migliore.</p>



<h2 class="wp-block-heading">Finalmente&#8230;lo script di esempio</h2>



<p class="wp-block-paragraph">Ho scaricato il file d&#8217;esempio <a rel="noreferrer noopener" aria-label="HelloAnalytics.py (apre in una nuova scheda)" href="https://developers.google.com/analytics/resources/samples/service-py-v4.txt" target="_blank">HelloAnalytics.py</a> inserendo il percorso del file JSON e l&#8217;id della vista da interrogare. </p>



<p class="wp-block-paragraph">Le variabili da valorizzare sono:</p>



<pre class="wp-block-preformatted">KEY_FILE_LOCATION = ''
</pre>



<p class="wp-block-paragraph">dove ho indicato il mio file google_secrets.json. E<br></p>



<pre class="wp-block-preformatted">VIEW_ID = ''</pre>



<p class="wp-block-paragraph">dove andrò a scrivere l&#8217;id della vista Analytics. <br>Per trovare l&#8217;id della <strong>vista </strong>ho usato Account Explorer: </p>



<pre class="wp-block-preformatted"><a rel="noreferrer noopener" aria-label=" (apre in una nuova scheda)" href="https://ga-dev-tools.appspot.com/account-explorer/" target="_blank">https://ga-dev-tools.appspot.com/account-explorer/ </a></pre>



<p class="wp-block-paragraph">oppure basta guardare in Analytics.</p>



<p class="wp-block-paragraph">Poi ho lanciato </p>



<pre class="wp-block-preformatted">python HelloAnalytics.py</pre>



<p class="wp-block-paragraph">Tutto ok, lo script restituisce il risultato atteso, cioè i dati degli ultimi 7 giorni delle sessioni per paese. </p>



<p class="wp-block-paragraph">Ora non resta che modificare lo script a proprio piacimento, giocando con date, dimensioni e metriche al fine di ottenere in output ciò che più serve. E qui, l&#8217;unico limite diventa la fantasia.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/google-analytics-report-da-riga-di-comando/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Strumenti per lavorare da riga di comando in Windows</title>
		<link>https://www.gironi.it/blog/strumenti-per-lavorare-da-riga-di-comando-in-windows/</link>
					<comments>https://www.gironi.it/blog/strumenti-per-lavorare-da-riga-di-comando-in-windows/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Mon, 01 Jan 2018 20:38:39 +0000</pubDate>
				<category><![CDATA[pensieri]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[far commander]]></category>
		<category><![CDATA[linea comando]]></category>
		<category><![CDATA[retrocomputing]]></category>
		<category><![CDATA[take command]]></category>
		<category><![CDATA[vi]]></category>
		<guid isPermaLink="false">https://www.gironi.it/blog/?p=565</guid>

					<description><![CDATA[Lo spunto dal quale nasce questo post è in realtà una domanda: ha ancora un senso, una qualche utilità, scegliere di lavorare in Windows in modalità riga di comando, per l&#8217;utente &#8220;normale&#8221; (o quasi), oggi? Me lo chiedevo mentre digitavo un testo dentro a VI, come mi capita spesso da oltre 30 anni a questa &#8230; <a href="https://www.gironi.it/blog/strumenti-per-lavorare-da-riga-di-comando-in-windows/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Strumenti per lavorare da riga di comando in Windows"</span></a>]]></description>
										<content:encoded><![CDATA[<p>Lo spunto dal quale nasce questo post è in realtà una domanda: ha ancora un senso, una qualche utilità, scegliere di lavorare in Windows in modalità riga di comando, per l&#8217;utente &#8220;normale&#8221; (o quasi), oggi?</p>
<p>Me lo chiedevo mentre digitavo un testo dentro a VI, come mi capita spesso da oltre 30 anni a questa parte.<br />
VI: un pezzo significativo della storia dell&#8217;informatica. Qualcuno direbbe, di archeologia.<br />
Mi chiedo se, al di là dell&#8217;effetto nostalgia, sia uno strumento ancora capace di ispirare. Talvolta, mi capita di cercare un&#8217;idea, uno spunto, davanti allo schermo nero di VI. Io chiamo quei momenti speciali &#8220;<em>vi meditations</em>&#8220;&#8230;<span id="more-565"></span><br />
Un editor grafico è qualcosa che spinge ad agire sul testo in maniera automatica, impulsiva. Clicco e trascino.<br />
In VI il testo viene sì inserito con la flessibilità che e&#8217; propria dei programmi di videoscrittura, ma <strong>ogni modifica richiede un&#8217;attenzione specifica all&#8217;operazione stessa</strong>.<br />
Per modificare l&#8217;ordine di un blocco di testo io devo &#8220;vedere&#8221; il blocco, fissarne l&#8217;estensione e la posizione, agire su di esso con dei comandi espliciti, non con gesti. E questo porta a <strong>&#8220;vedere 2 volte&#8221; il testo, ad agire con consapevolezza e meno d&#8217;impulso</strong>.<br />
VI porta con sè il rigore del vedere con attenzione un testo.</p>
<h3>La riga di comando in Windows.</h3>
<p>Ho deciso di dedicare un post agli strumenti più adatti, a mio sindacabilissimo avviso, per passare un po&#8217; di tempo proficuo a contatto con la riga di comando in Windows. Chi usa Linux ha già tutto quanto pronto, basta solo aprire la console del terminale e smanettare. Per chi è solito invece armeggiare dentro Windows c&#8217;è qualche cosa da sistemare.<br />
Proporrò solo strumenti gratuiti e molto comuni, perchè è giusto che sia così. Sperimentare è un diritto (e un piacere).</p>
<h3>Gli strumenti di cui parlerò: una lista</h3>
<ul>
<li><a href="https://sourceforge.net/projects/console/files/" target="_blank" rel="noopener noreferrer">Console2</a></li>
<li><a href="https://conemu.github.io/" target="_blank" rel="noopener noreferrer">ConEmu</a></li>
<li><a href="https://jpsoft.com/products/tcc-le.html" target="_blank" rel="noopener noreferrer">TCC / LE</a></li>
<li><a href="http://gnuwin32.sourceforge.net/packages/coreutils.htm" target="_blank" rel="noopener noreferrer">Coreutils</a></li>
<li><a href="https://www.farmanager.com/" target="_blank" rel="noopener noreferrer">Far Commander</a></li>
<li><a href="https://vim.sourceforge.io/download.php#pc" target="_blank" rel="noopener noreferrer">Vim</a></li>
</ul>
<h3>Una Console più gradevole e funzionale: Console2</h3>
<p>Per divertirci insieme, avremo bisogno di alcune cose.<br />
In primo luogo, mi sembra piacevole sostituire la schermata della modalità comandi di Windows con una console un po&#8217; più gradevole. A questo scopo userò <strong>Console2</strong>. Il nome non è dei migliori, ma il software è molto ben fatto.<br />
Come suggerisce il nome, si tratta di un terminale con delle possibilità di personalizzazione: colori, font, dimensioni finestra, più istanze in tab, possibilità di settare la shell predefinita, possibilità che andremo subito a sfruttare&#8230;</p>
<p>Andiamo dunque a <a href="https://sourceforge.net/projects/console/files/" target="_blank" rel="noopener noreferrer">scaricare Console2</a> e lo installiamo.</p>
<p><figure id="attachment_597" aria-describedby="caption-attachment-597" style="width: 700px" class="wp-caption alignleft"><img decoding="async" class="screenshot wp-image-597 size-full" src="https://www.gironi.it/blog/wp-content/uploads/2018/01/console2-term.jpg" alt="Console2" width="700" height="554" srcset="https://www.gironi.it/blog/wp-content/uploads/2018/01/console2-term.jpg 700w, https://www.gironi.it/blog/wp-content/uploads/2018/01/console2-term-300x237.jpg 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption id="caption-attachment-597" class="wp-caption-text">Console2 in azione&#8230;</figcaption></figure></p>
<h3>Una console ancora più amichevole e funzionale&#8230;ConEmu</h3>
<p>Dopo anni di onorato servizio con Console2, ho scoperto recentemente un emulatore di terminale ancora migliore. Si chiama <strong>ConEmu</strong> e lo potete scaricare all&#8217;indirizzo <a href="https://conemu.github.io/" target="_blank" rel="noopener noreferrer">https://conemu.github.io/</a></p>
<p><strong>ConEmu</strong> è un vero piacere da usare: integra il <strong>file manager Far</strong> (vedi sotto) alla perfezione, consente di suddividere l&#8217;ambiente in più finestre, ha un miliardo di personalizzazioni e può usare la shell che preferite, anche TCC di cui parlo poco sotto&#8230;</p>
<p><figure id="attachment_611" aria-describedby="caption-attachment-611" style="width: 620px" class="wp-caption aligncenter"><img decoding="async" class="wp-image-611 size-full" src="https://www.gironi.it/blog/wp-content/uploads/2018/01/conemu-image.jpg" alt="ConEmu" width="620" height="349" srcset="https://www.gironi.it/blog/wp-content/uploads/2018/01/conemu-image.jpg 620w, https://www.gironi.it/blog/wp-content/uploads/2018/01/conemu-image-300x169.jpg 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption id="caption-attachment-611" class="wp-caption-text">Console split: a sinistra una shell, a destra Vi&#8230;</figcaption></figure></p>
<h3>Una shell alternativa a cmd.exe: TCC /LE</h3>
<p>Andremo poi a usare una shell alternativa (e migliore) rispetto al cmd.exe di Windows. La cosa non è fondamentale, però&#8230;perchè no?<br />
Avremmo anche potuto utilizzare la <em>PowerShell</em> di Windows, anch&#8217;essa gratuita, però preferisco un&#8217;alternativa più &#8220;tradizionale&#8221; ai classici batch files. Fin dai tempi del DOS ho sempre trovato magnifico 4DOS, la migliore shell DOS di sempre, senza discussioni. Per Windows si chiama <strong>Take Command</strong> ed ha una versione eccellente a pagamento, che consiglio. Ha centinaia di variabili e funzioni, e comandi per lavorare su reti locali e via internet. <strong>Esiste però anche una versione &#8220;light&#8221; gratis</strong>. Non ha tutta la potenza della sorella maggiore, ma è comunque molto meglio del cmd.exe.<br />
Si chiama <strong>TCC/LE</strong> e la si può scaricare da qua:<br />
<a href="https://jpsoft.com/products/tcc-le.html" target="_blank" rel="noopener noreferrer">https://jpsoft.com/products/tcc-le.html</a></p>
<p>Lanciamo Console2, andiamo in &#8220;Edit&#8221;, poi &#8220;Settings&#8221; e settiamo la shell su tcc.exe:</p>
<p><figure id="attachment_589" aria-describedby="caption-attachment-589" style="width: 620px" class="wp-caption alignleft"><img decoding="async" class="screenshot wp-image-589 size-full" src="https://www.gironi.it/blog/wp-content/uploads/2018/01/tcc.jpg" alt="shell tccle in console2" width="620" height="644" srcset="https://www.gironi.it/blog/wp-content/uploads/2018/01/tcc.jpg 620w, https://www.gironi.it/blog/wp-content/uploads/2018/01/tcc-289x300.jpg 289w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /><figcaption id="caption-attachment-589" class="wp-caption-text">settiamo la shell tcc/le in console2</figcaption></figure></p>
<p>Avremo quindi a disposizione una console moderna e una buona shell per sprigionare tutta la potenza della riga di comando sotto Windows!</p>
<p><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<ins class="adsbygoogle" style="display: block; text-align: center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-8959146712588144" data-ad-slot="7798917447"></ins><br />
<script><br />
     (adsbygoogle = window.adsbygoogle || []).push({});<br />
</script></p>
<h3>Un po&#8217; di classiche utilità da liena di comando: unix &#8211; coreutils</h3>
<p>Per dare a Windows molte possibilità stuzzicanti in più sarebbe bello avere a disposizione i tool testuali presenti in tutti i dialetti Unix.</p>
<p>Detto fatto, <strong>scarichiamo la versione windows delle coreutils</strong>:<br />
<a href="http://gnuwin32.sourceforge.net/packages/coreutils.htm" target="_blank" rel="noopener noreferrer">http://gnuwin32.sourceforge.net/packages/coreutils.htm</a></p>
<p>Avremo quindi a disposizione strumenti come <strong>fmt,wc e tanti altri</strong>&#8230;</p>
<h3>Una digressione&#8230;modificare il path sotto Windows</h3>
<p>Solo come appunto, il metodo più rapido per modificare il path sotto Windows e quindi rendere accessibili da riga di comando le directory desiderate in qualsiasi punto del file system ci si trovi è quello di aprire la finestra delle &#8220;propietà del sistema&#8221;:</p>
<p><figure id="attachment_574" aria-describedby="caption-attachment-574" style="width: 840px" class="wp-caption alignleft"><img decoding="async" class="screenshot wp-image-574 size-large" src="https://www.gironi.it/blog/wp-content/uploads/2018/01/sistema-1024x645.jpg" alt="sistema" width="840" height="529" srcset="https://www.gironi.it/blog/wp-content/uploads/2018/01/sistema-1024x645.jpg 1024w, https://www.gironi.it/blog/wp-content/uploads/2018/01/sistema-300x189.jpg 300w, https://www.gironi.it/blog/wp-content/uploads/2018/01/sistema.jpg 1171w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-574" class="wp-caption-text">Apro la voce &#8220;Sistema&#8221;</figcaption></figure></p>
<p>Poi scelgo le &#8220;<em>Impostazioni di sistema avanzate</em>&#8220;:</p>
<p><img decoding="async" class="alignleft size-full wp-image-594" src="https://www.gironi.it/blog/wp-content/uploads/2018/01/sistema-avanzate.jpg" alt="sistema avanzate" width="800" height="261" srcset="https://www.gironi.it/blog/wp-content/uploads/2018/01/sistema-avanzate.jpg 800w, https://www.gironi.it/blog/wp-content/uploads/2018/01/sistema-avanzate-300x98.jpg 300w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>e per finire scelgo di modificare le &#8220;Variabili d&#8217;ambiente&#8221;, dove ovviamente troverò il mio path&#8230;</p>
<p><img decoding="async" class="screenshot alignleft wp-image-587 size-full" src="https://www.gironi.it/blog/wp-content/uploads/2018/01/variabili-ambiente.jpg" alt="settare le variabili d'ambiente in windows 10" width="491" height="585" srcset="https://www.gironi.it/blog/wp-content/uploads/2018/01/variabili-ambiente.jpg 491w, https://www.gironi.it/blog/wp-content/uploads/2018/01/variabili-ambiente-252x300.jpg 252w" sizes="(max-width: 491px) 85vw, 491px" /></p>
<h3>Un file manager a due pannelli per Windows: Far Commander</h3>
<p>Se in Dos non potevo vivere senza il Norton Commander (e poi il Volkov Commander) e se negli Unix il primo programma che installo è sempre Midnight Commander, come fare sotto Windows?</p>
<p>Semplice, usiamo <strong>Far Commander</strong>, a mio avviso il miglior file manager a due pannelli per terminale sotto Win.</p>
<p>Lo troviamo qua:<br />
<a href="https://www.farmanager.com/" target="_blank" rel="noopener noreferrer">https://www.farmanager.com/</a></p>
<p><strong>Lavora con i nomi di files lunghi, consente di fare ftp, ed è espandibile con un sacco di utili plugin</strong>, che trovate qua:<br />
<a href="https://plugring.farmanager.com" target="_blank" rel="noopener noreferrer">https://plugring.farmanager.com</a></p>
<p>Dategli un&#8217;occhiata&#8230;ricorda nulla?</p>
<p><figure id="attachment_571" aria-describedby="caption-attachment-571" style="width: 840px" class="wp-caption alignleft"><img decoding="async" class="screenshot wp-image-571 size-large" src="https://www.gironi.it/blog/wp-content/uploads/2018/01/far-1024x811.jpg" alt="far" width="840" height="665" srcset="https://www.gironi.it/blog/wp-content/uploads/2018/01/far-1024x811.jpg 1024w, https://www.gironi.it/blog/wp-content/uploads/2018/01/far-300x238.jpg 300w, https://www.gironi.it/blog/wp-content/uploads/2018/01/far.jpg 1106w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><figcaption id="caption-attachment-571" class="wp-caption-text">Se avete amato Norton Commander e in Linux usate Midnght Commander&#8230; Far Manager è il vostro programma per Windows</figcaption></figure></p>
<h3>E ora&#8230;VI! (anzi, vim&#8230;)</h3>
<p>Ora siamo pronti: è giunto il momento di installare sua maestà VI. Di tutti i possibili cloni, scelgo uno dei più diffusi, <strong>vim</strong>. Io preferisco usare una versione portabile, ma la scelta è solo questione di gusti. La pagina da cui partire è questa:<br />
<a href="https://vim.sourceforge.io/download.php#pc" target="_blank" rel="noopener noreferrer">https://vim.sourceforge.io/download.php#pc</a></p>
<p>una raccomandazione: usate la versione dalla serie 8 in poi, perchè sulla 7 ho riscontrato qualche problema in fase di attivazione dell&#8217;evidenziazione della sintassi.</p>
<p>Siamo pronti a usare vi&#8230;ma questa è storia per un prossimo post&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/strumenti-per-lavorare-da-riga-di-comando-in-windows/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AWK: un amico per aiutarci con i log files (e non solo)</title>
		<link>https://www.gironi.it/blog/awk-un-amico-per-aiutarci-con-i-log-files-e-non-solo/</link>
					<comments>https://www.gironi.it/blog/awk-un-amico-per-aiutarci-con-i-log-files-e-non-solo/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Wed, 24 Feb 2016 14:48:28 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[riga di comando]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[unix]]></category>
		<guid isPermaLink="false">http://www.gironi.it/blog/?p=445</guid>

					<description><![CDATA[AWK &#8211; Un po&#8217; di storia&#8230; La storia di AWK è lunga, in termini informatici lunghissima. E&#8217; il 1977 quando Alfred Aho, Peter Weinberger e Brian Kerningham (dalle iniziali dei tre il suo nome) presentano questo anomalo linguaggio interpretato, utilissimo per processare files di testo strutturati e generare report. AWK è un più di un &#8230; <a href="https://www.gironi.it/blog/awk-un-amico-per-aiutarci-con-i-log-files-e-non-solo/" class="more-link">Leggi tutto<span class="screen-reader-text"> "AWK: un amico per aiutarci con i log files (e non solo)"</span></a>]]></description>
										<content:encoded><![CDATA[<h3>AWK &#8211; Un po&#8217; di storia&#8230;</h3>
<p>La storia di AWK è lunga, in termini informatici lunghissima. E&#8217; il 1977 quando Alfred Aho, Peter Weinberger e Brian Kerningham (dalle iniziali dei tre il suo nome) presentano questo anomalo linguaggio interpretato, utilissimo per processare files di testo strutturati e generare report.<span id="more-445"></span></p>
<p><figure id="attachment_450" aria-describedby="caption-attachment-450" style="width: 203px" class="wp-caption alignleft"><img decoding="async" class="wp-image-450 size-medium" src="http://www.gironi.it/blog/wp-content/uploads/2016/02/awk-book-203x300.jpg" alt="awk-book" width="203" height="300" srcset="https://www.gironi.it/blog/wp-content/uploads/2016/02/awk-book-203x300.jpg 203w, https://www.gironi.it/blog/wp-content/uploads/2016/02/awk-book.jpg 337w" sizes="(max-width: 203px) 85vw, 203px" /><figcaption id="caption-attachment-450" class="wp-caption-text">la copertina del libro originale su AWK</figcaption></figure></p>
<p>AWK è un più di un semplice tool e forse qualcosa meno di un completo linguaggio di programmazione, nel senso moderno del termine (anche se è un completo linguaggio di programmazione). Mostra la sua piacevolezza e potenza come filtro in una <em>pipeline,&nbsp;</em>dove si fa preferire alla criptica sintassi di SED e consente di evitare di scomodare il Perl.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>AWK, nelle sue varianti (la più diffusa è quella a cura della Free Software Foundation, <a href="https://www.gnu.org/software/gawk/" target="_blank" rel="noopener noreferrer">GAWK</a>) è disponibile praticamente per qualsiasi sistema operativo possiate immaginare. Sì, anche il DOS.</p>
<p>Ma cosa rende insieme unico, attraente e insieme così poco conosciuto questo strumento che ha per logo un simpatico pinguino, 14 anni prima di Linux?</p>
<h3>La &#8220;strana&#8221; logica di AWK</h3>
<p>Per spiegarlo inizierò dal concetto di base su cui, a mio avviso, si fonda la corretta comprensione del linguaggio. No, non è un esempio di &#8220;Hello World&#8221;&#8230;</p>
<p>La logica di AWK è semplice, ma potente. Come quasi tutti gli strumenti nati in ambito UNIX, AWK <strong>ragiona in termini di linee di testo</strong>. Processa una linea alla volta applicando delle&nbsp;regole, composte da:</p>
<pre>pattern {azione}</pre>
<p>sia il pattern che l&#8217;azione sono opzionali.<br />
Se manca il pattern, l&#8217;azione viene applicata a tutti i record.<br />
Se a mancare è l&#8217;azione, il record che corrisponde al pattern è scritto sullo standard output (quindi di default sullo schermo).</p>
<p><strong>Quello che AWK fa, in pratica, è leggere il testo una riga alla volta, separarlo in campi definiti da un delimitatore (modificabile), assegnare i valori a delle variabili predefinite ($1,$2,$3&#8230;) e applicare le regole indicate dal programmatore.</strong></p>
<p>AWK può ricevere il testo da processare attraverso una <em>pipe</em>, oppure può presentarsi sotto forma di script, invocabile con awk -f nomescript.awk e processare il file o i files indicato/i.</p>
<h3>Un esempio vale mille parole</h3>
<p>Complicato? Un esempio mostrerà tutta la semplicità del linguaggio.<br />
Immaginiamo di avere un file di testo chiamato amici.txt:</p>
<pre>Aldo, 23
Carlo, 28
Mario, 35
Piero, 17
Stefano, 30
Umberto, 29</pre>
<p>Ok, l&#8217;esempio è senza senso, ma serve solo per illustrare l&#8217;utilizzo di AWK&#8230;</p>
<p>se io passo l&#8217;output di cat amici.txt tramite una pipe ad AWK in questo modo:</p>
<pre>cat amici.txt | awk '/Stefano/ {print $2}'</pre>
<p>oppure processo amici.txt direttamente così:</p>
<pre> awk '/Stefano/ { print $2 }' amici.txt</pre>
<p>il risultato a schermo sarà&#8230; 30</p>
<p>Ricordate? pattern e azione. Se e quando AWK trova &#8220;Stefano&#8221; stampa il secondo campo, cioè il numero 30. La virgola è il delimitatore di default di AWK. Se avessi avuto come delimitatore il punto e virgola avrei potuto scrivere:</p>
<pre>cat amici.txt | awk -F; "/Stefano/&nbsp;{print $2}"</pre>
<p>Giochiamo un po&#8217;&#8230; se avessi scritto:</p>
<pre>cat amici.txt | awk "/Stefano/ {print $2, $1}"</pre>
<p>il risultato sarebbe stato:</p>
<pre>30, Stefano</pre>
<p>iniziate a capire l&#8217;utilità di questo strumento, ad esempio per processare al volo files csv?</p>
<p>un po&#8217; di esempi banalissimi:</p>
<pre>{print $1} stampa il primo campo di ogni linea di un file

 /pippo/   stampa tutte le linee che contengono pippo

lenght($0) &lt; 40&nbsp;stampa tutte le linee che contengono meno di 40 caratteri</pre>
<p>e via dicendo&#8230;</p>
<p>Come dicevo, posso usare AWK in una pipe, ma posso anche scrivere dei veri e propri programmi, di maggiore complessità.</p>
<h3>Uno script AWK è fatto&nbsp;di 3 parti (al massimo&#8230;)</h3>
<p>Un programma AWK consta di tre parti: le assegnazioni e le operazioni per così dire preliminari, tipo l&#8217;assegnazione di variabili globali, che troveranno posto qui:</p>
<pre>BEGIN {
...
}</pre>
<p>(ovviamente questa sezione è del tutto opzionale)</p>
<p>poi seguiranno le istruzioni secondo la logica /pattern/ {azione} che abbiamo già visto.<br />
I pattern possono essere combinati con gli operatori booleani || (OR), &amp;&amp; (AND) e ! (NOT).<br />
Le azioni consistono di uno o più comandi, funzioni o assegnazione di variabili, separate da a capo o da punti e virgola e contenute dentro le parentesi graffe {}.<br />
I comandi possono essere assegnazione di variabili (o array), comandi di stampa, funzioni interne, comandi per controllare il flusso dell&#8217;operazione.</p>
<p>e per finire, anch&#8217;esso opzionale:</p>
<pre>END {
...
}</pre>
<p>dove andrò, ad esempio, a stampare il risultato finale di una mia elaborazione (potrei aver sommato tutti i valori presenti in $2 di tutte le righe in una variabile e dentro END andrò a stampare, alla fine, il valore totale di quella variabile&#8230;).</p>
<p>Se salvo il mio script con un nome, ad esempio pippo.awk, posso eseguirlo con:</p>
<pre>awk -f pippo.awk

</pre>
<p>o più comodamente iniziando il mio script con:</p>
<pre>  #!/usr/bin/awk -f</pre>
<p>e poi rendendolo&nbsp;eseguibile.</p>
<p>Le variabili possono essere assegnate nel modo più semplice possibile:<br />
PIPPO = &#8220;dsajsakdsk&#8221;</p>
<p>Gli arrays possono essere creati con la funzione split:</p>
<pre>split (stringa,array[,separatore])</pre>
<p>&#8230;il resto lo lascio alla vostra fantasia!</p>
<hr>
<h4>In libreria, per approfondire</h4>
<div style="float: left;padding-right:20px"><iframe loading="lazy" style="width: 120px; height: 240px;" src="https://rcm-eu.amazon-adsystem.com/e/cm?ref=qf_sp_asin_til&amp;t=consulenzeinf-21&amp;m=amazon&amp;o=29&amp;p=8&amp;l=as1&amp;IS2=1&amp;asins=B004D4Y302&amp;linkId=3900986c421b778594422cadb15bd281&amp;bc1=FFFFFF&amp;lt1=_blank&amp;fc1=333333&amp;lc1=0066C0&amp;bg1=FFFFFF&amp;f=ifr" width="300" height="150" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"><br />
</iframe></div>
<div style="float: left;"><iframe loading="lazy" style="width: 120px; height: 240px;" src="https://rcm-eu.amazon-adsystem.com/e/cm?ref=qf_sp_asin_til&amp;t=consulenzeinf-21&amp;m=amazon&amp;o=29&amp;p=8&amp;l=as1&amp;IS2=1&amp;asins=B00U8232XM&amp;linkId=31b83d17e2c197ee14c7b1f549d033ab&amp;bc1=FFFFFF&amp;lt1=_blank&amp;fc1=333333&amp;lc1=0066C0&amp;bg1=FFFFFF&amp;f=ifr" width="300" height="150" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"><br />
</iframe></div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/awk-un-amico-per-aiutarci-con-i-log-files-e-non-solo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Superare le limitazioni della shell di windows con TCC/LE</title>
		<link>https://www.gironi.it/blog/superare-le-limitazioni-della-shell-di-windows-con-tccle/</link>
					<comments>https://www.gironi.it/blog/superare-le-limitazioni-della-shell-di-windows-con-tccle/#respond</comments>
		
		<dc:creator><![CDATA[paolo]]></dc:creator>
		<pubDate>Mon, 01 Mar 2010 14:10:35 +0000</pubDate>
				<category><![CDATA[shell]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[batch]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[tc]]></category>
		<guid isPermaLink="false">http://gironi.it/blog/?p=33</guid>

					<description><![CDATA[Se dovessi indicare la principale fonte di frustrazione nell&#8217;attivita&#8217; quotidiana con Microsoft Windows, non esiterei a segnalare la &#8220;debolezza&#8221; del processore di comandi cmd.exe. Qualsiasi shell unix, al confronto, appare un mostro di potenza. Si pensi a cio&#8217; che si puo&#8217; ottenere, in termini di task quotidiani di amministrazione, con una shell linux rispetto ai &#8230; <a href="https://www.gironi.it/blog/superare-le-limitazioni-della-shell-di-windows-con-tccle/" class="more-link">Leggi tutto<span class="screen-reader-text"> "Superare le limitazioni della shell di windows con TCC/LE"</span></a>]]></description>
										<content:encoded><![CDATA[<p>Se dovessi indicare la principale fonte di frustrazione nell&#8217;attivita&#8217; quotidiana con Microsoft Windows, non esiterei a segnalare la <strong>&#8220;debolezza&#8221; del processore di comandi cmd.exe</strong>.</p>
<p>Qualsiasi shell unix, al confronto, appare un mostro di potenza.</p>
<p>Si pensi a cio&#8217; che si puo&#8217; ottenere, in termini di task quotidiani di amministrazione, con una shell linux rispetto ai batch files windows&#8230;</p>
<p>Ai tempi del mio amatissimo dos esisteva un validissimo sostituto per l&#8217;impresentabile command.com: era l&#8217;eccellente 4dos della <a title="jpsoft" href="http://jpsoft.com/" target="_blank" rel="noopener">jpsoft</a>.</p>
<p>Ora quel prodotto non viene piu&#8217; sviluppato. ma e&#8217; possibile scaricare gratuitamente l&#8217;ultima versione esistente della jp software, oppure seguire la nuova linea di sviluppo indipendente <a href="https://www.4dos.info/4dvers/4dos800.zip" target="_blank" rel="noopener">scaricando l&#8217;ultima versione free</a>.<br />
<span id="more-33"></span><br />
La stessa jp software pero&#8217; ha realizzato un prodotto molto valido, figlio del vecchio 4dos, per ambiente Win: si tratta di <strong>Take Command</strong>. Il software, consigliatissimo, e&#8217; commerciale, ma una versione &#8220;minore&#8221; chiamata <a href="https://jpsoft.com/products/tcc-le.html" target="_blank" rel="noopener">TCC/LE e&#8217; scaricabile e utilizzabile gratuitamente</a>.</p>
<p>Cosa ancora migliore, ho potuto verificare che <strong>la shell e&#8217; assolutamente portabile</strong> ed e&#8217; quindi utilizzabile direttamente da penna usb, se lo si desidera.<br />
Cosa e&#8217; possibile fare con tcc/le? Tanto, tantissimo. Dimenticate i vecchi files bat (anche se tccle e&#8217; perfettamente compatibile con cmd.exe). Tcc/Le mette a disposizione centinaia di varibili e funzioni, un linguaggio di scripting elegante e potente, <strong>una shell moderna e funzionale con evolute funzioni di history, command completion, editing</strong>.</p>
<p>L&#8217;installazione e&#8217; semplicissima.</p>
<p>L&#8217;installer crea una cartella contenente tutti i (pochi) files necessari. A questo punto, basta cancellare i files delle lingue che non servono, copiare tutta la cartella su di una penna e il gioco e&#8217; fatto. Se volete, potete poi disinstallare il prodotto, che funzionera&#8217; benissimo dalla penna usb.</p>
<p>A questo punto, create nella stessa directory che contiene il programma un file tcstart.btm contenente le vostre personalizzazioni, gli alias etc.</p>
<p>Ricordo che basta lanciare il comando &#8220;option&#8221; dal prompt di tcc/le per poter modificare le principali opzioni della shell.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gironi.it/blog/superare-le-limitazioni-della-shell-di-windows-con-tccle/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
