Bash - wie entpacken einer Pipe zip-Datei (aus "wget -qO-")
Irgendwelche Ideen auf, wie zu entpacken einen Pipe zip-Datei wie folgt:
wget -qO- http://downloads.wordpress.org/plugin/akismet.2.5.3.zip
Wollte ich Sie entpacken Sie die Datei in ein Verzeichnis, wie wir verwendet zu tun, mit einer normalen Datei:
wget -qO- http://downloads.wordpress.org/plugin/akismet.2.5.3.zip | unzip -d ~/Desktop
InformationsquelleAutor der Frage Roger | 2011-08-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
wget -qO- -O tmp.zip http://downloads.wordpress.org/plugin/akismet.2.5.3.zip && unzip tmp.zip && rm tmp.zip
InformationsquelleAutor der Antwort leon
Die ZIP-Datei enthält ein Verzeichnis (index) am Ende des Archivs. Dieses Verzeichnis sagt wo, im Archiv, jede Datei befindet, und ermöglicht so den schnellen, direkten Zugriff, Lesen, ohne das gesamte Archiv.
Dies scheint ein problem darstellen, wenn Sie versuchen zu Lesen, dass ein ZIP-Archiv durch ein Rohr, in das der index wird nicht zugegriffen, bis ganz am Ende und damit die einzelnen Mitglieder nicht richtig extrahiert, bis, nachdem die Datei vollständig gelesen und ist nicht mehr verfügbar. Als solche erscheint es nicht verwunderlich, dass die meisten ZIP-Dekomprimierprogramme einfach nicht, wenn das Archiv erfolgt über ein Rohr.
Verzeichnis am Ende des Archivs ist nicht die nur Speicherort, wo die Datei meta-Informationen in das Archiv gespeichert. Darüber hinaus können einzelne Einträge auch enthalten diese Informationen werden in einer lokalen Datei-header, für Redundanz-Zwecke.
Obwohl nicht jedes ZIP-Entpacker verwenden lokale Datei-Header, wenn der index nicht verfügbar ist, die tar-und cpio-front-ends zu libarchive (ein.k.ein. bsdtar und bsdcpio) kann und wird tun, wenn das Lesen durch ein Rohr, was bedeutet, dass Folgendes möglich ist:
InformationsquelleAutor der Antwort ruario
Während der folgenden arbeiten nicht in der bash, es funktioniert auch in der zsh. Da viele Benutzer der zsh bis Ende Mai hier, es kann immer noch nützlich sein:
InformationsquelleAutor der Antwort Ian Robertson
Ich würde werfen Sie einen Blick auf funzip (http://www.info-zip.org/mans/funzip.html). Die man-Seite für Sie stellt fest,
Leider habe ich nicht ein Beispiel, aber es sieht aus wie es funktioniert mit der Linux entpacken Dienstprogramm.
InformationsquelleAutor der Antwort Sam Cantrell
verwenden Sie einfach zcat
InformationsquelleAutor der Antwort lanzalibre
BusyBox ist
unzip
nehmen kann stdin und extrahieren Sie alle Dateien.Den Strich nach
unzip
ist die Verwendung von stdin als Eingabe.Können Sie auch,
Aber das ist nur redundant von
unzip file.zip
.Wenn Ihre Distribution nutzt BusyBox standardmäßig (z.B. Alpine), führen Sie einfach
unzip -
.InformationsquelleAutor der Antwort Saftever