domenica 8 giugno 2014

La bestia più brutta, il terminale

Screenfetch in tutto il suo splendore che mostra alcune info sulla mia macchina.

Potrei tranquillamente accendere un falò per metterci la mano sopra e chiedere a tutti e 5 i miei lettori perché non utilizzano Linux: almeno 2 di loro mi diranno che il terminale li spaventa. Gli altri 3, invece, diranno che non amano usare il terminale per giocare a CoD.

Eh sì, sono sicuro perché stando a quanto dice Google Analytics, più del 80% di voi lettori (che ad onor del vero siete una quarantina circa e per questo vi ringrazio infinitamente) utilizza Windows e non più di 2 persone (me compreso) utilizzano sistemi Linux-based.
Ho letto un'infinità di sondaggi e ne ho proposti altrettanti per chiedere perché Linux non piace e, sistematicamente, la massa si divide in tre falangi:
- non ci sono giochi!
- non c'è fotosciòp!
- mi fa schifo il terminale

Lasciando perdere le prime due voci (delle quali parlerò in futuro), mi concentro sulla terza: tanti e tanti si lamentano che Linux viene ricondotto all'utilizzo pedissequo e perentorio del terminale, ossia di quella finestra di prompt dei comandi (per utilizzare un linguaggio vagamente familiare) dove vengono digitati dei misteriosi codici per avere un output a video. Detto in termini basilari: digiti un input, restituisce un output ed il tutto sotto forma di testo.

Il terminale è un'interfaccia a riga di comando dove gira una shell che esegue comandi.

Questi comandi vengono digitati dall'utente sotto forma di testo scritto e non di click e non avviene alcun cambiamento nella GUI a meno che non sia l'utente stesso a richiederlo.

Perché spaventa così tanto? Beh, sicuramente perché, nella cultura dei film polizieschi e di avventura che implicano la presenza di un pc, viene sempre inquadrata almeno una scena dove l'hacker di turno scrive a ritmo frenetico dei comandi e per magia avvengono fatti inspiegabili come l'aperture di porte dall'altra parte della città o il blackout di intere aree metropolitane. 
Una volta vista l'interfaccia di un emulatore di terminale, viene facile ricollegare al film di turno.
Oppure perché, molto semplicemente, terminale significa nerd.
Eppure parliamo di uno strumento tanto potente, quanto semplice da utilizzare. Il tutto sta nell'imparare qualche comando basilare, da lì la strada è tutta in discesa per poter compiere ogni azione da riga di comando.

DISCLAIMER: il terminale è uno strumento nato indietro negli anni '70 quando avere un PC significava avere un muletto da una dozzina di chili e la metà delle risorse hardware che ha adesso il tostapane di casa e le GUI non erano state ancora "inventate", per cui quelle risorse andavano più che bene per virtualizzare un emulatore di terminale.
Adesso è raro trovare nelle case degli italiani anche solo dei PC single core. L'hardware di un pc attuale, complice anche il consumismo forzato, rientra quasi sempre nella fascia media, per cui abbiamo a che fare con macchine potenti. Cosa voglio dire? Che il terminale è potenzialmente "inutile" perché possiamo sopperire all'uso di esso tramite i diversi applicativi che utilizzano un'interfaccia grafica anziché testuale.
L'utilizzo del terminale è quasi un vezzo, esclusivo a chi ne fa uso per avere maggiore controllo e più rapidità di esecuzione nelle azioni quotidiane col pc.
Detto in parole molto povere: potete benissimo fare a meno del terminale ed utilizzare i programmi che utilizzano un'interfaccia grafica se avete un pc non troppo preistorico.

Tuttavia il terminale vi viene incontro quando avete un'operazione abbastanza pesante da effettuare per mezzo della GUI e sopperisce mediante l'interfaccia leggera del testo. Un esempio è l'installazione di pacchetti dall'Ubuntu Software Center: Ubuntu utilizza il Desktop Enviroment Unity, noto ai più per essere molto pesante e avido di risorse. Il caricamento del software center, la ricerca e l'installazione appesantiscono ancora di più il sistema, rendendo tutto abbastanza scattoso. 
Col terminale è sufficiente digitare il comando 

sudo apt-get install nomepacchetto

per far partire il processo di installazione in tutta leggerezza, senza dover stimolare troppo la vostra scheda video, il vostro processore e caricare la vostra RAM.  

Scusate la spiegazione molto poco tech ma l'argomento è potenzialmente soporifero e se non condisco con qualche escalation, vi addormentate sulla tastiera.


Confronto tra programma a riga di comando (Vim) e un programma che utilizza la GUI (geidt). Entrambi sono editor di testo.

Bene, abbiamo compreso che il terminale è potente, utile, ma non indispensabile, quindi abbiamo rimosso quell'aura demonizzata costruita da anni di incomprensioni fuorvianti.
Perché, quindi, adesso non vediamo qualche comando basilare?

Gestione del sistema operativo


A sinistra l'updater di Ubuntu, a sinistra, il comando da terminale. Indovinate chi consuma meno?


I pacchetti installati sulle distro Linux provengono da liste di repository sparse per la rete. Per vederle dobbiamo far ricorso ad un file, visualizzabile tramite GUI oppure tramite un editor di testo, attraverso il comando:

vim /etc/apt/sources.list

Per aggiornare il proprio sistema operativo Debian-based si può agire sia attraverso la GUI mediante i programmi pre-installati sull'OS, oppure mediante comando da terminale:

sudo apt-get update && sudo apt-get dist-upgrade

La prima parte di comando aggiornerà i repo, la seconda scaricherà i cambiamenti e quindi gli aggiornamenti.

Per installare/disinstallare un programma, possiamo ricorrere al software center di turno o a Synaptic, sfruttando la GUI, oppure, come al solito, alla linea di comando:

sudo apt-get install nomeprogramma

sudo apt-get remove nomeprogramma

Rispettivamente, il primo installerà il programma, il secondo lo disinstallerà.

Per pulire il sistema da eventuali librerie non più utilizzate, possiamo ricorrere a software di terze parti che fanno uso di librerie grafiche oppure possiamo digitare da terminale:

sudo apt-get autoremove

sudo apt-get autoclean

È sottinteso che utilizzando il comando da terminale ci risparmiamo l'installazione di software aggiuntivo, quindi inutile.

Capita che un particolare programma non sia presente nei repo ufficiali della nostra distro e serva installarlo da un file eseguibile scaricato da internet. Un esempio è Chrome: se siete amanti del browser ufficiale di Google, dovrete scaricarlo in formato .deb dalla pagina di download di Chrome per poi installarlo attraverso il software center o gdebi oppure, in maniera più veloce e spicciola, attraverso il comando:

sudo dpkg -i nomeprogramma.deb

Ho trovato sempre molto utile questo comando in quando l'installazione da gdebi mi è sempre sembrata più lunga del normale.

Gestione dei file e degli archivi

Devo essere onesto: la gestione degli archivi e dei file, se non troppo sistematica e lunga, è più semplice da GUI ed anche il sottoscritto preferisce utilizzare i file manager visuali, piuttosto che il terminale. Però riportiamo qualcosa.

Scompattiamo uno zip:

unzip nomedello.zip

oppure un rar:

unrar nomedel.rar

Per entrambi i comandi è necessario installare i programmi unzip ed unrar.

Per entrare in una cartella (cosa molto utile se vi trovate a buildare ROM), basta usare il comando cd, in questo caso entriamo nella cartella Scrivania (ossia il desktop):

cd Scrivania

Per creare una cartella in un percorso, ad esempio nella Scrivania, basterà digitare:

cd Scrivania 

mkdir subfolder

e per creare un'altra cartella dentro subfolder basterà dare:

cd subfolder

mkdir subfolder2

Cosa c'è dentro una cartella? Prendiamo, come esempio, la cartella subfolder:

cd Scrivania/subfolder

ls

In questo modo si stamperà a video il contenuto della cartella.



Come spostare una cartella?

cd Scrivania/subfolder

mv subfolder2 /home/nomeutente/Scrivania

Abbiamo spostato la cartella /home/klaasmad/Scrivania/subfolder/subfolder2 in /home/klaasmad/Scrivania/subfolder2.

E se volessimo copiare una cartella da un'altra parte, ad esempio nella cartella Scaricati?

cd Scrivania 

cp -r subfolder /home/klaasmad/Scaricati

Fatto!

Cancelliamo la cartella che è rimasta sul desktop:

cd Scrivania

rm -rf subfolder

Au revoir!

Sapevate che si può anche scaricare un file da internet usando la riga di comando?

wget http://www.sitointernet.com/filedascaricare.txt

E scaricherete il file filedascaricare.txt nel percorso da dove avete digitato il comando.

Riavviamo e spegniamo il pc:

sudo reboot

per riavviare e 

sudo halt

per spegnere del tutto.

Questa è solo una lista dei pochi e basilari comandi da terminale che vanno a sostituire l'interfaccia grafica. Alcuni sono molto utili, vedi l'installazione o l'update del sistema, altri li trovo meno utili se per singole operazioni (vedi i copiaincolla e la creazione dei file stessi).
Ciò comunque non significa che dobbiate pregiudicarvi la conoscenza di essi, in fondo è pur sempre cultura aggratis

Spero che almeno qualcuno di voi sia arrivato alla fine del post leggendolo tutto e soprattutto spero che in almeno uno di voi abbia instillato un po' di curiosità nell'usare i sistemi Linux-based ed il terminale.

Nella speranza di non avervi annoiato troppo, vi ringrazio ancora per le generose letture che donate ai miei deliri su questo povero spazio web e vi saluto ad un prossimo articolo!

Alla prossima!