Je suis en train de faire un script shell pour emballer certains fichiers. Je suis en train de zipper un répertoire comme ça:
zip -r /Users/me/development/something/out.zip /Users/me/development/something/folder/
Le problème est que l'archive out.zip résultante contient le chemin d'accès complet au fichier. C'est-à-dire que, une fois décompressé, il contiendra l'intégralité du chemin "/ Utilisateurs / moi / développement / autre-chose /". Est-il possible d'éviter ces chemins profonds lors de la mise en place d'un répertoire dans une archive?
Lorsque je lance zip à partir du répertoire cible, je n'ai pas ce problème.
zip -r out.zip ./folder/
Dans ce cas, je ne reçois pas tout le bazar. Cependant, le script en question sera appelé de n'importe où.
FWIW, j'utilise bash sur Mac OS X 10.6.
$ pushd /some/path ; do-something ; popd
... ou même avec des sous$ ( cd /some/path ; do-something )
&&
au lieu de;
soit une bonne idée pour que l'autre commande ne s'exécute pas en cas d'cd
échec (faute de frappe ou autre problème):(cd /some/path && do-something)
zip -j
?Oui. Utilisez l'
-j
option aveczip
.-j
est "indésirable le chemin". Selon la page de manuel sur zip :Utiliser
-j
signifie la commande suivante:Va créer une archive qui ressemble à:
la source
Il y a
pushd
etpopd
et$OLDPWD
. En supposant que le$PWD
soit/Users/me/development
fait:Maintenant le
$PWD
retour à/Users/me/development
la source