Das liegt daran, dass wget stderr für einen Teil seiner Ausgabe verwendet. Der zweite sollte funktionieren.
theotherreceive
2
Im Übrigen möchten Sie diese wget-Ausgabe möglicherweise in einer Protokolldatei speichern. Wenn Ihr Download nicht mehr funktioniert, können Sie herausfinden, warum. Wenn es sowieso in einem Skript ist. Wenn dies ein einmaliger Lauf ist, dann ja, in den Müll
Matt Simmons
1
Für wgetSie können -qOptionen , um es ruhig zu machen.
pkhamre
Gibt es eine Möglichkeit, die direkt in / dev / tty geschriebene Ausgabe zu unterdrücken?
d11wtq
30
In der Befehlszeile stehen drei E / A-Geräte zur Verfügung.
standard in - 0
standard out - 1
standard error - 2
Verwenden Sie, um Standardausgabe (die Standardausgabe) in eine Datei umzuleiten (und die Datei zu überschreiben)
command > file.log
Verwenden Sie zum Anhängen an file.log 2> s
command >> file.log
Um Standardfehler in die Datei file.log umzuleiten, verwenden Sie
command 2> file.log
und anhängen
command 2>> file.log
Kombinieren Sie die Ausgaben zu einem Stream und senden Sie sie alle an einen Ort
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 in einen Befehl umzuleiten, der stdin erwartet
Kann jemand erklären, wie das command > file.log 2>&1funktioniert?
Cory Klein
Wie tief würdest du gerne wissen?
Matt Simmons
3
@nomoreink: Es sind eigentlich 2 Befehle, einer ist > fileund 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 weiter. Sie können den umgekehrten Vorgang ausführen, indem Sie die Standardausgabe mit in den Standardfehler >&2umleiten und dann den Standardfehler mit in eine Datei umleiten 2> file.
Hubert Kario
12
Verbergen, verstecken stdout
./command >/dev/null
Verstecke stdoutundstderr
./command >/dev/null 2>&1
Terminal ausblenden stdoutund stderrfreigeben (Befehl im Hintergrund ausführen)
Dadurch wird die Ausgabe in eine Datei mit dem Namen null umgeleitet
theotherreceive
Es wurde eine Nulldatei generiert
Jader Dias
1
Sie hätten / dev / null nicht gemeint, oder?
Babu
1
Ja, hätte ich, Babu. Ich meinte $ command &> / dev / null. Ich entschuldige mich dafür, dass ich zu schnell zu meinem Besten getippt habe.
Lucho
2
Für Mac OS X (10.6 "Snow Leopard"):
Wenn Sie die Ausgabe ausblenden müssen, ohne das Programm darüber zu informieren, indem Sie den Ausgabe- / Fehlerdateideskriptor überprüfen, können Sie versuchen, Folgendes in einer Shell zu verwenden:
stty flusho; command ;stty -flusho
oder wenn du übrigens nur die eingabe vom terminal verbergen willst:
stty -echo; command ;stty echo
Weitere Informationen finden Sie in der stty (1) -Handbuchseite
Für Linux weiß ich nur, dass Ubunutu (10.04 "Lucid") und einige "Debian / Arch" (unten kommentiert - tnx hendry) diese flushoEinstellung nicht haben (und ich kann nichts anderes in der Manpage sehen). . Die echoEinstellung funktioniert auf dem Ubuntu trotzdem.
Antworten:
Sie können die Ausgabe eines Programms so umleiten, dass sie nicht angezeigt wird.
Dadurch wird die Standardausgabe umgeleitet. Es werden weiterhin Fehler angezeigt
Dadurch werden alle Ausgaben, einschließlich der Fehler, umgeleitet.
quelle
wget
Sie können-q
Optionen , um es ruhig zu machen.In der Befehlszeile stehen drei E / A-Geräte zur Verfügung.
Verwenden Sie, um Standardausgabe (die Standardausgabe) in eine Datei umzuleiten (und die Datei zu überschreiben)
Verwenden Sie zum Anhängen an file.log 2> s
Um Standardfehler in die Datei file.log umzuleiten, verwenden Sie
und anhängen
Kombinieren Sie die Ausgaben zu einem Stream und senden Sie sie alle an einen Ort
Dies sendet 2 (stderr) in 1 (stdout) und sendet stdout an file.log
Beachten Sie, dass es auch möglich ist, standard in in einen Befehl umzuleiten, der stdin erwartet
BEARBEITEN
Weitere Informationen finden Sie im Advanced Bash Scripting Guide
quelle
command > file.log 2>&1
funktioniert?> file
und der zweite ist2>&1
. Der erste leitet den Standard in eine Datei um. Der zweite nimmt den zweiten Dateideskriptor und leitet ihn zum ersten weiter. Sie können den umgekehrten Vorgang ausführen, indem Sie die Standardausgabe mit in den Standardfehler>&2
umleiten und dann den Standardfehler mit in eine Datei umleiten2> file
.Verbergen, verstecken
stdout
Verstecke
stdout
undstderr
Terminal ausblenden
stdout
undstderr
freigeben (Befehl im Hintergrund ausführen)quelle
Wenn Sie die Ausgabe nur ausblenden (und nicht in einer Datei speichern) möchten, können Sie Folgendes verwenden:
Bearbeitet:
$ command &> / dev / null
quelle
Für Mac OS X (10.6 "Snow Leopard"):
Wenn Sie die Ausgabe ausblenden müssen, ohne das Programm darüber zu informieren, indem Sie den Ausgabe- / Fehlerdateideskriptor überprüfen, können Sie versuchen, Folgendes in einer Shell zu verwenden:
oder wenn du übrigens nur die eingabe vom terminal verbergen willst:
Weitere Informationen finden Sie in der stty (1) -Handbuchseite
Für Linux weiß ich nur, dass Ubunutu (10.04 "Lucid") und einige "Debian / Arch" (unten kommentiert - tnx hendry) diese
flusho
Einstellung nicht haben (und ich kann nichts anderes in der Manpage sehen). . Dieecho
Einstellung funktioniert auf dem Ubuntu trotzdem.quelle