Nur manchmal klappt "cat pack.zip | unzip -l /dev/stdin"?

28/11/2011 - 21:21 von Alexander Skwar | Report spam
Hallo.

Weiss nicht, wo's besser passen würde...

Mich verwirrt gerade folgendes ganz immens:

MacBook-Pro% cat pack.zip | unzip -l /dev/stdin
Archive: /dev/stdin
Length Date Time Name
28 11-28-11 21:13 datei.txt
28 1 file
MacBook-Pro% cat pack.zip | unzip -l /dev/stdin
Archive: /dev/stdin
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of /dev/stdin or
/dev/stdin.zip, and cannot find /dev/stdin.ZIP, period.
MacBook-Pro% cat pack.zip | unzip -l /dev/stdin
Archive: /dev/stdin
Length Date Time Name
28 11-28-11 21:13 datei.txt
28 1 file


Wieso hat da das 2. "cat pack.zip | unzip -l /dev/stdin" *nicht*
funktioniert? An "pack.zip" hat sich bei den 3 Aufrufen nichts
geàndert; ich habe alle 3 Aufrufe zügig manuell nacheinander
gemacht (weil ich lieber nicht bei Bauer sucht Frau bewusst
zugucken will... *G*).

Bin auf OS X 10.6.8. UnZip 5.52. Passiert wie oben gezeigt mit
bash 4.2.10 und auch mit zsh 4.3.9.

Falls irgendwie wichtig:
pack.zip -> http://api2.ge.tt/0/9L0dJUA/0/blob/download

Danke,

Alexander

I just forgot my whole philosophy of life!!!
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
 

Lesen sie die antworten

#1 Stefan Reuther
29/11/2011 - 18:30 | Warnen spam
Alexander Skwar wrote:
MacBook-Pro% cat pack.zip | unzip -l /dev/stdin
Archive: /dev/stdin
Length Date Time Name
28 11-28-11 21:13 datei.txt
28 1 file
MacBook-Pro% cat pack.zip | unzip -l /dev/stdin
Archive: /dev/stdin
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the



*Eigentlich* will ein Zip-Programm in seiner Eingabe hin- und her-
positionieren (gehe ans Ende, suche Central Directory, lies Position des
Local Header, gehe zu Local Header, decodiere Datei). Das geht natürlich
in einer Pipe nicht und ich hàtte erwartet, dass das gar nicht klappt.

Durch nichts gedeckte Vermutung: abhàngig von der restlichen Systemlast
bekommt 'unzip' die komplette Datei mal am Stück, mal nur teilweise in
seinen I/O-Puffer, so dass die Positionierung mal klappt und mal nicht.


Stefan

Ähnliche fragen