Möchten Sie diese Frage verbessern? Fügen Sie Details hinzu und klären Sie das Problem, indem Sie diesen Beitrag bearbeiten.
Vor 4 Jahren geschlossen.
Verbessern Sie diese Frage
Wie kann ich eine .tar.gz-Datei mit cat, tar und gzip in einer Befehlszeile dekomprimieren und dearchivieren? Ist das überhaupt möglich?
Akzeptierte Antwort:
Keine Notwendigkeit für cat
oder gzip
:
$ tar xvzf archive.tar.gz
Die Optionszeichenfolge teilt tar
mit zu extrahieren (x
) im ausführlichen Modus (v
) die komprimierte (z
) Archiv nach dem f
Flagge.
Unter Verwendung von cat
, tar
und gzip
(was albern ist, tu das nicht ):
$ cat archive.tar.gz | gzip -d -c | tar xvf -
oder
$ gzip -d -c archive.tar.gz | cat | tar xvf -
Bei Angabe von -
als Dateiname tar
liest das Archiv von der Standardeingabe.
Die letzten beiden Beispiele leiden unter dem, was allgemein als „nutzlose Verwendung von cat
“ bezeichnet wird “, da ist das einzige cat
tut, ist, Daten in den nächsten Teil der Pipeline zu verschieben.
Eine etwas bessere Version, ohne die cat
:
$ gzip -c -d archive.tar.gz | tar xvf -
Dies kann tatsächlich nützlich sein, um zu wissen, wie man es auf einem System macht, auf dem tar
weiß nicht, wie man mit komprimierten Archiven umgeht.
Die archaische Optionszeichenfolge, die ich für tar
verwendet habe oben, ohne Bindestrich (-
) davor, stammt aus einer Zeit, bevor der Bindestrich allgemein zur Angabe von Befehlszeilenoptionen verwendet wurde. Andere Dienstprogramme, die keine reguläre Optionssyntax verwenden, sind dd
und mt
, aber während die meisten Implementierungen von tar
heute versteht die neueren Strichoptionen, dd
normalerweise nicht. Der mt
Der Befehl (der Magnetbandoperationen steuert) hat einige Dash-Optionen erhalten (insbesondere unter Linux), aber der einzige nicht optionale Teil der Befehlszeile ist immer noch der Befehl, den Sie auf dem Laufwerk ausführen möchten, z. B. rewind
oder eof
.