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