Ich habe ein Skript, das interaktiv von nicht-technischen Benutzern ausgeführt wird. Das Skript schreibt Statusaktualisierungen in STDOUT, sodass der Benutzer sicher sein kann, dass das Skript ordnungsgemäß ausgeführt wird.Wie bekomme ich STDOUT und STDERR, um zum Terminal und einer Protokolldatei zu gehen?
Ich möchte beide STDOUT und STDERR zum Terminal umgeleitet (so dass der Benutzer sehen kann, dass das Skript funktioniert und sehen, ob es ein Problem gab). Ich möchte auch, dass beide Streams in eine Protokolldatei umgeleitet werden.
Ich habe eine Reihe von Lösungen im Netz gesehen. Manche funktionieren nicht und andere sind fürchterlich kompliziert. Ich habe eine praktikable Lösung entwickelt (die ich als Antwort eingeben werde), aber es ist kludgy.
Die perfekte Lösung wäre eine einzelne Codezeile, die in den Anfang eines Skripts integriert werden könnte, das beide Streams sowohl an das Terminal als auch an eine Protokolldatei sendet.
EDIT: Umleiten von STDERR zu STDOUT und Verrohrung das Ergebnis zu Tee funktioniert, aber es hängt davon ab, die Benutzer daran erinnern, Umleitung und Pipe die Ausgabe. Ich möchte, dass die Protokollierung narrensicher und automatisch ist (weshalb ich die Lösung in das Skript selbst einbetten möchte).
Für andere Leser: ähnliche Frage: http://stackoverflow.com/questions/692000/how-do-i-write-stderr-to-a-file-while-using-tee-with-a-pipe – pevik