Respuestas:
Solo conozco tres formas para determinar qué generará un programa en STDOUT y qué STDERR
Lee la documentación. O
Experimente con la redirección †
†Por ejemplo:
program > program.stdout 2> program.stderr
Luego mire los dos archivos de salida para ver qué ha escrito el programa en STDOUT y qué ha escrito en STDERR.
En lugar de redireccionar, puede canalizar teesi necesita salida para continuar en la pantalla y en un archivo. Ver /programming//q/692000/477035
Según su solicitud comentada:
{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
stdouty 2 = stderr) para tomar la salida del conjunto interno de corchetes y ejecutar stdoutun sedcomando, mientras stderrpasa uno diferente
{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
Si desea hacer esto una vez, redirija uno de ellos a otro lugar.
Ejemplo, redirigiendo el estándar con >.
ls -al> ls-l.txt (cualquier salida aquí no es de stdout, si ve algo debe ser una salida stderr)
Para el uso de redirección stderr 2>
program | grep .imprime STDOUT en rojo.