write script redireccionar pagina otra log_file log bash stderr tee

bash - script - ¿Cómo hacer tee para stderr?



redireccionar angular 4 (3)

Quiero dividir stdout para que se imprima tanto en stdout como en stderr . Esto suena como un trabajo para tee pero la sintaxis me está evadiendo -

./script.sh | tee stderr

Por supuesto, ¿cómo debería ser referido realmente stderr aquí?


El único método multiplataforma que encontré que funciona tanto en shells interactivos como no interactivos es:

command | tee >(cat 1>&2)

El argumento para tee es un archivo o manejador de archivo. Usando la sustitución de procesos enviamos la salida a un proceso. En el proceso = cat =, redirigimos stdout a stderr. El shell (bash / ksh) es responsable de configurar los descriptores de archivos 1 y 2.


./script.sh 2>&1 >/dev/null | tee stderr.out

Eso abre STDERR a STDOUT, y luego se deshace de STDOUT.


./script.sh | tee /dev/fd/2

Tenga en cuenta que esto depende del soporte del sistema operativo, no de la potencia incorporada en el tee, por lo que no es universal (pero funcionará en MacOS, Linux, Solaris, FreeBSD, probablemente otros).