• Non ci sono risultati.

Creare e cancellare file e directory

Nel documento Introduzione a Linux (pagine 67-71)

Capitolo 3.  File e file system

3.3.  Manipolare i file

3.3.2.  Creare e cancellare file e directory

conseguentemente i file vengono copiati da una macchina all'altra. E, specialmente quando si sta 

lavorando in un ambiente grafico, la creazione di nuovi file è semplicissima e spesso è eseguita 

senza  il consenso  dell'utente.  Per illustrare  il problema,  ecco  qui il contenuto  integrale  di una 

directory di un nuovo utente, creata in un sistema RedHat:

[newuser@blob user]$ ls -al total 32

drwx--- 3 user user 4096 Jan 16 13:32 . drwxr-xr-x 6 root root 4096 Jan 16 13:32 ..

-rw-r--r-- 1 user user 24 Jan 16 13:32 .bash_logout -rw-r--r-- 1 user user 191 Jan 16 13:32 .bash_profile -rw-r--r-- 1 user user 124 Jan 16 13:32 .bashrc

drwxr-xr-x 3 user user 4096 Jan 16 13:32 .kde -rw-r--r-- 1 user user 3511 Jan 16 13:32 .screenrc -rw--- 1 user user 61 Jan 16 13:32 .xauthDqztLr

Di primo acchito, il contenuto di una directory personale “usata” non sembra neppure in brutte 

condizioni:

olduser:~> ls

app-defaults/ crossover/ Fvwm@ mp3/ OpenOffice.org638/ articles/ Desktop/ GNUstep/ Nautilus/ staroffice6.0/ bin/ Desktop1/ images/ nqc/ training/ brol/ desktoptest/ Machine@ ns_imap/ webstart/ c/ Documents/ mail/ nsmail/ xml/

closed/ Emacs@ Mail/ office52/ Xrootenv.0

Ma quando tutti i file e le directory inizianti con un punto sono incluse, esistono 185 oggetti in 

questa   directory.   Ciò   si   spiega   perché   molte   applicazioni   hanno   le   proprie   directory   e/o   file, 

contenenti impostazioni specifiche  dell'utente,  nella directory  personale  di costui. Abitualmente 

questi file vengono creati la prima volta che avviate l'applicazione. In alcuni casi verrete avvisati 

quando è necessario creare una nuova directory non ancora esistente, ma il più delle volte tutto 

viene effettuato automaticamente.

Inoltre nuovi file sono creati apparentemente in continuazione poiché gli utenti vogliono salvare 

file, tenere versioni differenti dei propri lavori, usare applicazioni Internet e scaricare file e allegati 

nelle loro macchine locali. Non si ferma. E' evidente che una persona ha bisogno di un preciso 

schema per avere una panoramica delle cose.

Nella prossima sezione discuteremo su cosa significhi per noi tenere in ordine. Parleremo solo degli 

strumenti testuali disponibili nella shell, dal momento che gli strumenti grafici sono molto intuitivi 

e hanno il medesimo aspetto dei gestori di file punta­e­clicca in stile MS Windows, comprese le 

funzioni grafiche di aiuto ed altre caratteristiche che vi attendete da questo genere di applicazioni. 

L'elenco seguente è una panoramica dei più popolari gestori di file per GNU/Linux. Molti di loro 

possono essere avviati dal menu del vostro desktop manager o cliccando sull'icona della vostra 

directory personale o  da linea di comando, dando questi comandi:

nautilus:   è   il   file   manager   di   base   in   Gnome,   il   desktop   GNU.   Eccellente 

documentazione   su   come   lavorare  con   questo   strumento   può   essere   trovata   su 

http://www.gnome.org.

konqueror: il gestore di file usato abitualmente nel desktop KDE. Il manuale si 

trova su http://docs.kde.org.

mc:   Midnight   Commander,   il   file   manager   di   Unix   con   lo   stile   del   Norton 

Commander. Tutta la documentazione disponibile su http://gnu.org/directory o su un 

mirror come http://www.ibiblio.org.

Queste applicazioni meritano certamente di essere provate e solitamente impressionano i nuovi 

arrivati di Linux, anche solo perché esiste una così grande varietà: questi sono solo gli strumenti più 

diffusi   per   gestire   directory   e   file,   mentre   molti   altri   progetti   sono   in   corso   di   sviluppo.   Ora 

scopriamone   il   funzionamento   e   vediamo   come   questi   strumenti   grafici   utilizzano   i   comuni 

comandi UNIX.

3.3.2.2. Gli strumenti

3.3.2.2.1. Creare directory

Una maniera per tenere le cose in ordine è quella di assegnare a certi file locazioni specifiche di 

base creando directory e sottodirectory (o cartelle e sottocartelle se preferite). Ciò si fa con il 

comando mkdir:

richard:~> mkdir archive

richard:~> ls -ld archive

drwxrwxrwx 2 richard richard 4096 Jan 13 14:09 archive/

La creazione di directory e sottodirectory in una sola mossa si fa usando l'opzione -p:

richard:~> cd archive

richard:~/archive> mkdir 1999 2000 2001

richard:~/archive> ls 1999/ 2000/ 2001/

richard:~/archive> mkdir 2001/reports/Restaurants-Michelin/

mkdir: cannot create directory '2001/reports/Restaurants-Michelin/': No such file or directory

richard:~/archive> mkdir -p 2001/reports/Restaurants-Michelin/

richard:~/archive> ls 2001/reports/ Restaurants-Michelin/

Se il nuovo file ha bisogno di ulteriori permessi oltre a quelli di base per la creazione, i nuovi diritti 

di accesso possono essere impostati in una sola mossa, usando ancora il comando mkdir (v. pagine 

Info per maggiori informazioni). Stiamo per trattare le modalità d'accesso nella  prossima sezione 

dedicata alla sicurezza dei file.

Il nome di una directory deve attenersi  alle stesse regole applicate ai nomi dei comuni file. Una 

delle restrizioni più importanti è che non ci possono esistere due file con lo stesso nome in una 

directory (ma ricordate che Linux è un sistema operativo che distingue tra lettere maiuscole e 

minuscole [case sensitive] come UNIX). Virtualmente non esistono limiti alla lunghezza del nome 

di un file, ma di solito si tiene più corto di 80 caratteri in modo da farlo stare in una sola linea di 

terminale. Potete usare qualsiasi carattere a piacere nel nome di un file, sebbene sia consigliabile 

escludere i caratteri che hanno un significato speciale per la shell. In caso di dubbi, consultate 

l'Appendice C.

3.3.2.2.2. Spostare file

Ora che abbiamo strutturato correttamente la nostra directory personale, è tempo di riorganizzare i 

file non classificati usando il comando mv:

richard:/archive> mv ../report[1-4].doc reports/Restaurants-Michelin/

Questo comando serve anche per rinominare i file:

richard:~> ls To_Do

-rw-rw-r-- 1 richard richard 2534 Jan 15 12:39 To_Do

richard:~> mv To_Do done

richard:~> ls -l done

-rw-rw-r-- 1 richard richard 2534 Jan 15 12:39 done

E' evidente che cambia solo il nome del file: tutte le altre proprietà rimangono uguali.

Dettagliate informazioni sulla sintassi e le caratteristiche del comando mv si possono trovare nelle 

pagine man o Info. L'uso di tale documentazione dovrebbe essere il vostro primo pensiero quando 

incontrate un problema: facilmente la risposta ad esso si trova proprio nella documentazione di 

sistema.  Come  gli utenti  esperti  consultano  le pagine  man quotidianamente,  così i principianti 

dovrebbero leggerle ogni volta. Dopo un po' imparerete le opzioni più comuni dei normali comandi, 

ma avrete ancora bisogno della documentazione come fonte primaria di informazioni. Notate che  le 

informazioni   contenute   negli   HOWTO,   FAQ,   pagine   man   e   così   via,   stanno   lentamente 

trasfondendosi nelle pagine Info, che oggi sono la fonte più aggiornata di documentazione in linea 

(cioè disponibile per la lettura sul sistema).

3.3.2.2.3. Copiare file

La copia di file e directory si effettua con il comando cp. Una funzione utile è la copia ricorsiva 

(copia di tutti i file sottostanti e delle sottodirectory) che si ottiene aggiungendo l'opzione -R a cp. 

La sintassi generale è

cp [­R] dal_file al_file

Come esempio ecco il caso dell'utente  newguy  che desidera le stesse impostazioni del desktop 

Gnome che ha l'utente  oldguy. Un modo per risolvere il problema è copiare le impostazioni di 

oldguy nella directory personale di newguy:

victor:~> cp -R ../oldguy/.gnome/ .

Ciò restituirà alcuni errori legati ai permessi sui file, ma tutti questi errori hanno a che fare con i file 

privati   di   cui,   in   ogni   caso,  newguy  non   ha   necessità.   Tratteremo   nella   prossima   parte   come 

cambiare questi permessi in caso essi costituiscano veramente un problema.

3.3.2.2.4. Rimuovere i file

Utilizzate il comando rm per rimuovere singoli file, rmdir per rimuovere directory vuote (usate ls 

­a per verificare se una directory è vuota o meno). Il comando rm ha anche opzioni per rimuovere 

directory  non vuote con tutte le loro sottodirectory  (leggete  le pagine  Info per queste opzioni 

piuttosto pericolose).

Quanto vuota può essere una directory?

E' normale che le directory . (punto) e .. (punto­punto) non possano essere rimosse, dal 

momento che esse sono necessarie anche in una directory vuota per stabilire il livello 

delle directory nella gerarchia del file system.

In Linux, esattamente come in UNIX, non esiste un cestino ­ almeno non nella shell, sebbene ci 

siano numerose soluzioni per la modalità grafica. Cosicché un file, una volta rimosso, non esiste più 

ed in genere non c'è modo di recuperarlo a meno che non abbiate dei backup o siate veramente 

rapidi e abbiate un amministratore di sistema realmente bravo. Per proteggere il principiante da 

questo   inconveniente,   è   possibile   attivare   con   l'opzione  -i  il   comportamento   interattivo   dei 

comandi  rm, cp e mv.  In tal caso il sistema non agirà immediatamente su richiesta ma, invece, 

chiederà conferma, richiedendo un clic aggiuntivo sul tasto Invio per produrre il danno:

mary:~> rm -ri archive/

rm: descend into directory 'archive'? y

rm: descend into directory 'archive/reports'? y rm: remove directory 'archive/reports'? y

rm: descend into directory 'archive/backup'? y

rm: remove directory 'archive/backup/sysbup200112.tar'? y rm: remove directory 'archive/backup'? y

rm: remove directory 'archive'? y

Tratteremo   di   come   rendere   automatica   tale   opzione   nel   Capitolo   7   in   cui   si   parla   della 

personalizzazione del vostro ambiente di shell.

Nel documento Introduzione a Linux (pagine 67-71)