Al comprimir recursivamente el contenido de un directorio (incluidos archivos y directorios ocultos) usando zip
un comando con -r
bandera, ¿hay alguna diferencia entre:
zip ../foo.zip -r .
y:
zip ../foo.zip -r * .[^.]*
o son exactamente iguales?
El primer comando debe tomar el directorio actual ( .
) como destino y -r
el parámetro debe incluir por sí solo todos los archivos y directorios ocultos.
El segundo comando, si no me equivoco, coincide con todos los archivos que no son puntos (primero *
) en el directorio actual y luego todos los archivos que comienzan con .
char, seguido de cualquier char excepto punto ( [^.]
), por lo que esto excluye ..
ir al directorio principal.
Encontré el segundo comando en un ejemplo en línea, pero no entiendo el sentido de usarlo en lugar del primer comando más simple, si actúa exactamente de la misma manera.
También en el script de shell POSIX, ShellCheck se queja de * .[^.]*
la notación que debería reemplazarse por ./* .[!.]*
, y para mí esta es otra buena razón para no usarla, si una simple .
hace el mismo trabajo.
Supongo que en el ejemplo que encontré zip ../foo.zip * .[^.]*
(sin -r
bandera) se tomó el comando y -r
simplemente se agregó la bandera, sin pensar que -r
ya se habría encargado de incluir archivos y directorios ocultos si la ruta actual ( .
) se hubiera dado como destino en lugar de * .[^.]*
.
Entonces mis preguntas son: ¿esos 2 comandos son equivalentes cuando se usa la -r
bandera? ¿Es correcta mi suposición?