¿Por qué `2>&1` no funciona en esta canalización?

¿Por qué `2>&1` no funciona en esta canalización?

No encuentro una manera de redirigir el error en mi NAS.

El shell es /bin/shy cuando lo uso > mylogfile.log 2>&1todavía veo el error al imprimir en el terminal. El comando específico es

find /volume1/ | grep "totoro" > ~/totoro.log 2>&1

y veo error de find. ¿Alguna forma de hacer que la redirección funcione? ¿Cómo escribir finderrores en el archivo de registro?

Respuesta1

find /volume1/ | grep "totoro" > ~/totoro.log 2>&1

Sólo tus 2>&1afectos grep, no find. En el siguiente comando, el primero 2>&1afecta find:

find /volume1/ 2>&1 | grep "totoro" > ~/totoro.log 2>&1   # probably wrong

Pero esto enviará stderr junto con stdout de finda grep. Probablemente no quieras grepfiltrar stderr de find. Supongo que desea capturar stdout y stderr de todo el comando compuesto. Si es así, ejecute el comando en un subshell explícito y redirija sus flujos de salida y error:

(find /volume1/ 2>&1 | grep "totoro") > ~/totoro.log 2>&1

Respuesta2

Consulte el comando "tee". Lee desde la entrada estándar y escribe en archivos y salidas estándar. Esto puede resultar útil aquí.

información relacionada