tar -xvfz foo.tar.gz
gibt einen Fehler zurück tar: z: Cannot open: No such file or directory
Dies ist völlig verständlich - der f
Switch erwartet einen Dateinamen und muss daher der letzte sein.
tar xvfz foot.tar.gz
Wenn Sie jedoch den Bindestrich weglassen, wird die Datei dekomprimiert und dekomprimiert.
Ich habe dies unter OS X 10.8 und Ubuntu 12.04 getestet.
Irgendwelche Ideen warum?
[bearbeitet zum hinzufügen]
Ich benutze immer tar -zxvf foo.tar.gz
. Diese Frage ist jedoch aufgrund dieser xkcd entstanden , und meine Überraschung, als jemand darauf bestand, dass tar xvfz
dies funktionieren würde.
Antworten:
tar hat 3 Arten von Syntax (gemäß diesem ):
Bei der alten Optionssyntax müssen alle Buchstaben "tar" folgen und müssen alle in eine einzelne Gruppe ohne Leerzeichen fallen. Die Reihenfolge der Buchstaben spielt keine Rolle, solange die Argumente zu diesen Buchstaben nach der Auswahl der Optionen in derselben Reihenfolge stehen.
Diese alte Art des Schreibens von Teeroptionen kann selbst erfahrene Benutzer überraschen. Zum Beispiel die beiden Befehle:
sind ganz anders. Das erste Beispiel verwendet 'archive.tar.gz' als Wert für die Option 'f' und erkennt die Option 'z'. Das zweite Beispiel verwendet jedoch 'z' als Wert für die Option 'f' - wahrscheinlich nicht das, was beabsichtigt war.
Alte Optionen werden beibehalten, um die Kompatibilität mit alten Versionen von tar zu gewährleisten.
Der Befehl mit einem '-' entspricht
Das ist der Grund, warum Ihr Beispiel ohne "-" und nicht mit "-" arbeitet.
quelle