Terminal Friday: Daidaita Rafi

Barka da zuwa wata Juma'a ...

Lokaci yayi da za a san karamin yanki na tashar. Bayan dogon tunani sai na yanke shawarar ƙirƙirar matsayi game da daidaitattun rafuffuka; Kodayake zai kasance na sama ne, amma ina tsammanin abu ne da ya kamata kowa ya sani.

Daidaita Rafi

Daidaita Rafi Ya ƙunshi hanyoyin sadarwa da yawa tsakanin mai amfani da tashar. Waɗannan “hanyoyin” shigarwa / fitarwa suna nuna ko kama bayanai lokacin da aka aiwatar da umarni.

Saurin zane akan daidaitattun koramu.

Saurin zane akan daidaitattun koramu.

Haɗin 3 I / O sune: stdin Daidaitaccen shigarwar, stdout Daidaitaccen fitarwa, stderr Kuskuren kuskure.

stdin: Daidaitaccen labari

Daidaitaccen shigar da hanya ita ce hanyar da muke kama bayanai daga umarni, ko dai ta bututu, juyarwa, madannin rubutu, da sauransu. Mun gano shi tare da mai bayanin fayil 0.

Mai bayyanawa manuniya ne don samun damar -a wannan yanayin - hanyoyin shigarwa da fitarwa. Waɗannan ƙimar int ne, yawanci 0, 1, da 2.

Misalin stdin shine:

warware <jerin

Yana ɗaukar duk bayanan da ke cikin jeri - a wannan yanayin lambobin da aka rubuta bazuwar - kuma lokacin da ake tura fayil ɗin zuwa umarnin ls, yana tsara jerin lambobi a haruffa. A cikin wannan misalin alamun suna cikin fakaice.

stdout: Matsakaicin fitarwa

Matsakaicin fitarwa, kamar yadda sunan sa ya nuna, yana nuna fitowar umarni ta hanyar na'ura mai kwakwalwa. Idan muka rubuta ls duk bayanan da yake nuna mana akan allon shine daidaitaccen fitarwa. Mai ba da labari 1 ne ya wakilce shi.

Yanzu zanyi kokarin sanya stdin da stdout tare da rubutun da aka rubuta cikin bash, saboda kawai ina son bash hahaha. 🙂

gwada.sh

#! / bin / bash idan [-t 0]; to amsa kuwwa "Kana amfani da stdout" elif [-t 1]; sa'an nan amsa kuwwa "Kana amfani da stdin" sai kuma amsa kuwwa "Kuskuren kuskure" fi

Yanzu hotunan allo wanda ke nuna yadda ake amfani da rubutun. Lokacin turawa ko amfani da bututu tare da amfani da rubutun gwada -t don sanin idan kawai za'ayi rubutun stdout, kuma idan ba haka ba a bayyane yake.

bash gwada.sh ls | bash gwada.sh bash test.sh </ sauransu / passwd
Rubutun da ake magana akai da kayan aikinsa ...

Rubutun da ake magana akai da kayan aikinsa ...

Ka tuna gyara umarni da aikatawa don koya.

stderr: daidaitaccen kuskure

Kuskuren Kuskure shine hanyar shirye-shirye don nuna kurakurai ko bincike. Mai kwatancen 2 ne ya wakilce shi.

Don fahimtar batun, wannan shine halin da muke ciki: lokacin da muke so mu adana kuskure daga umarni, abu na farko da muke tunani akai shine tura turaren zuwa rubutu bayyananne.

ls> info.txt

Wannan zai yi aiki, za a adana bayanan umarnin a cikin fayil ɗin rubutu bayyananne. Amma yayin adana kuskuren, ba ya adana shi, amma yana nuna shi akan allon kuma fayil ɗin rubutu mara kyau babu komai.

Maimakon haka idan muka yi amfani da 2> don nuna don adana stderr a cikin fayil ɗin:

ls foo 2> info.txt

Yanzu zai adana bayanan kuskure a cikin fayil ɗin rubutu.

Mafi yawan Shell ba da izinin stderr da stdout a adana su a cikin umarnin umarni guda tare da &> inda Foo babu kundin adireshi

ls Saukewa Foo &> info.txt

Wannan fayil ɗin zai ƙunshi bayanin game da kuskure yayin gudanar ls akan Foo kuma zai lissafa kundin adireshi a ƙarƙashin Saukewa.

Kuma a ƙarshe, menene wannan sanannen 2> & 1?

Mai sauƙi, tura stderr zuwa stdout. Wannan & a tsakiyar> kuma 1 yana nufin zai juya zuwa stdout. Idan ba a wurin ba, zai zama wani abu kamar ... "tura kuskuren zuwa fayil 1".

Kuma da wannan yana yiwuwa a sake turawa:

  • stdout zuwa fayil
  • stderr zuwa fayil
  • stdout zuwa stderr
  • stderr zuwa stdout
  • stderr da stdout zuwa fayil
  • a tsakanin wasu

Shi ke nan yau mutane. Mun karanta kuma mun gode da tsayawa. 😀


Bar tsokaci

Your email address ba za a buga. Bukata filayen suna alama da *

*

*

  1. Wanda ke da alhakin bayanan: Miguel Ángel Gatón
  2. Manufar bayanan: Sarrafa SPAM, sarrafa sharhi.
  3. Halacci: Yarda da yarda
  4. Sadarwar bayanan: Ba za a sanar da wasu bayanan ga wasu kamfanoni ba sai ta hanyar wajibcin doka.
  5. Ajiye bayanai: Bayanin yanar gizo wanda Occentus Networks (EU) suka dauki nauyi
  6. Hakkoki: A kowane lokaci zaka iyakance, dawo da share bayanan ka.

  1.   lokacin3000 m

    Abin sha'awa. Godiya ga koyarwar ku, Ina son Bash sosai.

  2.   Quincy magoo m

    Masoyi, mai ban sha'awa, duk da haka kuna da kuskure a cikin layi mai zuwa:

    "Kuma yayin juya fayil ɗin zuwa umarnin ls", yakamata ya zama "kuma yayin sake tura fayil ɗin zuwa nau'in umarni".

    A gaisuwa.

  3.   Miguel m

    Akwai kuskure a farkon rubutun, lokacin da kuke nuna umarnin "ls", yakamata ya zama "iri":
    "Yana daukar duk bayanan da ke cikin jerin - a wannan yanayin lambobin da aka rubuta bazuwar-, kuma lokacin da aka tura fayil din zuwa umarnin ls (a nan zai zama daidai)"

    Gaisuwa da godiya ga raba aikinku

  4.   mai bin hanya m

    Wannan yana da kyau ga cron, inda kuke son fitarwa (/ dev / null) amma kurakuran da za'a adana su cikin fayiloli. Hakanan, lokacin da nayi wannan, yawanci nakanyi amfani da umarnin kwanan wata don tantance takamaiman lokacin da suka gaza.

    Bash (sh) yana da waɗannan kayan aikin wanda falsafar Unix ta haɓaka "kuyi abu ɗaya, kuma kuyi shi da kyau"

  5.   Lolo m

    To ban gano komai ba

    1.    Murya m

      Haha anyi bayani sosai, menene baku fahimta ba?