• Aucun résultat trouvé

NOM unzip liste, teste et extrait des fichiers compressés dans une archive ZIP

N/A
N/A
Protected

Academic year: 2022

Partager "NOM unzip liste, teste et extrait des fichiers compressés dans une archive ZIP"

Copied!
11
0
0

Texte intégral

(1)

NOM

unzip − liste, teste et extrait des fichiers compressés dans une archive ZIP SYNOPSIS

unzip [−Z] [−cflptuvz[abjnoqsCLMVX$/]] file[.zip] [file(s) . . .] [−x xfile(s) . . .] [−d exdir]

DESCRIPTION

unzip va lister, tester ou extraire des fichiers à partir d’une archive ZIP, courante sur les systèmes MS- DOS. Le comportement par défaut (sans options) est l’extraction vers le dossier courant (et ses sous- dossiers) de tous les fichiers dans l’archive ZIP spécifiée. Un programme complémentaire, zip(1L), crée les archives ZIP ; ces deux programmes sont compatibles avec les archives créées par PKZIP et PKUN- ZIP pour MS-DOS de PKWARE, mais dans quelques cas les options ou le comportement par défaut diffèrent.

PARAMÈTRES fichier[.zip]

Chemin de(s) archive(s) ZIP. Si le nom contient un joker, les fichiers correspondants sont traités dans l’ordre déterminé par le système d’exploitation (ou le système de fichiers). Seul le nom peut contenir un joker ; le chemin lui-même ne peut pas. Les expressions avec des jokers sont similaires à celles de egrep(1) pur UNIX et peuvent contenir :

* équivaut à tout paquet de caractères (même de taille 0)

? équivaut à tout caractère unique

[. . .] équivaut à un des caractères trouvés entre les traits verticaux ; les plages sont spécifiés par un caractère, un trait horizontal, et un caractère de fin ; si un « ! » ou un

« ˆ » suit le trait vertical de gauche, alors la plage est exclue. (c’est-à-dire que tous les caractères sauf ceux spécifiés sont recherchés.)

(Assurez-vous d’encadrer par des guillemets tout caractère qui peut être interprété ou modifié par le système d’exploitation, particulièrement sous Unix et VMS.) Si aucune occurrence n’est trouvée, le nom est considéré littéral ; si ce cas aussi échoue, le suffixe.zipest ajouté.

Remarquez que les archives auto-extractibles sont supportées, de même que n’importe quelle autre archive ZIP ; il faut seulement spécifier le suffixe.exe(le cas échéant) explicitement.

[fichier(s)]

Une liste optionnelle des membres de l’archive à traiter, séparés par des espaces. (Les ver- sions VMS compilées avec VMSCLI défini doivent plutôt séparer les fichiers avec des vir- gules. Voir −v dans OPTIONS ci-dessous.) Des expressions (jokers) peuvent être utilisés pour spécifier plusieurs membres ; voir ci-dessus. Encore une fois, assurez-vous de protéger les expressions qui peuvent être interprétées ou modifiées par le système d’exploitation.

[−x xfile(s)]

Une liste optionnelle des membres de l’archive à exclure du traitement. Étant donné que les jokers sont valides pour les séparateurs de dossiers (« / »), cette option peut être utilisée pour exclure tout fichier se trouvant dans un sous-dossier. Par exemple, «unzip foo *.[ch]

-x */*» va extraire tous les fichiers source C dans le dossier principal, mais pas dans les sous-dossiers. Sans l’option −x, tous les fichiers source C dans tous les dossier auraient été extraits.

[−d exdir]

Un dossier optionnel où seront extraits les fichiers. Par défaut, tous les fichiers et sous-dossiers sont recréés dans le dossier courant ; l’option −d permet l’extraction vers un dossier donné (si vous avez la permission d’y écrire). Cette option ne doit pas être à la fin de la ligne de com- mande ; elle est aussi acceptée avant le nom du fichier zip (avec les options normales), immédiatement après le nom, ou entre les fichier(s) et l’option −x. L’option et le dossier doivent être concaténés sans aucun espace entre eux, mais remarquez que ceci peut changer le comportement normal de l’environnement. En particulier, «−d ˜» (tilde) est interprété par les environnements Unix comme le nom du dossier racine de l’utilisateur courant, mais

«−d˜» est traité comme un sous-dossier littéral « ˜ » du dossier courant.

OPTIONS

Remarquez que, afin de supporter du matériel obsolète, l’écran d’aide de unzip est limité à 22 ou 23 lignes et devrait par conséquent être considéré comme une partie basique de la syntaxe de unzip plutôt

(2)

que comme une liste exhaustive de tous les paramètres. La liste exhaustive suit :

−Z Mode de zipinfo(1L). Si le premier paramètre de la ligne de commande est −Z, les autres paramètres sont considérés comme concernant zipinfo(1L). Regardez la page de manuel appropriée pour avoir une description de ces options.

−A [OS/2, Unix DLL] affiche une aide extensive sur l’interface de programmation de la DLL (API).

−c extrait les fichiers vers la sortie standard/l’écran (« CRT »). Ce paramètre est similaire à −p à l’exception que le nom de chaque fichier est affiché avant son extraction, que le paramètre −a est autorisé, et qu’une conversion ASCII-EBCDIC est automatiquement effectuée si néces- saire. Cette option n’est pas listée dans l’écran d’utilisation de unzip.

−f rafraîchit les fichiers existants, cad. n’extrait que les fichiers qui sont déjà sur le disque et qui sont plus récents que la copie sur le disque. Par défaut unzip demande avant d’écraser, mais l’option −o permet de supprimer les questions. Remarquez que sous beaucoup de systèmes d’exploitation, la variable de faisceau horaire (TZ) doit être définie correctement afin que les options −f et −u fonctionnent correctement (sous Unix cette variable est normalement définie automatiquement). Les raisons à ceci sont un peu subtiles mais ont un rapport avec les différences entre le format des dates DOS (toujours en temps local) et le format des dates Unix (toujours en GMT) et la nécessité de comparer les deux. Une valeur typique de TZ est

« MET-1MEST » (fuseau Pacifique US avec ajustement automatique des heures d’été/hiver).

−l liste les fichiers dans l’archive (format court). Les noms, la taille non compactée des fichiers et leurs jour et heure de modification sont affichés, ainsi que les totaux pour tous les fichiers spécifiés. Si UnZip a été compilé avec OS2_EAS défini, l’option −l liste aussi les colonnes comportant la taille des attributs étendus OS/2 (EAs) et les listes de contrôle d’accès OS/2 (ACLs). De plus, le commentaire du fichier zip et les commentaires individuels des entrées (le cas échéant) sont affichés. Si un fichier a été archivé à partir d’un système qui ne gère pas la casse (par exemple, l’ancien système de fichiers MS-DOS FAT) et que l’option −L a été donnée, le nom du fichier est converti en minuscules et est préfixé avec un accent circonflexe (ˆ).

−p extrait les fichiers vers le tube (stdout). Rien d’autre que les données du fichier n’est envo yé vers stdout, et les fichiers sont toujours extraits en mode binaire, exactement comme ils ont été compactés (pas de conversions).

−t teste les fichiers archive. Cette option extrait chaque fichier spécifié en mémoire et compare le CRC (contrôle de redondance cyclique, un contrôle de somme amélioré) du fichier décom- pacté avec le CRC stocké dans l’archive.

−T [la plupart des OS] règle la date des archives sur le fichier le plus récent de chacune. Ceci cor- respond à l’option de zip −go à la différence près qu’elle peut être utilisée avec des jokers pour les noms d’archive (ex. «unzip −T \*.zip») et est beaucoup plus rapide.

−u met à jour les fichiers existants et crée de nouveaux si nécessaire. Cette option agit comme −f, décompactant (avec confirmation) les fichiers qui sont plus récents que ceux de même nom sur le disque, et en plus elle extrait ceux qui n’existent pas encore sur le disque. Voir −f ci-dessus pour l’information sur les réglages corrects de fuseau horaire.

−v Mode bavard ou affichage du diagnostic des informations de version. Cette option a évolué et se comporte maintenant comme à la fois une option et un modificateur. En tant qu’option elle a deux rôles : quand un fichier zip est spécifié sans aucune autre option, −v liste les fichiers archivés de manière étendue, ajoute à l’information de base de −l la méthode de compactage, la taille compactée, le ratio de compactage et le CRC 32-bit. Quand aucun fichier zip n’est spécifié (c.-à-d. que la commande complète est simplement «unzip −v»), un écran de diagnostic est affiché. En plus de l’en-tête normal avec la date de sortie et la version, unzip liste l’adresse du site ftp Info-ZIP et où trouver une liste d’autres sites ftp et non-ftp ; le système d’exploitation pour lequel il a été compilé, ainsi que (probablement) le matériel sur lequel il a été compilé, le compilateur et la version utilisée, et la date de compilation ; toute option de compilation qui peut affecter le fonctionnement du programme (voir aussi DECRYPTAGE ci-dessous) ; et toute option de variable d’environnement qui peut faire de même (voir OPTIONS D’ENVIRONNEMENT ci-dessous). Comme modificateur il tra- vaille avec d’autres options (ex. −t) pour produire plus de détails ou des informations de

(3)

débogage ; ceci n’est pas encore entièrement implémenté mais le sera dans les versions futures.

−z affiche seulement le commentaire de l’archive.

MODIFICATEURS

−a convertit les fichiers texte. Normalement tous les fichiers sont extraits identiques à l’original.

L’option −a entraîne une conversion automatique des fichiers détectés par zip comme de type texte (ceux avec l’étiquette ‘t’ label dans les listings de zipinfo, au lieu de « b »), convertissant les fins de ligne, les caractères de fin de fichier et le jeu de caractères lui-même si nécessaire.

(Par exemple, les fichiers Unix utilisent des LF pour une fin de ligne (EOL) et n’ont pas de marqueur de fin de fichier (EOF) ; Macintoshes utilisent des CR comme EOL ; et la plupart des systèmes d’exploitation PC utilisent CR+LF pour EOL et contrôle-Z pour EOF. De plus, les mainframes IBM et le Michigan Terminal System utilisent EBCDIC plutôt que le jeu de caractères plus commun ASCII, et NT supporte l’Unicode.) Remarquez que l’identification par zip des fichiers texte n’est aucunement parfaite ; quelques fichiers « texte » peuvent être des fichiers binaires et vice versa. Du coup, unzip affiche «[text]» ou «[binary]» comme contrôle visuel pour chaque fichier qu’il extrait quand l’option −a est utilisée.

L’option −aa force l’extraction de tous les fichiers comme texte, sans tenir compte du type supposé.

−b [général] traite tous les fichiers comme binaires (pas de conversions de texte). C’est un rac- courci pour −−−a.

−b [Tandem] force la création de fichiers avec un code type type 180 (« C ») quand on extrait des entrées Zip marquées comme « texte ». (Sur Tandem, −a est activé par défaut, voir ci- dessous).

−b [VMS] convertit automatiquement les fichiers binaires (voir −a ci-dessus) en enregistrements de longueur fixe de 512-octets. Le doublage de l’option (−bb) force l’extraction de tous les fichiers à ce format.

−B [Unix seulement, et seulement si compilé avec UNIXBACKUP défini] sauve une copie de sauveg arde de chaque fichier écrasé avec un tilde ajouté (ex. l’ancienne copie de «foo» est renommée en «foo˜»). Ceci est similaire au comportement par défaut d’emacs(1).

−C recherche les noms de fichier sans tenir compte de la casse. La philosophie de unzip est « vous av ez ce que vous demandez » (c’est aussi pour cela que −L/−U ont changé ; voir les options correspondantes ci-dessus). Comme certains systèmes de fichiers respectent complètement la casse (notamment ceux pour Unix) et comme les archives ZIP et unzip lui-même sont porta- bles sur plusieurs plateformes, le comportement par défaut de unzip est de rechercher le noms et les jokers en respectant la casse. Cela signifie que spécifier «makefile» sur la ligne de commande ne trouvera que « makefile » dans l’archive, pas « Makefile » ou « MAKEFILE » (et similairement pour les jokers). Comme ceci ne correspond pas au comportement de beau- coup d’autres systèmes de fichiers (par exemple OS/2 HPFS, qui préserve la casse mais ne la respecte pas), l’option −C peut être utilisée pour forcer toutes les recherches de noms de fichiers à être insensibles à la casse. Dans l’exemple ci-dessus, les trois fichiers auraient été trouvés pour «makefile» (ou «make*», ou similaire). L’option −C affecte les fichiers de la liste normale mais aussi de la liste d’exclusion (xlist).

−E [MacOS seulement] affiche le contenu du champ supplémentaire MacOS pendant la restaura- tion.

−F [Acorn seulement] supprime l’extension de type NFS des fichiers.

−F [Unix seulement, et seulement si compilé avec ACORN_FTYPE_NFS défini] traduit les infor- mations de type de fichier depuis les extensions ACORN RISC OS vers une extension de type NFS et l’ajoute aux noms des fichiers extraits. (Quand le fichier a déjà une extension de type NFS, elle est remplacée, par l’information du champ supplémentaire.)

−i [MacOS seulement] ignore les noms de fichiers stockés dans le champ supplémentaire Mac- OS. À la place, le nom le plus compatible de l’en-tête de l’entrée est utilisé.

−j jette le chemin. La structure de dossier contenue dans l’archive n’est pas reconstruite ; tous les fichiers sont mis dans le dossier d’extraction (par défaut, le dossier courant).

(4)

−J [BeOS seulement] jette les attributs des fichiers. Les attributs ne sont pas restaurés, seules les données le sont.

−J [MacOS seulement] ignore les champs supplémentaires MacOS. Toute l’information spécifique à MacOS est ignorée. Les parties données et ressource sont restaurées en deux fichiers séparés.

−L convertit en minuscules tout fichier provenant d’un système d’exploitation ou de fichiers qui travaille en majuscules seulement. (C’était le comportement par défaut de unzip pour les ver- sions antérieures à 5.11 ; le nouveau comportement par défaut est identique à l’ancien com- portement avec l’option −U, qui est maintenant obsolète et sera supprimée dans une version future. Suivant l’archiveur, les fichiers stockés sous un système mono-casse (VMS, ancienne FAT MS-DOS, etc.) peuvent être stockés tout en majuscules ; ceci peut être laid ou gênant quand on les extrait vers un système qui préserve la casse comme OS/2 HPFS ou ou qui est sensible à la casse comme Unix. Par défaut unzip liste et extrait de tels noms comme ils sont stockés (à l’exception des troncages, conversions de caractères non supportés, etc.) ; cette option provoque la conversion en minuscules des noms de tous les fichiers provenant de cer- tains systèmes.

−M dirige toutes les sorties vers un filtre interne similaire à la commande more(1) sous Unix. À la fin d’un écran plein, unzip s’arrête avec un prompt « −−More−− » ; l’écran suivant peut être visualisé en appuyant sur la touche Entrée (Retour Chariot) ou la barre espace. unzip peut être terminé en appuyant sur la touche « q » et, sur certains systèmes, la touche Entrée. Contraire- ment à la commande Unix more(1), il n’y a pas de capacités de recherche et d’édition. De plus, unzip ne remarque pas si de longues lignes sont coupées au bord de l’écran, ce qui imprimera des lignes supplémentaires et probablement fera défiler vers le haut le texte avant qu’il ne soit vu. Sur certains systèmes le nombre de lignes disponibles sur l’écran n’est pas détecté, auquel cas unzip considère que la hauteur est de 24 lignes.

−n n’écrase jamais les fichiers existants. si un fichier existe, saute son extraction sans afficher de prompt. Par défaut, unzip demande avant d’écraser un fichier qui existe déjà ; l’utilisateur peut choisir d’écraser seulement le fichier courant, écraser tous les fichiers, ne pas extraire le fichier courant, ne pas extraire tous les fichiers existants, ou renommer le fichier courant.

−N [Amiga] extrait les commentaires des fichiers comme des notes de fichiers Amiga. Les com- mentaires de fichiers sont créés avec l’option −c de zip(1L), ou avec l’option −N sur le port pour Amiga de zip(1L), qui stocke les notes de fichier comme commentaires.

−o écrase les fichiers existants sans prompter. Ceci est une option dangereuse, par conséquent utilisez-la avec attention. (Elle est souvent utilisée avec −f, cependant, et est le seul moyen d’écraser les EA de dossier sous OS/2.)

−P password

utilise password pour décrypter des fichiers zip cryptés (le cas échéant). CECI N’EST PAS SÛR ! Beaucoup de systèmes d’exploitation multi-utilisateurs four- nissent des outils pour qu’un utilisateur voie la ligne de commande courante d’un autre utilisateur ; même sur un système mono-utilisateur il y a toujours le risque qu’on lise par-dessus votre épaule. Stocker le mot de passe dans la ligne de com- mande d’un script automatisé est encore pire. quand c’est possible, utilisez toujours le prompt interactif pour entrer les mots de passe. (Et si la sécurité est vraiment importante, utilisez un cryptage fort comme PGP (NDT : ou GnuPG) plutôt que le cryptage relativement faible fournit dans les outils zip standard.)

−q mode silencieux (−qq = encore plus silencieux). Normalement unzip affiche les noms des fichiers qu’il est en train d’extraire ou de tester, la méthode d’extraction, les commentaires éventuels d’archive ou de fichier, et un résumé quand une archive est terminée. L’option −q[q] supprime certains ou tous ces messages.

−s [OS/2, NT, MS-DOS] convertit les espaces dans les noms de fichiers en tiret bas.

Comme tous les systèmes d’exploitation PC permettent les espaces dans les noms de fichiers, unzip extrait par défaut les fichiers avec les espaces intacts (ex.

«EA DATA. SF»). Ceci peut être gênant, cependant, étant que MS-DOS en parti- culier ne gère pas correctement les espaces dans les noms de fichiers. La conversion des espaces en tirets bas peut éliminer la gêne dans certains cas.

(5)

−U (obsolète ; à supprimer dans les version futures) laisse les noms de fichiers en majus- cules s’ils ont été créés sous MS-DOS, VMS, etc. Voir −L ci-dessus.

−V conserve (VMS) les numéros de version de fichier. Les fichiers VMS peuvent être enregistrés avec un numéro de version, au formatfichier.ext;##. Par défaut les numéros de version «;##» sont tronqués, mais cette option permet de les con- server. (Sur des systèmes de fichiers qui limitent les noms à des longueurs partic- ulièrement courtes, les numéros de version peuvent être tronqués ou éliminés malgré cette option.)

−X [VMS, Unix, OS/2, NT] restaure les droits d’utilisateur (UIC)sous VMS, ou les droits d’utilisateur et de groupe (UID/GID) sous Unix, ou les listes de contrôle d’accès (ACL) sous les versions réseau de OS/2 (Warp Server avec IBM LAN Server/Requester 3.0 à 5.0; Warp Connect avec IBM Peer 1.0), ou les ACL de sécurité sous Windows NT. Dans la plupart de cas cela va demander des privilèges système spéciaux, et la répétition de l’option (−XX) sous NT demande à unzip d’utiliser les privilèges pour l’extraction ; mais sous Unix, par exemple, un utilisateur qui appartient à plusieurs groupes peut restaurer des fichiers appartenant à n’importe lequel de ces groupes, dès lors que l’identité de l’utilisateur UID correspond à la sienne. remarquez que les attributs normaux des fichiers sont toujours restaurés - cette option ne s’applique qu’aux attributs particuliers à un système d’exploitation.

[Les listes de contrôle d’accès de NT ne semblent pas être spécialement compatibles av ec celles de OS/2, donc aucune tentative de conversion des droits entre les plate- formes n’est faite. Il n’est de toute manière pas évident que cette conversion soit utile.]

−$ [MS-DOS, OS/2, NT] restaure le nom de volume si le support d’extraction est amovi- ble (ex. une disquette). La répétition de l’option (−$$) permet également le nommage de volumes non amovibles (disques durs). Par défaut, les noms de volumes sont ignorés.

−/ extensions

[Acorn seulement] écrase la liste d’extensions fournies par la variable d’environnement Unzip$Ext. Pendant l’extraction, les extensions qui corre- spondent à une de la liste sont mises devant le nom de base du fichier extrait.

OPTIONS D’ENVIRONNEMENT

Le comportement par défaut de unzip peut être modifié par des options placées dans une variable d’environnement. Ceci peut être fait pour n’importe quelle option, mais ce n’est probablement très utile que pour les paramètres −a, −L, −C, −q, −o, ou −n : demander à unzip de convertir les fichiers texte par défaut, de convertir depuis les systèmes mono-casse en minuscules, de rechercher les noms sans prendre en compte la casse, de travailler en mode silencieux, ou de toujours ou ne jamais écraser les fichiers existants. Par exemple, pour rendre unzip aussi silencieux que possible, rap- portant seulement les erreurs, on utilisera la commande suivante :

UNZIP=−qq; export UNZIP Unix Bourne shell setenv UNZIP −qq Unix C shell set UNZIP=−qq OS/2 ou MS-DOS

define UNZIP_OPTS "−qq" VMS (guillemets pour les minuscules) En effet, les options d’environnement sont considérées comme des paramètres de ligne de commande, mis de fait en premier sur la ligne de commande. Pour écraser une option d’environnement, vous pouvez utiliser « l’opérateur moins » pour l’enlever. Par exemple, pour écraser un des paramètres du mode silencieux de l’exem- ple ci-dessus, utilisez la commande

unzip −−q[autres options] zipfile

Le premier tiret est le caractère de basculement normal, et le second le signe moins, agissant sur l’option q. Ceci enlève un niv eau de mode silencieux. Pour annuler les deux niveaux, deux (ou plus) signes moins peuvent être utilisés :

unzip −t−−q zipfile

(6)

unzip −−−qt zipfile

(les deux sont équivalents.) Ceci peut sembler étrange ou confus, mais est raisonable- ment intuitif : il suffit d’ignorer le premier tiret et de commencer la lecture. C’est aussi le même comportement que la commande Unix nice(1).

Comme suggéré dans les exemples ci-dessus, les noms de variable par défaut sont UNZIP_OPTS pour VMS (où le symbole utilisé pour installer unzip comme com- mande extérieure aurait été confondu avec la variable d’environnement), et UNZIP pour tous les autres systèmes d’exploitation. Pour être compatible avec zip(1L), UNZIPOPT est aussi accepté (non demandé). Si à la fois UNZIP et UNZIPOPT sont définis, cependant, UNZIP est prioritaire. L’option de diagnostic de unzip (−v sans nom de fichier zip) peut être utilisée pour visualiser les quatre valeurs possibles des variables d’environnement de unzip et zipinfo.

La variable d’environnement de fuseau horaire (TZ) doit être réglée en accord avec le fuseau horaire local afin que les options −f et −u opèrent correctement. Voir la description de −f ci-dessus pour les détails. Cette variable peut aussi être nécessaire pour que les marques de temps sur les fichiers extraits soient faites correctement.

Sous Windows 95/NT unzip devrait connaître le fuseau horaire même si TZ n’est pas affectée, s’il est correctement défini dans le panneau de contrôle.

DÉCRYPTAGE

Les archives cryptées sont pleinement supportées par les logiciels Info-ZIP, mais de par les restrictions à l’exportation depuis les États-Unis, le support du dé-/cryptage peut être désactivé dans votre exécutable compilé. Cependant, depuis le printemps 2000, les restrictions à l’exportation ont été levées, et nos fichiers source incluent maintenant tout le code de cryptage. si vous avez besoin d’une distribution en binaire av ec le cryptage activé, regardez le fichier « WHERE » dans toute distribution de sources ou de binaires Info-ZIP pour les sites aux US ou à l’extérieur.

Quelques compilations de unzip peuvent ne pas supporter le décryptage. Pour le savoir, vous soit essayer d’extraire une archive cryptée, ou lire l’écran de diagnostic de unzip (voir l’option −v) si «[decryption]» est dans les options de compila- tion.

Comme écrit ci-dessus, l’option −P peut être utilisée pour fournir le mot de passe, au détriment de la sécurité. La meilleure méthode de décryptage est l’extraction nor- male ; si un fichier est crypté, unzip va prompter une demande de mot de passe sans afficher ce qui est saisi. unzip continue d’utiliser le même mot de passe tant qu’il semble valide, en testant les 12 octets d’en-tête pour chaque fichier. Le mot de passe correct semblera toujours bon lors de ce test, mais il y a une chance sur 256 qu’un mot de passe incorrect semble aussi bon. (Ceci est une caractéristique du format zip de PKWARE ; cela permet de lutter contre les attaques par force de calcul qui obtiendraient un gain de vitesse en ne testant que l’en-tête.) Dans le cas où un mot de passe incorrect passe le test, soit un CRC incorrect est généré pour les données extraites, soit unzip va échouer pendant l’extraction parce que les octets « décryptés » ne seront pas un fichier compressé valide.

Si le premier mot de passe échoue au test de l’en-tête, unzip va prompter une nou- velle demande de mot de passe, et ainsi de suite jusqu’à ce que tous les fichiers soient extraits. Si le mot de passe est inconnu, une saisie nulle (cad. juste un retour chariot) est reçu comme un signal pour ne plus prompter. Seuls les fichiers non cryptés de l’archive seront du coup extraits. (En fait, ce ci n’est pas tout-à-fait vrai ; les anci- ennes versions de zip(1L) et zipcloak(1L) permettaient les mots de passe vides, donc unzip teste tous les fichiers cryptés pour voir si le mot de passe vide fonctionne. Ceci peut aboutir à des « faux succès » et des erreurs d’extraction, comme mentionné ci- dessus.)

Les archives encryptées avec des mots de passe 8-bit (par exemple, des mots de passe av ec des caractères accentués européens) peuvent ne pas être portables sur d’autres systèmes ou archiveurs. Ce problème vient des différentes méthodes d’encodage pour ces caractères, par exemple Latin-1 (ISO 8859-1) et OEM code page 850. PKZIP

(7)

2.04g pour DOS utilise le code page OEM; PKZIP 2.50 pour Windows utilise Latin-1 (et est du coup incompatible avecPKZIP pour DOS) ; Info-ZIP utilise le code page OEM sous DOS, OS/2 et Win3.x mais Latin-1 partout ailleurs ; et WinZip 6.x de Nico Mak n’autorise pas les mots de passe 8-bit du tout. UnZip 5.3 essaye d’utiliser le jeu de caractères par défaut (cad. Latin-1), puis l’autre (cad. le code page OEM) pour tester les mots de passe. Sur les systèmes EBCDIC, si les deux précédents échouent, l’encodage EBCDIC est utilisé en dernier ressort. (Comme il n’y a pas d’archiveur connu qui encrypte avec l’encodage EBCDIC, EBCDIC n’est pas testé sur des systèmes non-EBCDIC.) D’autres jeux de caractères ISO que Latin-1 ne sont pas supportés.

EXEMPLES

Pour utiliser unzip afin d’extraire tous les membres de l’archive letters.zip dans le dossier courant et ses sous-dossiers, les créant si besoin :

unzip letters

Pour extraire tous les membres de l’archive letters.zip dans le dossier courant seule- ment :

unzip -j letters

Pour tester letters.zip, en affichant seulement un résumé disant si l’archive est saine ou pas :

unzip -tq letters

Pour tester all les fichiers zip du dossier courant, en n’affichant que les résumés : unzip -tq \*.zip

(L’anti-slash avant l’astérisque n’est requis que si l’environnement développe les jok- ers, comme sous Unix ; des guillemets doubles pourraient être utilisés à la place, comme dans les exemples ci-dessous.) Pour extraire vers la sortie standard tous les membres de letters.zip dont les noms se terminent par .tex, en convertissant automa- tiquement à la convention locale de fin de ligne et renvo yer la sortie vers more(1) :

unzip −ca letters \*.tex | more

Pour extraire le fichier binaire paper1.dvi vers la sortie standard et le renvo yer vers un programme d’impression :

unzip −p articles paper1.dvi | dvips

Pour extraire tous les fichiers source FORTRAN et C --*.f, *.c, *.h, et Makefile-- dans le dossier /tmp :

unzip source.zip "*.[fch]" Makefile -d /tmp

(les guillemets doublés ne sont nécessaires que sous Unix.) Pour extraire tous les fichiers source FORTRAN et C, sans respecter la casse (ex. *.c et *.C, et tout make- file, Makefile, MAKEFILE ou similaire) :

unzip −C source.zip "*.[fch]" makefile -d /tmp

Pour extraire tous ces fichiers mais convertir les noms MS-DOS ou VMS de majus- cules en minuscules et convertir les fins de ligne de tous les fichiers au standard local (sans prendre en compte le marquage éventuel en « binaire ») :

unzip −aaCL source.zip "*.[fch]" makefile -d /tmp Pour extraire seulement les nouvelles versions des fichiers déjà existants dans le dossier courant, sans prompter de questions (REMARQUE : attention au décom- pactage dans un fuseau horaire différent d’un fichier créé dans un autre - les archives ZIP autres que celles créées par Zip 2.1 ou plus récent ne contiennent pas d’informa- tion sur le fuseau horaire, et un fichier « plus récent » d’une autre zone peut, de fait, être plus ancien) :

unzip −fo sources

Pour extraire les nouvelles versions des fichiers déjà existants dans le dossier courant

(8)

et créer les autres (même risque que pour l’exemple précédent) : unzip −uo sources

Pour afficher un écran de diagnostic comportant les options de unzip et zipinfo stockées dans les variables d’environnement, si le support de cryptage a été intégré à la compilation, quel compilateur a été utilisé, etc. :

unzip −v

Dans les cinq derniers exemples, il est sous-entendu que UNZIP ou UNZIP_OPTS vaut -q. Pour faire un simple listage silencieux :

unzip −l file.zip

Pour faire un listage ultra silencieux : unzip −ql file.zip

(Remarquez que le «.zip» est généralement inutile.) Pour faire un listage stan- dard:

unzip −−ql file.zip ou

unzip −l−q file.zip ou

unzip −l−−q file.zip (les tirets en trop ne posent pas de problèmes) CONSEILS

Le mainteneur courant, étant peu occupé, trouve utile de définir une paire d’alias : ttpour «unzip −tq» etiipour «unzip −Z» (ou «zipinfo»). On peut donc saisir simplement «tt zipfile» pour tester une archive, ce qui est une bonne habitude. Av ec un peu de chance unzip va afficher «No errors detected in compressed data of zipfile.zip, » après quoi on peut respirer un bon coup.

Le mainteneur trouve aussi utile de mettre la variable d’environnement UNZIP à

«−aL» et est tenté d’ajouter aussi «−C». Sa variable ZIPINFO est mise à «−z».

DIAGNOSTICS

Les valeurs de retour (ou niveau d’erreur) sont proches de celles définies par PKWARE et prennent les valeurs suivantes, sauf sous VMS :

0 normal ; aucune erreur ou avertissement détecté.

1 un ou plus d’erreurs ont été détectées, mais le processus a été fini av ec succès. Ceci inclut les archives où une ou plusieurs entrées n’ont pas été extraites à cause d’une méthode de compression non supportée ou un mot de passe inconnu.

2 une erreur générique dans le fichier zip a été détectée. L’opération peut cependant s’être terminée correctement ; quelques fichiers zip créés avec d’autres archiveurs et abîmés peuvent être simplement corrigés.

3 une erreur grave dans le fichier zip a été détectée. L’opération a probablement immédiatement échoué.

4 unzip n’a pas pu allouer de la mémoire pour un ou plusieurs tam- pons pendant son initialisation.

5 unzip a manqué de mémoire ou n’a pas pu obtenir une console pour saisir le mot de passe.

6 unzip n’a pas pu allouer de la mémoire pendant la décompression vers le disque.

7 unzip n’a pas pu allouer de la mémoire pendant la décompression en mémoire.

(9)

8 [actuellement non utilisé]

9 le fichier zip n’a pas été trouvé.

10 mauvais paramètre(s) dans la ligne de commande.

11 aucun fichier demandé n’a été trouvé dans l’archive zip . 50 le disque est (ou a été) plein pendant l’extraction.

51 fin prématurée du fichier zip.

80 l’utilisateur a interrompu zip prématurement avec contrôle-C (ou similaire)

81 une ou plusieurs entrées n’ont pas été testées ou extraites à cause d’une méthode de compression non supportée ou un mot de passe inconnu.

82 aucun fichier n’a été trouvé car le(s) mot(s) de passe étai(en)t erroné(s). (Si au moins un fichier est extrait, cependant, la valeur de retour est 1.)

VMS interprète les valeurs de retour standard Unix (ou PC) comme d’autres choses, qui n’ont aucun rapport, donc zip les remplace par des codes de statut du style VMS.

Le remplacement se fait de manière suivante : 1 (succès) pour une sortie normale, 0x7fff0001 pour les avertissements, et (0x7fff000? + 16*code_de_retour_nor- mal_de_unzip) pour toutes les autres erreurs, où le ‘?’ est 2 (erreur) pour les valeurs unzip de 2, 9-11 et 80-82, et 4 (erreur fatale) pour les restantes(3-8, 50, 51). De plus, il y a une option de compilation pour étendre ce comportement : la définition de RETURN_CODES donne un explication humaine lisible du sens de la valeur de retour.

BOGUES

Les archives morcelées ne sont pas encore supportées, sauf avec l’aide de zip. (Tous les morceaux doivent être concaténés ensemble dans l’ordre, puis «zip −F» doit être effectué sur l’archive pour la « réparer ».) Ceci sera corrigé dans la prochaine version majeure.

Les archives lues à partir de l’entrée standard ne sont pas encore supportées, sauf av ec funzip (et même ainsi seul le premier membre de l’archive est extrait).

Les archives encryptées avec des mots de passe 8-bit (par exemple, des mots de passe av ec des caractères accentués européens) peuvent ne pas être portables sur d’autres systèmes ou archiveurs. Voir les détails dans DECRYPTION ci-dessus.

L’option d’unzip −M (« more ») est trop simpliste dans sa gestion des sorties écran ; comme mentionné ci-dessus, elle ne détecte pas le sauts de ligne occasionnés par les longues lignes et peut par conséquent effacer certaines lignes avant qu’elles aient pu être lues. unzip devrait détecter et traiter chaque cas de ligne trop longue comme une ligne supplémentaire affichée. Ceci requiert la connaissance de la largeur et de la hauteur de l’affichage. De plus, unzip devrait détecter la vraie géométrie de l’affichage sur tous les systèmes.

Les dates, heures et droits des dossier ne sont restaurés que sous Unix.

[MS-DOS] Quand on teste ou extrait des fichiers depuis une disquette défectueuse, si l’option « Échec » est choisie depuis le message DOS « Annuler, Ressayer, Echec? » les anciennes versions de unzip peuvent bloquer le système, exigeant un redémarrage.

Ce problème est réglé, mais Contrôle-c (ou Contrôle-Attn) peut toujours être utilisé pour terminer unzip.

Sous DEC Ultrix, unzip échouait parfois sur des grandes archives (mauvais CRC, pas toujours reproductible). Ceci était apparemment dû à un bogue matériel (mémoire cache) ou du système d’exploitation (mauvaise gestion des erreurs de pagination ?).

Comme Ultrix a été abandonné pour Digital Unix (OSF/1), ceci ne devrait plus être un problème.

[Unix] Les fichiers spéciaux Unix tels les tampons FIFO (tubes nommés), les

(10)

périphériques de blocs et de caractères ne sont pas restaurés même s’ils sont quelque peu représentés dans l’archive zip, de même que les fichiers liés ne sont pas re-liés.

Basiquement les seuls fichiers restaurés par unzip sont les fichiers réguliers, les dossiers, les liens symboliques.

[OS/2] Les Attributs Étendus pour des dossier existants ne sont mis à jour que si l’option −o (« écraser tout ») est donnée. Ceci est une limitation du système d’exploitation ; comme les dossiers n’ont qu’une heure de création, unzip ne peut pas déterminer si les attributs d’un dossier sont plus récents ou pas que ceux du dossier sur le disque. En pratique ceci peut signifier qu’un traitement en deux passes est req- uis : d’abord décompacter l’archive normalement (avec ou sans rafraîchissement des fichiers existants), puis on écrase seulement les entrées de dossier (ex. «unzip -o foo */»).

[VMS] Quand on extrait vers un autre dossier, seule la syntaxe [.foo] est acceptée par l’option −d ; la syntaxe simple d’Unix foo est silencieusement ignorée (de même que la syntaxe moins commune de VMS foo.dir).

[VMS] Quand le fichier extrait existe déjà, le prompt de unzip ne permet que d’annuler, écraser ou renommer ; il devrait y avoir un choix supplémentaire pour créer une nouvelle version du fichier. En fait, le choix écraser crée une nouvelle ver- sion ; l’ancienne version n’est ni écrasée ni supprimée.

VOIR AUSSI

funzip(1L), zip(1L), zipcloak(1L), zipgrep(1L), zipinfo(1L), zipnote(1L), zipsplit(1L) URL

La page d’Info-ZIP est actuellement sur ftp://ftp.info- zip.org/pub/infozip/.

AUTEURS

Les premiers auteurs d’Info-ZIP (actuellement membres semi-actifs du groupe Zip- Bugs) sont : Greg « Cave Newt » Roelofs (UnZip) ; Onno van der Linden (Zip);

Jean-loup Gailly (compactage); Mark Adler (décompactage, fUnZip) ; Christian Spieler (coordination de la maintenance de UnZip, VMS, MS-DOS, Windows 95, NT, code partagé, intégration générale de Zip et UnZip et optimisation) ; Mike White (Windows GUI, Windows DLLs) ; Kai Uwe Rommel (OS/2) ; Paul Kienitz (Amiga, Windows 95); Chris Herborth (BeOS, QNX, Atari) ; Jonathan Hudson (SMS/QDOS) ; Sergio Monesi (Acorn RISC OS); Harald Denker (Atari, MVS) ; John Bush (Solaris, Amiga); Hunter Goatley (VMS); Steve Salisbury (Windows 95, NT) ; Steve Miller (Windows CE GUI), Johnny Lee (MS-DOS, Windows 95, NT) ; et Dave Smith (Tandem NSK). L’auteur du code originel de unzip sur lequel Info-ZIP a été basé est Samuel H. Smith ; Carl Mascott a fait le premier port sur Unix ; et David P. Kirschbaum a organisé et conduit Info-ZIP dans les premiers temps avec Keith Petersen qui hébergeait la liste de diffusion originelle sur WSMR-SimTel20. La liste complète de contributeurs pour UnZip est devenue assez grande ; veuillez vous référer au fichier CONTRIBS dans la distribution du source Unzip pour une version relativement complète.

VERSIONS

v1.2 15 Mar 89 Samuel H. Smith v2.0 9 Sep 89 Samuel H. Smith

v2.x fall 1989 beaucoup de contributeurs Usenet v3.0 1 May 90 Info-ZIP (DPK, consolideur) v3.1 15 Aug 90 Info-ZIP (DPK, consolideur) v4.0 1 Dec 90 Info-ZIP (GRR, maintenance) v4.1 12 May 91 Info-ZIP

v4.2 20 Mar 92 Info-ZIP (Zip-Bugs sous-groupe, GRR) v5.0 21 Aug 92 Info-ZIP (Zip-Bugs sous-groupe, GRR) v5.01 15 Jan 93 Info-ZIP (Zip-Bugs sous-groupe, GRR) v5.1 7 Feb 94 Info-ZIP (Zip-Bugs sous-groupe, GRR) v5.11 2 Aug 94 Info-ZIP (Zip-Bugs sous-groupe, GRR)

(11)

v5.12 28 Aug 94 Info-ZIP (Zip-Bugs sous-groupe, GRR) v5.2 30 Apr 96 Info-ZIP (Zip-Bugs sous-groupe, GRR) v5.3 22 Apr 97 Info-ZIP (Zip-Bugs sous-groupe, GRR) v5.31 31 May 97 Info-ZIP (Zip-Bugs sous-groupe, GRR) v5.32 3 Nov 97 Info-ZIP (Zip-Bugs sous-groupe, GRR) v5.4 28 Nov 98 Info-ZIP (Zip-Bugs sous-groupe, SPC) v5.41 16 Apr 00 Info-ZIP (Zip-Bugs sous-groupe, SPC)

Références

Documents relatifs

Si vous avez votre propre serveur dédié et que vous voulez permettre à des personnes de s'y connecter en FTP, ce tutoriel est fait pour vous.. Pour installer un serveur FTP, il faut

Dans ce cas, il faut activer le mode passif, car sinon vous aurez des problèmes lors de vos manipulations avec le serveur FTP (par exemple, pour la fonction ftp_nlist , puisqu'on est

depuis Filezilla vers Filezilla serveur, avec cet utilisateur, vous arrivez dans un répertoire où vous voyez le sous-répertoire outils. Lorsque ça marche, collez ici une

[r]

[r]

[r]

[r]

[r]