Wie kann ich die Ausgabe einer Shell-Anwendung in Linux verbergen?

Wie kann ich die Ausgabe einer Shell-Anwendung in Linux verbergen?

Wie kann ich die Bildschirmausgabe (printf) einer Shell-Anwendung in Linux ausblenden?

Antwort1

Sie können die Ausgabe jedes Programms umleiten, sodass sie nicht angezeigt wird.

$ program > /dev/null

Dadurch wird die Standardausgabe umgeleitet. Sie werden weiterhin alle Fehler sehen

$ program &> /dev/null

Dadurch wird die gesamte Ausgabe umgeleitet, einschließlich Fehler.

Antwort2

Auf der Befehlszeile stehen drei E/A-Geräte zur Verfügung.

 standard input  - 0
 standard output - 1
 standard error  - 2

Um die Standardausgabe (die Standardausgabe) in eine Datei umzuleiten (und die Datei zu überschreiben), verwenden Sie

 command > file.log

Um an file.log anzuhängen, verwenden Sie zwei >s

 command >> file.log

Um die Standardfehlermeldung in die Datei „file.log“ umzuleiten, verwenden Sie

 command 2> file.log

Und zum Anhängen

 command 2>> file.log

Um die Ausgaben in einem Stream zu kombinieren und sie alle an einen Ort zu senden

 command > file.log 2>&1

Dies sendet 2 (Standardfehler) an 1 (Standardausgabe) und sendet die Standardausgabe an file.log

Beachten Sie, dass es auch möglich ist, die Standardeingabe in einen Befehl umzuleiten, der eine Standardeingabe erwartet

 command << file.txt


Weitere Einzelheiten finden Sie imErweitertes Bash-Scripting-Handbuch.

Antwort3

Standardausgabe ausblenden:

./command >/dev/null

Standard- und Fehlerausgaben ausblenden:

./command >/dev/null 2>&1

Standardausgabe und Fehlerausgaben ausblenden und Terminal freigeben (Befehl im Hintergrund ausführen):

./command >/dev/null 2>&1 &

Antwort4

FürMac OS X v10.6(Schneeleopard):

Wenn Sie die Ausgabe verbergen müssen, ohne das Programm durch Prüfen des Ausgabe-/Fehlerdateideskriptors darüber zu informieren, können Sie Folgendes in einer Shell versuchen:

stty flusho; command ;stty -flusho

oder wenn Sie nebenbei einfach nur die Eingabe vom Terminal verbergen möchten:

stty  -echo; command ;stty  echo

Weitere Informationen finden Sie auf der Manualpage stty(1).

Für Linux weiß ich nur, dassUbuntu 10.04(Lucid Lynx) und einige Debian/Arch Linux (unten kommentiert – danke, Hendry) haben die Einstellung nicht flusho(und ich kann in der Manpage nichts anderes Passendes finden). Die echoEinstellung funktioniert jedenfalls unter Ubuntu.

verwandte Informationen