Tar Option 'v' Considered Harmful

The utility tar should rather be renamed to vtar. Why the heck does almost everybody add the option v automatically? Is that in any way helpful? Or is it maybe even dangerous?

Tar output with hidden errors

The option v belongs to tar like lice belong to your children's head, when they come back from kindergarten. Omitting it makes the casual observer often very nervous, and should something go wrong with the freshly installed software, you will sometimes even hear the advice to untar the archive once more, this time with tar xv.

Almost every command line tool has an option -v or --verbose the purpose of which is to overwrite unwanted output in the terminal window with utterly useless and irrelevant data. But I do not know any other tool whose verbose mode is so popular as tar's.

When asked why archive xyz.tar.gz absolutely has to be unpacked with the option v, many people reply that they want to see what is contained in the archive. So do I! And that is why I almost always list the contents of a tarball with option t like "terminal" but before I unpack it.

The next argument is: You want to see the progress of the action.

Sometimes, when I am really bored, I also want to see the progress of such actions. But I am then interested in the ETA and depending on my degree of boredom maybe also the percentage. Seeing some path names rush by in the terminal window does not really look helpful to me with respect to progress feedback. And, after all, I actually do see the progress. The least common denominator of all shells is: When I don't see a prompt, something is going on. And should I be irritated about the prompt not returning, I have the shell's job control, i. e. CTRL-C, CTRL-Z.

Short of more arguments, you will often hear that it is merely a matter of taste. After all, it doesn't hurt to make tar verbose.

But it does hurt! The only thing that we are interested in, when working with tar balls are possible errors, and exactly errors will get buried by tar's verbose output:

$ 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

Sure, after reading the above rant, everybody will spot the error message in the last line. In reality that often will not happen, especially if the archive is large and unpacking it takes a long time, in other words, exactly when the option v is considered useful by many people.

You should also not that this "summary" in the last line is a GNU tar gimmick. Other tar flavors just print errors on standard error wherever they occur, and they will usually go completely unnoticed, unless you check the command's exit code with echo $?. But who does that?

This is not scaremongering. The tar of Sun Solaris used to have a ridiculously low limit on the length of path names. Installation tar balls of our software therefore had to be unpacked with GNU tar. Of course, a lot of people failed to follow our advice, and they also did not notice the error messages hidden between thousands of lines of output because Solaris' tar did not inform about the previously occurred errors at the end of its output.

Hence: The option v for tar is completely useless!

Leave a comment

Abusing JSON.stringify()

Hidden Quirks of JavaScript `for...in` Loops

Creating Electronic Invoices with Free and Open Source Software

Dynamic Angular Configuration

Compiling ImageMagick for Perl

Standalone Angular Tour Of Heroes

This website uses cookies and similar technologies to provide certain features, enhance the user experience and deliver content that is relevant to your interests. Depending on their purpose, analysis and marketing cookies may be used in addition to technically necessary cookies. By clicking on "Agree and continue", you declare your consent to the use of the aforementioned cookies. Here you can make detailed settings or revoke your consent (in part if necessary) with effect for the future. For further information, please refer to our Privacy Policy.