From: "G. Branden Robinson" <g.branden.robinson@gmail.com>
To: Alejandro Colomar <alx@kernel.org>
Cc: Douglas McIlroy <douglas.mcilroy@dartmouth.edu>,
linux-man@vger.kernel.org
Subject: Re: syntax of options in man1
Date: Thu, 16 Jul 2026 12:05:48 -0500 [thread overview]
Message-ID: <20260716170548.am3fg45uaudlqpl2@illithid> (raw)
In-Reply-To: <alkEKUNzTGnpiYdH@devuan>
[-- Attachment #1: Type: text/plain, Size: 3332 bytes --]
Hi Alex,
At 2026-07-16T18:20:30+0200, Alejandro Colomar wrote:
> On 2026-07-16T10:55:44-0500, G. Branden Robinson wrote:
> > At 2026-07-16T16:45:16+0200, Alejandro Colomar wrote:
> > > On 2026-07-16T09:46:25-0400, Douglas McIlroy wrote:
> > > > Here's a typical option heading (from tail(1))
> > > > * -n, --lines=[+]NUM*
> > > >
> > > > It is tempting to assume (incorrectly) that the short
> > > > alternative is -n=4. As far as I can tell, the convention that
> > > > "=" is part of only the long alternative is described nowhere.
> > >
> > > Agree. I've had that concern for a long time.
> >
> > That's why I recommend a somewhat different presentation format.
[...]
> > --lines=[+]num
> > -n [+]num
> > Print the last num lines instead. Prefixing num with
> > “+” prints all lines from num forward.
>
> Agree; indeed, after checking, the manual pages of the Linux man-pages
> project follow this convention.
>
> The pages that use the dubious convention come from GNU coreutils.
>
> I've had plans to write new pages for coreutils, and haven't done it
> yet. Maybe it's the time that I do that.
The reason coreutils's man pages look this way is because they prefer to
maintain much or all traditional man page information in each command's
help message ("tail --help")[1] and then generate a man page from that
using help2man(1), which fills in a man page template named "chmod.x" or
similar.
Here's the thread where I learned that fact.
https://lists.gnu.org/r/coreutils/2026-05/msg00080.html
Maybe we can make help2man(1) better. And/or drive constructive reforms
to GNU-style help messages...
Regards,
Branden
[1] I distinguish "usage" messages from "help" messages because a
"usage" message is what you get when you invoke a command in a
manner it recognizes as syntactically invalid. This is an ancient
Unix tradition. The usage message should be short, summarizing only
the available invocation forms without attempting to explain them.
A "help message" is more of a GNU thing, part of that system's
campaign to standardize `--version` and `--help` "long options", a
practice I regard as mostly salutary and benign. For example, I am
annoyed by *BSD utilities that afford no means of inquiring of their
provenance. There's often no way to say "identify yourself".
What I _don't_ want, as a user, is to be blitzed with 100 lines of
"help" when all I did was mistype a command invocation.
In an attempt to practice what I preach, groff's usage messages--
uniformly, I think--look like this.
$ tbl -X
tbl: error: unrecognized command-line option 'X'
usage: tbl [-C] [file ...]
usage: tbl {-v | --version}
usage: tbl --help
A true Unix grognard would desire _only_ the second line, but I
think that (1) error messages should be _explicit_, and (2) _all_
valid invocation forms should be summarized when reporting "usage",
even if "everybody knows that all GNU commands support `--version`
and `--help`" because (a) that's not true--historically, GNU find(1)
didn't support it, and the GNU dynamic linker ld.so appears still
not to--and (b) not all commands are GNU commands.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
prev parent reply other threads:[~2026-07-16 17:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAKH6PiXDGL658h1t_bstW0Z+MjjJfcNmcde-DA3QNOYKc0TTGg@mail.gmail.com>
2026-07-16 14:45 ` syntax of options in man1 Alejandro Colomar
2026-07-16 15:55 ` G. Branden Robinson
2026-07-16 16:20 ` Alejandro Colomar
2026-07-16 17:05 ` G. Branden Robinson [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260716170548.am3fg45uaudlqpl2@illithid \
--to=g.branden.robinson@gmail.com \
--cc=alx@kernel.org \
--cc=douglas.mcilroy@dartmouth.edu \
--cc=linux-man@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox