Proseguiamo in questa lezione il nostro viaggio nel file system analizzando altri due utili comandi della shell di Linux, ovvero cp (copy) e mv (move) che ci serviranno rispettivamente per copiare, spostare e rinominare file e/o directory all’interno del nostro sistema operativo.
Indice
Il comando cp
Copiare file
Per copiare un file useremo il comando cp (che è l’abbreviazione di copy), ecco la sintassi:
cp [opzioni] sorgente destinazione
Poniamo, ad esempio, di voler creare una copia del file “foto-1.jpg” (che si trova nella posizione corrente):
cp foto-1.jpg copia-foto-1.jpg
Così facendo avrò creato una copia del file sorgente nella stessa cartella in cui mi trovo (per verificare si faccia ls -l).
Volendo creare una copia in un’altra cartella dovremo indicare alla voce destinazione il percorso completo della cartella al cui interno vogliamo venga copiato il file:
cp foto-1.jpg /home/miosito/fotografie
Così facendo la copia avrà lo stesso nome del file sorgente.
Attraverso il comando cp è possibile anche copiare più file simultaneamente: per farlo sarà sufficiente elencarli seoarandoli con uno spzio. Vediamo un esempio:
cp foto-1.jpg foto-2.jpg foto-3.jpg /home/miosito/fotografie
Volendo è anche possibile effettuare la copia di più file simultaneamente utilizzando un pattern attraverso il carattere jolly (l’asterisco), in questo modo:
cp foto*.jpg /home/miosito/fotografie
Così facendo avrò copiato tutti i file JPEG che hanno il nome che inizia per “foto”.
Copiare intere directory
Ma se volessimo copiare un intera directory? Per fortuna il comando cp ci consente di farlo in modo altrettanto semplice. Per effettuare la copia di una cartella useremo, come per il comando rm, l’opzione ricorsiva che è supportata, appunto, anche dal comando cp.
Poniamo, ad esempio, di voler copiare l’intera directory “foto_vacanze_2020” (che si trova nella posizione corrente) all’interno della solita cartella fotografie del nostro sito:
cp -R foto_vacanze_2020 /home/miosito/fotografie
oppure:
cp -a foto_vacanze_2020 /home/miosito/fotografie
Una volta eseguito questo comando vi invito ad effettuare una verifica: spostatevi nella directory di destinazione (usando cd) e visualizzatene il contenuto (usando ls)… se tutto ha funzionato correttamente dovreste trovare la vostra directory “foto_vacanze_2020” con all’interno tutti i file presenti nella cartella sorgente.
Le opzioni del comando cp
Vediamo di seguito le opzioni ammesse dal comando cp:
- -a -effettua la copia di una cartella e di tutto il suo contenuto compreso link simbolici e permessi
- -f -effettua la copia in modalità forzosa rimuovendo il file di destinazione se è presente e non può essere sovrascritto
- -i -durante la copia il sistema chiederà conferma prima di sovrascrivere i file eventualmente presenti (modalità interattiva)
- -l -linka i file invece di copiarli
- -L -segue i link simbolici
- -R -copia ricorsiva (utilizzata per effettuare la copia di cartelle di file)
- -n -effettua la copia ma non sovrascrive i file eventualmente già presenti
- -u – effettua la copia solo se il file di origine è più recente di quello di destinazione
- -v -stampa a video una serie di informazioni aggiuntive sul processo di copia (modalità verbosa)
Il comando mv
Spostare file
Qualora non fossimo interessati a copiare, ma semplicemente a spostare un file useremo il comando mv (che è l’abbreviazione di move) seguito dal nome del file da spostare e, a seguire, dalla directory di destinazione. Ecco la sintassi:
mv [opzioni] sorgente destinazione
Riprendiamo l’esempio visto sopra e poniamo di voler spostare (e non copiare) il file “foto-1.jpg” all’interno della solita directory fotografie:
mv foto-1.jpg /home/miosito/fotografie
Così facendo il file “sparirà” dalla posizione corrente e “comparirà” nella directory di destinazione.
Come abbiamo visto per cp anche per mv è possibile effettuare lo spostamento simultaneamente su più file elencandone i nomi sepoarati da uno spazio:
mv foto-1.jpg foto-2.jpg foto-3.jpg /home/miosito/fotografie
mv foto*.jpg /home/miosito/fotografie
Così facendo sposteremo tutti i file JPEG che hanno il nome che inizia con “foto” dentro alla cartella di destinazione.
Spostare una cartella
Il comando mv consente di spostare anche intere cartelle, vediamo un esempio:
mv foto_vacanze_2020 /home/miosito/fotografie
Attraverso questo comando spostiamo la cartella “foto_vacanze_2020” ed il suo contenuto all’interno del percorso specificato.
Attenzione: per spostare un file o una directory è necessario disporre dei permessi di scrittura sia sulla sorgente che sulla destinazione, in caso contrario l’operazione non potrà essere eseguita e si otterrà un errore.
Rinominare file e cartelle
In questa sede credo sia opportuno ricordare che il comando mv ha anche una seconda funzione: quella di rinominare un file o una cartella. Ecco la sintassi:
mv vecchio_nome nuovo_nome
Se, ad esempio, volessimo rinominare il file “foto-1.jpg” in “foto_amici_spiaggia.jpg” useremo:
mv foto-1.jpg foto_amici_spiaggia.jpg
Per rinominare una cartella, analogamente, useremo:
mv foto_vacanze_2020 foto_vacanze_mare_2020
Si faccia attenzione: per rinominare la cartella è necessario che il nuovo nome non corrisponda al percorso di una cartella che esiste già: in quest’ultima circostanza, infatti, la cartella sorgente verrà spostata all’interno di quella di destinazione.
Le opzioni del comando mv
Vediamo di seguito le opzioni ammesse dal comando mv:
- -f -effettua lo spostamento in modalità forzosa rimuovendo il file di destinazione se è presente
- -i -durante lo spostamento il sistema chiederà conferma prima di sovrascrivere i file eventualmente presenti nel percorso di destinazione (modalità interattiva)
- -n -effettua lo spostamento ma non sovrascrive i file eventualmente già presenti nel percorso di destinazione
- -v -stampa a video una serie di informazioni aggiuntive sul processo di spostamento (modalità verbosa)
- -u – effettua lo spostamento solo se il file di origine è più recente di quello co lo stesso nome eventualmente già presente nel percorso di destinazione