Kas ir / dev / null un kā tas var jums palīdzēt?

Ja mums jau ir daži jēdzieni par GNU / Linux direktoriju koku, mums vismaz vajadzētu būt pazīstamam ar / dev / atsauci, kas faktiski ir paredzēta visiem failiem, kas saistīti ar aparatūras ierīces.

Ja mēs skatāmies direktorijā / dev / mēs redzēsim "failu", ko sauc nulle, bet, ja mēs vēlamies to atvērt, lai redzētu tā saturu, sistēma mums pateiks, ka tas nav iespējams, jo tas nav parasts saturs. Esmu pievienojis vārdu fails, jo, kā jūs visi zināt Linux, viss (aparatūra un programmatūra) tiek attēlots kā fails.

Tas ir Daniela Durantes ieguldījums, tādējādi kļūstot par vienu no mūsu iknedēļas konkursa uzvarētājiem: «Dalieties ar to, ko zināt par Linux«. Apsveicu Danielu!

Kādai ierīcei / dev / null atbilst?

Praktiskos nolūkos iedomājieties atkritumu tvertni, dibenu bedri vai kosmosu, kurā kaut ko iemest bez iespējas to atgūt (lai arī kā censtos NASA puiši).

Bet, ja man jau ir tādas komandas kā rm, kāpēc es gribu kaut ko jaunu izdzēst?

Tā kā abu "melno caurumu" darbība ir pilnīgi atšķirīga: kā jūs izpildīšanas laikā ignorētu standarta kļūdu komandā shell kļūdas izvadē? Šeit parādās / dev / null.

Apskatīsim to ar piemēru.

Mēs esam izveidojuši failu ar nosaukumu testi, kurā ir virkne "Hello World". Ja mēs vēlamies attēlot šī faila saturu komandrindā, mēs to varētu izdarīt šādi:

lietotājs @ klēpjdators: ~ $ kaķu tests
Sveika pasaule

Ja fails nepastāv vai tiek nosaukts par testiem (ar 's' beigās), konsolē tiks parādīta šāda kļūda:

lietotājs @ klēpjdators: ~ $ kaķu testi
cat: tests: Fails vai direktorijs nepastāv

Ko mēs varētu darīt, lai izvairītos no kļūdas ziņojuma? Labi, kļūdas gadījumā vienkārši novirziet komandas izvadi uz "atkritumu tvertni", tas ir, uz / dev / null

Kā mēs to norādām kļūdas gadījumā? Šeit jūs ievadāt programmas standarta ievades, izvades un kļūdu vērtības: STDIN, STDOUT un STDERR (kuras attiecīgi var aizstāt ar 0, 1 un 2). Tādā veidā, ja mēs ieliekam ...

lietotājs @ klēpjdators: ~ $ cat tests 2> / dev / null
lietotājs @ klēpjdators: ~ $

... Mēs redzēsim, ka kļūdas ziņojums netiks izveidots konsolē.

Jums jābūt piesardzīgam, jo ​​sintakse ir būtiska: starp rakstzīmēm 2 un> nedrīkst būt atstarpe. Pretējā gadījumā tas dotu sekojošo:

lietotājs @ klēpjdators: ~ $ kaķu testi 2> / dev / null
cat: tests: Fails vai direktorijs nepastāv
cat: 2: fails vai direktorijs nepastāv

Turpretī atstarpe starp> un / dev / null rezultātu negatīvi neietekmēs.

Mēs varētu arī izmantot kļūdu novirzīšanu, piemēram, lai reģistrētu kļūdas žurnālfailā šādi:

lietotājs @ klēpjdators: ~ $ cat tests 2> err.log

Vēl viens interesants gadījums būtu rezultātu apkopošana citā failā, kamēr nenotiek kļūda, kurai mēs pievienotu:

lietotājs @ klēpjdators: ~ $ cat test 1> output_result 2> err.log

Visbeidzot, ir vērts ievietot izteicienu «> / dev / null 2> & 1», kurā standarta izeja un kļūdas izeja ir apvienota, tos novirzot tā, lai nekādā gadījumā netiktu iegūta izejas informācija.


Raksta saturs atbilst mūsu principiem redakcijas ētika. Lai ziņotu par kļūdu, noklikšķiniet uz šeit.

7 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   Gvido Ignacio Ignacio teica

    Ak, bet trūkst vienas no visbiežāk izmantotajām utilītām, kas ir / dev / null, kas iztukšo failus: $ cat / dev / null> file.log Šādā veidā fails file.log būs tukšs. Pievienojiet to!

    1.    Eduardo H. teica

      Tas bija tieši skaidrojums, ko viņš meklēja.
      Es atbalstu priekšlikumu to pievienot =)

      Saludos!

  2.   Pablo teica

    Sveiki, pirmkārt, raksts ir ļoti labs! otrais es vēlētos kaut ko ieguldīt, izmantojot šo saiti par šo tēmu cron darbs php no Cpanel un trešais apsveicu ar emuāru!

  3.   Pablo teica

    Jauks raksts par dev / null, kāds kauns, manuprāt, iepriekš kļūdaini komentēju nepareizajā vietā! ES atvainojos

  4.   anonīms teica

    paldies par labu ieguldījumu

  5.   Džerss teica

    Sveicieni, es saņemu nulles uzbrukumu. Es izmantoju andrirc, un es saņemu privāto vārdu no sava segvārda ar vārdu Null. Pēc 2 sekundēm programma tiek aizvērta. Es to lasu, un, pēc manām domām, to var izdarīt tikai čaula, nevis kāds ārējs. Esmu mēģinājis ignorēt sevi / ignorēt -lrpcntikd, un nekas mani nepārsteidz, ka komanda turpina nākt. Ja jums ir kāds veids, kā mēģināt to bloķēt, es to novērtētu. Priekā

  6.   Sofija Martineza teica

    Kas notiek, ja, izpildot teikumu, simbols> netiek ievietots?

    Vai kāds varētu mani lūdzu vadīt?