Wenn du rennst:
ping -q -c 1 google.com > /dev/null && echo online || echo offline
Sie leiten im Wesentlichen nur die Ausgabe von Stream 1 (dh stdout
) an um /dev/null
.
Dies ist in Ordnung, wenn Sie die Ausgabe umleiten möchten, die bei der normalen Ausführung eines Programms erzeugt wird. Wenn Sie jedoch auch die Ausgabe umleiten möchten, die durch alle Fehler, Warnungen oder Ausfälle verursacht wurde, sollten Sie auch die umleitenstderr
Stream oder Standardfehler an/dev/null
.
Eine Möglichkeit hierfür ist das Voranstellen der Nummer des Streams, den Sie an den Umleitungsoperator umleiten möchten. >
wie :Command 2> /dev/null
Daher würde Ihr Befehl so aussehen:
ping -q -c 1 google.com > /dev/null 2> /dev/null && echo online || echo offline
Beachten Sie jedoch, dass wir bereits einen Stream an umgeleitet haben /dev/null
. Warum nicht einfach bei der gleichen Umleitung huckepack nehmen? Mit Bash können wir dazu die Stream-Nummer angeben, zu der umgeleitet werden soll. 2>&1
.
Beachten Sie das &
Zeichen nach dem Umleitungsoperator. Dies teilt der Shell mit, dass als Nächstes kein Dateiname, sondern ein Bezeichner für den Ausgabestream angezeigt wird.
ping -q -c 1 google.com > /dev/null 2>&1 echo online || echo offline
Seien Sie vorsichtig mit den Umleitungsoperatoren, ihre Reihenfolge ist sehr wichtig. Wenn Sie in der falschen Reihenfolge umleiten, erhalten Sie unerwartete Ergebnisse.
Eine andere Möglichkeit, vollständige Stille zu erreichen, besteht darin, alle Ausgabestreams auf /dev/null
diese Verknüpfung &>/dev/null
umzuleiten : (oder in eine Protokolldatei mit umzuleiten &>/path/to/file.log
).
Schreiben Sie Ihren Befehl daher wie folgt:
ping -q -c 1 google.com &> /dev/null && echo online || echo offline
&>/dev/null
es. Vielen Dank für die sofortige Hilfe!Be careful with the redirection operators, their order matters a lot.
, aber Sie haben kein Beispiel für die tatsächliche Verwendung von2>&1
Sie müssen sowohl die Standardausgabe (
>
oder1>
) als auch den Standardfehler (2>
) umleiten :oder leiten Sie eines zum anderen um:
quelle
Beispiele
Ping beschleunigen
Abhängig von Ihrer
ping
Implementierung sind Sie möglicherweise auf eine einzelne Anzahl beschränkt-c 1
. Bei einigen Implementierungen können Sie darunter vorbeigehen, aber Sie müssen im Wesentlichen auf schlechte Suchvorgänge warten, bis die Zeit abgelaufen ist. Anstatt also zu verwendenping
, möchten Sie vielleichtfing
stattdessen verwenden.Langsamkeit der Ping-Fehler
Fing ist viel schneller zu scheitern
quelle
time
Befehl verwenden als die Zeitdifferenz manuell zu berechnen mitdate
:time { fing -p googleadf.com > /dev/null 2>&1 && echo online || echo offline; }
date
. Es ist einfacher, IMO, die generierte Ausgabe zu lesen.