Qual é o significado do ponto nos comandos do bash e como ele é diferente de um asterisco?

11

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/

Mike B
fonte

Respostas:

12

O ponto ( .) é apenas o .diretório dentro de um diretório que é o mesmo que o próprio diretório ( ls -la /fooo mostrará a você). Portanto, se você copiar em foo/.outro lugar, efetivamente copia toda a árvore abaixo foosem 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 /foodentro /foo2, exceto para os arquivos de ponto / pontos. Efetivamente, cpreceberá (potencialmente) muitos argumentos. Se a lista for muito grande, pode até causar cpfalha na execução .

Stéphane Chazelas
fonte
Desculpe, mas estou ficando confuso. Então, por natureza, o asterisco torna o comando recursivo? Em outras palavras, cp -r /foo/*faz a mesma coisa que cp /foo/* ?
Mike B
5
@ MikeB, não, o shell apenas expande a lista de arquivos no diretório / foo. Não altera o comportamento do cp. Use set -xou echo cp -pr /foo/* /foo2para ver o que está acontecendo. É importante perceber que é o shell que expande os curingas. cpnão vê a estrela.
Stéphane Chazelas
Que tal isso? chmod 755 -R. em relação ao chmod 755 -R *
wayofthefuture