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!