So I was messing around with `yes`, and after running `yes --help me` it
output this:

> yes: unrecognized option '--help'
> Try 'yes --help' for more information.

After a bit of more testing of this, I found the same reaction from
`whoami`.  I believe this might be because both `yes` and `whoami` only
ever accept one option -- that being `--help` or `--version`, and it
says that it doesn't know what `--version` is when run with an extra
operand as well.  However, `true` or `false` doesn't give a textual
error, but they completely ignore the option:

> $ /usr/bin/true --version
> true (GNU coreutils) 8.30
> Copyright (C) 2018 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
<https://gnu.org/licenses/gpl.html>.
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
>
> Written by Jim Meyering.
> $ /usr/bin/true --version asd
> $ echo $?
> 0

Suggested possible fixes:
1.  A more general error message, e.g., `yes` only accepts one option or
none.
2.  Ignore the stuff that follows the option, making `yes --help me` act
the same as `yes --help`, which kind of matches with other shell
commands in that they print help, ignore the rest of arguments and exit.
3.  Ignore the option: `yes --help me` would use "--help me" as the
string to repeat.

The third one isn't really a good one, but it exists as an idea so I'm
marking it down.

----
Uko Kokņevičs (Uko Koknevics)




Reply via email to