Respostas:
O ponto ( .
) é apenas o .
diretório dentro de um diretório que é o mesmo que o próprio diretório ( ls -la /foo
o mostrará a você). Portanto, se você copiar em foo/.
outro lugar, efetivamente copia toda a árvore abaixo foo
sem se copiar foo
(você está copiando na foo2/.
qual é igual a foo2
).
/foo/*
é expandido pelo shell para a lista de arquivos e diretórios não ocultos /foo
, para que também copie a mesma estrutura de diretórios para /foo
dentro /foo2
, exceto para os arquivos de ponto / pontos. Efetivamente, cp
receberá (potencialmente) muitos argumentos. Se a lista for muito grande, pode até causar cp
falha na execução .
set -x
ou echo cp -pr /foo/* /foo2
para ver o que está acontecendo. É importante perceber que é o shell que expande os curingas. cp
não vê a estrela.
cp -r /foo/*
faz a mesma coisa quecp /foo/*
?