Pagina 1 di 1

[Risolto] strano funzionamento cp e di altri comandi base

Inviato: sabato 22 maggio 2010, 17:58
da Zagorax
Ciao a tutti,

mi sto scontrando con un funzionamento di cp che non riesco a capire.
Si tratta della copia dei file nascosti.

A scopo didattico creaimo l'ambiente di prova. :D

Codice: Seleziona tutto

mkdir test1 test2
cd test1
mkdir a b c .d .e .f
Quindi abbiamo due cartelle e in una di esse sei cartelle di cui 3 nascoste.
Orbene:

Codice: Seleziona tutto

cp -r test1 test2
Copia tutto il contenuto di test1 in test2, cartelle nascoste comprese. Tuttavia copia anche la cartella test1, così che si avrà la cartella test1 dentro test2.
Se invece faccio:

Codice: Seleziona tutto

cd test1
cp -r * ../test2
Non viene copiata la cartella test1 ma vengono copiate all'interno di test2 soltanto le cartelle non nascoste.
Se do il seguente comando:

Codice: Seleziona tutto

cp -r .* ../test2
Accade poi una cosa che davvero non riesco a spiegarmi: copia tutte le cartelle nascoste... ma anche tutti i file della mia scrivania (che è la cartella in cui ho creato test1 e test2).

Anche rm non rimuove i file nascosti se si utilizza l'asterisco e fra le opzioni dei comandi non ne trovo nessuna che dice qualcosa del tipo "compresi i file nascosti".

Mi sapete aiutare? Ci sono già andato fregato più di una convinto di aver copiato tutto...

Grazie

Re: strano funzionamento cp e di altri comandi base

Inviato: sabato 22 maggio 2010, 18:30
da il_muflone
ciao

si tratta di un errore abbastanza comune che puo` portare anche a disastri

* significa tutti i files tranne quelli che iniziano per punto
.* significa copia tutto cio` che inizia per punto. all'interno di ogni directory c'e` una cartella di nome . che indica se stessa (e quindi copia il suo contenuto) e un'altra directory .. che indica la precedente.
ricorsivamente copiando tutte le .., si arriva a copiare TUTTO il disco, perche` ../../.. insomma e` la / e contiene tutto.
fai la prova con ls -R .* per vedere che sarebbe successo usando cp invece di ls

se vuoi copiare i files dentro test2 devi usare
cp -r {[!.],.[!.],..?}* test2
che significa:
escludi la directory .
includi tutto cio` che inizia per . ma non e` seguita da un secondo punto (..)
includi tutto il resto

Re: strano funzionamento cp e di altri comandi base

Inviato: sabato 22 maggio 2010, 18:43
da il_muflone

Re: strano funzionamento cp e di altri comandi base

Inviato: lunedì 24 maggio 2010, 14:31
da Zagorax
Grazie mille! Ottima risposta!