6 ms·
I agree. To me, "sed -e" is an expression as a whole, and replacing -e with --expression is on the same level as aliasing "sed" to "stream-editor". Though I wo
by nemetroid 6y ago
I agree. To me, "sed -e" is an expression as a whole, and replacing -e with --expression is on the same level as aliasing "sed" to "stream-editor".
Though I would make the list of "allowed" short flags very short. I can't think of many more than the ones you listed:
mkdir -p
sh -c
cp -r
tar -xaf
tar -caf
- lukeschlather 6y agotar is one of the worst. I think I know what those do without looking it up but I think most people look at that with bewilderment. Randall Munroe is always helpful in these matters and has this to say: https://xkcd.com/1168/ https://xkcd.com/1168/
- UI_at_80x24 6y agoI remember 90% of the time which flag I want to use, but the other 10% sends me into a rage! =) I gave up and added this to my .bashrc: function extract() { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xvjf $1 ;; *.tar.gz) tar xvzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xvf $1 ;; *.tbz2) tar xvjf $1 ;; *.tgz) tar xvzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *.zst) zstd -d $1 ;; *.xz) unxz $1 ;; *) echo "'$1' cannot be extracted via >extract<" ;; esac else echo "'$1' is not a valid file" fi }
- thequux 6y agoRecent (as in, within the last ~3-5 years) versions of GNU tar automatically detect the type of compression and apply the appropriate tool, so you can often get away with `tar xvf`.
- ahartmetz 6y agoActually close to 12 years, GNU tar 1.21 https://www.gnu.org/software/tar/ https://www.gnu.org/software/tar/ Another "recent" (much more recent IIRC) change is that you don't need the dot anymore in find to search in the current directory.
- Hello71 6y agoaccording to https://git.savannah.gnu.org/cgit/findutils.git/commit/find/find.1?id=c030b5ee33bbec3c93cddc3ca9ebec14c24dbe07 https://git.savannah.gnu.org/cgit/findutils.git/commit/find/..., this functionality has been present since findutils was moved under source control in 1996.
- jfrunyon 6y agoI believe that GNU find used to (in some cases?) show a warning if the directory was omitted. Could be wrong.
- mehrdadn 6y agoI think the dot actually gives you issues on Mac? Or something like that. I remember encountering issues with it.
- rbonvall 6y agoThere's a utility called dtrx ("do the right extraction") that does basically this, and also makes sure that files are always extracted into a directory.
- Hello71 6y agoextract() { bsdtar -xf "$1" } you can decompress things which are not files, such as stdin or device files. in addition, your code does not cover *.tar.xz (more common than tar.bz2 nowadays), or lzma, or lz4, or tar.zst, or many many other formats. further, it's not even consistent: bunzip2, gunzip, and unxz remove the input file, but tar, unrar, 7z, and zstd do not.
- eMSF 6y agoI guess you only ever extract punctually named files. But it's still rather amusing that with the exception of 'case', the only places where $1 is properly quoted are the ones where it's not really necessary, and vice versa (but then again, it's not done for the parameter, but rather the single quotes). Anyway, my advice to you and anyone else having trouble with tar is that "tar caf" and "tar xaf" are the only things most people need to remember about tar, with or without compression. (In this case, most people means people who use tar, but so rarely that they have trouble remembering how to use it; they probably never use it for anything else other than (un)archiving. Also, xkcd isn't gospel.)
- maple3142 6y agoYou can use atool (https://www.nongnu.org/atool/ https://www.nongnu.org/atool/) too. It is just some perl scripts wrapper around some commom extraction tools.
- nobody9999 6y agoI can certainly understand the impulse to something like this, but as other posters pointed out, your case statement is incomplete, and will continue to become more so as new tools become available. Personally, I consciously avoid using the internal decompression features of tar, both out of habit and to avoid unexpected results. As such, I generally use command lines like: bunzip2 -c <tar.bz2 file> |tar xvf - instead of relying on tar xvjf I don't see it as wrong or bad to use tar's decompression features, it's more about my own preferences and experience. Being able to perform similar actions in multiple ways is one of the things I've always appreciated about the shell and the Unix/GNU userland.
- stack_underflow 6y agoThese two commands should fit most of your use cases: tar cf dir.tar dir # mnemonic: 'create file' <tar-file-name> <dir-to-tar> tar xf dir.tar(.gz|bz2|...) # mnemonic: 'eXtract file' <tar-file-name> On systems with "modern" versions of tar `-x` is capable of recognizing which compression format is used and doesn't require the explicit `-j/z` flags you usually see.
- corpMaverick 6y agoExactly, these are the only ones I know and never get confused. Actually I use cvzf and xvzf.
- stjohnswarts 6y agoyou might want to at -p for preserving permissions in there are well, handy for archiving
- a1369209993 6y ago> To disarm the bomb, simply enter a valid tar command on your first try. No Googling. You have ten seconds. $ tar --help Obviously. :)
- scbrg 6y ago$ tar --help tar: unknown option -- help usage: tar [-]{crtux}[-befhjklmopqvwzHJOPSXZ014578] [archive] [blocksize] [-C directory] [-T file] [-s replstr] [file ...] $
- a1369209993 6y agoOkay, so your tar is defective[0], and? I can do that too: $ list '#! /bin/sh' 'echo "tar: invalid command" >&2' 'exit 64' >/tmp/tar $ chmod a+x /tmp/tar $ PATH="/tmp:$PATH" $ $ tar -cf a.tar a/ tar: invalid command $ 0: any program that doesn't support --help is defective, which was rather my point.
- scbrg 6y ago> 0: any program that doesn't support --help is defective, which was rather my point. Fair enough. My point was that there's a category of operating systems where long options (including --help) isn't really a thing. You may of course consider them defective, though I'm not sure everybody agrees.
- dev_tty01 6y ago$ tar -h Even better. :)
- kiwijamo 6y agoIs -a a GNU extension? Doesn't seem to be in the man page for BSD tar.
- Hello71 6y agoit is, and it's unnecessary for decompression since GNU tar 1.21 according to a comment lower in the thread.