Een voorbeeld hiervan is /dev/null. Het is een speciaal bestand dat in elk Linux-systeem aanwezig is. In tegenstelling tot de meeste andere virtuele bestanden, wordt het echter gebruikt om te schrijven. Wat je ook schrijft naar /dev/null zal worden weggegooid, vergeten in de leegte. Het staat bekend als het nulapparaat in een UNIX-systeem.
Waarom zou je iets in de leegte willen weggooien?? Laten we eens kijken wat /dev/null is en het gebruik ervan.
Vereisten
Voordat we diep in het gebruik van /dev/null duiken, moeten we een duidelijk begrip hebben van de stout en stderr data stroom. Bekijk deze uitgebreide gids op standaard, stderr, en stout.
Even snel opfrissen. Telkens wanneer een opdrachtregelprogramma wordt uitgevoerd, genereert het twee uitvoer. De uitvoer gaat naar stout en de fout (indien gegenereerd) gaat naar stderr. Standaard zijn beide datastromen gekoppeld aan de terminal.
Met de volgende opdracht wordt bijvoorbeeld de tekenreeks tussen de dubbele aanhalingstekens afgedrukt. Hier wordt de uitvoer opgeslagen in stout.
$ echo "Hallo wereld"
De volgende opdracht toont ons de exit-status van de eerder uitgevoerde opdracht.
$ echo $?
Aangezien de vorige opdracht met succes is uitgevoerd, is de exit-status 0. Anders is de uitgangsstatus anders. Wat gebeurt er als je een ongeldige opdracht probeert uit te voeren??
$ advertenties$ echo $?
Nu moeten we iets weten over de bestandsdescriptor. In het UNIX-ecosysteem zijn dit gehele waarden die aan een bestand zijn toegewezen. Beide stout (bestandsdescriptor = 1) en stderr (bestandsdescriptor = 2) een specifieke bestandsdescriptor hebben. Met behulp van de bestandsdescriptor (1 en 2 in deze situatie), kunnen we de stout en stderr naar andere bestanden.
Om te beginnen, zal het volgende voorbeeld de . omleiden stout van het echo-commando naar een tekstbestand. Hier hebben we de bestandsdescriptor niet gespecificeerd. Indien niet gespecificeerd, gebruikt bash stout standaard.
$ echo “Hallo wereld” > log.tekst
De volgende opdracht zal de . omleiden stderr naar een tekstbestand.
$ asdfadsa 2> fout.tekst
/dev/null gebruiken
Uitvoer omleiden naar /dev/null
Nu zijn we klaar om te leren hoe /dev/null . te gebruiken. Laten we eerst eens kijken hoe we normale uitvoer en fouten kunnen filteren. In de volgende opdracht zal grep proberen te zoeken naar een tekenreeks (hallo, in dit geval) in de map "/sys".
$ grep -r hallo /sys/
Het zal echter veel fouten genereren omdat grep zonder root-privilege geen toegang heeft tot een aantal bestanden. In zo'n geval resulteert dit in "Toestemming geweigerd"-fouten. Nu, met behulp van de omleiding, kunnen we een duidelijkere output krijgen.
$ grep -r hallo /sys/ 2> /dev/null
De uitvoer ziet er veel beter uit, toch? Niets! In dit geval heeft grep geen toegang tot veel bestanden en de bestanden die wel toegankelijk zijn, hebben niet de tekenreeks "hallo".
In het volgende voorbeeld pingen we Google.
$ ping google.com
We willen echter niet al die succesvolle ping-resultaten zien. In plaats daarvan willen we ons alleen concentreren op de fouten wanneer ping Google niet kon bereiken. Hoe doen we dat?
$ ping google.com 1> /dev/null
Hier de inhoud van stout worden gedumpt naar /dev/null, waarbij alleen de fouten overblijven.
Leid alle uitvoer om naar /dev/null
In bepaalde situaties kan de uitvoer helemaal niet nuttig zijn. Met behulp van omleiding kunnen we alle uitvoer in de leegte dumpen.
$ grep -r hallo /sys/ > /dev/null 2>&1
Laten we dit commando een beetje breken. Eerst dumpen we alle all stout naar /dev/null. Dan, in het tweede deel, vertellen we bash om te verzenden stderr naar stout. In dit voorbeeld is er niets om uit te voeren. Als u echter in de war bent, kunt u altijd controleren of de opdracht met succes is uitgevoerd.
$ echo $?
De waarde is 2 omdat de opdracht veel fouten heeft gegenereerd.
Als u de bestandsdescriptor van vergeet stout en stderr, het volgende commando zal het prima doen. Het is een meer algemene indeling van de vorige opdracht. Beide stout en stderr wordt doorgestuurd naar /dev/null.
$ grep -r hallo /sys/ &> /dev/null
Andere voorbeelden
Dit is een interessante. Onthoud de dd-tool? Het is een krachtig hulpmiddel voor het converteren en kopiëren van bestanden. Meer informatie over dd. Met dd kunnen we de sequentiële leessnelheid van uw schijf testen. Het is natuurlijk geen nauwkeurige meting. Voor een snelle test is het echter best handig.
$ dd als=
Hier heb ik de Ubuntu 18 . gebruikt.04.4 ISO als het grote bestand.
Op dezelfde manier kunt u ook de downloadsnelheid van uw internetverbinding testen.
$ wget -O /dev/null
Laatste gedachten
Hopelijk heb je een duidelijk begrip van wat dit /dev/null-bestand is. Het is een speciaal apparaat dat, als het erop wordt geschreven, wordt weggegooid en als het wordt gelezen, leest het null. Het ware potentieel van deze interessante functie zit in interessante bash-scripts.
Ben je geïnteresseerd in bash-scripting?? Bekijk de beginnershandleiding voor bash-scripting.
Genieten!