Sollte die Benutzungsmeldung, die mit z
command -?
eines Unix-Befehls gehen Sie zu stderr oder stdout und warum? Sollte es an die gleiche Stelle gehen, wenn der Benutzer einen Fehler mit einer Option macht?
Sollte die Benutzungsmeldung, die mit z
command -?
eines Unix-Befehls gehen Sie zu stderr oder stdout und warum? Sollte es an die gleiche Stelle gehen, wenn der Benutzer einen Fehler mit einer Option macht?
touch -- -l; ls -?
- Sie erhalten tatsächlich eine lange Liste, als ob Sie-l
an ls übergeben hätten.-h
Option für eine andere Sache als eine Hilfemeldung unterstützt, können Sie'-?'
(mit Anführungszeichen) oder-:
eine gute Chance haben, seitdem eine Fehlermeldung (und eine Verwendungsmeldung) zu erhalten:
und?
kann keine gültigen Optionen für irgendetwas verwendengetopt(3)
.Antworten:
Es sollte auf stdout gehen, damit Sie Folgendes eingeben können:
Dies wird auch von der. Empfohlen Gnu Coding Standards
--help
.Andererseits sollte die Verwendungsmeldung, die Sie erhalten, wenn Sie eine ungültige Option verwenden oder ein erforderliches Argument weglassen, an stderr gesendet werden, da es sich um eine Fehlermeldung handelt, die nicht in den nächsten Befehl in einer Pipeline eingehen soll.
Bei Verwendung
--help
ist die Verwendungsmeldung die normale und erwartete Ausgabe des Befehls. Daher geht es zu stdout, so dass es zu einem anderen Befehl wie geleitet werden kannless
oder weitergeleitet werden kanngrep
.Wenn Sie sagen
command --bogus-option | other-command
, dass Sie nicht möchten, dass die Verwendungsmeldung stdout wird, da es sich nun um eine unerwartete Ausgabe handelt, die nicht von verarbeitet werden sollteother-command
. Wenn die Ausgabe von--help
mehr als eine Handvoll Zeilen umfasst, sollte die Verwendungsfehlermeldung nur eine Zusammenfassung der--help
Ausgabe enthalten und den Benutzer--help
für weitere Details auf verweisen .quelle
--help
mehr als ein paar Zeilen umfasst, sollte die von einer ungültigen Option erzeugte Verwendungsmeldung nur eine kurze Zusammenfassung sein, mit--help
der die vollständigen Informationen angezeigt werden.