8

My mnemonic to remember tar commands on Linux

 1 year ago
source link: https://evanhahn.com/mnemonic-to-remember-tar-commands/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

My mnemonic to remember tar commands on Linux

My mnemonic to remember tar commands on Linux

by Evan Hahn, posted Aug 19, 2023
A webcomic depicting how hard it can be to use the tar command. First panel: “Rob! You use Unix! Come quick!” Second panel: “To disarm the bomb, simply enter a valid tar command on your first try. No Googling. You have ten seconds.” In the final panel, after a hesitation, Rob says “I’m so sorry.”

The tar command is famous for being hard to use. What flags do you use for creating a tarball? What about extracting one?

I remember two mnemonics when doing this: create a file and extract a file.

To create a tarball, run tar -caf (“Create A File”):

tar -caf my_archive.tar.gz file1.txt file2.png

To extract a tarball, run tar -xaf (“Extract A File”):

tar -xaf my_archive.tar.gz

That’s it!

This works on my Linux machines, but may not work on other operating systems like macOS. See below for more info.

What do the flags mean?

The -c and -x flags are for creation and extraction, respectively.

The -f flag is for the tarball file.

The -a flag is the most interesting. It’s short for --auto-compress. It uses the file’s extension to compress the tarball correctly. For example, tar -caf my_archive.tgz ... will create a tarball compressed with gzip, while tar -caf my_archive.tar.bz2 ... will create a tarball compressed with bzip2.

man tar has more information about these flags.

It’s a bit trickier on macOS

This post is about Linux. Unfortunately, it can be a little harder on macOS.

As you might imagine, the -a/--auto-compress flag is unnecessary during extraction. There’s no need to “auto-compress” when you’re decompressing!

GNU Tar ignores the flag in this case; tar -xf and tar -xaf are equivalent. If you’re using GNU Tar—and if you’re using Linux, you likely are—you’re done!

BSD Tar, which is installed by default on macOS, doesn’t allow the -a flag during extraction. That means that tar -xaf will fail, and the mnemonic won’t work.

tar -xaf my_file.tar.gz
# tar: Option -a is not permitted in mode -x

To address this, you have a few options:

  • Run tar -xf instead of tar -xaf. This makes the mnemonic harder to remember (“create a file” versus “extract file”), but works.

  • Run tar -xaf, see the helpful error, and then run tar -xf instead. This lets you continue with the mnemonic, but adds a small hurdle.

  • Switch to GNU Tar. On macOS, you can run brew install gnu-tar and then follow the instructions to make the switch. This is what I typically do on my macOS machines, but requires a bit of effort.

Again, none of this is relevant if you’re using GNU Tar, which is probably the case if you’re using Linux.

I don’t know what to do on other operating systems like Windows or FreeBSD. Feel free to reach out if you have a suggestion.

I hope the “create a file” and “extract a file” mnemonics are useful for you!

(The comic at the top of this post is from XKCD, which is licensed under the Creative Commons Attribution-NonCommercial 2.5 license.)

Content is licensed under the Creative Commons Attribution-NonCommercial License and code under the Unlicense. The logo was created by Lulu Tang.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK