Fájlkezelés

Mi a / dev / null és hogyan kell használni

Mi a / dev / null és hogyan kell használni
A Linux egy érdekes operációs rendszer, amely számos célból otthont ad néhány virtuális eszköznek. Ami a rendszerben futó programokat illeti, ezek a virtuális eszközök úgy működnek, mintha valódi fájlok lennének. Az eszközök kérhetnek és táplálhatnak adatokat ezekből a forrásokból. Az adatokat az operációs rendszer generálja, ahelyett, hogy lemezről olvassa volna őket.

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 = = / dev / null állapot = haladás bs = 1M iflag = közvetlen

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!

Az egér bal oldali gombja nem működik a Windows 10 rendszeren
Ha dedikált egeret használ laptopjával vagy asztali számítógépével, de a az egér bal gombja nem működik a Windows 10/8/7 rendszeren valamilyen oknál f...
A kurzor véletlenszerűen ugrik vagy mozog, miközben gépel a Windows 10-ben
Ha úgy találja, hogy az egér kurzor önállóan, automatikusan, véletlenszerűen ugrik vagy mozog, miközben gépel Windows laptopba vagy számítógépbe, akko...
Az egér és az érintőpadok görgetési irányának megfordítása a Windows 10 rendszerben
Egér és Érintőpads nemcsak a számítást könnyűvé, de hatékonyabbá és kevésbé időigényessé is teszi. Nem tudunk elképzelni egy életet ezek nélkül az esz...