¿Cómo combino stdout y stderr para diferentes shells?


18

Sé la respuesta para algunos proyectiles, por ejemplo, con cmd.exeusted puede:

some.exe > out.txt 2>&1

¿Cómo se logra lo mismo para otros shells (bash, ksh, tcsh, powershell, etc.)?

Respuestas:


16

Concha de pescado

Para redirigir tanto la salida estándar como el error estándar al archivo all_output.txt, puede escribir:

echo Hello > all_output.txt ^&1

3
si se canaliza la salida al siguiente comando, use 2> | en su lugar: echo Hola 2> | menos
Jeffrey04

La sintaxis de las tuberías puede haber cambiado. Mi pez utiliza la misma sintaxis "^ & 1" para ambos.
Keith Bentrup el

2>&1también funciona, ^es esencialmente la abreviatura de pescado >2. Tenga en cuenta que 2>| lesso ^| lesspor sí solo las tuberías stderr; para canalizar nuestro y err, do^&1 | less
Beni Cherniavsky-Paskin

Las abreviaturas de sintaxis para redirigir / canalizar y errar aún están en discusión github.com/fish-shell/fish-shell/issues/110
Beni Cherniavsky-Paskin


2

En Powershell es exactamente lo mismo:

2> & 1 Envía errores al proceso get ninguno, powershell 2> & 1
          flujo de salida de éxito.

(de about_Redirection).

En bashy ksh al menos también sé que funciona de esta manera.

Parece ser una convención común.

Una forma rápida de averiguarlo es abriendo la página de manual del shell y haciendo una búsqueda &1(con /y luego escribiendo &1). Esto rara vez ocurre en otros contextos.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.