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 tee
si 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: /'
stdout
y 2 = stderr
) para tomar la salida del conjunto interno de corchetes y ejecutar stdout
un sed
comando, mientras stderr
pasa 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.