Der -f
Schalter benötigt ein Argument (den Dateinamen). Wenn danach z
erscheint f
, wird der Dateiname verwendet.
tar -xvfz one.tar.gz
ist das gleiche wie
tar -xvf z one.tar.gz
Wenn Sie das getan hätten:
tar -xvf -z one.tar.gz
Dann -z
wäre der Dateiname übernommen worden und Sie hätten einen ähnlichen Fehler erhalten.
Dies hätte jedoch funktioniert:
tar -xvz -f one.tar.gz
Die GNU- tar
Manpage besagt:
Das erste Argument für tar muss eine der Optionen sein: Acdrtux, gefolgt von optionalen Funktionen. Die letzten Argumente für tar sind die Namen der Dateien oder Verzeichnisse, die archiviert werden sollen.
Beachten Sie, dass die -f filename
Option und das Argument angegeben werden müssen, sofern die Eingabe nicht von stdin erfolgt oder die Ausgabe in stdout erfolgt (sofern zutreffend) . Während die Manpage impliziert, dass die Reihenfolge festgelegt ist, können die Optionen in der Realität beliebig sein. Sogar das seltsame funktioniert (aber es funktioniert möglicherweise nicht in allen Versionen von tar
):
tar -v files_to_archive* -f xyz.tar.gz -cz
Für die Portabilität ist es wahrscheinlich besser, sich an die idiomatische Argumentreihenfolge zu halten und sogar den Bindestrich wegzulassen:
tar czvf xyz.tar.gz files_to_archive*