Deze vraag heeft hier al een antwoord:
Vaak kom ik kleine bash-scripts tegen die dit soort syntaxis gebruiken in if-statements:
wat commando > /dev/null 2>&1
Wat is het doel van het uitvoeren naar /dev/null
zoals dat, en wat doet het 2>&1
gemiddelde?
Het lijkt altijd te werken, maar ik zou graag willen weten wat het doet.
>/dev/null
leidt de uitvoer van de opdrachtstand naar het nulapparaat om, wat een speciaal apparaat is dat de informatie weggooit die eraan is geschreven
2>&1
leidt de standaard foutstroom om naar de standaard uitvoerstroom (stderr = 2, stdout = 1). Merk op dat dit de standaard foutstroom neemt en naar dezelfde locatie verwijst als standaarduitvoer op dat moment. Dit is de reden voor de bestelling >/some/where 2>&1
omdat je eerst stdout naar ergens moet wijzen en dan punt stderr naar dezelfde locatie als men aan het einde beide streams wil combineren.
In de praktijk wordt voorkomen dat uitvoer van de opdracht (zowel stdout als stderr) wordt weergegeven. Het wordt gebruikt als u niet om de uitvoer van het commando geeft.
STDIN wordt weergegeven met 0, STDOUT met 1 en STDERR met 2.
/ Dev / null is de bit-bucket: de plaats waar je dingen dumpt die je niet nodig hebt.
Dus, de STDOUT wordt doorgestuurd naar de bit-bucket (trash) en de STDERR wordt omgeleid naar waar de STDOUT zich bevindt: de bit-bucket.
U kunt dit ook doen:
>/dev/null 2>/dev/null