Gibt es eine offizielle POSIX-, GNU- oder andere Richtlinie, in der Fortschrittsberichte und Protokollinformationen (z. B. "Doing foo; foo done") gedruckt werden sollten? Persönlich neige ich dazu, sie an stderr zu schreiben, damit ich stdout umleiten und nur die tatsächliche Ausgabe des Programms erhalten kann. Mir wurde kürzlich gesagt, dass dies keine gute Praxis ist, da Fortschrittsberichte eigentlich keine Fehler sind und nur Fehlermeldungen an stderr gedruckt werden sollten.
Beide Positionen sind sinnvoll, und natürlich können Sie die eine oder die andere auswählen, je nachdem, was Sie im Detail tun, aber ich würde gerne wissen, ob es dafür einen allgemein akzeptierten Standard gibt. Ich konnte in POSIX, den GNU-Codierungsstandards oder anderen allgemein akzeptierten Listen mit Best Practices keine spezifischen Regeln finden.
Wir haben ein paar ähnliche Fragen, die sich jedoch nicht genau mit diesem Thema befassen:
Verwendung der Umleitung für stderr in Shell-Skripten : Die akzeptierte Antwort schlägt vor, was ich tendenziell tue, die endgültige Ausgabe des Programms auf stdout und alles andere auf stderr zu belassen. Dies wird jedoch nur als eine Meinung des Benutzers dargestellt, obwohl dies durch Argumente gestützt wird.
Sollte die Verwendungsmeldung an stderr oder stdout gehen? : Dies ist spezifisch für Hilfemeldungen, zitiert jedoch den GNU-Codierungsstandard. Dies ist die Art von Dingen, die ich suche, nur nicht auf Hilfemeldungen beschränkt.
Gibt es also offizielle Regeln, wo Fortschrittsberichte und andere informative Nachrichten (die nicht Teil der tatsächlichen Ausgabe des Programms sind) gedruckt werden sollen?
stdout
Genau wie Sato Katsura sagte, ist dies ein sicherer und richtiger Weg, um Spinner und andere informative Botschaften auszudrücken, aber wie viele Programmierer sagen, ist Schweigen Gold wert. Gib nichts aus, wenn alles in Ordnung ist. ' so in der Tat ist stderr immer verwendet wegen der vagen Definition zu tun, und auch das Rohr sequence.for kann brechen StdOut offiziellen Guide
stderr
Fehlermeldungen zu melden, es sei denn, ein --verbose
Flag wird verwendet, und an diesem Punkt sind auch Fortschrittsberichte enthalten.
stdout
zusammen mit den Ergebnissen ist ein sicherer Weg, um die Ergebnisse unbrauchbar zu machen. Wenn Sie die Ergebnisse jemals an ein anderes Programm weiterleiten müssen, muss dieses Programm die Ergebnisse von den Spinnern trennen. Wenn Sie die Ausgabe in eine Datei umleiten, werden die Drehfelder nicht angezeigt. MEINER BESCHEIDENEN MEINUNG NACH.