En un script bash, me gustaría ejecutar un comando mientras canalizo el stderr a un archivo y al terminal. Sin embargo, quiero que stderr permanezca en el descriptor de archivo '2' para poder analizarlo desde un proceso externo que está llamando a este script bash.
Todas las soluciones que he visto hasta ahora implican intercambiar stdout con stderr y luego pasar a otro archivo, por ejemplo :
find /var/log 3>&1 1>&2 2>&3 | foo.file
Si voy a llamar a este script desde otro, el stderr irá a stdout y stdout irá a stderr, lo cual no es bueno para mí. He tratado de cambiarlos de nuevo así:
find /var/log 3>&1 1>&2 2>&3 | foo.file 4>&1 1>&2 2>&4
Pero esto no funciona.
find
desincronizaran en el terminal a veces. Esto se debe atee
almacenamientos intermedios, etc. Sifind
escribe stdout y stderr directamente en el mismo dispositivo, el problema nunca ocurre; pero si las dos transmisiones se fusionan más tarde , es posible.