¿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.)?

pesche
fuente

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
Gringo Suave
fuente
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
5

Para csh y tcsh

some.exec >& out.txt
KeithB
fuente
para tcsh, también tienessome.exec |& less
boatcoder
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.

Joey
fuente
2

En bash haces exactamente lo mismo.

./some_exec > out 2>&1
Bjarke Freund-Hansen
fuente