Frage Wie verberge ich die Ausgabe einer Shell-Anwendung unter Linux?


Wie blende ich die Bildschirmausgabe (printf) einer Shell-Anwendung unter Linux aus?


34
2017-07-17 02:59


Ursprung


stackoverflow.com/questions/2292847/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


Antworten:


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

$ program > /dev/null

Dies wird die Standardausgabe umleiten - Sie werden immer noch Fehler sehen

$ program &> /dev/null

Dadurch werden alle Ausgaben einschließlich Fehler umgeleitet.


57
2017-07-17 03:02



Der erste funktionierte nicht für wget - Jader Dias
Das liegt daran, dass wget für einige seiner Ausgaben stderr verwendet. Der zweite sollte funktionieren. - theotherreceive
Übrigens möchten Sie diese wget-Ausgabe möglicherweise in einer Protokolldatei speichern. Wenn Ihr Download also nicht mehr funktioniert, können Sie herausfinden, warum. Wenn es sowieso in einem Skript ist. Wenn das ein einmaliger Typ ist, dann renn, ja, zum Müll - Matt Simmons
Zum wget du kannst den ... benutzen -q Optionen, um es ruhig zu machen. - pkhamre
Gibt es eine Möglichkeit, Ausgaben zu unterdrücken, die direkt in / dev / tty geschrieben wurden? - d11wtq


Auf der Kommandozeile stehen drei IO-Devices zur Verfügung.

 standard in - 0 
 standard out - 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 2> s

 command >> file.log

Standardfehler in die Datei.log umleiten, verwenden

 command 2> file.log

und anhängen

 command 2>> file.log

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

 command > file.log 2>&1 

Dies sendet 2 (stderr) in 1 (stdout) und sendet stdout an file.log

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

 command << file.txt 

BEARBEITEN
Weitere Informationen finden Sie in der Erweiterte Bash Scripting Guide


27
2017-07-17 03:04



Kann jemand erklären, wie die command > file.log 2>&1 funktioniert? - Cory Klein
Wie tief eines Levels würdest du gerne wissen? - Matt Simmons
@nomoreink: Es ist eigentlich 2 Befehle, einer ist > file und der zweite ist 2>&1. Der erste leitet den Standard in eine Datei um. Der zweite nimmt den zweiten Dateideskriptor und leitet ihn zum ersten um. Sie können das Gegenteil tun, Standardausgabe mit Standardfehler umleiten >&2 und dann Standardfehler in eine Datei mit umleiten 2> file. - Hubert Kario


Standardausgabe ausblenden

./command >/dev/null

Verbergen Sie Standard- und Fehlerausgaben

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

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

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

9
2018-04-10 08:28





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

Bearbeitet:

$ Befehl &> / dev / null


3
2017-07-17 03:02



Dadurch wird die Ausgabe in eine Datei namens null umgeleitet - theotherreceive
Es hat eine Nulldatei generiert - Jader Dias
du hättest nicht / dev / null gemeint, oder? - Babu
Ja, hätte ich, Babu. Ich meinte $ command &> / dev / null. Ich entschuldige mich dafür, dass ich zu schnell zu meinem eigenen Besten tippte. - Lucho


Für Mac OS X (10.6 "Snow Leopard"):

Wenn Sie die Ausgabe ausblenden müssen, ohne dass das Programm dies durch Überprüfen des Ausgabe- / Fehlerdatei-Deskriptors wissen muss, können Sie Folgendes in einer Shell verwenden:

stty flusho; command ;stty -flusho

oder wenn Sie einfach nur Eingaben vom Terminal ausblenden möchten:

stty  -echo; command ;stty  echo

Siehe stty (1) Handbuchseite für weitere Informationen

Für Linux weiß ich nur, dass Ubunutu (10.04 "Lucid") und einige "Debian / Arch" (kommentiert unten - tnx hendry) nicht die haben flusho Einstellung (und ich kann nichts anderes in der Man-Seite passend sehen). Das echo Einstellung funktioniert auf dem Ubuntu sowieso.


2
2018-02-01 05:31



Mein Standard-Stty unter Debian / Arch hat diese Optionen nicht. - hendry
Ich hätte natürlich erwähnen sollen, dass ich nicht einmal auf dem Betriebssystem des OP war. Hat meinen Beitrag bearbeitet. - vike