Si el mensaje de uso se imprime con, por ejemplo,
command -?
de un comando Unix ir a stderr o stdout, y por qué? ¿Debería ir al mismo lugar si el usuario comete un error con una opción?
touch -- -l; ls -?realidad obtienes una lista larga como si hubieras pasado -la ls.
-hopción para otra cosa que no sea un mensaje de ayuda, entonces '-?'(con las comillas) o le -:da una buena oportunidad de recibir un mensaje de error (y uso) desde :y ?no pueden ser opciones válidas para nada usando getopt(3).