Descobri como fazer isso no final, seguindo os conselhos de esta página . Eu preciso redirecionar stderr para tee
e redirecionar a saída de tee
de volta para stderr.
find /var/log 2> >(tee foo.file >&2)
Em um script bash eu gostaria de executar um comando enquanto canaliza o stderr para um arquivo e para o terminal. No entanto, quero que o stderr permaneça no descritor de arquivo '2' para que eu possa analisá-lo a partir de um processo externo que esteja chamando este script bash.
Todas as soluções que vi até agora envolvem a troca de stdout com stderr e, em seguida, o tee'ing para outro arquivo, por exemplo :
find /var/log 3>&1 1>&2 2>&3 | foo.file
Se eu for chamar este script de outro, o stderr irá para stdout e stdout irá para stderr, o que não é bom para mim. Eu tentei trocá-los novamente assim:
find /var/log 3>&1 1>&2 2>&3 | foo.file 4>&1 1>&2 2>&4
mas isso não funciona.
Descobri como fazer isso no final, seguindo os conselhos de esta página . Eu preciso redirecionar stderr para tee
e redirecionar a saída de tee
de volta para stderr.
find /var/log 2> >(tee foo.file >&2)
Tags bash tee shell redirection stderr