4 ms·
Long flags aren’t just for readability, they also add entropy which contributes defensiveness against typos.
by gkop 6y ago
Long flags aren’t just for readability, they also add entropy which contributes defensiveness against typos.
- MaxBarraclough 6y agoRelated to this, they're less likely to do something unexpected. Many programs use -v as a short flag for --version, but some (such as curl) use it as short for --verbose Probably something you'd catch pretty quickly, but still.
- dpcx 6y agoAs does Python, which drives me crazy. -V is version on Python.
- MaxBarraclough 6y agoVery annoying. Java HotSpot uses -version, rather than --version, which is even worse. Don't mess with the standard long-form flag!
- hackerm0nkey 6y agoI get it wrong every damn time. 16 years and counting.
- iforgotpassword 6y agoSame! Somehow I also start confusing this with somewhat related tools like gcc. It's rare enough that I need to query these that it's all blurry in my memory again by next time. "huh I guess gcc was that goofy one with just one dash.." Nope.
- LukeShu 6y agoTo be fair, the JVM predates GNU-style --long flags being "standard". Lots of older programs use "X11-style" -long flags (that many pre-X11 programs used, like `find`).
- deleted 6y ago[deleted]
- tannhaeuser 6y agoLong flags are a GNUism, not a "standard" by any means. The closest that comes to a standard in this space are POSIX utility conventions [1]. [1]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1...
- jjgreen 6y ago... and it wrote the version to stderr up to 3.3, the stdout from 3.4; very convenient if you need to switch on version (which you do).
- nostoc 6y agoThere's so much variation in flags for version, I've taken the habit of always using the long `--version` flag.
- ben509 6y agoThe worst (well known) offender is grep -v meaning grep --invert-match just for the sheer bafflement of "verbose" now hiding what you were looking for.
- u801e 6y agoThat actually comes from ed and vi. The g command would search for a line that matches a given regular expression and run the following command on that line. The v command was the inverse (search for lines that don't match the given regular expression). The default command was to just print the line. Hence the name grep g/re/p
- EE84M3i 6y agoWow, that's funny, I normally expect '-v' to be verbose, but maybe I just use a lot of `tar` and `curl`!
- mjochim 6y agoOr maybe cp, or rm, or rsync, or mount, or wget, or netcat (both gnu and bsd) ... it’s really pretty reasonable to expect -v to mean verbose ;-).
- fuzzer37 6y agoBut also contributes to the heat death of the universe.
- edoceo 6y agowhat doesn't?
- ben509 6y agoNah, it's already happened, and we all pop up every 10^10^100 eons to pretend this is all real.
- arthurcolle 6y agoShhh don't share meta content with the NPCs...
- UI_at_80x24 6y agoAnd to add to your point, in my experience I've had "long-lived" scripts that the flags change meaning over the years. This is extremely rare on base-level installs, but frighteningly more common on the inhouse-programs I've had to deal with. The long flags are less likely to be changed over time. The script will usually fail gracefully and I don't also need to relearn what I was thinking 25 years ago when I first did it. (long flags are like in-command comments too) And as others have pointed out -v(ersion) or -v(erbose) can happen too.