Яке значення точки в командах bash і чим вона відрізняється від зірочки?


11

Я намагаюся зрозуміти значення точки в баші і чим вона відрізняється від зірочки. Може хтось, будь ласка, докладно? Наприклад, яка різниця між cp -ar /foo/. /foo2/іcp -pr /foo/* /foo2/

Відповіді:


12

Dot ( .) - це лише .каталог всередині каталогу, який такий самий, як і сам каталог ( ls -la /fooпокаже його вам). Отже, якщо ви копіюєте в foo/.іншому місці, ви фактично копіюєте все дерево нижче, fooне копіюючи fooсебе (ви копіюєте його в foo2/.те саме, що foo2).

/foo/*розширюється оболонки до списку не-приховані файли і каталоги в /foo, так що це буде копіювати ту ж структуру каталогів під /fooв , /foo2а також, для точкових файлів / dotdirs винятком. Ефективно, cpотримає (потенційно) багато аргументів. Якщо список занадто великий, він може навіть спричинити cpзбій виконання.


Вибачте, але я заплутався. Отже, від природи зірочка робить команду рекурсивною? Іншими словами cp -r /foo/*чи те саме, що і cp /foo/* ?
Майк Б

5
@MikeB, ні, оболонка лише розширює список файлів у каталозі / foo. Це не змінює поведінку cp. Використовуйте set -xабо echo cp -pr /foo/* /foo2щоб побачити, що відбувається. Важливо усвідомити, що саме оболонка розширює підстановку. cpне бачить зірки.
Стефан Шазелас

Як що до цього? chmod 755 -R. проти chmod 755 -R *
wayofthefuture
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.