Bonus question: With or without - ?
When I point an (un)packing program at a packed archive, the default action should be to fucking unpack it.
And when I point it at anything else, it should pack it into the default format.
Everything else can be options.
The problem is, tar isn’t a packing program, it’s a tape archive program that’s been repurposed for general files-to-file archival with optional compression plugins
At this point, if it were written today, it probably would behave as you suggest, but changing it now would break too many things that use it
Then it would’ve been time to deprecate it for this purpose, and use something sensible instead, say about 13 years ago.
All the old stuff can then keep using tar, but the nicer option can become the standard for user-friendly file extraction.
“The world should conform to my expectations, not long-standing conventions!”
But if you engage your thinking meat, you might just discover the magic of alias untar='tar xvf'
.
“long-standing conventions” is how you end up with Internet Explorer still pre-installed on Windows Server 2025.
And when was the last time you used the tar “tape archiver” to archive things on tape?
Magnetic tapes are still being used as long-term storage, as backups for example. They are inexpensive, compact, have zero moving parts, and are more durable than optical media. All you have to do is keep them in a location that is around room temperature, relatively dry, and away from magnets.
But that’s not really what tar
does. It simply collects the input files and writes them to a single contiguous data stream – a file not unlike an actual tape. It’s worked like that for, I shit you not, 45 years, and it is very much a single project holding up modern technology situation. I fear to imagine what would happen if it were to change.
You may not have heard this, but tar can be used to work with non-tape archives.
In fact, non-tape archives are the overwhelmingly popular workflow.
Why are long standing conventions a good thing? Slavery was a longstanding convention.
-xzf extract ze file
dtrx = Do The Right eXtraction
Check your local package manager