Eu já vi várias perguntas como essa, mas todas são antigas e nenhuma tem boas respostas - apenas hacks feios que não fazem o que se quer. Eu pensei em 2018 e deve haver uma boa solução que funcione.
O objetivo / desejo é executar um script de comando e fazer tudo isso:
STDOUT e STDERR no ecrã, pela ordem em que são gerados STDOUT e STDERR em um arquivo, na ordem em que são gerados STDERR para prefixar ou pósfixar uma sequência definida pelo usuário para que ela possa ser facilmente / rapidamente inserida no arquivo Para exemplo , se eu tiver um script assim:
#!/bin/bash
echo "001"
echo "002" >&2
echo "003" >&2
echo "004"
echo "005"
echo "006"
echo "007" >&2
(Note que o >&2 é apenas para forçar a escrita para STDERR . Na realidade, o comando que está sendo executado escreveria erro para STDERR .)
Quando executo o script, isso é o que devo ver na tela:
$ ./test
001
ERROR: 002
ERROR: 003
004
005
006
ERROR: 007
E isso é o que eu devo ver no arquivo:
$ cat out
001
ERROR: 002
ERROR: 003
004
005
006
ERROR: 007