Bestandsbeheer

Wat is /dev/null en hoe het te gebruiken?

Wat is /dev/null en hoe het te gebruiken?
Linux is een interessant besturingssysteem dat een aantal virtuele apparaten host voor tal van doeleinden. Voor zover het programma's betreft die in het systeem worden uitgevoerd, gedragen deze virtuele apparaten zich alsof het echte bestanden zijn. Tools kunnen gegevens uit deze bronnen opvragen en invoeren. De gegevens worden gegenereerd door het besturingssysteem in plaats van ze van een schijf te lezen.

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= of=/dev/null status=voortgang bs=1M iflag=direct

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!

Open source-poorten van commerciële game-engines
Gratis, open source en platformonafhankelijke game-engine-recreaties kunnen worden gebruikt om zowel oude als enkele van de vrij recente gametitels te...
Beste opdrachtregelspellen voor Linux
De opdrachtregel is niet alleen je grootste bondgenoot bij het gebruik van Linux, hij kan ook de bron van entertainment zijn omdat je hem kunt gebruik...
Beste gamepad-toewijzingsapps voor Linux
Als je graag games op Linux speelt met een gamepad in plaats van een typisch toetsenbord- en muisinvoersysteem, zijn er enkele handige apps voor jou. ...