stderr to / dev / tty12 für immer

0

Ich möchte ständiges stderr nach / dev / tty12 umleiten, damit Fehlermeldungen meine Nerven nicht berühren, wenn ich etwas in tty1 tue.

Die Umleitung sollte über init.d oder ~ / .bashrc oder ~. / Bash_profile erfolgen. Nur einmal.

Kann es gemacht werden und wie?

frank
quelle

Antworten:

0

Scheint eine wirklich schlechte Idee zu sein, und ich bezweifle, dass das System eine Möglichkeit bietet, dies zu tun.

Wann immer ein Prozess erstellt wird, bestimmt der aufrufende Prozess, wohin seine Befehle stdin, stdout und stderr geleitet werden. Es müsste einen allgemeinen Weg geben, dies zu überschreiben - und es würde alle Mechanismen aufheben, die stderr explizit umleiten.

Wenn Sie beispielsweise Folgendes eingeben:

some_command >some_command.out 2>some_command.err

sollte some_command gehe zu some_command.err, oder zu /dev/tty12?

Das Nächste, was ich mir vorstellen kann, ist, eine Shell mit ihrem umgeleiteten stderr aufzurufen:

bash -l 2>/dev/tty12

In meinen (kurzen) Experimenten (Umleiten zu einer Datei statt zu einem tty) bewirkt dies, dass die Shell nicht interaktiv ist. Hinzufügen -i zwingt es, interaktiv zu sein - aber die Shell-Eingabeaufforderung wird anscheinend nach stderr gedruckt.

Natürlich können Sie stderr für einzelne Befehle umleiten (vorausgesetzt, Sie verwenden keine csh oder tcsh ):

some_command 2>some_command.err

und Sie könnten eine Shell-Funktion definieren, die dies für Sie erledigt:

e() { "$@" 2>/dev/tty12 ; }

Stellen Sie dann für jeden Befehl, dessen Stderr umgeleitet werden soll, einfach das Zeichen voran e zum Befehl:

e some_command
Keith Thompson
quelle
0

Viele Shells schreiben ihre interaktiven Eingabeaufforderungen an stderr, sodass Sie wahrscheinlich Probleme haben, mit einer Shell zu interagieren, wenn Sie sie an stderr umleiten /dev/tty12. Auch Fehlermeldungen sind wichtig. Warum sie ignorieren?

Fran
quelle