#cli software should (almost) only have --long-options
(like, ok, -i for input is pretty obvious, but -b for "don't buffer output" needs a proper fucking name, looking at you Plan 9 coreutils, I love the OS around you, but please learn to read long options in those argparse macros)
I don't think it would matter much if the way to look up an option wasn't grepping in a man page. The shell should be an IDE that gives you contextual help and autocompletion.
@enkiv2 there are argument parsers that also integrate with shell completion. I use http://hackage.haskell.org/package/optparse-applicative