2016-04-24 6 views
0

Ich verwende diesen Code alle Terminals Ausgabe an die Datei, um es zu sagen,Wie kann ich aufhören, in BASH in die Protokolldatei zu schreiben? zu stoppen

exec > >(tee -a "${LOG_FILE}") 
exec 2> >(tee -a "${LOG_FILE}" >&2) 

Wie zu schreiben? Wenn ich zum Beispiel nicht möchte, dass eine Ausgabe in Log geht.

Vielen Dank!

+1

dies funktioniert (abgesehen davon, es zu stoppen), aber wissen Sie über das Dienstprogramm 'script'? Es kann eine viel einfachere Lösung für Ihr Problem sein. 'Manskript'. Viel Glück. – shellter

+0

Vielen Dank! Kannst du als Antwort posten? – user3027198

+0

als Antwort gepostet. Viel Glück. – shellter

Antwort

1

Es ist nicht ganz klar, was Ihr Ziel ist es hier, aber hier ist etwas zu versuchen.

Kennen Sie das script Dienstprogramm? Sie können script myTerminalOutputFile ausführen, und alle Befehle und Ausgaben danach werden in myTerminalOutputFile erfasst. Der Nachteil ist, dass es alles erfasst. Sie werden lustige Bildschirmsteuerzeichen wie ^[[5m;27j sehen. Machen Sie also einen kurzen Test, um zu sehen, ob das für Sie funktioniert.

Um die Erfassung der Ausgabe abzuschließen, geben Sie einfach exit ein und Sie kehren zur übergeordneten Shell-Befehlszeile zurück.

Warnung: Überprüfen Sie man script für Details über die inhärente Funky der Skriptversion Ihres bestimmten Betriebssystems. Manche sind besser als andere. script -k myTerminalOutputFile kann in diesem Fall besser funktionieren.

IHTH

+0

danke! Es funktioniert gut, aber da sind Müllfiguren wirklich tödlich. Gibt es eine Möglichkeit, sie los zu werden? – user3027198

+0

siehe http://stackoverflow.com/a/30571263/620097. Es sollte helfen. Beachten Sie, dass Sie bei fast jeder Lösung, die Daten löscht, Ihren Testaufwand messen müssen, um der Schwere der Konsequenz zu entsprechen, wenn ein unerwarteter Fehler auftritt. Viel Glück. – shellter

0

Sie können Rohr durch „Sed“ und dann abschlagen Datei zu protokollieren

+0

Könntest du es bitte besser erklären? Danke) – user3027198

Verwandte Themen