[RoLUG] rel. tecnica

Ferdinando Pucci rolug@lists.linux.it
Sat, 19 Oct 2002 14:52:45 +0200


Ciao ho riscritto parte dell'intervento tecnico, come vi sembra?

5. SHELL	
La shell di Linux (e degli ambienti UNIX in generale) e' un elemento fondamentale del sistema operativo.
Solo chi sa usare correttamente questo ambiente puo dire di conoscere Linux, altrimenti e' un ignaro utilizzatore.
Le caratteristiche della shell sono:
-interazione con il sistema operativo
-programmabilita
-interfaccia a caratteri
La shell e' un interprete a linea di comando, permette di interagire con il sistema operativo impartendogli dei comandi.
Questo per dire che possiamo lanciare il browser web, per es, con l'icona del desktop oppure direttamente dalla shell, 
con gli stessi risultati. L'interazione col SO serve anche per l'amministrazione dello stesso, per es da shell si configura
l'hardware (se non ci sono tools grafici), si controllano i file di log, si installano altri programmi...
Nella definizione si dice che: "la shell e' un interprete a linea di comando", questo significa che e' essa stessa un programma 
che interpreta altri programmi. 
Ci possono essere vari modi di interpretare i programmi e quindi vari tipi di shell.
Infatti esistono varie shell, ma le caratteristiche fondamentali -interazione con il sistema, programmabilita, 
interfaccia a caratteri-
rimangono per tutte uguali. Le shell piu famose sono: bash ( Bourne Again Shell), ash, csh e molte altre. 
Per programmabilita si intende che l'interprete possiede una sua grammatica (con espressioni, controlli di flusso, 
funzioni, espansioni di carattere e via dicendo) e sue variabili tipiche di ogni linguaggio di programmazione. 
Queste caratteristiche ci permettono di scrivere un programma per
automatizzare un'operazione che intendiamo fare piu volte, per fare una ricerca complessa all'interno di certi tipi di file,
ect...questo programma e' generalmente detto script, nel quale si susseguno comandi 
all'interno di strutture di controllo (if/else, cicli for, switch...).
Per comandi si intendono tutti i programmi forniti dal sistema operativo (anche i piu semplici
come "echo") e dalle applicazioni successivamente installate.
Un'espressione praticamente e' una qualsiasi stringa di caratteri, visto che tutte le stringhe generano o il valore TRUE
o il valore FALSE.
Le strutture di controllo ci permettono di condizionare l'esecuzione dello script a seconda del verificarsi o meno di una
certa condizione. Tipico il caso: if [ exp1 ] then exp2 che esegue il comando di exp2 se e solo se exp1 e' TRUE.
La programmabilita si avvale anche delle regex, le espressioni regolari, la cui potenza ci permette di trovare 
facilissimamente un certo modello di testo in mezzo a molto altro, il solito ago nel pagliaio.
E' evidente quindi l'enorme potenziale della shell, il vero cuore del SO Linux!
Ovviamente per programmare occorre un'interfaccia a caratteri in cui poter scrivere.
Molti ambienti di tipo visuale, quali windows e macOS hanno delle utility con l'obbiettivo di fornire qualcosa di simile, 
non arrivando mai alle potenzialita della shell Linux, non per l'incapacita di creare un interprete cosi potente, 
ma per come sono creati i programmi applicativi. Nell'ambiente unix (e quindi in Linux), fin dall'inizio era presente la shell, 
anzi era il solo modo per interagire con il sistema operativo; i programmi erano (e sono) creati con la shell. 
Ogni programma Linux ha una notevole flessibilita offrendo la possibilita di essere parametrizzato.
Attraverso la parametrizzazione e' possibile guidare un'applicazione Linux, nell'input, nell'esecuzione e nell'output. 
Una pratica comune e quella di creare delle "pipe". Dei "tubi" tra applicazioni, l'output di una e' l'input per un'altra, 
e questo si puo fare solo attraverso la shell.
Se si guardano i parametri di caricamento di un qualsiasi programma se ne trovano almeno una decina, per permettere
il controllo totale sull'applicazione che si sta lanciando. Tutto questo non 
vale per i sistemi operativi basati solo sull'interfaccia grafica, i cui utenti possono solo usufruire superficialmente 
delle applicazioni ed al presentarsi di limitazioni tecniche ne subiscono la frustrazione.
Se dovessi scegliere uno degli elementi distintivi tra un sistema Linux e gli altri, la shell sarebbe uno tra quelli 
fondamentali.

6. DOCUMENTAZIONE
Il bello di Linux, sotto certi punti di vista, sono i manuali. Non occorre fare corsi di computer costosi, comprare
centinaia di fascicoli in edicola, basta aprire con la shell i manuali della propria distribuzione per sapere 
esattamente come fare qlc. 
Il software appena installato e' ja preconfigurato, ma per usarlo al meglio
e' necessario sforzarsi di capirne il funzionamento attraverso la documentazione con la quale e' fornito.
Anche l'hardware e' riconosciuto a sufficienza, e dopo l'installazione si puo subito iniziare ad usare il pc.
Se eventualmente ci dovesse capitare un problema informatico di qualsiasi natura, 
di solito la sequenza di operazioni da compiere e':
leggere i log-->leggere i manuali adatti-->apportare un cambiamento-->controllare se ora va
I log sono dei file di testo nei quali vengono registrate tutte le principali azioni che il SO compie, direttamente 
dallo standart output dei programmi. Quando accade un errore, anche lo standard error viene riportato nel log,
dal quale noi possiamo risalire alla causa del malfunzionamento. Quindi apriamo il manuale adatto 
per informarci sul da farsi, e proviamo qlc soluzione (in gergo tecnico: smanettare =). E' consigliabile
apportare uno o cmq pochi cambiamenti per volta, per non rischiare di dimenticare i vecchi settaggi ed anche 
per il rischio di usare comtemporaneamente una correzione ed un ulteriore misconfigurazione, come si dice
"dalla padella alla brace" ... Quindi si controlla se funziona e quale msg da il log.
Questa sequenza e' spesso snobbata da molti, che vanno prima a cercare in internet
magari spammando i ng o assillando i poveri fraquentatori di chat informatiche (che puntualmente li kickano!).
Occorre tanta pazienza, buona volonta e una foto di bill per insultarlo meglio se si continua a nn capire le cose!
Ovviamente l'inglese e' d'obbligo anche se molti manuali sono ja stati tradotti in italiano. 
Una autorevole fonte di sapere informatico ci giunge dagli Appunti di Informatica Libera, di Daniele Giacomini; 
una vera enciclopedia (pensate che e' suddivisa in volumi!!) in italiano, consultabile in rete o scaricabile gratis 
in diversi formati. Vi troviamo spiegato un'infinita di argomenti, da quelli che avete appena sentito ad altri molto
piu complessi.
Importanti per il target specifico che si pongono sono i cosiddetti "HOWTO", che descrivono appunto "come fare" per 
risolvere un determinato problema, come la connessione ad internet, la masterizzazione, la stampa, etc... e contemporaneamente
ci insegnano come funziona quell'aspetto del pc per il quale chiediamo aiuto.
Comportandosi da bravi autodidatti ci si ritrova con un bagaglio di cultura informatica notevole senza rendersene conto!
E questo solo grazie a Linux!


byebye