wake-up-neo.com

Untar, ungz, gz, tar - wie erinnerst du dich an alle nützlichen Optionen?

Ich bin mir ziemlich sicher, dass ich nicht der einzige bin, der das folgende Problem hat: Jedes Mal, wenn ich eine Datei in * nix dekomprimieren muss, kann ich mich nicht an alle Schalter erinnern und google sie am Ende, was angesichts der Häufigkeit, die ich benötige, überraschend ist mach das.

Hast du einen guten Kompressions-Spickzettel? Oder wie wäre es mit einer Mnemonik für all diese fiesen Schalter in Teer?

Ich mache aus diesem Artikel ein Wiki, damit wir hier einen schönen Spickzettel erstellen können.

Oh, und zu Manpages: Gibt es eine Sache, für die sie nicht hilfreich sind? Es geht darum, herauszufinden, wie man eine Datei dekomprimiert.

71
deadprogrammer

Oder wie wäre es mit der Verwendung der Shell mit erweiterten Vervollständigungsfunktionen (wie zsh oder neuen Versionen von bash), die die Optionen mit umfassender Hilfe für Sie vervollständigen? :))

Zum Thema Tar: Schauen Sie sich einfach die QWERTY-Tastatur an. Es gibt Buchstaben "zxcvf" nebeneinander. Sie benötigen entweder "tar czvf file.tar.gz files" oder "tar xzvf file.tar.gz".

63
ADEpt

Zusammenfassung der Tar-Optionen

Sie können dies gerne bearbeiten, um weitere esoterische Schalter hinzuzufügen, aber hier sind die Grundlagen:

  • x - Dateien extrahieren
  • c - Archiv erstellen
  • t - Dateien auflisten
  • v - ausführlich (Dateien auflisten, während sie verarbeitet werden)
  • j - verwende bz2-Komprimierung
  • z - gz-Komprimierung verwenden
  • f - Lesen oder Schreiben von Dateien auf die Festplatte

Beispiele

Dekomprimieren Sie eine tar.gz-Datei: tar zxf tarball.tar.gz

Dekomprimieren Sie eine tar.bz2-Datei: tar jxf tarball.tar.bz2

Erstellen Sie eine tar.gz-Datei: tar zcvf tarvall.tar.gz mydir/*

39
Adam Pierce

Es gibt ein kleines Perl-Skript namens "unp".

unp filename.tar.gz

... und es extrahiert alles. Funktioniert mit jeder komprimierten Datei, solange Sie die richtigen Binärdateien haben. Und man vergisst einfach die Syntax oder irgendetwas davon. Überprüfen Sie die Repositorys Ihrer Linux-Distribution. Es sollte dort sein (zumindest auf Arch, Debian und Ubuntu).

22
Vicent Marti

Wirklich bei einer häufigen Verwendung mache ich einen Unterschied zwischen dem Extrahieren von (x) Daten und dem Komprimieren von (c) Daten:

Extrahieren:

tar xzf data.tgz

Komprimieren:

tar czf data.tgz

Außerdem können Sie Ihrer .bashrc zwei Funktionen hinzufügen:

function extract () {     
        if ($# -ne 1); then
                echo "Usage: $0  `<compressed archive>"`
                exit 1
        fi
        tar xzf $1
}

function compress () {
        if ($# -ne 2); then
                echo "Usage: $0 `<compressed archive> <files|directories>"`
                exit 1
        fi
        tar czf $1 $2
}

Es gibt eine weitere Nice-Extraktionsfunktion, die die Erweiterung Ihrer komprimierten Datei erkennt und die Aufgabe für Sie erledigt:

extract () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $1    ;;
           *.bz2)       bunzip2 $1     ;;
           *.rar)       unrar x $1       ;;
           *.gz)        gunzip $1      ;;
           *.tar)       tar xvf $1     ;;
           *.tbz2)      tar xvjf $1    ;;
           *.tgz)       tar xvzf $1    ;;
           *.Zip)       unzip $1       ;;
           *.Z)         uncompress $1  ;;
           *.7z)        7z x $1        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }
7
Ali Mezgani

Geben Sie einfach tar --help ein und schon haben Sie Ihr Spickzettel.

6
Jeremy Ruten

Wenn Sie Probleme haben, sich an die tar-Optionen zu erinnern, versuchen Sie es mit Pipes:

  • zcat file.tar.gz | tar xvf -
  • bzcat file.tar.bz2 | tar xvf -

Ersetzen Sie tar xv durch tar tv, um nur den Inhalt des Tarballs anzuzeigen.

Persönlich benutze ich die folgenden Mnemonics:

  • t, x oder c für "Tabellieren", "Extrahieren" bzw. "Erzeugen".
  • v zum Auflisten aller Dateien.
  • z, j oder nichts für tar.gz, tar.bz2 bzw. plain.tar.
  • f für die Angabe eines Dateinamens im Vergleich zur Standardeinstellung für die Verwendung von stdin/stdout oder eines Bandgeräts.

Obwohl "j" und "bzip2" scheinbar nichts miteinander zu tun haben, fällt es mir leicht, mich an diese Ausnahme zu erinnern.

Außerdem finde ich es lustig, dass Googling "Man Teer" ersetzt hat.

3
Logan

Der Mensch ist dein Freund.

man tar

3
madlep

Ich lese immer die Befehle in meinem Kopf vor, während ich tippe

komprimiere ausführliche Zip-Datei

tar cvzf FILE

extrahieren Sie eine ausführliche Zip-Datei

tar xvzf FILE
2
feeela

Ich mache folgendes

So erstellen Sie einen Teer:

tar czvf foo.tar.gz <files to be included>

Zu enttarieren:

tar zxvf foo.tar.gz

Dies sollten die Hauptschalter sein, über die Sie sich Sorgen machen müssen:

c - create
z - compress/uncompress
x - extracte
v - verbose
f - file

Sie können einige schickere Dinge wie tar und untar inline tun, während Sie versuchen, Dateien zwischen Verzeichnissen zu verschieben:

tar cf - <files to be copied> | (cd <target directory>; tar xvf - )
2
Jauder Ho

90% der Zeit benutze ich nur

tar -xvf file.*  

x: extrahieren
v: ausführlich sein (optional)
f: Eingabedatei (tar, gz, bzip2, etc ...)

Einfach, nicht wahr? :)
Verwenden Sie Fileroller oder Ark, wenn Sie sich nicht in einer Konsole befinden.

1
ramayac

Ich verwende seit vielen Jahren ein Perl-Skript namens aunpack, das Teil des atool -Projekts ist. Also führen Sie einfach Folgendes aus: aunpack foo.{Zip/tar.gz/tar.bz2} und es erledigt das Richtige basierend auf der Dateierweiterung.

Der andere Vorteil von aunpack ist, dass es das aktuelle Verzeichnis nicht mit vielen Dateien verschmutzt. Angenommen, es gibt 20 Dateien in foo.Zip, die sich nicht in einem Unterverzeichnis befinden. Anstatt diese Dateien in das aktuelle Verzeichnis zu verschieben, erstellt aunpack ein Unterverzeichnis foo und legt alle Dateien dort ab.

1
Dave Dribin

Die drei am häufigsten verwendeten Operationen :

--create-c

Erstellen Sie ein neues Tar-Archiv.

--list-t

Listen Sie den Inhalt eines Archivs auf.

--extract-x

Extrahieren Sie ein oder mehrere Mitglieder aus einem Archiv.


Die fünf erweiterten Teeroperationen :

--append-r

Fügen Sie einem bereits vorhandenen Archiv neue Einträge hinzu.

--update-u

Fügen Sie neuere Kopien von Archivmitgliedern an das Ende eines Archivs hinzu, falls vorhanden.

--concatenate--catenate-A

Fügen Sie ein oder mehrere vorhandene Archive am Ende eines anderen Archivs hinzu.

--delete

Objekte aus einem Archiv löschen (funktioniert nicht bei Bändern).

--compare--diff-d

Vergleichen Sie Archivmitglieder mit ihren Gegenstücken im Dateisystem.


1
Lazer

Alles, was Sie brauchen, ist tar x (Auszug aus stdin), tar c (tar zu stdout), gzip -c (gzip von stdin zu stdout; -1 zu -9 für Komprimierungsstufen; dasselbe gilt für bzip2) und gunzip -c (gunzip von stdin zu stdout) - alles andere ist Rohre.

Zum Teer und Gzip:

$ tar c * | gzip -c > out.tar.gz

Zum Entpacken und Entpacken

$ gunzip -c < out.tar.gz | tar x

Wenn Sie süße Fortschrittsbalken wünschen, verwenden Sie pv , das cat ähnelt, aber Fortschrittsbalken anzeigt:

$ tar c * | bzip2 -c | pv > out.tar.gz
 22.6MiB 0:00:03 [3.64MiB/s] [  <=>                           ]
$ pv in.tar.gz | bunzip2 -c | tar x
   80MiB 0:00:00 [  58MiB/s] [===============================>] 100%
1
porty

Ich denke, es ist einfach, sich vorzustellen, was Sie wollen, und nicht nur ein paar Buchstaben.

Zur Veranschaulichung werde ich ein Beispiel zum Extrahieren von file.tar.gz verwenden:

Da es sich um eine TAR-Datei handelt, sollten Sie das TAR-Programm verwenden. Dann sind es die Möglichkeiten:

  1. x da willst du e x tract.
  2. z wenn die Datei mit .gz endet. (gz steht nach tar im Dateinamen) Diese Option komprimiert das Archiv.
  3. f für Datei, gefolgt vom Archivnamen.

Dies wird im folgenden Beispiel gezeigt:

tar xzf file.tar.gz
0
Espen

Ich erinnere mich, dass es immer "tar XXvf" ist, wo die beiden X sind

  • x für e X trakt oder c für C reate und,
  • entweder z = gzip, j = bzip2 (gzip ist häufiger, daher ist es normalerweise z, aus welchem ​​Grund auch immer, das j = bzip2 steckt einfach in meinem Kopf fest).

Gelegentlich stoßen Sie auf komprimierte, aber nicht geteerte Dateien, in denen Sie un zu jedem Komprimierungstyp hinzufügen. z.B. g un Zip oder b un Zip2.

Wenn überhaupt, vergesse ich die 2 und tippe manchmal "bzip".

0
mmacaulay

sie können auch einen Alias ​​erstellen. Füge einfach diese zwei Zeilen zu deiner ~/.bash_aliases Datei hinzu:

alias untar="tar xvf"
alias dotar="tar cvf"

sie können dann untar foo.tar.gz zum Extrahieren und dotar foo.bar zum Komprimieren verwenden. Sie können andere Aliase verwenden, an die Sie sich leicht erinnern können.

0
foerno