it-swarm.com.de

Was bewirkt die Ausgabe nach / dev / null in Bash-Skripten?

Oft stoße ich auf kleine Bash-Skripte, die diese Art von Syntax in if-Anweisungen verwenden:

some command > /dev/null 2>&1

Was ist der Zweck der Ausgabe an /dev/null und was bedeutet der 2>&1?

Es scheint immer zu funktionieren, aber ich würde gerne wissen, was es tut.

130
javanix

>/dev/null leitet die Befehlsstandardausgabe an das Null-Gerät um, bei dem es sich um ein spezielles Gerät handelt, das die darauf geschriebenen Informationen verwirft

2>&1 leitet den Standardfehlerstrom zum Standardausgabestrom um (stderr = 2, stdout = 1). Beachten Sie, dass dies den Standardfehlerstrom aufnimmt und ihn auf dieselbe Position wie die Standardausgabe in diesem Moment verweist. Dies ist der Grund für die Reihenfolge >/some/where 2>&1, weil man zuerst stdout auf irgendwo zeigen und dann stderr auf denselben Ort zeigen muss, wenn man am Ende beide Streams kombinieren möchte.

In der Praxis wird verhindert, dass Ausgaben des Befehls (sowohl stdout als auch stderr) angezeigt werden. Es wird verwendet, wenn Sie sich nicht für die Befehlsausgabe interessieren.

174
João Pinto

STDIN wird durch 0, STDOUT durch 1 und STDERR durch 2 dargestellt.

/ dev/null ist der Bit-Bucket: der Ort, an dem Sie alles ablegen, was Sie nicht benötigen.


Das STDOUT wird also in den Bit-Bucket (Papierkorb) umgeleitet, und das STDERR wird an die Stelle umgeleitet, an der sich das STDOUT befindet: den Bit-Bucket.


Sie können dies auch tun:

>/dev/null 2>/dev/null
67
Sid