![zip - разница между шаблонами "." и "* .[^.]*" при использовании флага -r](https://rvso.com/image/191880/zip%20-%20%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0%20%D0%BC%D0%B5%D0%B6%D0%B4%D1%83%20%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B0%D0%BC%D0%B8%20%22.%22%20%D0%B8%20%22*%20.%5B%5E.%5D*%22%20%D0%BF%D1%80%D0%B8%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D1%84%D0%BB%D0%B0%D0%B3%D0%B0%20-r.png)
При рекурсивном архивировании содержимого каталога (включая скрытые файлы и каталоги) с помощью zip
команды с -r
флагом есть ли разница между:
zip ../foo.zip -r .
и:
zip ../foo.zip -r * .[^.]*
или они абсолютно одинаковы?
Первая команда должна взять текущий каталог ( .
) в качестве цели, а -r
параметр должен включать в себя все скрытые файлы и каталоги.
Вторая команда, если я не ошибаюсь, сопоставляет все файлы, не начинающиеся с точки (сначала *
), в текущем каталоге, а затем все файлы, начинающиеся с .
символа, за которым следует любой символ, кроме точки ( [^.]
), — так что это исключает ..
переход в родительский каталог.
Я нашел вторую команду в примере в Интернете, но не понимаю смысла использовать ее вместо более простой первой команды, если она действует точно так же.
Кроме того, в скрипте оболочки POSIX ShellCheck жалуется на * .[^.]*
нотацию, которую следует заменить на ./* .[!.]*
, и для меня это еще одна веская причина не использовать его, если простая функция .
выполняет ту же работу.
Я предполагаю, что в найденном мной примере zip ../foo.zip * .[^.]*
(без -r
флага) была взята команда и -r
просто добавлен флаг, не думая о том, что это -r
уже позаботилось бы о включении скрытых файлов и каталогов, если бы текущий путь ( .
) был указан в качестве цели вместо * .[^.]*
.
Итак, мои вопросы: эквивалентны ли эти 2 команды при использовании флага -r
? Правильна ли моя догадка?