Я знаю, як перенаправляти файл і використовувати tee; на базовому рівні. Так
$ 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
Питання: що написати замість знаків запитань, щоб отримати результат нижче:
$ outanderr ???; echo "-- file contents --" && cat file
# redirect both to a file, display stderr
stderr
-- file contents --
stdout
stderr
Містить:
- Припускаючи баш.
- Порядок повинен зберігатися у файлі.
- Зміст stderr відображається в режимі реального часу рядок, тобто відсутність буферизації.
- Можна використовувати окремі файли сценаріїв.
- Магія може знадобитися.
outanderr
лише псевдонім, який друкує рядок до stdout та інший до stderr. Ідея (якщо це можливо) полягає у створенні загального рішення, яке могло б працювати з будь-якою програмою, не змінюючи їх.
outanderr
програму?