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 puntaeclicca 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 .. (puntopunto) 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