stderr in stdout und Datei leiten

U

uhbuntuh

Jungspund
Hallo!
Zur Zeit werden Fehler meines Programmes zur stdout geleitet, stdout und stderr werden angezeigt und in eine Logdatei geschrieben.

Code:
command 2>&1 | tee $logfile

Nun möchte ich aber sdterr ZUSÄTZLICH in eine Error-Log-Datei schreiben. Wie bekomme ich das hin?

Vielen Dank im voraus!
 
command 2> errlog &> log
für die zsh oder solls ne andere Shell sein?
 
Hi,

warum soll die bash das nicht können?

Code:
( ( ./command | tee STDOUT ) 3>&2 2>&1 1>&3 | tee STDERR ) 2>&1 | tee EVERYTHING

;-)
 
Wo hast Du das denn her?
Wie kommst Du überhaupt auf 3? Es gibt nur die Kanäle 0,1 und 2.
 
Bash kann das nicht :-P , hab aber nicht gesagt, dass es keine Lösung gibt. Du löst das ganze mit Hilfe von anderen Programmen.
Aber schicke Lösung ;)

Edit: mit 3>&2 speichert er sich den Fd 2 in 3 und so weiter und so fort :-)
 
Zuletzt bearbeitet:
Was bringt das jetzt wenn er nunmal die Bash nutzt? Also bring auch bitte Vorschläge die auch mit der Bash lösbar sind.
 
Bei meinem ersten Post wusste ich nicht, dass er die Bash nutzt ...
Bei meinem letzten Post wollte ich nur anmerken, dass die Bash kein multiples Umleiten a la
Code:
echo test >file1 >file2 >file3 >file4 >file5 >file6
kann.
Seine Lösung ist trickreich, nicht besonders übersichtlich, aber hey, sie funktionert. Ist doch gut.
 
@defcon:

"Wo hast du das denn her?" -- Naja, Shell-Programmierung seit 1983 ;-)

"Es gibt nur die Kanäle 0, 1 und 2" -- kein Kommentar ...

"... Vorschläge die auch mit der Bash lösbar sind." -- funktioniert so in der Original-Bourne-Shell, der Korn Shell und der Bash ... _noch mehr_ interessiert mich selten ...


und @larry:

"andere Programme" ... "tee" war ja bereits in der ursprünglichen Anfrage verwendet, da dachte ich, ich darf das auch ;-) ... Wenn die ganzen Ausgaben nicht auch auf dem Bildschirm erfolgen sollen, geht natürlich auch ein einfaches

Code:
command >$logfile 2>$errfile

Ich kann also durchaus auch in der Bash verschiedene FDs in unterschiedliche Dateien umlenken. Die dabei erzeugten Dateien $logfile und $errfile enthalten dann aber jeweils separat nur das, was "command" auf stdout bzw. stderr ausgibt.

In deinem Beispiel würde die Shell zunächst den Output (stdout) von "echo test" in die Datei file1 umlenken versuchen (dabei eine Datei file1 erzeugen), den FD 1 dann nach file2 etc. umbiegen, bis er letztendlich auf file6 zeigt. Da das alles passiert, _bevor_ das Kommando selbst endlich aufgerufen wird, dürfte das Endergebnis schliesslich eine Reihe von leeren Dateien file1 bis file5 sein, und eine Datei file6, in der "test" steht ...

Gruesse ...
 

Ähnliche Themen

Spalten einer Datei in neue Datei integrieren.

Keine grafische Oberfläche (Debian Installation)

grep + regex zum Log parsen

Welches Linux/Unix für ehemaligen OSX Nutzer?

Dateien selektieren und zählen

Zurück
Oben