При рекурсивном архивировании содержимого каталога (включая скрытые файлы и каталоги) с помощью zip
команды с -r
флагом есть ли разница между:
zip ../foo.zip -r .
и:
zip ../foo.zip -r * .[^.]*
или они абсолютно одинаковы?
Первая команда должна взять текущий каталог ( .
) в качестве цели, а -r
параметр должен включать в себя все скрытые файлы и каталоги.
Вторая команда, если я не ошибаюсь, сопоставляет все файлы, не начинающиеся с точки (сначала *
), в текущем каталоге, а затем все файлы, начинающиеся с .
символа, за которым следует любой символ, кроме точки ( [^.]
), — так что это исключает ..
переход в родительский каталог.
Я нашел вторую команду в примере в Интернете, но не понимаю смысла использовать ее вместо более простой первой команды, если она действует точно так же.
Кроме того, в скрипте оболочки POSIX ShellCheck жалуется на * .[^.]*
нотацию, которую следует заменить на ./* .[!.]*
, и для меня это еще одна веская причина не использовать его, если простая функция .
выполняет ту же работу.
Я предполагаю, что в найденном мной примере zip ../foo.zip * .[^.]*
(без -r
флага) была взята команда и -r
просто добавлен флаг, не думая о том, что это -r
уже позаботилось бы о включении скрытых файлов и каталогов, если бы текущий путь ( .
) был указан в качестве цели вместо * .[^.]*
.
Итак, мои вопросы: эквивалентны ли эти 2 команды при использовании флага -r
? Правильна ли моя догадка?