Kui meil on juba mõned mõisted GNU / Linuxi kataloogipuust, peaksime vähemalt tundma viidet / dev /, mis on tegelikult kõikides failides riistvaraseadmed.
Kui vaatame kataloogi / dev / näeme "faili" nimega tühjaks, kuid kui me tahame selle sisu avamiseks avada, ütleb süsteem meile, et see pole võimalik, kuna see pole tavaline sisu. Lisasin sõna fail, sest nagu te kõik Linuxi jaoks teate, on kõik (riistvara ja tarkvara) failina esindatud. |
Mis seadmele / dev / null vastab?
Kujutage praktilistel eesmärkidel ette prügikasti, põhjatut auku või maailmaruumi, kuhu midagi visata, ilma et oleks võimalik seda taastada (ükskõik kui palju NASA tüübid ka ei üritaks).
Aga kui mul on juba käske nagu rm, siis miks ma tahan midagi uut kustutada?
Sest see, kuidas mõlemad "mustad augud" töötavad, on täiesti erinev: kuidas saaksite käsu ajal shelliskriptis oleva käsu vea standardväljundi alistada? Siit tuleb / dev / null.
Vaatame seda ühe näitega.
Oleme loonud faili nimega testid, mis sisaldab stringi "Hello World". Kui tahame selle faili sisu käsureal esindada, võiksime seda teha järgmiselt:
kasutaja @ sülearvuti: ~ $ kassitest
Tere, Maailm
Kui faili ei eksisteerinud või see nimetati testideks (mille lõpus on s), kuvatakse konsoolis järgmine tõrge:
kasutaja @ sülearvuti: ~ $ kassitestid
cat: testid: Faili või kataloogi pole olemas
Mida saaksime teha veateate vältimiseks? Noh, lihtsalt suunake vea korral käsu väljund "prügikasti", see on / dev / null
Kuidas me täpsustame seda vea korral? Siin sisestate programmi standardse sisendi, väljundi ja vea väärtused: STDIN, STDOUT ja STDERR (mida saab asendada vastavalt 0, 1 ja 2). Sel moel, kui paneme ...
kasutaja @ sülearvuti: ~ $ cat testib 2> / dev / null
kasutaja @ sülearvuti: ~ $
... Näeme, et veateadet konsoolil ei koostata.
Peate olema ettevaatlik, sest süntaks on hädavajalik: märkide 2 ja> vahel ei tohiks olla tühikut. Vastasel juhul annaks see järgmise:
kasutaja @ sülearvuti: ~ $ cat testib 2> / dev / null
cat: testid: Faili või kataloogi pole olemas
cat: 2: faili või kataloogi pole olemas
Seevastu tühik> ja / dev / null vahel ei mõjuta tulemust negatiivselt.
Samuti võiksime tõrke ümbersuunamist kasutada näiteks logifaili vigade püüdmiseks järgmiselt:
kasutaja @ sülearvuti: ~ $ cat tests 2> err.log
Teine huvitav juhtum oleks tulemuste kogumine teise faili seni, kuni viga ei esine, mille jaoks me paneksime:
kasutaja @ sülearvuti: ~ $ cat test 1> output_result 2> err.log
Lõpuks tasub panna avaldus «> / dev / null 2> & 1», milles standardväljund ja veaväljund on ühendatud, suunates need ümber nii, et mingil juhul ei saada väljunditeavet.
Ah, aga puudu on üks levinumaid / dev / null-i utiliite, mis tühjendab faile: $ cat / dev / null> file.log Sel viisil jääb fail fail.log tühjaks. Lisage see!
See oli täpselt seletus, mida ta otsis.
Toetan selle lisamise ettepanekut =)
Saludos!
Tere, esiteks on artikkel väga hea! teine tahaksin selle teema lingiga midagi kaasa aidata Croni töö PHP-s Cpanelilt ja kolmas õnnitlus blogi jaoks!
Tore artikkel dev / nullist, kui häbi ma arvan, et enne ekslikult vales kohas kommenteerisin! ma vabandan
tänu hea panus
Tervitused Mul on null rünnak. Kasutan andrirci ja saan oma hüüdnimest reaalajas sõna Null. 2 sekundit hiljem sulgeb programm, mida olen lugenud, ja minu arvates saab seda teha ainult Shell, mitte keegi väline. Olen proovinud ennast ignoreerida / ignoreerida -lrpcntikd ja Miski ei üllata mind, käsk tuleb pidevalt. Kui teil on mingil viisil võimalus seda blokeerida, oleksin tänulik. Terviseks
Mis juhtub, kui lause täitmisel sümbolit> ei paigutata?
Kas keegi võiks mind palun suunata?
Tere hommikust, olen installinud Debiani netinsti ACER Extensa 5620Z-sse – 32 bit. Kui USB-lt installimine on lõppenud ja pendrive on eemaldatud, nii et see käivitub kõvakettalt (ärge installige pliiatsist uuesti), kuid käivitamise hetkel süsteem küsib minult:
debiani sisselogimine: xxxxxxxx (ok)
Parool: xxxxxxxx (ok)
nil@debian:~$ ???? mis see on? Mida ma peaksin sinna panema?
Ilma selle käsuta ei saa ma süsteemi alglaadimisega jätkata.
Kas sa saad mind aidata? Ma ei tea, kuidas peaksin jätkama.
Tänan teid väga. Parimate soovidega.