Se mucho esto:
$ command 2>> error
$ command 1>> output
¿Hay alguna manera de que pueda enviar el stderr al archivo de error y el stdout de salida al archivo de salida en la misma línea de bash?
Se mucho esto:
$ command 2>> error
$ command 1>> output
¿Hay alguna manera de que pueda enviar el stderr al archivo de error y el stdout de salida al archivo de salida en la misma línea de bash?
Respuestas:
Solo agrégalos en una línea command 2>> error 1>> output
Sin embargo, tenga en cuenta que >>
es para agregar si el archivo ya tiene datos. Mientras que, >
sobrescribirá cualquier dato existente en el archivo.
Entonces, command 2> error 1> output
si no quieres agregar.
Solo por completar, puede escribir 1>
como solo >
porque el descriptor de archivo predeterminado es la salida. así 1>
y >
es lo mismo.
Entonces, se command 2> error 1> output
convierte,command 2> error > output
command &2>err.log
, creo que estoy sintaxis totalmente confusa? (Puede estar en orden un enlace a una respuesta apropiada de todos los ismos de tubería bash)
command &2>err.log
no es del todo legítimo: el ampersand en esa sintaxis se usa para el descriptor de archivo como objetivo, por ejemplo command 1>&2
, redirigiría stdout a stderr.
Prueba esto:
your_command 2>stderr.log 1>stdout.log
Los números a 0
través 9
son descriptores de archivo en bash.
0
significa entrada estándar, 1
representa salida estándar, 2
representa error estándar. 3
a través 9
son de repuesto para cualquier otro uso temporal.
Cualquier descriptor de archivo puede ser redirigido a un archivo u otro descriptor de archivo utilizando el operador >
. En su lugar, puede usar el operador>>
para agregar a un archivo en lugar de crear uno vacío.
Uso:
file_descriptor > filename
file_descriptor > &file_descriptor
Por favor refiérase a Bash-Scripting Guía avanzada: Capítulo 20. E / S redirección .
Como eso:
$ command >>output 2>>error
O si desea mezclar salidas (stdout y stderr) en un solo archivo, puede usar:
command > merged-output.txt 2>&1
La salida de múltiples comandos se puede redirigir. Esto funciona para la línea de comandos o más útil en un script bash. El -s
dirige la contraseña de inmediato a la pantalla.
Los cmds de stdout / stderr de Hereblock se envían a archivos separados y nada que mostrar.
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
Los cmds stdout / stderr de Hereblock se envían a un solo archivo y se muestran.
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
Los cmds stdout / stderr de Hereblock se envían a archivos separados y stdout para mostrar.
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
Dependiendo de quién es usted (whoami) y nombre de usuario, se puede requerir o no una contraseña.
1>
se puede escribir como>