Ich kann zu einer Akte umleiten und T-Stück benutzen; auf einer grundlegenden Ebene. So
$ alias outanderr='bash -c "echo stdout >&1; echo stderr >&2"'
# A fake "application" displaying both output and error messages.
$ outanderr 1>file # redirect stdout to a file, display stderr
stderr
$ outanderr 2>file # redirect stderr to a file, display stdout
stdout
$ outanderr 1>file 2>&1 # redirect both to a file, display nothing
$ outanderr | tee file; echo "-- file contents --" && cat file
# redirect stdout to a file, display both (note: order is messed up)
stderr
stdout
-- file contents --
stdout
$ outanderr 2>&1 | tee file; echo "-- file contents --" && cat file
# redirect both to a file, display both
stdout
stderr
-- file contents --
stdout
stderr
Die Frage ist, was anstelle der Fragezeichen zu schreiben ist, um die folgende Ausgabe zu erhalten:
$ outanderr ???; echo "-- file contents --" && cat file
# redirect both to a file, display stderr
stderr
-- file contents --
stdout
stderr
Constaints:
- Vorausgesetzt, bash.
- Die Bestellung sollte in der Datei aufbewahrt werden.
- stderr-Inhalte werden zeilenweise in Echtzeit angezeigt, dh ohne Pufferung.
- Es können separate Skriptdateien verwendet werden.
- Magie kann notwendig sein.
outanderr
ist nur ein Alias, der eine Zeile an stdout und eine andere an stderr ausgibt. Die Idee (wenn es möglich ist) ist, eine generische Lösung zu erstellen, die mit jedem Programm funktionieren kann, ohne sie zu ändern.
outanderr
Programm haben Sie?