Piektdiena terminālis: standarta straume

Laipni lūdzam citā piektdienā ...

Ir pienācis laiks iepazīt niecīgu termināļa daļu. Pēc ilgām pārdomām es nolēmu izveidot ierakstu par standarta straumes; Lai gan tas būs virspusējs, es domāju, ka tas ir kaut kas, kas jāzina visiem.

Standarta straume

Standarta straume To veido vairāki komunikācijas kanāli starp lietotāju un termināli. Šie ievades / izvades “kanāli” parāda vai uztver informāciju, kad tiek izpildīta komanda.

Ātra diagramma par standarta straumēm.

Ātra diagramma par standarta straumēm.

3 I / O savienojumi ir: stdin Standarta ievade, stdout Standarta izeja, Stderr Standarta kļūda.

stdin: standarta ievade

Standarta ievade ir veids, kā mēs uztveram informāciju no komandas, izmantojot caurules, novirzīšanu, tastatūru utt. Mēs to identificējam ar faila deskriptoru 0.

Apraksts ir indikators, lai piekļūtu ieejas un izejas kanāliem. Tās ir int vērtības, parasti 0, 1 un 2.

Stdin piemērs būtu:

kārtot <saraksts

Tas aizņem visu sarakstā esošo informāciju - šajā gadījumā nejauši uzrakstītos skaitļus - un, novirzot failu uz komandu ls, tas sakārto skaitlisko sarakstu alfabētiskā secībā. Šajā piemērā karodziņi ir netieši.

stdout: standarta izeja

Standarta izvade, kā norāda tās nosaukums, parāda komandas izvadi, izmantojot konsoli. Ja mēs rakstām ls, visa informācija, ko tā mums parāda ekrānā, ir standarta izeja. To attēlo 1. deskriptors.

Tagad es mēģināšu instinēt stdin un stdout ar skriptu, kas rakstīts bash, vienkārši tāpēc, ka man patīk bash hahaha. 🙂

test.sh

#! / bin / bash ja [-t 0]; tad atbalss "Jūs izmantojat stdout" elif [-t 1]; tad atbalss "Jūs izmantojat stdin", citādi atbalss "Brutāla kļūda" fi

Tagad ekrānuzņēmums, kas parāda, kā izmantot skriptu. Novirzot vai izmantojot cauruli ar skriptu, izmantojiet tests -t lai uzzinātu, vai tiek izpildīts tikai stdout skripts, un ja nē, tas ir acīmredzami stdin.

bash tests.sh ls | bash test.sh bash test.sh </ etc / passwd
Attiecīgais skripts un tā rezultāti ...

Attiecīgais skripts un tā rezultāti ...

Atcerieties modificēt komandu un praktizēt, lai jūs mācītos.

stderr: Standarta kļūda

Standarta kļūda ir veids, kā programmas parāda kļūdas vai diagnostiku. To attēlo 2. deskriptors.

Lai saprastu jēdzienu, tā ir situācija: kad mēs vēlamies saglabāt kļūdu no komandas, vispirms mēs domājam izvadi novirzīt uz vienkāršu tekstu.

ls> info.txt

Tas darbotos, komandu informācija tiks saglabāta vienkārša teksta failā. Bet, saglabājot kļūdu, tā to neglabā, bet parāda to ekrānā, un teksta fails ir tukšs.

Tā vietā, ja mēs izmantojam 2>, lai norādītu faila stderr saglabāšanu:

ls foo 2> info.txt

Tagad tas saglabās informāciju par kļūdu teksta failā.

Visvairāk Apvalks atļaut stderr un stdout saglabāt vienā komandas komandā ar &> kur Foo ir neeksistējošs direktorijs

Lejupielādes Foo &> info.txt

Šajā failā būs informācija par kļūdu, palaižot ls Foo, un direktoriji tiks uzskaitīti sadaļā Lejupielādes.

Un visbeidzot, ko dara tas slavenais 2> & 1?

Vienkārši novirziet stderr uz stdout. Tas & vidū> un 1 nozīmē, ka tas novirzīs uz stdout. Ja tā nebūtu, tas būtu kaut kas līdzīgs ... "novirzīt kļūdu uz failu 1".

Un ar to ir iespējams novirzīt:

  • stdout uz failu
  • stderr uz failu
  • stdout uz stderr
  • stderr līdz stdout
  • stderr un stdout failā
  • cita starpā

Tas tā ir šodienas cilvēkiem. Mēs lasām un pateicamies par apstāšanos. 😀


6 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.   3000 teica

    Interesanti. Pateicoties jūsu apmācībām, man Bash patīk daudz vairāk.

  2.   Quincy magoo teica

    Cienījamie, interesanti, tomēr jums ir kļūda šādā rindā:

    "Un, novirzot failu uz komandu ls", tam vajadzētu būt "un, novirzot failu uz komandu sort".

    Sveiciens.

  3.   Miguel teica

    Teksta sākumā ir kļūda, norādot komandu «ls», tai jābūt «kārtot»:
    "Tas aizņem visu informāciju, kas ir sarakstā - šajā gadījumā nejauši rakstītos skaitļus - un, novirzot failu uz komandu ls (šeit tas būtu kārtojums)"

    Sveiciens un paldies par dalīšanos savā darbā

  4.   ceļinieks teica

    Tas ir lieliski piemērots cron, kur vēlaties izvadi izskalot (/ dev / null), bet kļūdas glabāt failos. Turklāt, kad es to daru, es parasti izmantoju komandu date, lai precīzi norādītu, kad tie neizdevās.

    Basham (sh) ir šādi Unix filozofijas izstrādātie rīki "dari vienu un dari to labi"

  5.   Lolo teica

    Nu neko neesmu uzzinājis

    1.    Balss teica

      Haha labi tas ir izskaidrots diezgan labi, ko tu neesi sapratis?