Jak połączyć stdout i stderr dla różnych powłok?


18

Znam odpowiedź na niektóre muszle, np. Z cmd.exetobą możesz:

some.exe > out.txt 2>&1

Jak to osiągnąć dla innych powłok (bash, ksh, tcsh, powershell itp.)?

Odpowiedzi:


16

Skorupa ryb

Aby przekierować zarówno standardowe wyjście, jak i standardowy błąd do pliku all_output.txt, możesz napisać:

echo Hello > all_output.txt ^&1

3
jeśli przekazujesz dane wyjściowe do następnego polecenia, użyj 2> | zamiast tego: echo Hello 2> | mniej
Jeffrey04,

Składnia potoków mogła ulec zmianie. Moja skorupa ryby używa tej samej składni „^ i 1” dla obu.
Keith Bentrup

2>&1działa również - ^jest w skrócie skrótem od ryby >2. Zauważ, że 2>| lesslub ^| lesssame rury tylko stderr; aby potokować zarówno nasze, jak i błądzić, zrób^&1 | less
Beni Cherniavsky-Paskin



2

W Powershell jest dokładnie tak samo:

2> i 1 Wysyła błędy do get-process none, powershell 2> i 1
          strumień wyjściowy sukcesu.

(z about_Redirection).

W bashi ksh przynajmniej wiem też, że to działa w ten sposób.

Wydaje się, że jest to wspólna konwencja.

Szybkim sposobem, aby się o tym dowiedzieć, jest otwarcie strony podręcznika powłoki i wyszukiwanie &1(z, /a następnie pisanie &1). Zdarza się to rzadko w innych kontekstach.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.