Redirigir todos los resultados a un archivo en Bash [duplicado]

Resuelto Rayne asked hace 13 años • 9 respuestas

Sé que en Linux, para redirigir la salida de la pantalla a un archivo, puedo usar >o tee. Sin embargo, no estoy seguro de por qué parte del resultado todavía se muestra en la pantalla y no se escribe en el archivo.

¿Hay alguna manera de redirigir todos los resultados al archivo?

Rayne avatar Jul 13 '11 12:07 Rayne
Aceptado

Esa parte está escrita en stderr, úsela 2>para redirigirla. Por ejemplo:

foo > stdout.txt 2> stderr.txt

o si quieres en el mismo archivo:

foo > allout.txt 2>&1

Nota: esto funciona en (ba)sh, verifique que su shell tenga la sintaxis adecuada

Op De Cirkel avatar Jul 13 '2011 05:07 Op De Cirkel

Todos los sistemas operativos POSIX tienen 3 flujos : stdin, stdout y stderr. stdin es la entrada, que puede aceptar stdout o stderr. stdout es la salida principal, que se redirige con >, >>o |. stderr es la salida del error, que se maneja por separado para que las excepciones no se pasen a un comando ni se escriban en un archivo que pueda dañarse; Normalmente, esto se envía a un registro de algún tipo o se descarga directamente, incluso cuando se redirige la salida estándar. Para redirigir ambos al mismo lugar, use:

$command &> /some/file

EDITAR : gracias a Zack por señalar que la solución anterior no es portátil; use en su lugar:

$command > file 2>&1 

Si desea silenciar el error, haga:

$command 2> /dev/null
Bryan Agee avatar Jul 13 '2011 05:07 Bryan Agee

Para obtener el resultado en la consola Y en un archivo, file.txtpor ejemplo.

make 2>&1 | tee file.txt

Nota: &(en 2>&1) especifica que 1no es un nombre de archivo sino un descriptor de archivo.

Sagar Jain avatar Apr 09 '2014 04:04 Sagar Jain