Introduzione a Linux

Utilizzo generale dall'interfaccia grafica

L'utilizzo generale di Linux non è dissimile da quello di Windows, soprattutto nelle ultime versioni. Ovviamente non ci si può aspettare di trovare gli stessi programmi che si hanno su Windows, ma quasi sempre ce n'è di equivalenti. Non ci dilunghiamo quindi sul funzionamento generale ed andiamo ad analizzare le differenze maggiori tra i due sistemi.

L'albero delle directory

Diamo una occhiata rapida all'albero delle directory di un sistema Linux. A differenza di Windows, che è strutturato in modo da avere (più o meno) una directory per ogni programma, in Linux la struttura è molto più articolata. Lo strumento più conveniente per analizzarne la struttura è il browser del file-system, accessibile dal menù Applicazioni -> Strumenti di Sistema -> Esplorazione File.
/
+--- bin
+--- boot
+--- etc
+--- home
+--- luigino
+--- studente
+--- Desktop
+--- lib
+--- media
+--- cdrom
+--- floppy
+--- proc
+­--- root
+--- sbin
+--- sys
+--- tmp
+--- usr
+--- bin
+--- lib
+--- var
Abbiamo qui indicato solo le directory più importanti. Spieghiamole brevemente:
Normalmente un utente (che non sia root) può leggere quasi tutti i file presenti nel computer, ma può scrivere soltanto nella sua home directory e nella directory /tmp.

La shell


Nei sistemi Unix, la shell è il programma più importante, dopo il kernel. È il mezzo con cui si comunica con il sistema e attraverso il quale si avvia e si controlla l'esecuzione degli altri programmi. Shell vuol dire "conchiglia" e il nome deriva dal fatto che è la superficie con cui l'utente entra in contatto quando vuole interagire con il sistema: la shell che racchiude il kernel.

Una volta, prima dell'avvento delle interfacce grafiche, la shell era l'unico sistema per comunicare con il sistema operativo. Oggi non è più così, ma la shell, per chi la sa usare, conserva ancora dei vantaggi rispetto all'interfaccia grafica:
La shell è disponibile anche per sistemi Windows, anche se lì si chiama, per motivi storici "prompt dell'MS-DOS" o "prompt dei comandi". Tuttavia, essa è molto meno potente che nei sistemi Unix, per cui è di solito meno utilizzata.

Il prompt dei comandi

Per attivare la shell, il modo più comodo è, dall'ambiente grafico, attivare il programma Terminale (dal menù Applicazioni -> Strumenti di Sistema -> Terminale). 

Alcuni comandi

Dalla shell è possibile inviare dei comandi al sistema operativo. Ecco alcuni esempi:

Completamento automatico

Una caratteristica utile della shell di Linux è il completamente automatico. In varie circostante potete premere il tasto <TAB> e la shell completa quello che state scrivendo nella maniera più ovvia. Se ad esempio siete nella situazione

amato@sci138$ pass

e premete <TAB>, la stringa pass viene completata in passwd (il comando per cambiare la propria password). Questo perchè passwd è l'unico comando che inizia con pass.  Analogamente, se nella directory corrente c'è il file "prova" e voi premete <TAB> quando avete digitato

amato@sci138$ cat pr

allora pr viene completato in prova.  In generale, quasi su ogni sistema è vero quanto segue:
Talvolta premendo <TAB> non succede niente: vuol dire che c'è ambiguità nel modo in cui si può completare la stringa. Ad esempio, se abbiamo anche il file prato oltre a prova, premere <TAB> dopo pr è ambiguo perchè pr potrebbe essere completato con prato o con prova.

In questo caso, si può premmere <TAB> due volte di seguito per avere l'elenco dei possibili completamenti. Ad esempio, con

amato@sci138$ rm

premendo <TAB><TAB> si ha l'elenco dei comandi che iniziano con rm:

rm              rmail.sendmail  rmic            rmiregistry
rmail           rmdir           rmid

Il <TAB> può essere usato per spostarsi velocemente nell'albero delle directory.   Se si vuole visualizzare il file /var/spool/mail/studente (che contiene la posta in arrivo per l'utente studente) il comando da dare è cat /var/spool/mail/studente. Si può scrivere questo comando molto più velocemente digitando: cat /v<TAB>/sp<TAB>/ma<TAB>/s<TAB>. Se invece volete visualizzare un file in /var/spool/mail ma non vi ricordate quale, potete provare con cat /var/spool/mail/<TAB><TAB> che visualizza l'elenco dei file in /var/spool/mail

La funzione di completamento automatico è veramente comoda. Una volta che ci si è famirializzato, è difficile farne a meno.

Immissione caratteri speciali

Spesso è necessario inserire dei caratteri che non sono presenti nella tastiera. Come si fa in questo caso? Il trucco tipico di Windows (ALT+il codice ascii sul tastierino numerico) su Linux non funziona. In realtà, i caratteri più comuni possono essere digitati con alcune combinazioni di tasti standard:
Altri caratteri possono essere digitati utilizzando la funzione Multi_key.  Premendo Shift + AltGr (nell'ordine prima shift, poi Alt-Gr) viene attivata la funzione Multi_key: a quel punto Linux si aspetta due caratteri in sequenza, che vegono combinati per formare un unico carattere. Ad esempio 
e così via..

Aiuto, non mi ricordo cosa fa un comando

Nessuno è ingrado di ricordarsi tutti i possibili comandi e le differenti opzioni disponibili in ambiente Unix. Per questo la documentazione in materia è estensiva. Abbiamo già visto l'opzione --help che è possibile fornire a molti comandi per farci restituire la spiegazione del suo funzionamento e delle opzioni che supporta. La spiegazione che si ottiene è però spesso troppo stringata, utile quando il comando lo si conosce già e semplicemente non ci si ricorda il formato di qualche opzione, ma non quando si vuole imparare come utilizzarlo.

Per quest'ultimo scopo è molto più utile il comando man. Si usa generalmente in questo modo:
Ad esempio man rmdir visualizza il manuale del comando rmdir.

La lettura del manuale non è sempre agevole e bisogna abituarsi un po', anche perchè spesso le spiegazioni sono molto tecniche. Le due parti più importanti sono tipicamente SYNOPSIS che dà la sintassi del comando e DESCRIPTION che spiega cosa fa il comando e il significato di tutte le opzioni disponibili.


NOTA. Un'altra fonte di informazione sono i file presenti in /usr/share/doc/<nomepacchetto>. E poi ovviamente Internet, che è la più grossa fonte di informazione in materia.

Accesso ai dischi e operazioni di montaggio

Nei sistemi Unix non esiste il concetto di "lettera del dispositivo" per accedere ai floppy, CD-ROM o semplicemente a partizioni differenti dell'hard-disk. I file contenuti in questi dispositivi vengono semplicemente inseriti all'interno dell'albero principale delle directory. In particolare, /media/cdrom e /media/floppy corrispondono al contenuto del CDRom e del floppy rispettivamente.

Normalmente, se si tenta di visualizzare una di queste directory, essa appare vuota. Perchè si verifichi il collegamento tra /media/floppy (e simili) e il corrispondente dispositivo, occurre effetturare una operazione speciale detta "montaggio".

Dall'interfaccia grafica, è possibile "montare" i floppy o i cdrom aprendo la cartella "Computer" presente sul Desktop e da lì con un doppio click su "Floppy Drive" o "CD-R Drive". In realtà, spesso, il montaggio dei CD-ROM è automatico, basta inserire il disco nel lettore. A seguito di questa operazione accadono due cose (supponendo che tutto vada bene):
Dopo il montaggio di un floppy, ad esempio, si può andare in /media/floppy e operare normalmente dentro quella directory, senza preoccuparsi del fatto che i file risiedono sul floppy piuttsto che sull'hard disk.

Analoga alla operazione di montaggio c'è l'operazione di "smontaggio". Dall'interfaccia grafica basta cliccare sull'icona del dispositivo e seleziona "Espelli". Questo causa lo smontaggio del dispotivo (che non è più visibile all'interno della directory /media/.....) e, nel caso del CDRom, l'espulsione del CD.

Attenzione, l'operazione di smontaggio è importantissima, in particolare per i floppy. Quando scriviamo su un floppy, infatti, non è detto che il sistema operativo faccia subito le scritture. Può darsi che si tenga i dati nella cache. Quando si esegue lo smontaggio, tutte le operazioni pendenti di scrittura vengono portate a termine. Se si estrae il floppy prima di smontarlo, c'è il rischio di trovarsi con modifiche non effettuate o peggio con il file-system corrotto. Per i CD la questione è meno delicata perchè tanto sono dispositivi di sola lettura. Tuttavia, è probabile che, finchè il CD è montato, il tasto di espulsione manuale non funzioni.

Processi

Un sistema Unix, in ogni momento, ha un certo numero di processi in esecuzione. Un processo viene creato quando si esegue un comando o un programma più complesso. Si possono esaminare i processi attualmamente in corso, al solito, o con una interfaccia grafica o con la shell.

Dall'interfaccia grafica, il programma da utilizzare è Applicazioni -> Strumenti di Sistema -> Monitor di Sistema.

Monitor di Sistema

Si  vede un elenco di processi e, per ognuno di essi, alcune sue caratteristiche. Le cose più importanti sono le prime due colonne, il nome del processo e l'utente che lo controlla. Ogni processo ha gli stessi diritti di accesso ai file dell'utente che lo controlla. Normalmente il Monitor fa vedere solo i processi sotto controllo dell'utente che lo ha invocato, ma è possibile selezionare "Tutti i Processi" in alto a destra e ottenere la visualizzazione completa.

E` anche possibile "uccidere" un processo che non risponde più ai comandi utente, cliccando col tasto destro sul processo e scegliendo Termina Processo dal menù contestuale che appare. Qualora neanche questo  modo consente di interrompere il processo, si può scegliere Uccidi Processo invece di Termina Processo dallo stesso menù. E` però una cosa da fare come ultima risorsa perchè è un metodo molto brutale che non da il tempo al processo ucciso di salvare i dati eventualmente modificati.