Ilyen például a / dev / null. Ez egy speciális fájl, amely minden Linux rendszerben megtalálható. A legtöbb virtuális fájllal ellentétben azonban az olvasás helyett az íráshoz használják. Bármit is írsz a / dev / null-ra, az eldobásra kerül, elfelejtődik az üregben. A UNIX rendszer null készülékeként ismert.
Miért akarna elvetni valamit az ürességbe?? Nézzük meg, mi a / dev / null, és annak használata.
Előfeltételek
Mielőtt mélyen belemerülnénk a / dev / null használatába, tisztán meg kell értenünk a stdout és stderr adatfolyam. Nézze meg ezt a részletes útmutatót stdin, stderr, és stdout.
Gyorsan frissítsünk. Bármely parancssori segédprogram futtatásakor két kimenetet generál. A kimenet a stdout és a hiba (ha generálódik) a stderr. Alapértelmezés szerint mindkét adatfolyam a terminálhoz van társítva.
Például a következő parancs kinyomtatja a karakterláncot a dupla idézőjelben. Itt a kimenet tárolva van stdout.
$ echo “Hello World”
A következő parancs megmutatja a korábban futtatott parancs kilépési állapotát.
$ visszhang $?
Mivel az előző parancs sikeresen futott, a kilépés állapota 0. Ellenkező esetben a kilépés állapota más lesz. Mi történik, ha érvénytelen parancsot próbál futtatni?
$ adfadsf$ visszhang $?
Most tudnunk kell a fájlleíróról. A UNIX ökoszisztémában ezek egy fájlhoz rendelt egész értékek. Mindkét stdout (fájlleíró = 1) és stderr (fájlleíró = 2) rendelkezik egy meghatározott fájlleíróval. A fájlleíró (ebben a helyzetben 1. és 2.) segítségével átirányíthatjuk a stdout és stderr más fájlokba.
Először is, a következő példa átirányítja a stdout az echo parancs szöveges fájlba. Itt nem adtuk meg a fájlleírót. Ha nincs megadva, akkor a bash fogja használni stdout alapértelmezés szerint.
$ echo “Hello World”> napló.txt
A következő parancs átirányítja a stderr szöveges fájlba.
$ asdfadsa 2> hiba.txt
A / dev / null használatával
A kimenet átirányítása a / dev / null helyre
Most készen állunk a / dev / null használatának megtanulására. Először nézzük meg, hogyan szűrhető a normál kimenet és hiba. A következő parancsban a grep megpróbál keresni egy karakterláncot (hello, ebben az esetben) a “/ sys” könyvtárban.
$ grep -r hello / sys /
Ez azonban sok hibát generál, mivel root jogosultság nélkül a grep nem tud hozzáférni számos fájlhoz. Ilyen esetben az „Engedély megtagadva” hibákat eredményez. Az átirányítás használatával tisztább kimenetet kaphatunk.
$ grep -r hello / sys / 2> / dev / null
A kimenet sokkal jobbnak tűnik, ugye? Semmi! Ebben az esetben a grep nem fér hozzá sok fájlhoz, és azokhoz, amelyek elérhetők, nincs „hello” karakterlánc.
A következő példában pingelni fogjuk a Google-t.
$ ping google.com
Azonban nem akarjuk látni mindazokat a sikeres ping eredményeket. Ehelyett csak a hibákra szeretnénk koncentrálni, amikor a ping nem érte el a Google-t. Hogyan csináljuk ezt?
$ ping google.com 1> / dev / null
Itt a tartalma stdout a / dev / null fájlba kerülnek, és csak a hibák maradnak.
Átirányítja az összes kimenetet a / dev / null helyre
Bizonyos helyzetekben a kimenet egyáltalán nem lehet hasznos. Az átirányítás használatával az összes kimenetet az ürességbe dobhatjuk.
$ grep -r hello / sys /> / dev / null 2> & 1
Törjük meg egy kicsit ezt a parancsot. Először is az összeset kidobjuk stdout to / dev / null. Aztán a második részben azt mondjuk bash-nak, hogy küldjön stderr nak nek stdout. Ebben a példában nincs mit kiadni. Ha azonban zavart, mindig ellenőrizheti, hogy a parancs sikeresen futott-e.
$ visszhang $?
Az érték 2, mert a parancs sok hibát generált.
Ha hajlamos elfelejteni a fájl fájlleíróját stdout és stderr, a következő parancs jól fog működni. Az előző parancs általánosabb formátuma. Mindkét stdout és stderr át lesz irányítva a / dev / null helyre.
$ grep -r hello / sys / &> / dev / null
Egyéb példák
Ez egy érdekes. Ne feledje a dd eszközt? Ez egy hatékony eszköz fájlok konvertálására és másolására. Tudjon meg többet a dd-ről. A dd használatával tesztelhetjük a lemez szekvenciális olvasási sebességét. Természetesen nem pontos mérés. Egy gyors teszthez azonban nagyon hasznos.
$ dd, ha =
Itt használtam az Ubuntu 18-at.04.4 ISO mint nagy fájl.
Hasonlóképpen kipróbálhatja internetkapcsolatának letöltési sebességét is.
$ wget -O / dev / null
Végső gondolatok
Remélhetőleg tisztában van azzal, mi ez a / dev / null fájl. Ez egy speciális eszköz, amelyre írva eldobja, és ha olvassák onnan, a null értéket olvassa. Ennek az érdekes szolgáltatásnak az igazi lehetősége érdekes bash szkriptekben rejlik.
Érdekli a bash szkriptelés? Olvassa el a bash szkriptek kezdőinek útmutatóját.
Élvezd!