Estou tentando entender o significado do ponto no bash e como ele difere de um asterisco. Alguém pode por favor elaborar? Por exemplo, qual é a diferença entre cp -ar /foo/. /foo2/
ecp -pr /foo/* /foo2/
11
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 .
cp -r /foo/*
faz a mesma coisa quecp /foo/*
?set -x
ouecho 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.