
Copia e incolla
Il tool della shell Unix che permette di copiare file e intere directory all’interno del file system
Tra le operazioni che si compiono più spesso durante l’utilizzo del PC, una
delle più frequenti è copiare file e directory per posizionarli (incollarli)
da una parte all’altra del file system. Per portare a termine queste operazioni,
la shell Unix prevede l’uso di un comando specifico ovvero cp (copy). Ma passiamo
subito ad analizzare qualche esempio pratico. Supponiamo, ad esempio, di voler
copiare il file test.txt dalla nostra home (/home/nome_utente) nella directory
/tmp. In questo caso il comando cp dovrà essere eseguito nel modo seguente:
cp test.txt /tmp. Al contrario, per creare una copia di test.txt nella stessa
directory, chiamandola, ad esempio, copia.txt, il comando precedente diventa
cp test.txt copia. txt. In pratica, indicando i nomi di due file “normali”,
il primo viene copiato sul secondo, cioè la shell genera una copia esatta del
file originale che ha il nome indicato come secondo argomento. Se il secondo
parametro (nome) è una directory, invece, il file viene copiato in quest’ultima
con lo stesso nome dell’originale. Per copiare più file contemporaneamente,
inoltre, bisogna indicare tutti i nomi e l’ultimo deve necessariamente essere
una directory, all’interno della quale verranno generate le copie di tutti i
file indicati. È chiaro, quindi, che quando si utilizza il carattere jolly “*”
(asterisco) per copiare tutti i file contenuti in una directory, la destinazione
deve essere un’altra directory. Il comando cp, infine, se non espressamente
indicato tramite alcune opzioni particolari, si limita a copiare solo i file
normali, escludendo collegamenti simbolici e directory. Le opzioni di cp sono:
-r, che consente di copiare file e directory in modo ricorsivo (comprese le
sottodirectory) e considera come file tutto ciò che non è una directory; -R,
che permette di copiare file e directory in modo ricorsivo includendo anche
le sottodirectory; -f, per forzare la scrittura del file o dei file destinazione;
-l, per creare un collegamento simbolico invece di copiare il file; -p, che
permette di mantenere i permessi dei file originali anche sulle copie; -d, che
copia i collegamenti simbolici mantenendoli come tali, invece di copiare il
file a cui fanno riferimento. Infine, troviamo -a che corrisponde alle opzioni
-dpR per copiare i collegamenti simbolici così come sono.
 |
Il comando cp *.txt /tmp copia solo i file con estensione .txt nella directory /tmp |
 |
Utilizzando cp -r temp/* /tmp, copiamo tutto il contenuto della directory temp in /tmp |
 |
Con cp -r temp /tmp copiamo l’intera directory temp all’interno di /tmp |