Cp
From Linuzz
Line 1: | Line 1: | ||
- | |||
'''NOME''' | '''NOME''' | ||
Line 18: | Line 17: | ||
'''DESCRIZIONE''' | '''DESCRIZIONE''' | ||
- | cp copia file (o, eventualmente, directory). | + | cp copia file (o, eventualmente, directory). È possibile copiare sia un file su una destinazione data, sia un numero arbitrario di file su una directory d’arrivo. Se l’ultimo argomento indica una directory esistente, cp copia ogni file sorgente su quella directory (mantenendo lo stesso nome). Altrimenti, se sono indicati solo due file, copia il primo sul secondo. Si ha un errore se l’ultimo argomento non è una directory e sono presenti più di due argomenti non di opzione. |
- | + | Perciò | |
- | + | «cp -r /a /b» copia /a su /b/a e /a/x su /b/a/x nel caso in cui /b esiste già | |
ma copia /a su /b e /a/x su /b/x se /b non esisteva in precedenza. | ma copia /a su /b e /a/x su /b/x se /b non esisteva in precedenza. | ||
- | I permessi dei file e delle directory | + | I permessi dei file e delle directory così create sono identici a quelli dei file originali, AND 0777 e modificati dalla umask utente (a meno che sia usata l’opzione -p). Durante la copia ricorsiva di directory, però, i per‐ messi delle directory create ex novo sono quelli finali OR S_IRWXU (0700), per permettere lettura, scrittura e ricerca nella nuova directory al processo. Copiando un file su se stesso, non viene fatto niente (a parte produrre un eventuale messaggio d’errore). Copiando su un file esistente, questo viene aperto con «open(path, O_WRONLY | O_TRUNC)». Copiando su un file inesistente, questo viene creato con «open(path, O_WRONLY | O_CREAT, mode)». Se ciò fallisce, il file esiste e ed era stata data l’opzione -f, cp prova a cancellare (unlink) il file esistente, e in caso di successo continua come per un file inesistente. |
'''OPZIONI POSIX''' | '''OPZIONI POSIX''' | ||
Line 36: | Line 35: | ||
-i | -i | ||
- | Chiede conferma per sovrascrivere file di destinazione preesistenti (la domanda | + | Chiede conferma per sovrascrivere file di destinazione preesistenti (la domanda è scritta su stderr e la risposta letta da stdin; la copia avviene solo in caso di risposta affermativa) -p Conserva proprietario, gruppo, permessi (inclusi i bit setuid e setgid), data di ultima modifica e data di ultimo accesso dei file originali. Nel caso la duplicazione del proprietario o del gruppo fallisca i bit setuid e setgid vengono azzerati (si noti che alla fine originale e copia potrebbero ben avere diverse date d’accesso, costituendo l’operazione di copia un accesso all’originale). |
-R | -R | ||
- | Copia le directory ricorsivamente, facendo la cosa giusta incontrando oggetti diversi da file ordinari o directory ( | + | Copia le directory ricorsivamente, facendo la cosa giusta incontrando oggetti diversi da file ordinari o directory (cioè, la copia di una FIFO o un file speciale è una FIFO o un file speciale). |
-r | -r | ||
- | Copia le directory ricorsivamente, comportandosi in modo non specificato con oggetti diversi da file ordinari o directory; | + | Copia le directory ricorsivamente, comportandosi in modo non specificato con oggetti diversi da file ordinari o directory; cioè è permesso, o meglio incoraggiato, che -r sia un sinonimo di -R. In ogni caso, comporta‐ menti bizzarri, come quello della versione GNU attuale di cp (vedi oltre) non è vietato. |
'''PARTICOLARI GNU''' | '''PARTICOLARI GNU''' | ||
- | Di norma, i file sono scritti | + | Di norma, i file sono scritti così come sono letti. Per eccezioni, vedi --sparse oltre. Di natura, cp non copia directory (ma vedi -r oltre). cp rifiuta, di norma, di copiare un file su se stesso, con l’eccezione seguente: se vengono date le opzioni --force --backup con identici sorgenti e destinazioni , che si riferiscono ad un file normale, cp crea un file di backup, normale o numerato come specificato nel modo usuale. Questo torna utile quando si vuole semplicemente fare un backup di un file esistente prima di modificarlo. |
'''OPZIONI GNU''' | '''OPZIONI GNU''' | ||
Line 56: | Line 55: | ||
--archive | --archive | ||
- | Conserva nella copia quanto | + | Conserva nella copia quanto è possibile della struttura e degli attributi dei file originali (ma non la struttura di directory). Lo stesso di -dpR. |
-d | -d | ||
Line 92: | Line 91: | ||
--parents | --parents | ||
- | Forma il nome di ognuno dei file destinazione aggiungendo al nome della directory indicata uno slash (/) e il nome del file originale. | + | Forma il nome di ognuno dei file destinazione aggiungendo al nome della directory indicata uno slash (/) e il nome del file originale. L’ultimo argomento dato a cp deve essere il nome di una directory esistente. Per esempio, il comando «cp --parents a/b/c dir_esistente» copia il file a/b/c su dir_esistente/a/b/c, creando qualsiasi directory intermedia mancante. |
-r | -r | ||
- | Copia le directory ricorsivamente, copiando tutte le non-directory e i link non simbolici (FIFO e file speciali) come se fossero file normali. In altre parole, provando a leggere dati da ciascuna sorgente e | + | Copia le directory ricorsivamente, copiando tutte le non-directory e i link non simbolici (FIFO e file speciali) come se fossero file normali. In altre parole, provando a leggere dati da ciascuna sorgente e scriven‐ doli sulla destinazione. Perciò, con questa opzione, cp può impiantarsi indefinitivamente mentre legge una FIFO o /dev/tty. Questo è un baco: ciò implica che bisogna evitare -r e usare -R se non si conosce il con‐ tenuto dell’albero che si sta copiando. L’apertura di un device ignoto, uno scanner, per esempio, ha effetti sconosciuti sull’hardware. |
-R | -R | ||
Line 106: | Line 105: | ||
--sparse=QUANDO | --sparse=QUANDO | ||
- | Un | + | Un «file sparso» contiene «buchi»: sequenze di byte nulli che non occupano nessuno blocco fisico sul disco; la chiamata di sistema «read» li legge come se fossero veramente dei byte nulli. Ciò può fare notevolmente risparmiare spazio sul disco ed aumentare la velocità visto che parecchi file binari contengono molti byte nulli consecutivi. Di natura, cp usa un’euristica grossolana per riconoscere buchi nei file sorgenti, e rende sparsi anche i file in uscita. |
- | QUANDO | + | QUANDO può assumere uno di questi valori: |
- | auto Il comportamento di default: il file di output | + | auto Il comportamento di default: il file di output è sparso se lo è quello d’input. always (sempre) Rende sempre sparso il file di output. Ciò può venire utile quando il file d’input sta su un filesystem che non supporta file sparsi mentre il file di output sta su un filesystem che li supporta. never (mai) Non rendere mai sparso il file di output. Se trovi un uso per questa opzione faccelo sapere. |
-s | -s | ||
Line 116: | Line 115: | ||
--symbolic-link | --symbolic-link | ||
- | Crea link simbolici piuttosto che copie di non-directory. Tutti i nomi dei file di origine devono essere assoluti (iniziare con | + | Crea link simbolici piuttosto che copie di non-directory. Tutti i nomi dei file di origine devono essere assoluti (iniziare con ‘/’) a meno che i file di destinazione non siano nella directory corrente. Questa opzione produce semplicemente un messaggio di errore su sistemi che non permettono i link simbolici. |
-u | -u | ||
Line 122: | Line 121: | ||
--update | --update | ||
- | Non copia una non-directory sopra una destinazione preesistente con la data di modifica uguale o | + | Non copia una non-directory sopra una destinazione preesistente con la data di modifica uguale o più recente |
-v | -v | ||
Line 134: | Line 133: | ||
--one-file-system | --one-file-system | ||
- | Salta le sub-directory che sono su dei filesystem diversi da quello da cui si | + | Salta le sub-directory che sono su dei filesystem diversi da quello da cui si è iniziata la copia. |
'''OPZIONI GNU DI BACKUP''' | '''OPZIONI GNU DI BACKUP''' | ||
- | Le versioni GNU di programmi come cp, mv, ln, install e patch creano una copia di backup dei file che stanno per essere sovrascritti, modificati o distrutti, se | + | Le versioni GNU di programmi come cp, mv, ln, install e patch creano una copia di backup dei file che stanno per essere sovrascritti, modificati o distrutti, se ciò viene richiesto. Una simile richiesta è indicata dall’opzione -b. Come i file di backup debbano essere chiamati è dato dall’opzione -V. Nel caso in cui il loro nome sia dato dal nome dei file originali più un suffisso, il suffisso è indicato dall’opzione -S. |
-b | -b | ||
Line 150: | Line 149: | ||
--suffix= SUFFISSO | --suffix= SUFFISSO | ||
- | Aggiunge SUFFISSO a tutti file di backup. Se questa opzione non | + | Aggiunge SUFFISSO a tutti file di backup. Se questa opzione non è specificata, viene usato il valore della variabile ambientale SIMPLE_BACKUP_SUFFIX . Se SIMPLE_BACKUP_SUFFIX non è impostata, il valore di default è «~». |
-V METODO | -V METODO | ||
Line 156: | Line 155: | ||
--version-control=METODO | --version-control=METODO | ||
- | Specifica come creare il nome dei file di backup. | + | Specifica come creare il nome dei file di backup. L’argomento METODO può essere «numbered» (o «t»), «existing» (o «nil») oppure «never» (o «simple»). Se questa opzione non è specificata, viene usato il valore della variabile ambientale VERSION_CONTROL. Se VERSION_CONTROL non è impostata, il valore di default è «existing». |
- | Questa opzione corrisponde alla variabile | + | Questa opzione corrisponde alla variabile «version-control» di emacs. Valori leciti per sono (dove le abbreviazioni univoche sono accettate): |
t | t | ||
Line 168: | Line 167: | ||
existing | existing | ||
- | Crea backup numerati per i file che | + | Crea backup numerati per i file che già ne hanno, backup semplici per gli altri. |
never | never | ||
Line 187: | Line 186: | ||
-- | -- | ||
- | Termina | + | Termina l’elenco delle opzioni. |
- | + | ||
- | + | ||
- | + | ||
--Marco.g 06:24, 21 June 2007 (EDT) | --Marco.g 06:24, 21 June 2007 (EDT) |
Revision as of 19:02, 24 December 2007
NOME
cp
copia file e directory
SINTASSI
cp [opzioni] file percorso
cp [opzioni] file... directory
Opzioni POSIX: [-fipRr]
Opzioni GNU (forma breve): [-abdfilprsuvxPR] [-S SUFFISSO] [-V {numbered,existing,simple}] [--sparse=QUANDO] [--help] [--version] [--]
DESCRIZIONE
cp copia file (o, eventualmente, directory). È possibile copiare sia un file su una destinazione data, sia un numero arbitrario di file su una directory d’arrivo. Se l’ultimo argomento indica una directory esistente, cp copia ogni file sorgente su quella directory (mantenendo lo stesso nome). Altrimenti, se sono indicati solo due file, copia il primo sul secondo. Si ha un errore se l’ultimo argomento non è una directory e sono presenti più di due argomenti non di opzione.
Perciò «cp -r /a /b» copia /a su /b/a e /a/x su /b/a/x nel caso in cui /b esiste già ma copia /a su /b e /a/x su /b/x se /b non esisteva in precedenza.
I permessi dei file e delle directory così create sono identici a quelli dei file originali, AND 0777 e modificati dalla umask utente (a meno che sia usata l’opzione -p). Durante la copia ricorsiva di directory, però, i per‐ messi delle directory create ex novo sono quelli finali OR S_IRWXU (0700), per permettere lettura, scrittura e ricerca nella nuova directory al processo. Copiando un file su se stesso, non viene fatto niente (a parte produrre un eventuale messaggio d’errore). Copiando su un file esistente, questo viene aperto con «open(path, O_WRONLY | O_TRUNC)». Copiando su un file inesistente, questo viene creato con «open(path, O_WRONLY | O_CREAT, mode)». Se ciò fallisce, il file esiste e ed era stata data l’opzione -f, cp prova a cancellare (unlink) il file esistente, e in caso di successo continua come per un file inesistente.
OPZIONI POSIX
POSIX riconosce quattro opzioni e mezza:
-f
Rimuove i file di destinazione preesistenti, se necessario (vedi sopra).
-i
Chiede conferma per sovrascrivere file di destinazione preesistenti (la domanda è scritta su stderr e la risposta letta da stdin; la copia avviene solo in caso di risposta affermativa) -p Conserva proprietario, gruppo, permessi (inclusi i bit setuid e setgid), data di ultima modifica e data di ultimo accesso dei file originali. Nel caso la duplicazione del proprietario o del gruppo fallisca i bit setuid e setgid vengono azzerati (si noti che alla fine originale e copia potrebbero ben avere diverse date d’accesso, costituendo l’operazione di copia un accesso all’originale).
-R
Copia le directory ricorsivamente, facendo la cosa giusta incontrando oggetti diversi da file ordinari o directory (cioè, la copia di una FIFO o un file speciale è una FIFO o un file speciale).
-r
Copia le directory ricorsivamente, comportandosi in modo non specificato con oggetti diversi da file ordinari o directory; cioè è permesso, o meglio incoraggiato, che -r sia un sinonimo di -R. In ogni caso, comporta‐ menti bizzarri, come quello della versione GNU attuale di cp (vedi oltre) non è vietato.
PARTICOLARI GNU
Di norma, i file sono scritti così come sono letti. Per eccezioni, vedi --sparse oltre. Di natura, cp non copia directory (ma vedi -r oltre). cp rifiuta, di norma, di copiare un file su se stesso, con l’eccezione seguente: se vengono date le opzioni --force --backup con identici sorgenti e destinazioni , che si riferiscono ad un file normale, cp crea un file di backup, normale o numerato come specificato nel modo usuale. Questo torna utile quando si vuole semplicemente fare un backup di un file esistente prima di modificarlo.
OPZIONI GNU
-a
--archive
Conserva nella copia quanto è possibile della struttura e degli attributi dei file originali (ma non la struttura di directory). Lo stesso di -dpR.
-d
--no-dereference
Copia link simbolici come link simbolici piuttosto che copiare i file da essi puntati, e conserva la relazione di hard link tra i file originali anche nelle copie.
-f
--force
Rimuove i file di destinazione preesistenti e senza mai chiederne conferma.
-i
--interactive
Chiede conferma per sovrascrivere i file normali preesistenti.
-l
--link
Esegue collegamenti fisici (hard link) piuttosto che copie per le non-directory.
-p
--preserve
Conserva proprietario, gruppo, permessi e date dei file originali
-P
--parents
Forma il nome di ognuno dei file destinazione aggiungendo al nome della directory indicata uno slash (/) e il nome del file originale. L’ultimo argomento dato a cp deve essere il nome di una directory esistente. Per esempio, il comando «cp --parents a/b/c dir_esistente» copia il file a/b/c su dir_esistente/a/b/c, creando qualsiasi directory intermedia mancante.
-r
Copia le directory ricorsivamente, copiando tutte le non-directory e i link non simbolici (FIFO e file speciali) come se fossero file normali. In altre parole, provando a leggere dati da ciascuna sorgente e scriven‐ doli sulla destinazione. Perciò, con questa opzione, cp può impiantarsi indefinitivamente mentre legge una FIFO o /dev/tty. Questo è un baco: ciò implica che bisogna evitare -r e usare -R se non si conosce il con‐ tenuto dell’albero che si sta copiando. L’apertura di un device ignoto, uno scanner, per esempio, ha effetti sconosciuti sull’hardware.
-R
--recursive
Copia le directory ricorsivamente, rispettando le non-directory (vedi -r sopra)
--sparse=QUANDO
Un «file sparso» contiene «buchi»: sequenze di byte nulli che non occupano nessuno blocco fisico sul disco; la chiamata di sistema «read» li legge come se fossero veramente dei byte nulli. Ciò può fare notevolmente risparmiare spazio sul disco ed aumentare la velocità visto che parecchi file binari contengono molti byte nulli consecutivi. Di natura, cp usa un’euristica grossolana per riconoscere buchi nei file sorgenti, e rende sparsi anche i file in uscita.
QUANDO può assumere uno di questi valori:
auto Il comportamento di default: il file di output è sparso se lo è quello d’input. always (sempre) Rende sempre sparso il file di output. Ciò può venire utile quando il file d’input sta su un filesystem che non supporta file sparsi mentre il file di output sta su un filesystem che li supporta. never (mai) Non rendere mai sparso il file di output. Se trovi un uso per questa opzione faccelo sapere.
-s
--symbolic-link
Crea link simbolici piuttosto che copie di non-directory. Tutti i nomi dei file di origine devono essere assoluti (iniziare con ‘/’) a meno che i file di destinazione non siano nella directory corrente. Questa opzione produce semplicemente un messaggio di errore su sistemi che non permettono i link simbolici.
-u
--update
Non copia una non-directory sopra una destinazione preesistente con la data di modifica uguale o più recente
-v
--verbose
Stampa il nome di ogni file prima di copiarlo.
-x
--one-file-system
Salta le sub-directory che sono su dei filesystem diversi da quello da cui si è iniziata la copia.
OPZIONI GNU DI BACKUP
Le versioni GNU di programmi come cp, mv, ln, install e patch creano una copia di backup dei file che stanno per essere sovrascritti, modificati o distrutti, se ciò viene richiesto. Una simile richiesta è indicata dall’opzione -b. Come i file di backup debbano essere chiamati è dato dall’opzione -V. Nel caso in cui il loro nome sia dato dal nome dei file originali più un suffisso, il suffisso è indicato dall’opzione -S.
-b
--backup
Crea copie di backup dei file che stanno per essere sovrascritti o rimossi.
-S SUFFISSO
--suffix= SUFFISSO
Aggiunge SUFFISSO a tutti file di backup. Se questa opzione non è specificata, viene usato il valore della variabile ambientale SIMPLE_BACKUP_SUFFIX . Se SIMPLE_BACKUP_SUFFIX non è impostata, il valore di default è «~».
-V METODO
--version-control=METODO
Specifica come creare il nome dei file di backup. L’argomento METODO può essere «numbered» (o «t»), «existing» (o «nil») oppure «never» (o «simple»). Se questa opzione non è specificata, viene usato il valore della variabile ambientale VERSION_CONTROL. Se VERSION_CONTROL non è impostata, il valore di default è «existing».
Questa opzione corrisponde alla variabile «version-control» di emacs. Valori leciti per sono (dove le abbreviazioni univoche sono accettate):
t numbered
Crea sempre backup numerati.
nil existing
Crea backup numerati per i file che già ne hanno, backup semplici per gli altri.
never simple
Crea sempre backup semplici.
OPZIONI GNU STANDARD
--help
Stampa un messaggio di spiegazione sullo standard output ed esce (con successo).
--version
Stampa informazioni sulla versione sullo standard output ed esce (con successo).
--
Termina l’elenco delle opzioni.
--Marco.g 06:24, 21 June 2007 (EDT)