next up previous contents index
Next: Spostare Informazioni Up: La shell di Unix Previous: Come cavarsela da soli

Memorizzare Informazioni

I filtri sono molto utili quando si è utenti esperti, ma hanno un piccolo problema. Come si memorizzano le informazioni? Sicuramente non vorrete scrivere tutto ogni volta che utilizzate un programma! Certo che no. Unix fornisce file e directorydirectory.

Una directory è simile ad una cartella: contiene pezzi di carta, o file (archivi). Una grossa cartella può anche contenere altre cartelle--le directory possono essere contenute in altre directory. In Unix, la struttura delle directory e dei file è chiamata filesystem . Inizialmente, il filesystem consiste in una sola directory, chiamata directory di ``root'' . Dentro questa directory ci sono altre directory, e dentro queste directory ci sono file e ancora altre directory.gif

Ogni file e ogni directory ha un nome. Ha sia un nome breve, che può essere lo stesso di un altro file o directory in un altro punto del sistema, e un nome esteso, che è univoco. Un nome breve per un file potrebbe essere joe, mentre il suo ``nome esteso'' potrebbe essere /home/larry/joe. Il nome esteso è chiamato comunemente pathpath (percorso). Il path può essere decodificato in una sequenza di directory. Per esempio, vediamo come viene letto /home/larry/joe:


screen636

Un modo semplice per visualizzare questo è ma struttura è mediante un diagramma ad albero. Per vedere un diagramma di un tipico sistema , guardate la figura gif. Notate che questo diagramma non è completo--un sistema reale ha più di 8000 file!--e mostra solo alcune delle directory più comuni. Così ci possono essere alcune directory nel diagramma che non esistono nel vostro sistema, e certamente il vostro sistema ha directory non elencate qui.

=1.0pt

  
Figure: Un tipico albero di directory Unix.

Vedere le directory con ls

Adesso che sapete che esistono i file e le directory, ci sono vari modi per manipolarli: vediamo quali sono. Il comando ls  è uno dei più importanti: lista file. Se provate ls come comando, vedrete:



È giusto, non vedete niente. Unix è intenzionalmente conciso: se non esistono file non dà niente, invece di dire ``nessun file''. Così l'assenza di dati è il modo in cui ls dice che non ha trovato nessun file.

Ma allora, se ho detto che possono esserci 8000 o più file in giro, dove sono? Arriviamo quindi al concetto di directory ``corrente''. Potreste vedere nel prompt che la vostra directory corrente è /home/larry, dove non avete ancora nessun file. Se volete la lista dei file di una directory più importante, provate con la directory di root:



Nel precedente comando, ``ls /'', la directory (``/'') è un parametro. La prima parola del comando è il nome del comando, e tutto il resto sono parametri. I parametri generalmente modificano l'oggetto del comando--per ls, i parametri indicano di quale directory si vuole l'elenco. Alcuni comandi hanno speciali parametri chiamati opzioni o switch. Per vederlo, provate:



-F è un'opzione. Un'opzione è un tipo speciale di parametro che comincia con un trattino e modifica il modo di agire del programma, ma non il suo oggetto. Per ls, -F è un'opzione che permette di vedere quali sono le directory, quali i file speciali e quali i file normali. Tutti quelli che terminano con una barra sono directory. Parleremo ancora delle caratteristiche di ls più avanti: è un programma sorprendentemente complesso!

Ora, ci sono due lezioni da imparare qui. Per prima cosa dovete imparare quello che fa ls. Provate un po' di directory mostrate nella figura gif, e guardate cosa contengono. Naturalmente alcune saranno vuote, e alcune avranno molti, molti file. Suggerisco di provare ls sia con sia senza l'opzione -F. Per esempio, ls /usr/local sarà più o meno:



La seconda lezione è più generale. Molti comandi Unix sono simili a ls. Hanno opzioni, che generalmente consistono di un trattino seguito da un carattere, e parametri. Diversamente da ls, alcuni comandi richiedono determinati parametri e/o opzioni. Per mostrare come un comando usa opzioni e parametri, useremo la seguente forma:

ls [-arF] [directory]

Questo è un modello di comando e lo vedrete ogni volta che viene introdotto un nuovo comando. La prima parola è il comando stesso (in questo caso ls). Dopo il comando ci sono i parametri. I parametri opzionali vengono racchiusi tra parentesi quadre (``['' e ``]''). Le meta-variabili sono inclinate--sono parole che vanno sostituite con i parametri reali. (Ad esempio, qui sopra vedete directory, che va sostituito con il nome di una directory reale).

Le opzioni sono un caso speciale. Vengono racchiuse tra parentesi, ma se ne può usare una sola senza usarle tutte. Ad esempio, con le tre sole opzioni date qui sopra per ls, si hanno otto diversi modi per dare il comando: con o senza ciascuna delle opzioni. (Paragonate ls -R con ls -F.)

La directory corrente e cd

pwd

Usare le directory sarebbe scomodo se doveste scrivere il percorso completo ogni volta che voleste accedere ad una directory. Invece, le shell Unix hanno una caratteristica chiamata directory ``corrente'' o ``di lavoro''. Il vostro setup probabilmente vi mostra la directory corrente nel prompt: /home/larry. Se non lo fa, provate il comando pwd, per present working directory (visualizza la directory di lavoro). (Talvolta il prompt vi mostrerà il nome della macchina. Una cosa del genere è utile solo in un ambiente di rete con molte macchine diverse).        



cd [directory]

Come potete vedere, pwd mostra la vostra directory correntegif--un comando molto semplice. Molti comandi agiscono, per default, nella directory corrente. Per esempio, ls senza nessun parametro mostra il contenuto della directory corrente. Possiamo cambiare la directory corrente usando il comando cd . Per esempio, provate:



Se omettete il parametro opzionale directory, ritornerete alla vostra home directory, o directory di origine. Altrimenti cd vi porterà nella directory specificata. Per esempio:



Come potete vedere, cd vi permette di usare percorsi sia assoluti sia relativi. Un percorso ``assoluto'' inizia con / e specifica tutte le directory prima della directory cercata. Un percorso relativo è in relazione alla directory corrente. Nell'esempio precedente, quando ero in /usr, ho fatto uno spostamento relativo a local/bin-- local è una directory dentro usr, e bin è una directory dentro local.

Ci sono due directory usate solamente nei percorsi relativi: `` .'' e ``..''  . La directory ``.'' si riferisce alla directory corrente e ``..'' è la directory madre, cioè quella che contiene la directory corrente. Queste sono directory ``scorciatoia''. Esistono in ogni directory, ma non seguono il concetto di ``cartella in cartella''. Anche la directory di root ha la parent directory--è la directory di root stessa!

Il file ./chapter-1 è il file chiamato chapter-1 nella directory corrente. Occasionalmente è necessario inserire il ``./'' per far funzionare alcuni comandi, sebbene questo sia raro. In molti casi, ./chapter-1 e chapter-1 sono la stessa cosa.

La directory ``..'' è molto utile per tornare indietro nell'albero:



In questo esempio, sono passato nella directory madre usando cd .. e ho fatto l'elenco della directory /usr/src da /usr/local usando ../src. Notate che se fossi stato in /home/larry, inserire ls -F ../src non sarebbe andato bene!

La directory ~/ è equivalente alla vostra home directory :



Potete vedere che non c'è niente nella vostra home directory. ~/ diverrà più utile quando impareremo come manipolare i file.

Creare e distruggere le directory

  

mkdir directory1 [directory2 ...directoryN]

Creare directory è estremamente semplice sotto Unix, e può essere un ottimo strumento di organizzazione. Per creare una nuova directory, usate il comando mkdir. mkdir sta per make directory (crea directory).

Vediamo un piccolo esempio per vedere come lavora questo comando:

mkdir può gestire più di un parametro, e ne interpreta ognuno come una directory da creare. Si possono specificare sia percorsi assoluti sia relativi; nell'esempio precedente, report-1993 è un percorso relativo.



L'opposto di mkdir è rmdir per remove directory (rimuovi directory). rmdir funziona esattamente come mkdir.  

Un esempio di rmdir è:



Come potete vedere, rmdir si rifiuta di rimuovere directory che non esistono, come anche directory che contengono qualcosa. (Ricordatevi che report-1993 ha una subdirectory all'interno, chap2!) C'è un'altra cosa interessante su rmdir: cosa succede se tentate di rimuovere la vostra directory corrente? Proviamo:



Un'altra situazione che potreste considerare è cosa succede se provate a rimuovere la madre della directory corrente. In effetti questo non è un problema: la madre della directory corrente non è vuota, e quindi non può essere rimossa!   


next up previous contents index
Next: Spostare Informazioni Up: La shell di Unix Previous: Come cavarsela da soli


Fri Sep 19 00:41:53 CEST 1997