Cómo redirigir stderr y stdout a diferentes archivos en la misma línea de bash?


Sé esto mucho:

$ command 2>> error

$ command 1>> output

¿Hay alguna manera de que pueda enviar el stderr al archivo de error y enviar el stdout al archivo de salida en la misma línea de bash?

 144
Author: user784637, 2011-10-26

4 answers

Simplemente añádelos en una línea command 2>> error 1>> output

Sin embargo, tenga en cuenta que >> es para anexar si el archivo ya tiene datos. Considerando que, > sobrescribirá cualquier dato existente en el archivo.

Así que, command 2> error 1> output si no quieres añadir.

Solo para completar, puede escribir 1> como solo > ya que el descriptor de archivo predeterminado es la salida. así que 1> y > es lo mismo.

Entonces, command 2> error 1> output se convierte, command 2> error > output

 245
Author: Sujoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-26 10:45:31

Prueba esto:

your_command 2>stderr.log 1>stdout.log

Más información

Los números 0 hasta 9 son descriptores de archivo en bash. 0 significa entrada estándar, 1 significa salida estándar, 2 significa error estándar. 3 a 9 son de repuesto para cualquier otro uso temporal.

Cualquier descriptor de fichero puede ser redirigido a un fichero o a otro descriptor de fichero usando el operador >. En su lugar, puede usar el operador >> para agregar a un archivo en lugar de creando una vacía.

Uso:

File_descriptor > filename

File_descriptor > &file_descriptor

Por favor refiérase a http://www.tldp.org/LDP/abs/html/io-redirection.html .

 14
Author: Quintus.Zhou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-04 16:14:44

O si desea mezclar salidas (stdout & stderr ) en un solo archivo, puede usar:

command > merged-output.txt 2>&1
 11
Author: ztank1013,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-26 11:47:25

Así:

$ command >>output 2>>error
 9
Author: Didier Trosset,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-26 10:38:54