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.
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.
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
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. 😀
Abin sha'awa. Godiya ga koyarwar ku, Ina son Bash sosai.
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.
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
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"
To ban gano komai ba
Haha anyi bayani sosai, menene baku fahimta ba?