Tar Option 'v' Considered Harmful

Das Utility tar sollte eigentlich in vtar umbenannt werden, weil scheinbar jeder die Option v reflexartig zufügt. Aber ist das in irgendeiner Art hilfreich? Oder kann es vielleicht sogar Probleme verursachen?

Tar output with hidden errors

Die Option v gehört scheinbar zu tar wie der Lausbefall zum Kindergartenbesuch. Lässt man sie weg, treibt das manchem Beobachter beim Auspacken eines Tarballs den Angstschweiß auf die Stirn, und sollte später bei der neu installierten Software irgendetwas nicht ganz so laufen, wie es soll, wird früher oder später der fürsorgliche Rat geäußert, man solle das Archiv doch besser noch einmal mit tar xv auspacken.

Fast jedes Kommandozeilentool hat eine Option -v oder --verbose mit der man im Ausgabepuffer des Terminalfensters unerwünschte Ausgaben mit irrelevanten Daten überschreiben kann. Ich kenne allerdings kein anderes Tool, bei dem diese Option so beliebt ist.

Fragt man, weshalb das Archiv xyz.tar.gz denn unbedingt mit Option v ausgepackt werden müsse, hört man oft, dass man ja schließlich wissen will, was im Archiv enthalten ist. Ich will das auch immer wissen, und deshalb lasse ich mir den Inhalt fast jeden Archives vor dem Auspacken mit der Option t wie "Terminal" anzeigen.

Das nächste Argument ist dann meist: Man will den Fortschritt der Aktion verfolgen!

Auch das kann ich ab und zu nachvollziehen, jedenfalls, wenn es mir richtig langweilig ist. Aber dann interessieren mich die ETA (Estimated Time of Arrival) und je nach Grad der Langeweile vielleicht auch noch der prozentuale Fortschritt. Irgendwelche Dateinamen vorbeihuschen zu sehen, hilft mir dabei nicht wirklich. Und außerdem sehe ich doch den Fortschritt. Der kleinste gemeinsame Nenner aller Shells ist: Sehe ich keinen Prompt, passiert gerade etwas. Und beunruhigt mich, dass der Prompt nicht zurückkehrt, habe ich Job-Control mit CTRL-C, CTRL-Z, etc.

Aller Argumente beraubt, wird jetzt mit einem Schulterzucken angemerkt, dass es letzendlich Geschmackssache sei. Schließlich schadet es ja niemandem, wenn tar mit Option v geschwätzig gemacht wird.

Es schadet sehr wohl! Das Einzige, was uns beim Arbeiten mit einem Tarball interessiert, sind eventuelle Fehler, und genau diese werden von der Option v unkenntlich gemacht:

$ tar xzvf gimp-2.8.16.tar.gz
...
gimp-2.8.16/themes/Default/images/stock-path-22.png
gimp-2.8.16/themes/Default/images/stock-channel-indexed-16.png
gimp-2.8.16/themes/Default/images/stock-channel-blue-32.png
gimp-2.8.16/themes/Default/images/stock-quick-mask-on-12.png
gimp-2.8.16/themes/Default/images/stock-gradient-bilinear-16.png
gimp-2.8.16/themes/Default/images/stock-display-filter-gamma-16.png
gimp-2.8.16/themes/Default/images/stock-texture-64.png
gimp-2.8.16/themes/Default/images/stock-rotate-90-16.png
gimp-2.8.16/themes/Default/images/stock-channel-gray-24.png
gimp-2.8.16/themes/Default/images/stock-display-filter-16.png
gimp-2.8.16/themes/Default/images/stock-gradient-spiral-clockwise-16.png
gimp-2.8.16/themes/Default/images/stock-channel-alpha-32.png
gimp-2.8.16/themes/Default/images/stock-channel-red-48.png
tar: Exiting with failure status due to previous errors

Klar, wir sind gerade sensibilisiert, und sehen die Fehlermeldung in der letzten Zeile, aber in der Realität passiert das nicht, besonders dann, wenn das Auspacken des Archivs lange dauert, die Option v also scheinbar nützlich wäre.

Und last but not least, diese "Zusammenfassung" in der letzten Zeile ist ein Bonbon von GNU-Tar. Andere Tar-Varianten geben Fehler irgendwo zwischen der Verbose-Ausgabe aus, eventuell längst vorbeigehuscht, vielleich sogar aus dem Zeilenpuffer herausgescrollt. Einen Extrahierfehler kann man also nur mit echo $? erkennen. Aber wer macht das schon?

Das ist keine Angstmacherei. Das Tar-Kommando von Solaris hatte früher eine lächerlich niedrige Beschränkung für die Länge von Dateinamen. Deshalb konnte ein Installations-Tarball unserer Software nur mit GNU Tar ausgepackt werden. Mit Option v allerdings ging der Fehler im Listing Tausender Dateien unter, und das Tar von Solaris hielt es auch nicht für notwendig, auf den Fehler am Ende der Ausgabe noch einmal hinzuweisen.

Also: Die Option v bei tar ist völlig nutzlos. Einfach nicht verwenden!

Leave a comment

JSON.stringify() missbrauchen

Tücken von JavaScript `for...in`-Schleifen

Elektronische Rechnungen mit freier und quelloffener Software erzeugen

Dynamische Angular-Konfiguration

ImageMagick für Perl kompilieren

Angular Tour of heroes als Standalone-App

Diese Website verwendet Cookies und ähnliche Technologien, um gewisse Funktionalität zu ermöglichen, die Benutzbarkeit zu erhöhen und Inhalt entsprechend ihren Interessen zu liefern. Über die technisch notwendigen Cookies hinaus können abhängig von ihrem Zweck Analyse- und Marketing-Cookies zum Einsatz kommen. Sie können ihre Zustimmung zu den vorher erwähnten Cookies erklären, indem sie auf "Zustimmen und weiter" klicken. Hier können sie Detaileinstellungen vornehmen oder ihre Zustimmung - auch teilweise - mit Wirkung für die Zukunft zurücknehmen. Für weitere Informationen lesen sie bitte unsere Datenschutzerklärung.