No estoy claro cuál es el mejor orden para capturar ambos STDERRy STDOUTpara 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 STDOUTa /tmp/output.txty luego enviar STDERRa STDOUT(que ahora está enviando a /tmp/output.txt).
Intentar realizar 2>&1antes de redirigir el archivo no tendrá el efecto deseado.
Sin embargo, cuando quiero usar tuberías teedeberí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".stderrystdoutpara 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.teese refiere solo al programa particular que se invoca en el otro extremo de la tubería.