it-swarm.com.de

Wie kann ich die Ausgabe einer Shell-Anwendung unter Linux ausblenden?

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

47
Jader Dias

Sie können die Ausgabe eines Programms so umleiten, dass es nicht angezeigt wird.

$ program > /dev/null

Dadurch wird die Standardausgabe umgeleitet - es werden weiterhin Fehler angezeigt

$ program &> /dev/null

Dadurch werden alle Ausgaben einschließlich Fehler umgeleitet.

72
theotherreceive

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

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

Verwenden Sie, um die Standardausgabe (die Standardausgabe) in eine Datei umzuleiten (und die Datei zu überschreiben)

 command > file.log

Verwenden Sie zum Anhängen an file.log zwei >s

 command >> file.log

Verwenden Sie, um den Standardfehler in die Datei file.log umzuleiten

 command 2> file.log

Und anhängen

 command 2>> file.log

Kombinieren Sie die Ausgaben in einem Stream und senden Sie sie alle an einen Ort

 command > file.log 2>&1

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

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

 command << file.txt


Weitere Informationen finden Sie im Advanced Bash Scripting Guide .

30
Matt Simmons

Standardausgabe ausblenden:

./command >/dev/null

Standardausgabe und Standardfehler ausblenden:

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

Standardausgabe und Standardfehler- und Release-Terminal ausblenden (Befehl im Hintergrund ausführen):

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

Wenn Sie die Ausgabe nur ausblenden (und nicht in einer Datei speichern) möchten, können Sie Folgendes verwenden:

Bearbeitet:

$ Befehl &>/dev/null

3
Lucho

Für Mac OS X 10.6 (Schneeleopard):

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

stty flusho; command ;stty -flusho

oder wenn Sie übrigens nur Eingaben vom Terminal verbergen möchten:

stty  -echo; command ;stty  echo

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

Für Linux weiß ich nur, dass buntu 10.04 (Lucid Lynx) und einige Debian/Arch Linux (unten kommentiert - danke, hendry) nicht die Einstellung flusho haben (und ich Ich kann nichts anderes in der Manpage sehen. Die Einstellung echo funktioniert ohnehin unter Ubuntu.

2
vike