Come posso combinare stdout e stderr per diverse shell?


18

Conosco la risposta per alcune conchiglie, ad esempio con cmd.exete puoi:

some.exe > out.txt 2>&1

Come si ottiene lo stesso per altre shell (bash, ksh, tcsh, powershell, ecc.)?

Risposte:


16

Conchiglia di pesce

Per reindirizzare sia l'output standard che l'errore standard sul file all_output.txt, è possibile scrivere:

echo Hello > all_output.txt ^&1

3
se si esegue il piping dell'output al comando successivo, utilizzare 2> | invece: echo Hello 2> | meno
Jeffrey04

La sintassi delle tubazioni potrebbe essere cambiata. La mia shell di pesce utilizza la stessa sintassi "^ & 1" per entrambi.
Keith Bentrup,

2>&1funziona anche - ^è essenzialmente una scorciatoia per i pesci >2. Si noti che 2>| lesso ^| lessda solo pipe solo stderr; per ^&1 | less
convogliare

Le scorciatoie della sintassi per il reindirizzamento / il piping sia fuori che err sono ancora in discussione github.com/fish-shell/fish-shell/issues/110
Beni Cherniavsky-Paskin


2

In Powershell è esattamente lo stesso:

2> & 1 Invia errori a get-process none, powershell 2> & 1
          flusso di output di successo.

(da about_Redirection).

In bashe ksh almeno so anche che funziona in questo modo.

Sembra essere una convenzione comune.

Un modo rapido per scoprirlo è aprire la pagina man della shell ed effettuare una ricerca &1(con /e poi digitando &1). Ciò si verifica raramente in altri contesti.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.