• Non ci sono risultati.

I file e le directory più importanti

Nel documento Introduzione a Linux (pagine 57-60)

Capitolo 3.  File e file system

3.2.  Orientarsi nel file system

3.2.3.  I file e le directory più importanti

3.2.2. Percorsi assoluti e relativi

Un percorso (path), cioè la strada da seguire nella struttura ad albero per raggiungere un certo file, 

può   essere   descritto   partendo   dal  tronco   dell'albero   (la   “/”  o   directory   radice).   In   tal  caso,   il 

percorso inizia con una sbarra e viene chiamato percorso assoluto, dal momento che non possono 

esserci errori: nel sistema solo un file potrà corrispondervi.

Nell'altro caso, il percorso non inizia con una sbarra ed è possibile confondere tra  ~/bin/wc

(nella directory home dell'utente) e bin/wc in /usr come nell'esempio precedente. I percorsi che 

non iniziano con una sbarra sono sempre relativi.

Nei percorsi relativi usiamo anche . e .. per indicare la directory corrente e quella genitrice. Una 

coppia di esempi pratici:

Quando   volete   compilare   del   codice   sorgente,   spesso   la   documentazione   di 

installazione vi dice di avviare il comando  ./configure, che lancia il programma 

configure  collocato nella directory corrente (creata con il nuovo codice) invece di 

eseguire un altro programma configure presente altrove nel sistema.

Nei file HTML i percorsi relativi sono spesso utilizzati per creare un insieme di 

pagine facilmente trasferibili in altri posti:

<img alt=”Garden with trees” src=”../images/garden.jpg”>

Notate la differenza ancora una volta:

theo:~> ls /mp3

ls: /mp3: No such file or directory theo:~> ls mp3/

oriental/ pop/ sixties/

3.2.3. I file e le directory più importanti

3.2.3.1. Il kernel

Il kernel è il cuore del sistema: gestisce le comunicazioni tra l'hardware sottostante e le periferiche. 

Il kernel  assicura inoltre che processi  e daemon (demoni  o processi  server)  vengano avviati  e 

fermati al momento giusto. Ha una quantità così grande di altri compiti importanti che esiste una 

speciale mailing list, dedicata allo suo sviluppo, che si occupa solo di questo argomento e dove 

vengono condivise montagne di informazioni. Dibattere in dettaglio sul kernel ci porterebbe troppo 

lontano: per ora è sufficiente sapere che il kernel è il file più importante del sistema.

3.2.3.2. La shell

3.2.3.2.1. Cos'è una shell?

Cercare una spiegazione appropriata del concetto di shell mi ha creato più problemi di quanti mi 

attendessi. Sono disponibili tutti i generi di spiegazioni, che vanno dal semplice paragone come “la 

shell è lo sterzo di un'auto”, alla vaga definizione del manuale di Bash che afferma che “bash è un 

interprete del linguaggio a comandi compatibile sh” o ad altre ancora più oscure espressioni come 

“una shell gestisce l'interazione tra il sistema e i suoi utenti”. Una shell è molto più di questo.

Una shell può essere meglio paragonata ad un mezzo per parlare con il computer, un linguaggio. 

Molti utenti conoscono quell'altro linguaggio, il linguaggio “punta­e­clicca” del desktop, ma con 

esso il computer guida la conversazione, mentre l'utente assume il ruolo passivo di selezionare le 

funzioni che questo gli presenta. E' molto difficile per un programmatore includere tutte le opzioni 

e gli usi possibili di un comando in un formato GUI. Così le GUI sono quasi sempre meno potenti 

del comando o dei comandi che formano il backend [cioè su cui queste si appoggiano per svolgere 

le varie funzioni].

La   shell,   d'altro   canto,   è   una   maniera   evoluta   di   dialogare   con   il  sistema   poiché   consente   la 

conversazione nei due  sensi e di assumere l'iniziativa. Entrambe le parti della comunicazione sono 

uguali, così si possono sperimentare nuove idee. La shell  permette all'utente di gestire un sistema 

in modo piuttosto flessibile e, come ulteriore vantaggio, di automatizzare i compiti.

3.2.3.2.2. Tipi di shell

Come la gente conosce linguaggi e dialetti differenti, così il computer conosce tipi diversi di shell:

sh o Bourne Shell: la shell originale ancora utilizzata su sistemi UNIX e in ambienti 

collegati a UNIX. E' la comune shell, un piccolo programma con poche funzioni. 

Quando è in modalità POSIX­compatibile bash emula questa shell.

bash  o   Bourne   Again   SHell:   la   shell   GNU   standard,   intuitiva   e   flessibile. 

Probabilmente molto consigliabile sia ai principianti sia, contemporaneamente, agli 

esperti e professionisti essendo uno strumento molto potente. In Linux bash è la shell 

standard per i comuni utenti. Tale shell viene anche detta  superinsieme  della shell 

Bourne, un insieme di aggiunte e plug­in. Ciò significa che la shell Bourne Again è 

compatibile con quella Bourne: i comandi che funzionano con sh, funzionano pure 

con bash. Comunque non è sempre vero il contrario. Tutti gli esempi e gli esercizi di 

questo libro usano bash.

csh  o C Shell:  la sintassi  di  questa  shell  assomiglia  a quella  del  linguaggio  di 

programmazione C. Qualche volta viene richiesta dai programmatori.

tcsh  o   Turbo   C   Shell:   un   superinsieme   della   comune   C   shell,   che   aumenta   la 

semplicità e la velocità.

ksh o Korn shell: apprezzata qualche volta da persone con esperienze di UNIX. E' un 

superinsieme   della   Bourne   shell:   in   configurazione   base   è   un   incubo   per   i 

principianti.

Il file /etc/shells offre una panoramica delle shell conosciute da un sistema Linux:

mia:~> cat /etc/shells /bin/bash

/bin/sh /bin/tcsh /bin/csh

 Bourne shell falsa

Notate che normalmente  /bin/sh  è un collegamento a Bash, che, se chiamata  in 

questo modo, verrà eseguita in modalità Bourne shell.

La vostra shell di base è impostata nel file  /etc/passwd, come in questa linea che riguarda 

l'utente mia:

mia:L2NOfqdlPrHwE:504:504:Mia Maya:/home/mia:/bin/bash

Per passare da una shell all'altra, basta solo inserire il nome della nuova shell nel terminale attivo. Il 

sistema trova la directory dove ricorre il nome usando le impostazioni di PATH e, dal momento che 

una shell è un file eseguibile (programma), la shell corrente la attiva e la manda in esecuzione. 

Abitualmente appare un nuovo prompt perché ogni shell ha il proprio aspetto tipico:

mia:~> tcsh [mia@post21 ~]$

3.2.3.2.3. Quale shell sto usando?

Se non sapete quale shell state utilizzando, potete sia controllare la linea del vostro account in 

/etc/passwd, sia dare echo $SHELL come comando. 

3.2.3.3. La vostra home directory

Quando vi connettete al sistema, la vostra home directory [directory personale] è la destinazione 

iniziale. In molti casi si tratta di una sottodirectory di  /home, sebbene possa variare. La vostra 

home directory può essere collocata nel disco rigido di un file server remoto: in questo caso essa si 

può trovare  in  /nethome/vostronomeutente. In caso diverso l'amministratore di sistema 

può aver optato per una struttura meno comprensibile e la vostra directory, ad esempio, potrebbe 

essere su /disk6/HU/07/jgillard.

Non dovete preoccuparvi eccessivamente di quale sia il percorso della vostra home directory: infatti 

il percorso corretto è conservato nella variabile d'ambiente  HOME, nel caso alcuni programmi ne 

abbiano bisogno. Con il comando echo potete vedere il contenuto di questa variabile:

orlando:~> echo $HOME /net/home/orlando

directory quanti ne volete, sebbene lo spazio totale per  dati e i file sia naturalmente limitato a causa 

dell'hardware, delle dimensioni delle partizioni e, alle volte, dall'applicazione di un sistema di quota 

da parte dell'amministratore. Era infatti pratica comune limitare l'uso del disco quando i dischi 

rigidi erano ancora costosi. Al giorno d'oggi i limiti vengono applicati quasi esclusivamente in 

grossi ambienti. Potete verificare da voi stessi l'esistenza di un limite utilizzando il comando quota:

pierre@lamaison:/> quota -v

Disquotas for user pierre (uid 501): none

Nel caso siano state stabilite delle quote,   otterrete una lista delle partizioni limitate e delle loro 

specifiche limitazioni. L'eccedere i limiti può essere comunque tollerato per un breve periodo con 

alcune minime o nulle restrizioni. Informazioni dettagliate si possono trovare usando i comandi info 

quota o man quota.

 Nessuna Quota?

Se il vostro sistema non riesce a trovare  quota, allora significa che non sono state 

applicate limitazioni all'uso del file system.

La   vostra   directory   personale   viene   indicata   con   una   tilde   (~),   abbreviazione   di 

/path_to_home/nome_utente.  Lo   stesso   percorso   è   conservato   nella   variabile  HOME, 

cosicché   non   dovete   fare   nulla   per   attivarlo.   Una   semplice   applicazione:   passare   da 

/var/music/albums/arno/2001  a  images  contenuta   nella   vostra   directory   personale 

utilizzando un comando elegante:

rom:/var/music/albums/arno/2001> cd ~/images rom:~/images> pwd /home/rom/images

Più avanti in questo capitolo discuteremo dei comandi per la gestione dei file e delle directory allo 

scopo di mantenere ordinata la vostra directory personale.

Nel documento Introduzione a Linux (pagine 57-60)