Ao compactar recursivamente o conteúdo de um diretório (incluindo arquivos e diretórios ocultos) usando zip
o comando com -r
sinalizador, há alguma diferença entre:
zip ../foo.zip -r .
e:
zip ../foo.zip -r * .[^.]*
ou são exatamente iguais?
O primeiro comando deve usar o diretório atual ( .
) como destino e -r
o parâmetro deve incluir por si só todos os arquivos e diretórios ocultos.
O segundo comando, se não estou errado, corresponde a todos os arquivos que não são pontos (primeiro *
) no diretório atual e, em seguida, a todos os arquivos que começam com .
char, seguido por qualquer caractere, exceto ponto ( [^.]
) - portanto, isso exclui ..
a ida para o diretório pai.
Encontrei o segundo comando em um exemplo on-line, mas não entendo como usá-lo no lugar do primeiro comando mais simples, se ele agir exatamente da mesma maneira.
Também no script shell POSIX, o ShellCheck reclama da * .[^.]*
notação que deveria ser substituída por ./* .[!.]*
, e para mim esse é outro bom motivo para não usá-lo, se um simples .
fizer o mesmo trabalho.
Meu palpite é que no exemplo que encontrei zip ../foo.zip * .[^.]*
(sem -r
sinalizador) o comando foi executado e -r
o sinalizador foi simplesmente adicionado, sem pensar que -r
já teria cuidado de incluir arquivos e diretórios ocultos se o caminho atual ( .
) fosse fornecido como destino no lugar de * .[^.]*
.
Então, minhas perguntas são: esses 2 comandos são equivalentes ao usar o -r
sinalizador? Meu palpite está correto?