3.7 Comandi di gestione dei file

Per creare, copiare, rimuovere file e per modificarne i permessi si possono usare i seguenti comandi.

Tabella 3-3. Comandi di gestione dei file

Comando/Sintassi Cosa fa
chgrp [opzioni] gruppo file cambia il gruppo assegnato ad un file
chmod [opzioni] file cambia i permessi di accesso a file o directory
chown [opzioni] proprietario file cambia il proprietario di un file; può essere usato solamente dal super-user
cp [opzioni] file1 file2 copia file1 in file2; file2 non dovrebbe già esistere. Questo comando crea o sovrascrive file2
mv [opzioni] file1 file2 muove (rinomina) file1 in file2
rm [opzioni] file elimina un file o una directory (-r rimuove ricorsivamente le directory e il loro contenuto) (-i chiede conferma prima di rimuove i file)

Se si ha una certa familiarità con DOS la tabella che segue paragona i suoi simili comandi a quelli Unix in modo tale da fornire un appropriato quadro di riferimento.

Tabella 3-4. Comandi di gestione dei file Unix vs DOS

Comando Unix Dos
copia un file cp copy
muove un file mv move (non supportato in tutte le versioni di Dos)
rinomina un file mv rename & ren
elimina un file rm erase & del
mostra un file a schermo cat type
mostra un file a schermo, una pagina alla volta more, less, pg type /p (non supportato in tutte le versioni di Dos)

3.7.1 cp - copia un file

Il comando cp(1) copia il contenuto di un file in un altro file.

Sintassi

cp [opzioni] filename1 filename2

Opzioni generali

-i interattivo (chiede conferma prima di procedere)
-r copia ricorsivamente una directory

Esempi:

% cp filename1 filename2

Si hanno due copie del file, ognuna con un identico contenuto. Questi file sono completamente indipendenti tra loro e possono essere editati e modificati entrambi quando necessario. Ciascuno di essi ha il proprio inode, i propri blocchi di dati e il proprio elemento nella tabella di directory.

3.7.2 mv - sposta un file

Il comando mv(1) rinomina (sposta) un file.

Sintassi

mv [opzioni] vecchio_file nuovo_file

Opzioni generali

-i interattivo (chiede conferma prima di procedere)
-f non chiede la conferma quando si sovrascrive un file esistente (ignora -i)

Esempi:

% mv vecchio_file nuovo_file

Il file nuovo_file sostituisce vecchio_file. In realtà tutto quello che è stato fatto è aver aggiornato l'elemento della tabella di directory per attribuire al file il nuovo nome. Il contenuto del file rimane come era prima della rinominazione.

3.7.3 rm - elimina un file

Il comando rm(1) elimina un file.

Sintassi

rm [opzioni] filename

Opzioni generali

-i interattivo (chiede conferma prima di procedere)
-r rimuove una directory ricorsivamente, rimuovendo prima i file e le directory sottostanti
-f non chiede conferma prima di procedere (ignora -i)

Esempi:

% rm filename

Visualizzando il contento della directory si vedrà che quel file non esiste più. In realtà tutto quello che è stato fatto è aver rimosso l'elemento dalla tabella di directory e marcato l'inode come “non usato”. Il contenuto del file è ancora sul disco, ma ora il sistema non ha più modo di identificare quei blocchi di dati con il nome del file eliminato. Non c'è un certo comando per “riprendere” un file che è stato eliminato in questo modo. Per questa ragione molti utenti alle prime armi effettuano un alias del comando di eliminazione in rm -i dove l'opzione -i chiede di confermare prima di rimuovere il file. Simili alias sono generalmente messi nel file .cshrc per la shell C (vedere il Capitolo 5).

3.7.4 Permessi dei file

Ciascun file e directory ha permessi che stabiliscono chi può leggerlo, scriverlo e/o eseguirlo. Per scoprire i permessi assegnati a un file, può essere usato il comando ls(1) con l'opzione -l. Quando si ha la necessità di conoscere il gruppo per il quale i permessi sono stati assegnati si può usare l'opzione -g insieme a ls -l (solamente BSD).

Quando si usa il comando ls -lg su un file (ls -l su SysV) l'output sarà mostrato come il seguente:

-rwxr-x--- user Unixgroup size Month nn hh:mm filename

La zona dedicata ai caratteri e trattini (-rwxr-x---) è la zona che mostra il tipo di file e i permessi del file, come spiegato nella precedente sezione. Quindi la stringa di permessi dell'esempio, -rwxr-x---, permette al proprietario user del file di leggerlo, modificarlo ed eseguirlo; gli utenti del gruppo Unixgroup del file possono leggerlo ed eseguirlo; gli altri utenti del sistema non possono accedere in alcun modo al file.

3.7.5 chmod - cambio dei permessi del file

Il comando per cambiare i permessi ad un elemento (file, directory, ecc.) è chmod(1) (cambio dei modi). La sintassi richiede l'uso del comando con tre cifre (rappresentanti i permessi del proprietario (u), i permessi del gruppo (g) e i permessi degli altri utenti (o)) seguite da un argomento (che può essere un nome di un file o una lista di file e directory). Oppure può essere usato con una rappresentazione simbolica dei permessi, indicando a quale utenza questi vanno applicati.

Ogni tipo di permesso è rappresentato dal proprio numero equivalente:

lettura=4, scrittura=2, esecuzione=1

o da singoli caratteri:

lettura=r, scrittura=w, esecuzione=x

Il permesso 4 o r specifica il permesso di lettura. Se i permessi desiderati sono lettura e scrittura, il 4 (rappresentante la lettura) e il 2 (rappresentante la scrittura) sono addizionati per ottenere il permesso 6. Quindi, un permesso settato a 6 vorrà concedere un permesso di lettura e di scrittura.

Alternativamente si può usare una notazione simbolica che usa un carattere rappresentativo per l'utenza a cui ci si riferisce, uno per il permesso e uno per l'operazione, dove l'operazione può essere:

+ aggiunge permessi
- rimuove permessi
= setta permessi

Quindi per settare i permessi di lettura e di scrittura per il proprietario del file si usa nella notazione simbolica u=rw.

Sintassi

chmod nnn [lista argomenti] modalità numerica
chmod [chi] op [perm] [lista argomenti] modalità simbolica

dove nnn sono i tre numeri rappresentanti i permessi del proprietario, del gruppo e degli altri utenti; chi può essere u,g,o oppure a (tutti) e perm può essere r,w,x. Nella notazione simbolica si può separare la specifica dei permessi con una virgola, come mostrato nell'esempio qui sotto.

Opzioni generali

-f forza (nessun messaggio di errore viene generato se la modifica non ha avuto successo)
-R discesa ricorsiva attraverso la struttura delle directory e cambio dei modi

Esempi:

Se i permessi desiderati per il file1 sono: proprietario: lettura, scrittura ed esecuzione; gruppo: lettura ed esecuzione; altri: lettura ed esecuzione; il comando da usare è:

chmod 755 file1 oppure chmod u=rwx,go=rx file1

Nota: Quando si assegnano i permessi a un file per l'utenza gruppo e per l'utenza altri è necessario che il minimo permesso di esecuzione (inteso come permesso di accesso) per la directory nella quale il file è posizionato sia abilitato. Un semplice modo per far questo è posizionarsi nella directory nella quale i permessi devo essere garantiti e digitare:

chmod 711 . oppure chmod u=rw,+x . oppure chmod u=rwx,go=x .

dove il punto (.) indica la directory corrente.

3.7.6 chown - cambio del proprietario del file

Il proprietario di un file può essere cambiato con il comando chown(8). Su molte versioni Unix questo può essere realizzato solo dal super-user, ad esempio, un utente normale non può attribuire i suoi file ad altri proprietari. chown(8) è usato come qui sotto, dove # rappresenta il prompt di shell per il super-user.

Sintassi

chown [opzioni] utente[:gruppo] file (SVR4)
chown [opzioni] utente[.gruppo] file (BSD)

Opzioni generali

-R discende ricorsivamente attraverso la struttura della directory
-f forza, non riporta errori

Esempi:

# chown nuovo_proprietario file

3.7.7 chgrp - cambio del gruppo del file

Con il comando chgrp(1) tutti possono cambiare il gruppo dei propri file in un altro gruppo di appartenenza.

Sintassi

chgrp [opzioni] gruppo file

Opzioni generali

-R discende ricorsivamente attraverso la struttura della directory
-f forza, non riporta errori

Esempi:

% chgrp nuovo_gruppo file

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.