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