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/

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.