lunedì 4 marzo 2013

Termimecum #02
Intro.2 - Introduzione al terminale: shell, console, ecc..



TM#02@Intro.2_Shell
La precedente "puntata" TM#01@Intro.1_Convenzioni ci ha introdotti più che altro alla rubrica. Questa seconda 'intro' è invece un'introduzione generica allo strumento 'terminale'. Dove si trova, cos'è di preciso (si fa per dire), quando è consigliato usarlo.


  • Dove e come
La locazione precisa al dettaglio del terminale è ovviamente dipendente dalla distribuzione che usate.


Ma senza stare a fare i pignoli, il terminale - altrimenti detto 'console' o 'shell' - è sempre a portata di mano in tutte le distro. Solitamente c'è l'icona di collegamento già sul desktop, sulla barra di avvio veloce, sulla dash o qualsiasi altra diavoleria grafica stiate usando XD
Inoltre è sicuramente presente nel menù generale, all'intero del sottomenù 'Accessori' o similari.

Si avvia ovviamente come qualsiasi altro programma.


  • Cosa
Ed è in effetti proprio questo: un programma; tant'è che ne esistono molte varianti.
Bisogna fare un distinguo importante però...

Un conto è il motore, la cosiddetta 'shell' (termine che poi viene impropriamente usato anche per l'interfaccia), che è la base portante, il codice vero e proprio.
Si dividono quasi tutte (ancora oggi) in tre grossi gruppi fondamentali:
  • shell di tipo Bourne
  • shell basate sul C
  • shell di tipo Korn
La più famosa (ed usata) è senz'altro la 'bash', di tipo Bourne (infatti significa 'Bourne Again SHell') ed è su questa che si basa Termimecum. Altre varianti importanti sono 'tcsh' (di tipo C) e 'zsh' (di tipo Korn); ma come potete sospettare, ne esistono davvero tante altre.
Questo "motore" è in effetti il terminale vero e proprio. Non è grafico, è la linea di comando effettiva, quella che ci si presenta all'avvio e che, un tempo, era tappa obbligata per l'accesso al sistema. Oggi sono sempre più rare le distribuzioni che usano questa soluzione di default (la Slackware per esempio ^^), ma più avanti ne riparleremo...

Un altro conto è l'emulatore di terminale, che è ciò che utilizziamo come interfaccia quando usiamo il terminale da un DE, come Gnome, KDE, Cinnamon, ecc...
Di emulatori ne esistono (tanto per cambiare) veramente molti, alcuni con funzioni grafiche anche complesse - possibilità di usare più finestre affiancate, comparsa e scomparsa con shortcuts, ecc...
L'emulatore di default che avete dipende ovviamente dal DE che usate: gnome-terminal, konsole, ecc...
Quale che sia, ai fini dei singoli comandi e del loro uso poco conta; è una scelta di abitudine ed esigenze "logistiche", più che di sostanza.


  • Quando
Ma quand'è che conviene usare il terminale?
In teoria: SEMPRE.
Questo per le motivazioni citate dal precedente post: stabilità, velocità, versatilità e sicurezza. Le spiego brevemente e parzialmente, giusto per dare un'idea a chi davvero non ne abbia mai sentito parlare; ma tenete conto che le argomentazioni a "favore" del terminale sono ancora più complesse e profonde, qui un lieve accenno...


Stabilità: i processi lanciati da terminale sono più stabili, perchè non necessitando di interfaccia grafica sono innanzitutto più leggeri, ed inoltre lavorano ad un livello più basso, saltanto appunto quello dell'interfaccia.

Velocità: per le stesse motivazioni, i processi sono spesso più veloci nell'esecuzione

Versatilità: questa è una nota dolente. E' difficile convincere chi è abituato alla comodità del desktop che scrivere lunghi comandi sulla tastiera sia a conti fatti un modo di lavorare più versatile. E' difficile perchè spesso si confonde la comodità con questa caratteristica; ed inoltre è logorroico descrivere testualmente, a chi non li conosce, tutti i risvolti possibili dei comandi.
Tuttavia, se vi va, fidatevi per ora sulla parola. I comandi della shell sono effettivamente più versatili, consentono attività più complesse. Inoltre l'uso di parametri, pipeline, comandi in background ed altri "attrezzi del mestiere" danno un grande controllo sull'esecuzione del lavoro, cosa che da interfaccia grafica non sarebbe possibile.

Sicurezza: le precedenti motivazioni, oltre ai vantaggi intermedi di cui sopra, si riversano poi in questa caratteristica fondamentale che è la sicurezza. La stabilità principalmente, ma anche il controllo possibile della linea di comando, rendono l'esecuzione dei comandi più sicura.
Facendo un doveroso appunto: tutti questi vantaggi potrebbero sintetizzarsi in uno solo: potenza. Il terminale Linux è uno strumento potente, per cui una cosa deve essere chiara: la sicurezza intesa come tecnica, NON "esecutiva", funzionale; che è invece demandata all'esperienza (e all'accortezza) dell'utente - che, ricordiamolo, in Linux non è considerato come in Windows un utonto. E ci si aspetta dunque che non si comporti a tal guisa :D
Come disse qualcuno: 'da un grande potere deriva una grande responsabilità'.

Bene, tutto ciò in teoria. Ma in pratica?
Bè, in pratica rimane tutto corretto. Quello che cambia è l'utilizzatore. Che, in pratica, non è sempre un utilizzatore provetto. Quindi succede che, soprattutto per i comandi più semplici ed usati nel modo più standard previsto, sia molto più semplice, veloce e concretamente sensato usare le risorse grafiche a disposizione.
E' chiaro dunque che dipende dalla nostra capacità di utilizzo del mezzo, da cosa dobbiamo fare e da come pensiamo sia più efficente svolgere il lavoro.


  • Un 'quando' particolare
Forse per mia fissa personale, però ritengo sia corretto almeno accennare il discorso dell'avvio.
Infatti, si diceva prima, all'avvio ormai quasi tutte le distro ci presentano la comoda e rassicurante interfaccia grafica.
Bè, il fatto è che comoda è comoda, non si discute; ma è davvero rassicurante? Psicologicamente, per chi vi è tanto abituato sì, ma tecnicamente non troppo.

Infatti un altra caratteristica che rende il terminale ancora indispensabile sui sistemi GNU/Linux è che, quando le cose non vanno per il verso giusto, è il miglior modo (e speso l'unico modo!) per cercare riparo all'imminente disastro. :)

Vedremo che ci sono metodi che ci consentono di accedere al terminale vero e proprio, uscendo anche in via temporanea dal DE.
Tuttavia avere la "base" pienamente operativa e stabile, quindi aver avviato manualmente da linea di comando, è il miglior modo per mettere un'ipoteca sulla stabilità del sistema.
Se ci si trova nei casini, per dirla in breve, l'aver avviato da terminale ci dà quasi certamente una scappatoia, magari estrema, ma più sicura per la salvaguardia dei dati (e dell'HD stesso a volte).

Inutile che stia qui a parlarvi di come fare questa cosa: dipende dal boot loader (Grub, Lilo, ecc...) e dalla distribuzione. Se volete, basta googlare e sicuramente troverete una guida per far partire il sistema operativo da linea di comando.
In quel caso, vi troverete ad accedere "alla vecchia maniera": da console testuale, inserendo prima user e poi password, avrete accesso alla shell vera e propria.
A questo punto - altra circostanza a favore di questo modo di procedere - potrete scegliere se avviare subito il DE, oppure potreste voler approfittare della solidità del terminale (non emulato) per eseguire qualche compito delicato, quale un avanzamento di versione, la copia di backup di una partizione, l'installazione di driver e via dicendo.
Tutte cose che ovviamente si possono fare (e molti fannno senza problemi) da interfaccia grafica, ma che svolte dal terminale sono, scusate la pedanteria, più veloci e sicure.
Ah, per la cronaca, il comando per l'avvio del DE predefinito è

(v01) $ startx

Nessun commento:

Posta un commento