zip - разница между шаблонами "." и "* .[^.]*" при использовании флага -r

zip - разница между шаблонами "." и "* .[^.]*" при использовании флага -r

При рекурсивном архивировании содержимого каталога (включая скрытые файлы и каталоги) с помощью zipкоманды с -rфлагом есть ли разница между:

zip ../foo.zip -r .

и:

zip ../foo.zip -r * .[^.]*

или они абсолютно одинаковы?

Первая команда должна взять текущий каталог ( .) в качестве цели, а -rпараметр должен включать в себя все скрытые файлы и каталоги.

Вторая команда, если я не ошибаюсь, сопоставляет все файлы, не начинающиеся с точки (сначала *), в текущем каталоге, а затем все файлы, начинающиеся с .символа, за которым следует любой символ, кроме точки ( [^.]), — так что это исключает ..переход в родительский каталог.

Я нашел вторую команду в примере в Интернете, но не понимаю смысла использовать ее вместо более простой первой команды, если она действует точно так же.

Кроме того, в скрипте оболочки POSIX ShellCheck жалуется на * .[^.]*нотацию, которую следует заменить на ./* .[!.]*, и для меня это еще одна веская причина не использовать его, если простая функция .выполняет ту же работу.

Я предполагаю, что в найденном мной примере zip ../foo.zip * .[^.]*(без -rфлага) была взята команда и -rпросто добавлен флаг, не думая о том, что это -rуже позаботилось бы о включении скрытых файлов и каталогов, если бы текущий путь ( .) был указан в качестве цели вместо * .[^.]*.

Итак, мои вопросы: эквивалентны ли эти 2 команды при использовании флага -r? Правильна ли моя догадка?

Связанный контент