Jakie jest znaczenie kropki w poleceniach bash i czym różni się ona od gwiazdki?

11

Próbuję zrozumieć znaczenie kropki w bashu i to, jak różni się ona od gwiazdki. Czy ktoś może opracować? Na przykład, jaka jest różnica między cp -ar /foo/. /foo2/icp -pr /foo/* /foo2/

Mike B.
źródło

Odpowiedzi:

12

Kropka ( .) to tylko .katalog wewnątrz katalogu, który jest taki sam jak sam katalog ( ls -la /foopokaże ci go). Więc jeśli kopiujesz foo/.gdzie indziej, skutecznie kopiujesz całe drzewo poniżej foobez kopiowania foosamego siebie (kopiujesz je do foo2/.tego samego, co foo2).

/foo/*rozpręża się przez powłokę do listy niewyspecjalizowanych ukrytych plików i katalogów /foo, więc byłoby skopiować taką samą strukturę katalogów poniżej /foona /foo2jak dobrze, z wyjątkiem dotfiles / dotdirs. Skutecznie cpotrzyma (potencjalnie) wiele argumentów. Jeśli lista jest zbyt duża, może nawet spowodować cpniepowodzenie wykonania.

Stéphane Chazelas
źródło
Przepraszam, ale się mylę. Więc z natury gwiazdka sprawia, że ​​polecenie jest rekurencyjne? Innymi słowy, cp -r /foo/*czy to samo co cp /foo/* ?
Mike B
5
@ MikeB, nie, powłoka rozwija tylko listę plików w katalogu / foo. Nie zmienia zachowania CP. Użyj set -xlub, echo cp -pr /foo/* /foo2aby zobaczyć, co się dzieje. Ważne jest, aby zdać sobie sprawę, że to powłoka rozszerza symbole wieloznaczne. cpnie widzi gwiazdy.
Stéphane Chazelas
A co z tym? chmod 755 -R. kontra chmod 755 -R *
wayofthefuture