Ora che sappiamo muoverci nel filesystem ed esaminare il contenuto di una directory, concentriamocoi sui singoli file e sulle operazioni che possiamo fare su di essi: vedremo quindi i comandi per copiare, spostare ed eliminare i file presenti sul disco; inoltre, vedremo come eseguire le stesse operazioni sulle directory, imparando anche come crearle.
cp
Il primo comando è cp
, utilizzato per copiare file e directory. La sua sintassi è molto semplice:
cp file_sorgente destinazione
oppure, per la copia multipla di file, si usa:
cp file1 file2 ... fileN destinazione
che permetterà di copiare i file file1 .. fileN
nella directory di destinazione. Vediamo un esempio:
cp miofile /tmp
che copierà 'miofile
' nella directory /tmp
. Se in /tmp
esiste già un file chiamato miofile, questo sarà sovrascritto dal nuovo file.
Opzioni di cp
Vediamo ora le opzioni più importanti di cp:
Opzione | Descrizione |
---|---|
-b |
Esegue automaticamente una copia di backup di ogni file di destinazione esistente |
-f |
Forza la sovrascrittura dei file, senza richiedere interventi da parte dell'utente |
-i |
Attiva la modalità interattiva, che chiede conferma prima dell'evanutale sovrascrittura di file di destinazione preesistenti; il suffisso usato è il classico simbolo della tilde, ~ |
-p |
Mantiene, se possibile, gli attributi (permessi, ownership, etc.) del file |
-r |
Permette di attivare la modalità ricorsiva, che permette la copia di directory |
-v |
Attiva la modalità verbose, che visualizza in output quello che il sistema ha fatto in seguito al nostro comando |
mv
Dopo aver visto come copiare file e directory, dedichiamoci allo spostamento ed al cambio di nome dei file; tutto questo è fatto con un solo comando: mv
, la cui sintassi è:
mv sorgente destinazione (per rinominare) mv sorgente directory (per spostare un file) mv sorgente1 .. sorgenteN destinazione (per spostare più file)
Tramite mv
, oltre a cambiare il nome di un file, è anche possibile rinominare una directory o muovere più directory in un'altra directory. Le opzioni di mv
sono molto simili a quelle di cp
, sebbene in numero minore. Quelle che a noi interessano sono le stesse viste per il comando cp
, con l'esclusione di -p
che per mv non esiste.
rm e rmdir
Come ultimo, ci rimane il comando rm
, che permette di eliminare file o directory. La sua sintassi è abbastanza semplice:
rm file (per eliminare un file) rm file1 .. fileN (per eliminare più file)
Le opzioni di rm
sono anch'esse simili a quelle di mv
; le più utili sono le stesse che sono state viste per cp
, con l'esclusione di "-p
" che qui non ha alcun senso pratico.
Deve qui essere aperta una parentesi relativa alle directory: di norma, se siete sicuri di poter elimimare una directory non vuota, potete utilizzare il comando
rm -rf directory
che forza l'eliminazione della directory 'directory
' e dei suoi contenuti. Per eliminare una directory vuota, si usa invece il comando:
rmdir directory
A volte, però, tale comando non sembra sortire gli effetti desiderati: nonostante la directory sembri vuota, quanto scritto sopra ci restituisce un errore, dove il sistema si lamenta perchè esistono dei file all'interno della directory che vogliamo eliminare.
Accade spesso, infatti, che per controllare il contenuto di una directory si usi solamente ls
che, per sua natura, non visualizza i file nascosti! A questo punto si può procedere in due modi: entrare nella directory e cancellare tali file oppure, se si è sicuri che i file nascosti all'interno di tale directory non sono importanti, si può procedere con rm -rf
.
mkdir
Come ultima cosa, vediamo come creare le directory: il comando è mkdir
, la cui sintassi è:
mkdir directory (per creare una directory) mkdir directory1 .. directoryN (per creare più directory)
Vediamo un esempio: nella nostra home directory, supponiamo /home/utente
, è presente la directory "dir
" e vogliamo creare "sottodir
" come sottodirectory della precedente. La prima cosa che viene in mente di fare è di entrare in "dir
" e lanciare il comando:
mkdir sottodir
È però possibile, e anche molto più comodo, utilizzare direttamente il comando:
mkdir dir/sottodir
con una sola attenzione: il comando
mkdir dir/sottodir sottodir2 sottodir3
non fa quello che ci si potebbe aspettare, ossia creare sottodir
, sottodir2
e sottodir3
come sottodirectory di dir
; quello che qui accade, invece, è la creazione di sottodir
come sottodirectory di dir
e la creazione di sottodir2
e sottodir3
allo stesso livello di dir
!
Quindi, per non dover scrivere:
mkdir dir/sottodir dir/sottodir2 dir/sottodir3
in questo caso è più comodo entrare in dir e lanciare:
mkdir sottodir sottodir2 sottodir3
Con queste nozioni, potrete certamente iniziare a fare gli esperimenti sulla creazione, rimozione e spostamento di file e directory. Permetteteci però qualche consiglio:
- utilizzate
touch
per creare file vuoti con cui operare; il comandotouch file
crea il file vuotofile
; utilizzate invece il comandomkdir
(mkdir nomedirectory
) per la creazione delle directory - spostatevi in
/tmp
per le prove; è più sicuro e vi eviterà di lasciare file e directory inutili sparsi per il filesystem o, peggio, di eliminare file importanti o di sistema per qualche disattenzione - non, ripeto, NON utilizzate l'utente root per queste prove: uno stupido errore di digitazione può, come si dice in gergo, "rasare" un intero filesystem!
In conclusione, ricordiamo che tutti i comandi fino a qui visti permettono di specificare caratteri jolly, quali ad esempio l'asterisco o il punto di domanda. Ad esempio:
rm ab*
rimuoverà tutti i file il cui nome inizia con "ab" seguiti da zero o più caratteri. Invece, il comando:
rm ab?
eliminerà tutti i file il cui nome inizia con ab seguiti da un qualsiasi carattere.