Wie kombiniere ich stdout und stderr für verschiedene Shells?


18

Ich kenne die Antwort für einige Muscheln, zB bei cmd.exeIhnen können:

some.exe > out.txt 2>&1

Wie erreicht man dasselbe für andere Shells (bash, ksh, tcsh, powershell usw.)?

Antworten:


16

Fischmuschel

Um sowohl die Standardausgabe als auch den Standardfehler in die Datei all_output.txt umzuleiten, können Sie Folgendes schreiben:

echo Hello > all_output.txt ^&1

3
Wenn die Ausgabe an den nächsten Befehl weitergeleitet wird, verwenden Sie 2> | stattdessen: hallo hallo 2> | weniger
Jeffrey04

Möglicherweise wurde die Pipingsyntax geändert. Mein Fischoberteil verwendet für beide die gleiche Syntax "^ & 1".
Keith Bentrup

2>&1funktioniert auch - ^ist im Wesentlichen die Abkürzung für Fisch >2. Beachten Sie, dass 2>| lessoder ^| lessfür sich nur stderr- Pipes ; um sowohl unsere als auch äh, tun^&1 | less
Beni Cherniavsky-Paskin

Syntax Kürzel zum Umleiten / Rohrleitungen sowohl aus und err sind noch in der Diskussion github.com/fish-shell/fish-shell/issues/110
Beni Cherniavsky-Paskin


2

In Powershell ist es genau das gleiche:

2> & 1 Sendet Fehler an den Get-Prozess none, Powershell 2> & 1
          Erfolgsausgabestrom.

(von about_Redirection).

bashZumindest in und ksh weiß ich auch, dass es so funktioniert.

Es scheint eine übliche Konvention zu sein.

Eine schnelle Möglichkeit, dies herauszufinden, besteht darin, die Manpage der Shell zu öffnen und zu suchen &1(mit /und dann zu tippen &1). In anderen Kontexten tritt dies selten auf.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.