|
Ha már vannak fogalmaink a GNU / Linux könyvtárfáról, akkor legalább ismernünk kell a / dev / referenciát, amely gyakorlatilag ott van, ahol az összes fájl hardver eszközök.
Ha a könyvtárba nézünk / dev / látni fogunk egy "fájlt", amelyet hívnak null, de ha meg akarjuk nyitni a tartalma megtekintéséhez, a rendszer azt mondja nekünk, hogy ez nem lehetséges, mivel nem hétköznapi tartalom. Azért csatoltam a file szót, mert amint mindannyian tudjátok a Linux esetében, mindent (hardvert és szoftvert) fájlként képviselünk. |
Milyen eszköznek felel meg a / dev / null?
Gyakorlati célokból képzeljen el egy szemetesedényt, egy feneketlen gödröt vagy a világűrbe, ahová bármit is bedobhatna anélkül, hogy visszanyerné (bármennyire is próbálkoznak a NASA srácai).
De ha már vannak olyan parancsaim, mint az rm, miért akarok valami újat törölni?
Mivel mindkét "fekete lyuk" működése teljesen más: hogyan írná felül a parancs normál kimenetét egy parancsfájlban futás közben? Itt jön be a / dev / null.
Nézzük meg egy példával.
Létrehoztunk egy teszt nevű fájlt, amely a "Hello World" karakterláncot tartalmazza. Ha a fájl tartalmát a parancssorban akarjuk képviselni, akkor a következőképpen tehetjük meg:
felhasználó @ laptop: ~ $ macska teszt
Helló Világ
Ha a fájl nem létezik, vagy tesztként nevezik (a végén 's' van), akkor a következő hibát kapjuk a konzolon:
felhasználó @ laptop: ~ $ macska teszt
cat: tesztek: A fájl vagy könyvtár nem létezik
Mit tehetnénk a hibaüzenet elkerülése érdekében? Nos, egyszerűen irányítsa át a parancs kimenetét hiba esetén egy "szemetesre", vagyis a / dev / null helyre
Hogyan adhatjuk meg hiba esetén? Itt adhatja meg a program standard bemeneti, kimeneti és hibaértékeit: STDIN, STDOUT és STDERR (amelyek helyettesíthetők 0, 1 és 2 helyettesítéssel). Ilyen módon, ha ...
felhasználó @ laptop: ~ $ cat tesztek 2> / dev / null
felhasználó @ laptop: ~ $
… Látni fogjuk, hogy a hibaüzenet nem jelenik meg a konzolon.
Vigyázni kell, mert a szintaxis elengedhetetlen: a 2. és> karakter között nem szabad szóköz lenni. Ellenkező esetben a következőket adná:
felhasználó @ laptop: ~ $ cat tesztek 2> / dev / null
cat: tesztek: A fájl vagy könyvtár nem létezik
cat: 2: A fájl vagy könyvtár nem létezik
Ezzel szemben a> és / dev / null közötti szóköz nem befolyásolja negatívan az eredményt.
Használhatjuk a hibák átirányítását is például a naplófájl hibáinak rögzítésére az alábbiak szerint:
user @ laptop: ~ $ cat tesztek 2> err.log
Egy másik érdekes eset az eredmények összegyűjtése egy másik fájlban, mindaddig, amíg nem fordul elő hiba, amire tennénk:
user @ laptop: ~ $ cat test 1> output_result 2> err.log
Végül érdemes feltenni a «> / dev / null 2> & 1» kifejezést, amelyben a standard kimenet és a hibakimenet egyesül, átirányítva őket úgy, hogy semmilyen esetben sem kapják meg a kimeneti információkat.