E premtja terminale: Rryma standarde

Mirësevini në një të premte tjetër ...

Timeshtë koha për të njohur një pjesë të vogël të terminalit. Pas shumë mendimesh vendosa të krijoj një postim rreth rrjedhat standarde; Edhe pse do të jetë sipërfaqësore, mendoj se është diçka që të gjithë duhet ta dinë.

Rryma standarde

Rryma standarde Ai përbëhet nga disa kanale komunikimi midis përdoruesit dhe terminalit. Këto "kanale" të Input / Output shfaqin ose kapin informacionin kur ekzekutohet një komandë.

Diagram i shpejtë në rrjedhat standarde.

Diagram i shpejtë në rrjedhat standarde.

3 lidhjet I / O janë: stdin Hyrja standarde, stdout Prodhimi standard, stderr Gabim standard.

stdin: Hyrja standarde

Hyrja standarde është mënyra në të cilën kapim informacionin nga një komandë, qoftë përmes tubave, ridrejtimit, tastierës, etj. Ne e identifikojmë atë me përshkruesin e skedarit 0.

Përshkruesi është një tregues për të hyrë - në këtë rast - në kanalet hyrëse dhe dalëse. Këto janë vlera int, zakonisht 0, 1 dhe 2.

Një shembull i stdin do të ishte:

rendit <renditja

Merr të gjithë informacionin që është në listë - në këtë rast numrat e shkruar rastësisht - dhe kur ridrejton skedarin te komanda ls, ajo rendit listën numerike në mënyrë alfabetike. Në këtë shembull flamujt janë nënkuptuar.

stdout: Dalja standarde

Dalja standarde, siç nënkupton vetë emri i saj, tregon prodhimin e një komande përmes konsolës. Nëse shkruajmë ls të gjithë informacionin që na tregon në ekran është prodhimi standard. Ajo përfaqësohet nga përshkruesi 1.

Tani do të përpiqem të them stdin dhe stdout me një skenar të shkruar në bash, thjesht sepse e dua bash hahaha. 🙂

provë.sh

#! / bin / bash nëse [-t 0]; pastaj jehonë "You are using stdout" elif [-t 1]; atëherë jehona "Ju jeni duke përdorur stdin" tjetër jehonë "Gabim brutal" fi

Tani një pamje e ekranit që demonstron se si të përdoret skenari. Kur ridrejtoni ose përdorni një tub me përdorimin e shkrimit provë -t për të ditur nëse ekzekutohet vetëm skenari stdout, dhe nëse jo është padyshim stdin.

provë bash.sh ls | provë bash.sh provë bash.sh </ etc / passwd
Skenari në fjalë dhe rezultatet e tij ...

Skenari në fjalë dhe rezultatet e tij ...

Mos harroni të modifikoni komandën dhe praktikën në mënyrë që të mësoni.

stderr: Gabim standard

Gabimi Standard është mënyra se si programet shfaqin gabime ose diagnostikime. Ajo përfaqësohet nga përshkruesi 2.

Për të kuptuar konceptin, kjo është situata: kur duam të ruajmë një gabim nga një komandë, gjëja e parë që mendojmë është të ridrejtojmë prodhimin në një tekst të thjeshtë.

ls> info.txt

Kjo do të funksiononte, informacioni i komandës do të ruhet në një skedar teksti të thjeshtë. Por kur ruani gabimin, ai nuk e ruan atë, por e tregon atë në ekran dhe skedari i tekstit të thjeshtë është bosh.

Në vend të kësaj nëse përdorim 2> për të treguar ruajtjen e stderr në skedar:

ls foo 2> info.txt

Tani do të ruajë informacionin e gabimit në skedarin e tekstit.

Shumica e Predhë lejoni që stderr dhe stdout të ruhen në një komandë të vetme me &> ku Foo është një direktori jo-ekzistente

ls Shkarkime Foo &> info.txt

Kjo skedar do të përmbajë informacionin e gabimit kur ekzekuton ls në Foo dhe do të rendisë drejtoritë nën Shkarkimet.

Dhe së fundmi, çfarë bën ajo e famshme 2> & 1?

Thjeshtë, ridrejtoni stderr në stdout. Kjo & në mes të> dhe 1 do të thotë se do të ridrejtohet në stdout. Nëse nuk do të ishte aty, do të ishte diçka si ... "ridrejtoni gabimin në skedarin 1".

Dhe me këtë është e mundur të ridrejtoni:

  • stdout në një skedar
  • stderr në një skedar
  • stdout te stderr
  • stderr në stdout
  • stderr dhe stdout në një skedar
  • ndër të tjera

Kjo është ajo për njerëzit sot. Ne lexojmë dhe ju falënderojmë për ndalimin nga. 😀


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   eliotime3000 dijo

    Interesante. Falë udhëzimeve tuaja, unë po e pëlqej Bashin shumë më tepër.

  2.   Quincy magoo dijo

    I dashur, interesant, megjithatë keni një gabim në rreshtin vijues:

    "Dhe kur ridrejtoni skedarin te komanda ls", duhet të jetë "dhe kur ridrejtoni skedarin te komanda e llojit".

    Një përshëndetje.

  3.   Miguel dijo

    Ekziston një gabim në fillim të tekstit, kur ju tregoni komandën "ls", duhet të jetë "lloj":
    "Merrni të gjithë informacionin që është në listë - në këtë rast numrat e shkruar në mënyrë të rastësishme - dhe ridrejtoni skedarin te komanda ls (këtu do të ishte lloj)"

    Përshëndetje dhe faleminderit për ndarjen e punës tuaj

  4.   udhëtar dijo

    Kjo është e shkëlqyeshme për cron, ku dëshironi që dalja të skuqet (/ dev / null) por gabimet të ruhen në skedarë. Gjithashtu, kur e bëj këtë, unë zakonisht përdor komandën data për të specifikuar saktësisht kur ato dështuan.

    Bash (sh) i ka këto mjete të zhvilluara kaq shumë nga filozofia Unix "bëj një gjë, dhe bëje mirë"

  5.   lol dijo

    Epo, nuk kam zbuluar asgjë

    1.    Zëri dijo

      Haha mirë është shpjeguar mjaft mirë, çfarë nuk keni kuptuar?