Articolo originale: The Linux cp Command – How to Copy Files in Linux
Esistono un paio di modi per copiare e incollare del contenuto quando stai lavorando al computer.
Se passi più tempo sull'interfaccia del tuo dispositivo, probabilmente usi il mouse per farlo. Puoi copiare i file facendo click con il tasto destro e selezionando "Copia" e poi andando in un'altra cartella e selezionando "Incolla".
Per gli amici del terminale, è possibile eseguire un'operazione copia e incolla anche senza lasciare il terminale. In un terminale basato su Linux, puoi farlo usando il comando cp
.
In questo articolo, spiegherò cos'è il comando cp
e come puoi copiare e incollare file e cartelle usando direttamente il terminale su Linux.
Cos'è il comando cp
?
Puoi usare il comando cp
per copiare file da una posizione a un'altra. Questo comando può anche copiare delle cartelle.
La sintassi del comando è:
cp [...file/directory-sorgente] [destinazione]
[file/directory-sorgente]
specifica la sorgente del file o della cartella che vuoi copiare. E l'argomento [destinazione]
specifica la posizione in cui vuoi che il file sia copiato.
Per il resto di questo articolo, utilizzerò la seguente struttura di cartelle di esempio. Diciamo che una cartella chiamata DirectoryA ha due cartelle al suo interno: DirectoryA_1 e DirectoryA_2. Queste sotto-cartelle hanno molti file e sotto-cartelle al loro interno.
Assumerò che nel terminale siamo attualmente nella posizione di DirectoryA, quindi assicurati di trovarti anche tu in questa posizione:
cd DirectoryA
Come copiare file con il comando cp
Se vuoi copiare il file README.txt da DirectoryA_1 in DirectoryA_2, puoi usare il comando cp
in questo modo:
cp ./DirectoryA_1/README.txt ./DirectoryA_2
# ./DirectoryA_1/README.txt è il file sorgente
# ./DirectoryA_2 è la destinazione
Se vuoi copiare più di un file da DirectoryA_1 in DirectoryA_2, puoi usare il comando cp
in questo modo:
cp ./DirectoryA_1/README.txt ./DirectoryA_1/ANOTHER_FILE.txt ./DirectoryA_2
Come puoi vedere, mettiamo tutti i file sorgente all'inizio e l'ultimo argomento sarà la destinazione.
Come copiare delle cartelle con il comando cp
Di default, il comando cp
funziona con i file. Quindi se tenti di copiare una cartella in questo modo:
cp ./DirectoryA_1/Folder/ ./DirectoryA_2
Otterrai un errore che ti comunica:
./DirectoryA_1/Folder/ is a directory
Per copiare delle cartelle, devi passare il flag -r
, che informa il comando cp
di copiare ricorsivamente una cartella e il suo contenuto (che può essere costituito da file o altre sotto-cartelle). Quindi puoi aggiungere al precedente comando il flag prima della cartella sorgente, in questo modo:
cp -r ./DirectoryA_1/Folder/ ./DirectoryA_2
Questo comando copierà ricorsivamente la cartella Folder in ./DirectoryA_1/ così come tutti i file e le cartelle contenute nella cartella Folder.
Copiare copiare file che corrispondono a un glob pattern
Un glob pattern è simile a un'espressione regolare, che ci permette di trovare più nomi di file corrispondenti a un modello specifico. Per conoscere meglio la differenza: Regex vs Glob patterns (risorsa in lingua originale inglese).
Ad esempio, se vuoi copiare tutti i file della DirectoryA_1 che hanno l'estensione .txt, puoi eseguire questo comando:
cp ./DirectoryA_1/*.txt ./DirectoryA_2
./DirectoryA_1/*.txt
corrisponde ai file che hanno nel loro nome l'estensione .txt
e il comando cp
può copiarli tutti nella destinazione desiderata.
Per imparare di più suoi glob pattern e i caratteri che puoi usare, puoi dare un'occhiata alla documentazione.
Adesso sai come copiare dei file (o delle cartelle) direttamente dalla riga di comando.
Grazie per aver letto questo articolo!