Terminal petak: Standardni tok

Dobrodošli u još jedan petak ...

Vrijeme je da upoznate maleni dio terminala. Nakon puno razmišljanja odlučio sam stvoriti post o standardni potoci; Iako će to biti površno, mislim da je to nešto što bi svi trebali znati.

Standardni tok

Standardni tok Sastoji se od nekoliko komunikacijskih kanala između korisnika i terminala. Ovi ulazno / izlazni "kanali" prikazuju ili bilježe informacije kada se izvrši naredba.

Brzi dijagram na standardnim tokovima.

Brzi dijagram na standardnim tokovima.

3 I / O veze su: stdin Standardni ulaz, stdout Standardni izlaz, stderr Standardna pogreška.

stdin: standardni ulaz

Standardni ulaz je način na koji hvatamo podatke iz naredbe bilo putem cijevi, preusmjeravanja, tipkovnice itd. Identificiramo ga s opisom datoteke 0.

Deskriptor je pokazatelj za pristup - u ovom slučaju - ulaznim i izlaznim kanalima. To su int vrijednosti, obično 0, 1 i 2.

Primjer stdina bio bi:

poredati <popis

Uzima sve podatke s popisa - u ovom slučaju brojeve napisane slučajno - i prilikom preusmjeravanja datoteke na naredbu ls sortira numerički popis abecedno. U ovom primjeru zastave su implicitne.

stdout: standardni izlaz

Standardni izlaz, kao što naziv govori, prikazuje izlaz naredbe putem konzole. Ako napišemo jesu li sve informacije koje nam prikazuju na ekranu standardni izlaz. Predstavlja ga deskriptor 1.

Sad ću pokušati stdin i stdout stvoriti skriptom napisanom na bash, jednostavno zato što volim bash hahaha. 🙂

test.sh

#! / bin / bash ako je [-t 0]; zatim odjeknite "Koristite stdout" elif [-t 1]; zatim echo "Koristite stdin" else echo "Brutal error" fi

Sada snimak zaslona koji pokazuje kako se koristi skripta. Pri preusmjeravanju ili korištenju pipe s korištenjem skripte test -t kako bi se znalo izvršava li se samo stdout skripta, a ako nije, očito je stdin.

bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
Dotična skripta i njezini rezultati ...

Dotična skripta i njezini rezultati ...

Ne zaboravite izmijeniti naredbu i vježbati kako biste učili.

stderr: Standardna pogreška

Standardna pogreška način je na koji programi prikazuju pogreške ili dijagnostiku. Predstavlja ga deskriptor 2.

Da bismo razumjeli koncept, situacija je takva: kada želimo spasiti pogrešku iz naredbe, prvo na što pomislimo je preusmjeriti izlaz u običan tekst.

ls> info.txt

To bi uspjelo, podaci o naredbi bit će pohranjeni u običnoj tekstualnoj datoteci. Ali prilikom spremanja pogreške, ona je ne pohranjuje, već je prikazuje na zaslonu, a obična tekstualna datoteka je prazna.

Umjesto toga, ako koristimo 2> za označavanje spremanja stderr u datoteku:

ls foo 2> info.txt

Sada će podatke o pogrešci spremiti u tekstualnu datoteku.

Najviše Ljuska dopustiti da se stderr i stdout pohrane u jednu naredbenu naredbu s &> gdje je Foo nepostojeći direktorij

ls Downloads Foo &> info.txt

Ova će datoteka sadržavati informacije o pogrešci prilikom izvršavanja ls u Foou i popis direktorija u odjeljku Preuzimanja.

I na kraju, što to taj poznati ima 2> & 1?

Jednostavno, preusmjerite stderr na stdout. To & usred> i 1 znači da će preusmjeriti na stdout. Da ga nema, bilo bi nešto poput ... "preusmjerite pogrešku u datoteku 1".

A s ovim je moguće preusmjeriti:

  • stdout u datoteku
  • stderr u datoteku
  • stdout do stderr
  • stderr u stdout
  • stderr i stdout u datoteku
  • među ostalima

To je to za današnje ljude. Čitamo i zahvaljujemo što ste navratili. 😀


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   eliotime3000 dijo

    Zanimljiv. Zahvaljujući vašim vodičima, Bash mi se sviđa mnogo više.

  2.   Quincy magoo dijo

    Poštovani, zanimljivo, međutim, u sljedećem retku imate pogrešku:

    "A prilikom preusmjeravanja datoteke na naredbu ls", trebalo bi biti "i prilikom preusmjeravanja datoteke na naredbu sortiranja".

    Pozdrav.

  3.   Miguel dijo

    Na početku teksta postoji pogreška, kada navedete naredbu "ls", trebala bi biti "sortiraj":
    "Uzmite sve podatke s popisa - u ovom slučaju brojeve napisane slučajno - i preusmjerite datoteku na naredbu ls (ovdje bi bilo sortiranje)"

    Pozdrav i hvala što ste podijelili svoj rad

  4.   cestar dijo

    Ovo je izvrsno za cron, gdje želite da se izlaz ispire (/ dev / null), ali da se pogreške pohranjuju u datoteke. Također, kada to radim, obično koristim naredbu date da bih točno odredio kada nisu uspjeli.

    Bash (sh) ima ove alate tako razvijene od strane Unix filozofije "učinite jedno i to dobro"

  5.   Lolo dijo

    Pa, nisam ništa saznao

    1.    Glas dijo

      Haha dobro to je prilično dobro objašnjeno, što niste razumjeli?