Задать вопрос
@Asparagales

Что означает символ * (звездочка) в регулярных выражениях?

Читаю учебник по основам Linux. В учебнике говориться, что знак * (звездочка) является групповым символом и означает любую последовательность любых символов.

В другом месте дается пример команды, которая, по мнению авторов учебника, скопирует все файлы и папки из каталога dir1 в каталог dir2.

cp -r dir1/* dir2

Вот только эта команда не копирует файлы и каталоги, название которых начинается с точки. Наоборот, они скопируются, если символ звездочки убрать. Аналогичная ситуация с командой rm.
Еще пример: команда echo * не покажет скрытые файлы.

Так какие бывают еще исключения из того правила, что символ звездочки означает любую последовательность любых символов?
  • Вопрос задан
  • 4315 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Не путайте regular expression и shell globbing.

Согласно правилам раскрытия shell globbing, звездочка означает все символы в любом количестве, за исключением строк, которые начинаются с точки.

cp -r dir1/* dir2
означает скопировать все файлы из каталога dir1 в каталог dir2, кроме тех которые начинаются с точки

cp -r dir1/ dir2
означает скопировать сам каталог dir1 (со всем содержимым) в каталог dir2, поэтому будут скопированы и скрытые файлы.

Других исключений у звездочки нет.

Если взять не shell globbing, а например команду find, там звездочка уже обрабатывается самой командой find и будет находить все файлы, например
find /test -name "*"
найдет в /test все файлы и каталоги, включая те, что начинаются с точки. То есть лимит есть только у самого shell

P.S. на tldp.org всегда можно найти истину, например tldp.org/LDP/abs/html/globbingref.html
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Softer
@Softer
В данном случае - копировать все файлы и директории из dir1 в dir2
И да, это не регулярка, тут это значит "все содержимое" :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы