Articolo originale: https://www.freecodecamp.org/news/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!