|
cp [opzioni] origine... destinazione
Copia uno o più file (incluse le directory) in un’unica destinazione. La copia in un sistema Unix non funziona come nei sistemi Dos e ciò principalmente a causa di due fattori: i caratteri jolly (ovvero il file globbing) vengono risolti dalla shell prima dell’esecuzione del comando e i file system Unix possono utilizzare i collegamenti simbolici.
Se vengono specificati solo i nomi di due file normali, il primo viene copiato sul secondo, viene cioè generata una copia che ha il nome indicato come destinazione. Se il secondo nome indicato è una directory, il file viene copiato nella directory con lo stesso nome di origine. Se vengono indicati più file, l’ultimo nome deve essere una directory, all’interno della quale vengono generate le copie di tutti i file indicati. Di conseguenza, quando si utilizzano i caratteri jolly, la destinazione deve essere una directory. In mancanza di altre indicazioni attraverso l’uso di opzioni adeguate, le directory non vengono copiate. Chi conosce il Dos potrebbe essere abituato a usare il comando ‘COPY’ per copiare un gruppo di file in un altro gruppo di file con i nomi leggermente modificati, come in questo esempio: ‘COPY *.bak *.doc’. Con i sistemi Unix, questo tipo di approccio non può funzionare.
I file elencati nell’origine potrebbero essere in realtà dei collegamenti simbolici. Se non viene specificato diversamente attraverso l’uso delle opzioni, questi vengono copiati così come se fossero file normali; cioè la copia è ottenuta a partire dai file originali e non si ottiene quindi una copia dei collegamenti. | Opzione | Descrizione
| | -a | Equivalente a ‘-dpR’, utile per l’archiviazione o comunque per la copia di collegamenti simbolici così come sono. | | -d | Copia i collegamenti simbolici mantenendoli come tali, invece di copiare il file a cui i collegamenti si riferiscono. | | -f | Sovrascrittura forzata dei file di destinazione. | | -l | Crea un collegamento fisico invece di copiare i file. | | -p | Mantiene le proprietà e i permessi originali. | | -r | Copia file e directory in modo ricorsivo (includendo le sottodirectory), considerando tutto ciò che non è una directory come un file normale. | | -R | Copia file e directory in modo ricorsivo (includendo le sottodirectory). |
Segue la descrizione di alcuni esempi. • $ cp -r /test/* ~/prova [ Invio ] Copia il contenuto della directory ‘/test/’ in ‘~/prova/’ copiando anche eventuali sottodirectory contenute in ‘/test/’. Se ‘~/prova’ esiste già e non si tratta di una directory, questo file viene sovrascritto, perdendo quindi il suo contenuto originale.
• $ cp -r /test ~/prova [ Invio ] Copia la directory ‘/test/’ in ‘~/prova/’ (attaccando ‘test/’ a ‘~/prova/’) copiando anche eventuali sottodirectory contenute in ‘/test/’. • $ cp -dpR /test ~/prova [ Invio ] Copia la directory ‘/test/’ in ‘~/prova/’ (attaccando ‘test/’ a ‘~/prova/’) copiando anche eventuali sottodirectory contenute in ‘/test/’, mantenendo inalterati i permessi e riproducendo i collegamenti simbolici eventuali. |