Terminal vineri: flux standard

Bine ați venit la o altă vineri ...

Este timpul să cunoaștem o mică parte a terminalului. După ce m-am gândit mult, am decis să creez o postare despre fluxuri standard; Deși va fi superficial, cred că este ceva ce ar trebui să știe toată lumea.

Flux standard

Flux standard Este alcătuit din mai multe canale de comunicare între utilizator și terminal. Aceste „canale” de intrare / ieșire afișează sau captează informații atunci când se execută o comandă.

Diagrama rapidă pe fluxurile standard.

Diagrama rapidă pe fluxurile standard.

Cele 3 conexiuni I / O sunt: stdin Intrare standard, stdout Iesire standard, stderr Eroare standard.

stdin: Intrare standard

Intrarea standard este modul în care captăm informații dintr-o comandă, fie prin conducte, redirecționare, tastatură etc. Îl identificăm cu descriptorul de fișier 0.

Descriptorul este un indicator pentru a accesa - în acest caz - canalele de intrare și ieșire. Acestea sunt valori int, de obicei 0, 1 și 2.

Un exemplu de stdin ar fi:

sortare <listare

Este nevoie de toate informațiile din listă - în acest caz numerele scrise aleatoriu - și atunci când redirecționează fișierul către comanda ls, sortează lista numerică în ordine alfabetică. În acest exemplu, steagurile sunt implicite.

stdout: ieșire standard

Ieșirea standard, după cum sugerează și numele său, afișează ieșirea unei comenzi prin intermediul consolei. Dacă scriem toate informațiile pe care ni le arată pe ecran este ieșirea standard. Este reprezentat de descriptorul 1.

Acum voi încerca să instanțiez stdin și stdout cu un script scris în bash, pur și simplu pentru că îmi place bash hahaha. 🙂

test.sh

#! / bin / bash if [-t 0]; apoi ecou „Folosești stdout” elif [-t 1]; apoi ecou „Folosești stdin” altfel ecou „Eroare brutală” fi

Acum o captură de ecran care demonstrează modul de utilizare a scriptului. Când redirecționați sau utilizați o conductă cu ajutorul scriptului test -t pentru a ști dacă este executat doar scriptul stdout și dacă nu este evident stdin.

bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
Scenariul în cauză și rezultatele sale ...

Scenariul în cauză și rezultatele sale ...

Nu uitați să modificați comanda și să exersați pentru a învăța.

stderr: Eroare standard

Eroarea standard este modul în care programele afișează erori sau diagnostice. Este reprezentat de descriptorul 2.

Pentru a înțelege conceptul, aceasta este situația: atunci când vrem să salvăm o eroare de comandă, primul lucru la care ne gândim este să redirecționăm ieșirea către text simplu.

ls> info.txt

Acest lucru ar funcționa, informațiile de comandă vor fi stocate într-un fișier text simplu. Dar atunci când salvați eroarea, nu o stochează, dar o afișează pe ecran, iar fișierul text simplu este gol.

În schimb, dacă folosim 2> pentru a indica salvarea stderr în fișier:

ls foo 2> info.txt

Acum va salva informațiile despre eroare în fișierul text.

Cele mai multe Coajă permite stderr și stdout să fie stocate într-o singură comandă de comandă cu &> unde Foo este un director inexistent

Descărcări ls Foo &> info.txt

Acest fișier va conține informațiile despre eroare atunci când se execută ls în Foo și va afișa directoarele sub Descărcări.

Și, în sfârșit, ce face faimosul asta? 2> & 1?

Simplu, redirecționează stderr către stdout. Asta și în mijlocul> și 1 înseamnă că va redirecționa către stdout. Dacă nu ar fi acolo, ar fi ceva de genul ... „redirecționează eroarea către fișierul 1”.

Și cu aceasta este posibilă redirecționarea:

  • stdout într-un fișier
  • stderr la un fișier
  • stdout to stderr
  • stderr to stdout
  • stderr și stdout într-un fișier
  • printre altele

Asta e pentru oamenii de astăzi. Citim și vă mulțumim că ați trecut pe aici. 😀


6 comentarii, lasă-le pe ale tale

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   eliotime3000 el a spus

    Interesant. Datorită tutorialelor dvs., îmi place mult mai mult Bash.

  2.   Quincy magoo el a spus

    Dragă, interesantă, totuși aveți o eroare în următoarea linie:

    „Și când redirecționați fișierul către comanda ls”, ar trebui să fie „și când redirecționați fișierul către comanda sort”.

    Un salut.

  3.   Miguel el a spus

    Există o eroare la începutul textului, când indicați comanda „ls”, ar trebui să fie „sort”:
    «Este nevoie de toate informațiile din listă - în acest caz numerele scrise aleatoriu - și atunci când redirecționează fișierul către comanda ls (aici ar fi sortat)»

    Salutări și mulțumiri pentru partajarea muncii tale

  4.   rutier el a spus

    Acest lucru este excelent pentru cron, unde doriți ca ieșirea să fie spălată (/ dev / null), dar erorile să fie stocate în fișiere. De asemenea, când fac acest lucru, folosesc de obicei comanda date pentru a specifica exact când au eșuat.

    Bash (sh) are aceste instrumente atât de dezvoltate de filosofia Unix „faceți un lucru și faceți-l bine”

  5.   Lolo el a spus

    Ei bine, nu am aflat nimic

    1.    Voce el a spus

      Haha bine se explică destul de bine, ce nu ai înțeles?