81 votes

Dégonfler l'outil de ligne de commande

Je cherche un wrapper en ligne de commande pour l'algorithme DEFLATE.

J'ai un fichier (git blob) qui est compressé avec DEFLATE et je veux le décompresser. La commande gzip ne semble pas avoir l'option d'utiliser directement l'algorithme DEFLATE plutôt que le format gzip.

Idéalement, je recherche un outil Unix / Linux standard capable de le faire.

edit: Voici le résultat obtenu lorsque j'essaie d'utiliser gzip pour mon problème:

 $ cat .git/objects/c0/fb67ab3fda7909000da003f4b2ce50a53f43e7 | gunzip

gzip: stdin: not in gzip format
 

52voto

araqnid Points 33350

Quelque chose comme ce qui suit va imprimer le contenu brut, y compris l'en-tête "$ type $ length \ 0":

 perl -MCompress::Zlib -e 'undef $/; print uncompress(<>)' < .git/objects/27/de0a1dd5a89a94990618632967a1c86a82d577
 

49voto

Jack O'Connor Points 1165

Vous pouvez le faire avec l'outil de ligne de commande OpenSSL:

 openssl zlib -d < $IN > $OUT
 

39voto

akira Points 3632

une doublure pythonique:

 $> python -c "import zlib,sys;print repr(zlib.decompress(sys.stdin.read()))" < IN
 

28voto

seumasmac Points 146

Vous pouvez utiliser zlib-flate, comme ceci:

 cat .git/objects/c0/fb67ab3fda7909000da003f4b2ce50a53f43e7 | zlib-flate -uncompress; echo
 

C'est là par défaut sur ma machine, mais cela fait partie de qpdf - tools for and transforming and inspecting PDF files si vous devez l'installer.

J'ai ajouté un echo à la fin de la commande, car il est plus facile de lire le résultat ainsi.

14voto

tuxdna Points 1835

Voici un Ruby one-liner (cd .git / first et identifiez le chemin d'accès à n'importe quel objet):

 ruby -rzlib -e 'print Zlib::Inflate.new.inflate(STDIN.read)' < ./74/c757240ec596063af8cd273ebd9f67073e1208
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X