No estoy claro cuál es el mejor orden para capturar ambos STDERR
y STDOUT
para el mismo archivo usando tee
. Sé que si quiero canalizar a un archivo tengo que asignar el identificador de archivo después de la redirección, es decir
find . >/tmp/output.txt 2>&1
Esto indica al shell para enviar STDOUT
a /tmp/output.txt
y luego enviar STDERR
a STDOUT
(que ahora está enviando a /tmp/output.txt
).
Intentar realizar 2>&1
antes de redirigir el archivo no tendrá el efecto deseado.
Sin embargo, cuando quiero usar tuberías tee
debería ser:
find . |tee /tmp/output.txt 2>&1 # or
find . 2>&1 |tee /tmp/output.txt # ?
|&
se usa, el error estándar del comando1 se conecta a la entrada estándar del comando2 a través de la tubería; es la abreviatura de2>&1 |
. Esta redirección implícita del error estándar se realiza después de cualquier redirección especificada por el comando".stderr
ystdout
para comprender este problema. Los operadores de redirección>
y tee|
difieren cuando se intenta capturar ambas secuencias de salida. Para la redirección tuve que hacerlo./testapp > /tmp/out.log 2>&1
. Mientras que para tee tuve que hacerlo./testapp 2>&1 | tee /tmp/out.log
.|
normalmente se conoce como operador de tubería.tee
se refiere solo al programa particular que se invoca en el otro extremo de la tubería.