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).