A Linux / Unix Command Yarda

Bugawa shine shirin da ke magana da wasu shirye-shiryen hulda tare da rubutun. Biyan rubutun, Sa ran sanin abin da za a iya sa ran daga shirin kuma abin da ya kamata daidai ya kamata. Harshen yare yana samar da mahimmanci da maɗaukakiyar kulawa don kula da maganganu. Bugu da ƙari, mai amfani zai iya daukar iko da hulɗa kai tsaye lokacin da ake so, sa'annan ya dawo da iko zuwa rubutun.

Tsammani shine cakuda Tsammani da Tk. Yana nuna hali kamar fata da fatan Tk. Tsammani za a iya amfani dashi a C ko C ++ ba tare da Tcl ba.

Sunan "Sa ran" ya fito ne daga ra'ayin aikawa / tsammanin sakonnin uucp, kermit da sauran tsarin kula da modem. Duk da haka dai ba kamar uucp ba, An yi tsammanin yana da hanzari don ya iya aiki a matsayin jagorar mai amfani da kowane shirin da aiki a zuciyarsa. Yi fatan za ku iya magana da shirye-shirye da yawa a lokaci guda.

Abin da ake tsammani zai iya yi

Alal misali, a nan akwai wasu abubuwa da ka'idodin jiragen zai iya yi:

Akwai dalilai da dama da ya sa harsashi ba zai iya yin waɗannan ayyuka ba. Dukkanan zasu yiwu tare da Ganin.

Gaba ɗaya, Tsammani yana da amfani ga gudanar da kowane shirin da ke buƙatar haɗin kai tsakanin shirin da mai amfani. Duk abin da ya wajaba shi ne cewa haɗuwa za a iya halaye a cikin shirin. Sake tsammanin zai iya ba da damar dawo da mai amfani ba tare da dakatar da shirin ba. Hakazalika, mai amfani zai iya dawo da kariya ga rubutun a kowane lokaci.

Amfani

Yi tsammanin karanta cmdfile don jerin umurnai don kashewa. Za a iya sa ran tsammanin a kan tsarin da ke goyi bayan #! sanarwa ta hanyar rubutun rubutun kamar yadda ake aiwatarwa kuma yin layin farko a rubutun:

#! / usr / gida / bin / sa ran -f

Tabbas, hanyar dole ne a kwatanta daidai inda ake tsammani rayuka. / usr / gida / bin ne kawai misali.

A -c flag ya kaddamar da umurni da za a kashe kafin wani a rubutun. Dole a nakalto umarni don hana yin kwaskwarima. Za'a iya amfani da wannan zaɓi sau da yawa. Ana iya kashe umarnin da dama tare da guda -c ta hanyar raba su tare da semicolons. An kashe umarnin a cikin umurnin da suke bayyana. Lokacin amfani da Tsammani, wannan zaɓi an ƙayyade azaman-umarni.

Ƙa'idar -d ta sa wasu samfurin bincike, wanda shine da farko ya bada rahoton ayyuka na ciki irin su sa ran da kuma hulɗa. Wannan tutar tana da tasiri guda kamar "exp_internal 1" a farkon rubutun Lura, tare da version of Expect an buga.

Ƙafin -D ɗin yana ba da damar haɓaka mai amfani. Dole ne adadin lamba ya bi. Mai haɗari zai dauki iko kafin aikin Tcl na gaba idan darajar ba ta da siffar ko kuma idan aka danna C ko kuma an yi nasara, ko kuma wani umurni da ya dace da buƙata ya bayyana a rubutun. Lokacin amfani da Tsammani, wannan zaɓi an ƙayyade shi - Debug.

The -f flag ya tsara fayil daga abin da zai karanta umarnin. Tilan kanta yana da zaɓi ne kawai saboda yana da amfani kawai lokacin amfani da #! sanarwa, don haka za a iya kawo wasu muhawara a kan layin umarni. Lokacin yin amfani da Tsammani, wannan zaɓi an ƙayyade as -file.

Ta hanyar tsoho, an karanta fayil ɗin umarni cikin ƙwaƙwalwar ajiya kuma an kashe shi gaba ɗaya. Yana da kyawawan lokaci don karanta fayiloli ɗaya layi a lokaci guda. Domin yin amfani da fayiloli masu jituwa don amfani da wannan hanyar, yi amfani da -b flag. Lokacin yin amfani da Tsammani, wannan zaɓi an ƙayyade azaman -buffer.

Idan an ba da layin "-" a matsayin sunan filename, an shigar da rubutu mai kyau a maimakon. Yi amfani da "./-" don karanta daga fayil da ake kira "-".

A-flag din Yana sa ran zartar da umarni tare da juna tare da ba tare da karanta su daga fayil ba. An ƙaddamar da ƙaddamar ta hanyar umurnin fita ko a kan EOF. An saita flag din idan ba a yi amfani da fayil din umarni -c ba. Lokacin yin amfani da Ƙira, wannan zaɓi an ƙayyade as -interactive.

- za a iya amfani dashi don rage ƙarshen zaɓuɓɓuka. Wannan yana da amfani idan kuna son gabatar da hujja kamar yadda za a yi a cikin rubutunku ba tare da an fassara ta ba. Ana iya amfani da wannan a cikin #! layin don hana kowane fasalin fasali ta Tsammani. Alal misali, waɗannan masu biyo baya za su bar asali na asali ciki har da sunan rubutun a cikin m argv .

#! / usr / gida / bin / sa ran -

Ka lura da cewa za a lura da sababbin ka'idoji (3) da kuma aiwatar da (2) tarurruka idan kun ƙara da muhawara ga #! layi.

Fayil ɗin $ exp_library / expect.rc an ƙara ta atomatik idan akwai, sai dai idan ana amfani da tutar -N. (A lokacin da ake amfani da Tsammani, wannan zaɓi ya ƙayyade -NORC.) Nan da nan bayan wannan, fayil ɗin ~ / .expect.rc an buga ta atomatik, sai dai idan an yi amfani da-flag. Idan an kwatanta DOTDIR yanayi, ana bi da shi a matsayin shugabanci kuma .expect.rc an karanta daga can. Lokacin yin amfani da Tsammani, wannan zaɓi an ƙayyade azaman -norc. Wannan ƙararrawa yana faruwa ne kawai bayan aiwatar da kowane -c flags.

-v Yana sa ran bugawa da lambar da aka fitar da fita. Fitar da ta dace a Expectk, wadda take amfani da sunaye masu tsawo, ita ce juyawa.

An tsara jeri na zaɓin cikin jerin kuma an adana su a madadin mai suna argv da. An ƙaddamar da argc zuwa tsawon argv.

An bayyana Argv0 shine sunan rubutun ko binary idan babu amfani da rubutun. Alal misali, wadannan suna fitar da sunan rubutun da farko na muhawara guda uku:

send_user "$ argv0 [lada $ argv 0 2] \ n"

Umurnai

Yi tsammanin amfani da Harshen Gudanarwa Tool. Tcl yana samar da tsarin sarrafawa (idan, don, karya), ƙididdigar magana da wasu siffofi daban-daban kamar su maimaita fassarar hanya da kuma hanya. Umurni da aka yi amfani da su amma ba a bayyana (saita ba, idan, exec) su ne dokokin Tcl. Yi tsammanin yana goyon bayan ƙarin umarnin. Sai dai idan ba a kayyade shi ba, umarnin dawo da igiya maras kyau.

Umurni ana lissafa su a haɗe-haɗe don haka za su iya zama da sauri. Duk da haka, sababbin masu amfani zasu iya sauƙaƙe don farawa ta hanyar karanta fassarar launi, aika, sa ran, da kuma hulɗa, a cikin wannan tsari.

kusa [-slave] [-onexec 0 | 1] [-i spawn_id]

rufe hanyar haɗi zuwa tsari na yanzu. Mafi yawan shirye-shiryen haɗi za su gano EOF a kan su stdin da fita; Ta haka ne yawanci ya isa ya kashe tsarin . A-flag ta bayyana tsarin don rufe daidai da sunan mai suna spawn_id.

Dukansu suna jira da yin hulɗa za su gane lokacin da tsari na yanzu ya fita kuma a fili ya yi kusa, amma idan kun kashe tsarin ta, sai ku ce, "kashe kashe dala", kana buƙatar kira a kusa .

Kullin -onexec ya ƙayyade ko an sami spawn id a kowane sabon tsari wanda aka cire ko kuma idan an rufe tsarin . Don barin bude idon spawn, yi amfani da darajan 0. Ƙaramar magungunan ƙira ba tare da haɗin zane ba wanda ya rufe a cikin kowane sabon matakai.

Alamar -slave ta rufe bawan da ke hade da spawn id. Lokacin da haɗin ke rufe, bawa yana rufe ta atomatik kuma idan har yanzu yana buɗewa.

Komai koda an haɗu da haɗuwa a fili ko a bayyane, ya kamata ka yi kira jira don share sama da tsari na kernel daidai. Dokar kusa ba ta kira tsayawa ba saboda babu tabbacin cewa rufe hanyar haɗi zai sa ya fita.

debug [[know] 0 | 1]

Sarrafa mai sarrafa Tcl yana ba ka damar shigarwa ta hanyar maganganun da kuma kafa wuraren shafewa.

Ba tare da wata hujja ba, an dawo da 1 idan mai kashewa bai gudana, in ba haka ba an dawo da 0.

Tare da gardama na 1, an fara debugger. Tare da gardama na 0, an dakatar da debugger. Idan an yi gardama ta farko a kan tuni-flag, to an fara farawa da sauri. In ba haka ba, an fara sashin mai layi tare da bayanin Tcl na gaba.

Dokar hadayar ba ta canza kowane tarkon ba. Yi kwatankwacin wannan don fara Fara jira tare da -D flag.

Dokar cirewa ta cire haɗin tsari da aka yi izini daga m . Yana ci gaba da gudana a bango. Ana ba da tsari ga rukunin tsari. Ana ba da umarnin I / O na I / O zuwa / dev / null .

Kashi na gaba yana amfani da cirewa don ci gaba da gudana rubutun a bango.

idan {fork]! = 0} fita fita. . .

Wannan rubutun ya karanta wani kalmar sirri sannan kuma ya gudanar da shirin kowace awa da ke buƙatar kalmar sirri a duk lokacin da yake gudana. Rubutun yana ba da kalmar sirri don haka kawai dole ka rubuta shi sau ɗaya.

Send_user "kalmar sirri? \" expect_user -re "(. *) \ n" don {} 1 {} {idan {[tawada]! = 0} {barci 3600; ci gaba} cire haɗin spawn priv_prog zaton Kalmar sirri: aika "$ expect_out ( 1, kirtani) \ r ". . . fita}

Amfani da amfani da cire haɗin kan aiwatar da asynchronous harshe (&) shi ne cewa tsammanin zai iya ajiye matakan sigina kafin a cire haɗin kuma daga bisani ya yi amfani da su zuwa sabon ptys. Tare da &, Yi tsammani ba shi da damar karanta ƙididdigar mota tun lokacin da alamar ta rigaya ta katse ta lokacin Lokaci yana karɓar iko.

fita [-opts] [matsayi]

yana sa ran fita ko in ba haka ba don shirya haka.

Siffar -onexit ta sa aka yi amfani da gardama na gaba a matsayin jagorar mai fita. Ba tare da wata hujja ba, an sake dawo da mai kulawa na yanzu.

Hanyoyin da ba a san su ba suna sa ido don fita amma sun dakatar da sake dawo da iko ga tsarin aiki. Mai amfani da aka ƙayyade mai amfani da aka yi amfani da shi yana gudana tare da masu tsammanin masu nasu na ciki. Babu ƙarin Ana tsammanin umarnin ya kamata a kashe. Wannan yana da amfani idan kuna gudana Bugawa tare da sauran ƙarin Tcl. Mai fassara na yanzu (da kuma babban taga idan a yanayin Tk) ya kasance don haka sauran kariyar Tcl na iya tsabtace. Idan an sake kiran fitar da jirage (duk da haka wannan zai iya faruwa), baza a sake juyawa masu aiki ba.

Bayan ya fita, duk haɗin haɗuwa zuwa hanyoyin ƙaddamarwa suna rufe. Kulle za a iya gano shi a matsayin EOF ta hanyar gyaran matakai. fita baya ɗaukar wasu ayyuka fiye da abin da al'ada na al'ada (2) yayi. Saboda haka, hanyoyin da ba a duba don EOF zai ci gaba da gudu ba. (Yawancin yanayi yana da mahimmanci don ƙayyade, alal misali, abin da alamun sakonni za a aika, amma waɗannan suna dogara da tsarin, wanda aka rubuta a karkashin fitowar (3).) Tsarin da aka ci gaba da gudana za a gaji da shi.

matsayi (ko 0 idan ba a ƙayyade ba) an mayar da shi azaman matsayin fita daga Hasashen . An kashe kisa a fili idan ƙarshen rubutun ya isa.

exp_continue [-continue_timer]
Dokar exp_continue tana sa ran zata cigaba da aiwatarwa maimakon dawowa yadda ya kamata. Ta hanyar tsoho exp_continue zata sake saita lokaci na lokaci. Halin -continue_timer ya hana timer daga sake farawa. (Duba sa ran ƙarin bayani.)

exp_internal [-f file] darajar
yana sa ƙarin umarni don aika bayanan bincike a ciki don sa ran stderr idan darajar ba zera bane. An kashe wannan fitarwa idan darajar ta kasance 0. Bayanan bincike ya haɗa da kowane hali da aka karɓa, da kuma ƙoƙarin da aka yi don daidaita abin da ya dace a yanzu game da alamu.

Idan an samar da fayil na zaɓi, duk kayan sarrafawa na al'ada da lalacewa an rubuta shi zuwa wannan fayil (duk da la'akari da darajar darajar ). Duk wani fayil na samfurin bincike na baya an rufe shi.

Alamar sanannen-faɗakarwa ta haifar da exp_internal don dawo da bayanin irin abubuwan da aka ba da kwanan nan ba tare da bayanin ba.

exp_open [args] [-i spawn_id]
ya dawo mai gano fayil na Tcl wanda ya dace da asalin asali na asali. Ana iya amfani da maƙallan fayilolin ne kamar yadda aka bude ta hanyar bude umarni na Tcl. (Kada a yi amfani da spawn id ɗin. Kada a yi jinkirin jirage .

A -leaveopen flag ya bar spawn id bude don samun dama ta hanyar Buga umarnin. Dole ne a yi jinkirin jirage a idon spawn id.

exp_pid [-i spawn_id]
ya sake dawo da madaidaicin tsari daidai da tsari na yanzu. Idan ana amfani da tutar, ana juyar da murfin da ya dace da abin da aka ba dakin da aka ba shi.

exp_send
ne alias don aikawa .

exp_send_error
ne alias don aika_error .

exp_send_log
ne alias don aikawa .

exp_send_tty
ne alias don aika_tty .

exp_send_user
ne alias don aika_user .

exp_version [[-exit] version]
yana da amfani don tabbatar da cewa rubutun ya dace da halin yanzu na tsammanin.

Ba tare da wata hujja ba, an sake dawo da halin yanzu na Sake . Wannan ƙila za a iya sanya shi a cikin rubutunku. Idan kun san cewa ba ku yin amfani da fasali na 'yan kwanan nan, za ku iya tantance fasalin baya.

Sifofin sun hada da lambobi uku da aka raba ta dige. Na farko shi ne babban adadi. Rubutun rubutu da aka rubuta don sigogin Sake tsammanin tare da wani babban adadi mai yawa zai kusan ba aiki ba. exp_version dawo da kuskure idan manyan lambobi ba su dace ba.

Na biyu shine ƙananan lambar. Rubutun da aka rubuta don wani jujjuya tare da mafi girman ƙananan lambobi fiye da halin yanzu yana iya dogara ne akan wasu sabon fasali kuma bazai iya gudu ba. exp_version ya dawo da kuskure idan manyan lambobi ya dace, amma lambar rubutun rubutu ya fi girma daga abin da ke gudana.

Na uku shi ne lambar da ba ta da wani ɓangare a kwatancin kwatancen. Duk da haka, ana haɓakawa lokacin da za'a sauya rarraba software ɗin ta kowace hanya, kamar ta ƙarin ƙarin bayani ko ingantawa. An sake saiti zuwa 0 a kan kowane sabon ƙarami.

Tare da ƙarancin , ya yi tsammanin bugawa da kuskure da fitarwa idan fitowar ta ƙare.

sa ran [[-opts] pat1 body1] ... [-opts] patn [bodyn]
yana jiran har sai daya daga cikin alamu ya dace da fitarwa na tsari, wanda lokaci ya ƙayyade, ko an gano fayil din ƙarshe. Idan jikin karshe ya bace, za'a iya cire shi.

Abubuwan da aka samo daga ka'idodin da ake tsammani tun kafin a yi amfani da su ba da gangan ba a gaban wani nau'i. Abubuwan da aka samo daga umarnin da aka yi kwanan nan da aka yi amfani da su bayanan sunyi amfani dasu ba tare da wasu alamu ba.

Idan hujjoji ga dukan tsammanin ra'ayi na buƙatar fiye da ɗaya layin, dukkanin muhawara za a iya "ƙaddara" a cikin ɗaya domin kada a dakatar da dakatar da kowane layi tare da fadi. A cikin wannan batu, saurin Tcl da aka saba da shi zai faru duk da takalmin gyaran kafa.

Idan alamu shine maɓallin maɓallin kalmomi, ana kashe jiki mai kamawa a ƙarshen fayil ɗin. Idan kullin shine lokacin ƙayyadaddun lokaci , ana kashe jikin da ya dace a kan lokaci. Idan ba'a amfani da mahimman kalmomin lokaci ba, an aiwatar da wani aiki mara kyau a kan lokaci. Lokacin ƙaran lokacin ƙaddamarwa shine 10 seconds amma za'a iya saita, misali zuwa 30, ta hanyar umarni "saita lokaci 30". Za'a iya ƙayyade lokaci mara iyaka ta darajar -1. Idan kullin shine maɓallin kalmar sirri , ana kashe jikin da ya dace akan kowane lokaci ko ɓangare na karshe.

Idan matsala ta dace, to an gama jiki daidai. sa ran dawo da sakamakon jiki (ko igiya maras siya idan babu alamu da aka daidaita). A yayin da lambobi masu yawa suka haɗa, wanda aka fara bayyana yana amfani da shi don zaɓar jiki.

Kowace lokacin sabon fitarwa ya zo, an kwatanta shi da kowace alamar da aka tsara. Sabili da haka, za ka iya gwada don rashin wasa ta hanyar yin wani abu na ƙarshe wanda zai tabbatar da shi, kamar yadda ya dace. A cikin yanayi inda babu wani hanzari, dole ne ku yi amfani da lokaci (kamar yadda kuke so idan kuna hulɗa da hannu).

Alamu an ƙayyade a cikin hanyoyi uku. Ta hanyar tsoho, alamu an ƙayyade kamar yadda umurnin Tcl ya yi . (Irin waɗannan alamu suna kama da maganganun C-harshe na yau da kullum ana kiransu "alamu" alamu). Za a iya amfani da tutar-flag don kare alamu wanda zai yiwu in daidaita haka idan ya dace. Dole ne kariya duk wani tsari da aka fara da "-" wannan hanya. (Dukkan igiyoyi da suka fara tare da "-" an adana su don zaɓin gaba.)

Alal misali, ɗayan da ke gaba ya dubi samun shiga shiga. (Yi la'akari da cewa cin zarafi an ɗauka shi ne hanyar da aka fassara a wani wuri a cikin rubutun.)

sa ran {aiki] yana aiki \ n; exp_continue} ya ɓace "kalmar sirri mara inganci" abort timeout abort haɗi}

Kalmomi suna da muhimmanci a yanayin ta hudu tun lokacin da ya ƙunshi sararin samaniya, wanda zai iya raba hanya daga aikin. Alamu da wannan aikin (kamar 3rd da 4th) na buƙatar tsara abubuwan da sake. Wannan za a iya kaucewa ta amfani da alamu na regexp-style (duba ƙasa). Ƙarin bayani game da yadda za a samar da alamu na launi na duniya za a iya samuwa a cikin littafin Tcl.

Abubuwan da aka sagewa su biyo baya sun bi ladaran da Tcl ya regexp ya bayarwa (gajeren "umurni na yau da kullum"). An gabatar da alamu na regexp tare da alamar tutar. Misali na baya za'a iya sake sake rubutawa ta amfani da regexp kamar:

sa ran {aiki] yana aiki \ n; exp_continue} -re "ya kasa | kalmar sirri mara kyau" ɓata lokaci ya ɓata haɗi}

Dukansu nau'i-nau'i iri-iri suna "unanchored". Wannan yana nufin cewa alamu bazai dace da kowane launi ba, amma zai iya farawa da ƙare wasan a ko'ina a cikin kirtani (idan dai duk abin da ya dace). Yi amfani da 'don daidaita farkon kirga, kuma $ don daidaita ƙarshen. Yi la'akari da cewa idan baku jira don ƙarshen kirtani ba, za ku iya kawo karshen martani a cikin tsakiyar kirtani kamar yadda aka tuntube su daga tsarin da aka yiwa. Duk da yake har yanzu suna samar da sakamako mai kyau, ƙwarewar zai iya duba ƙananan abu. Saboda haka, amfani da $ an karfafa idan zaka iya kwatanta haruffa a ƙarshen kirtani.

Lura cewa a cikin masu yawa edita, '^ da $ wasa farkon da ƙarshen layi daidai. Duk da haka, saboda tsammanin ba a daidaita jeri ba, waɗannan haruffa sun dace da farkon da ƙarshen bayanan (kamar yadda ya saba da layi) a halin yanzu a cikin buffer matching. (Har ila yau, ga bayanin kula da ke ƙasa a kan "tsarin kulawa".)

Da -ex flag ya sa alamar za a daidaita tare da sautin "daidai". Ba a fassara fassarar *, ^, da dai sauransu ba (ko da yake dole ne a lura da ƙayyadaddun yarjejeniyar Tcl). Kalmomin daidai suna ko da yaushe.

Ƙararren alamar alama tana sa manyan haruffan kayan fitarwa don kwatanta su idan sun kasance haruffan ƙananan. Ba a shafi alamar ba.

Yayinda yake karatun karatun, fiye da adadin 2000 zai iya tilasta magoya bayan baya su "manta". Ana iya canza wannan tareda aikin match_max . (Yi la'akari da cewa manyan dabi'u masu yawa zasu iya rage alamar motsi.) Idan mai yin amfani da shi yana cikakke_buffer , an kashe jikin da ya dace idan an samu karɓar bytes_max kuma babu sauran alamu da suka dace. Ko dai an yi amfani da kalmomin cikakke na cikakke ko a'a, an rubuta haruffan da aka manta zuwa expect_out (buffer).

Idan mai yin amfani da sunan shi ne maɓallin maɓallin kalmar, kuma an yarda da alamar (ta hanyar umurnin cire_nulls ), an kashe jiki daidai idan an daidaita ASCII 0 kawai. Ba zai yiwu a daidaita 0 bytes ta duniya ko alamar regexp ba.

Bayan da ya dace da alamar (ko jigo ko cikakken_buffer), ana samun duk wani matsala da ba a samo shi ba a cikin sauƙi mai saiti (buffer) . Har zuwa 9 abin da aka sa maye gurbin da aka ajiye a cikin masu saɓo mai suna expect_out (1, kirtani) ta hanyar expect_out (9, kirtani) . Idan an yi amfani da tutar shafunan kafin alamu, alamar farawa da ƙarewa (a cikin wani nau'i mai dacewa don saiti ) na kirtani 10 ana adana a cikin masu tsinkaya expect_out (X, farawa) da kuma expect_out (X, karshen) inda X shine lambar, ya dace da matsayi a cikin buffer. 0 tana nufin kirtani wanda ya dace da dukan tsari kuma ana haifar da shi don samfurori na duniya da kuma alamu na regexp. Alal misali, idan tsarin ya samar da fitarwa na "abcdefgh \ n", sakamakon sakamakon:

sa ran "cd"

kamar idan wadannan bayanan sun kashe:

saita expect_out (0, string) cd saita expect_out (buffer) abcd

kuma "efgh \ n" an bar a cikin buffer mai sarrafawa. Idan wani tsari ya samar da fitarwa "abbbcabkkkka \ n", sakamakon:

Sukan tsammanin -sukan "b (b *)." (k +) "

kamar idan wadannan bayanan sun kashe:

saita expect_out (0, fara) 1 saita expect_out (0, karshen) 10 saita expect_out (0, string) bbbcabkkkk saita expect_out (1, fara) 2 saita expect_out (1, karshen) 3 saita expect_out (1, string) bb saita expect_out (2, fara) 10 saita expect_out (2, karshen) 10 saita expect_out (2, kirtani) k saita expect_out (buffer) abbbcabkkkk

kuma an bar "a \ n" a cikin buffer mai sarrafawa. Tsarin "*" (da -re ". *") Zai shafe buffer mai sarrafawa ba tare da karanta duk wani fitarwa daga tsari ba.

Yawancin lokaci, ana fitar da kayan aikin da aka dace tare daga masu bugun ciki na ciki. Za a iya hana wannan ta hanyar rigakafi da juna tare da flag -notransfer flag. Wannan tutar yana da amfani sosai a gwaji (kuma za'a iya rage shi zuwa "- a'a" don saukaka yayin gwaji).

An adana idon da aka haɗa da matakan da ya dace daidai (ko jigo ko cikakken_buffer) a cikin expect_out (spawn_id) .

Siffar- lokaci ta sa dokar da ake bukata yanzu ta yi amfani da ƙimar da ake bi a matsayin lokaci maimakon maimakon yin amfani da ƙimar tsaran lokaci.

Ta hanyar tsoho, alamu suna daidaita da fitarwa daga tsari na yanzu, duk da haka tuni ta nuna cewa fitarwa daga jerin sunayen spawn_id mai suna suna daidaita da duk wani alamu na gaba (har zuwa na gaba -i ). Yankin spawn_id ya kamata ya zama jerin tsararren sararin samaniya na spawn_ids ko mai canzawa game da wannan jerin spawn_ids.

Alal misali, misali mai zuwa na "haɗa" daga tsarin yanzu, ko "aiki", "kasa" ko "kalmar sirri mara amfani" daga spawn_id mai suna $ proc2.

sa ran {-i $ proc2 aiki {yana sanya aiki \ n; exp_continue} -re "ya kasa | kalmar sirri mara kyau" ɓata lokaci ya ɓata haɗi}

Za'a iya amfani da nauyin canzawar duniya kowane_spawn_id don daidaita ka'idodin zuwa kowane spawn_ids da aka ambace tare da duk sauran -i a cikin tsarin sa ido na yanzu. Tsuntsin daga cikin tutar da ba tare da wani alaƙa ba (watau, biye da nan da nan-wani) -i ) an samo shi ga duk wani alamu a cikin umarnin da ake danganta da any_spawn_id.

Ƙila-flag na iya ƙididdige madaidaicin duniya wanda idan an karanta maɓallin don lissafin spawn ids. Za'a sake yin amfani da madadin a duk lokacin da ya canza. Wannan yana samar da hanyar canza maɓallin I / O yayin da umurnin yake cikin kisa. Spawn ids da aka ba wannan hanyar an kira "indirect" spawn ids.

Ayyuka kamar karya da ci gaba da haifar da tsarin sarrafawa (watau, proc ) don yin hali a al'ada. Dokar exp_continue tana sa ran zata cigaba da aiwatarwa maimakon dawowa yadda ya kamata.

Wannan yana da amfani don kauce wa madaukaka hanyoyi ko maimaita bayani. Misali na gaba shi ne ɓangare na wani ɓangaren littattafan sarrafawa ta atomatik. Ƙaƙidar ta kawar da ciwon rubuta bayanan sa ido na biyu (don bincika maimaitawa) idan rlogin yayi motsi don kalmar sirri.

sa ran {Kalmar sirri: {stty -echo send_user 'kalmar sirri (don $ mai amfani) akan $ host: "expect_user -re" (. *) \ n "send_user" \ n "aika" $ expect_out (1, string) \ r "stty Kira exp_continue} kuskure {send_user 'kalmar sirri mara inganci ko asusun \ n' fita 'lokaci' {send_user 'haɗi zuwa haɗin yanar gizon $ hosted out \ n' fita daga {aika_user \ 'haɗi zuwa masauki ya kasa: $ expect_out (buffer) "fita} - sake $ m}

Alal misali, ɗayan nan zai iya taimakawa mai amfani da jagorancin hulɗar da aka rigaya ta atomatik. A wannan yanayin, an sanya madogarar ta cikin yanayin da ya dace. Idan mai amfani ya danna "+", an haɓaka wani canji. Idan an latsa "p", ana aikawa da yawa dawowa zuwa tsari, watakila don gurɓata shi a wata hanya, kuma "i" yana bari mai amfani ya hulɗa tare da tsari, yadda ya sata ikon sarrafa daga rubutun. A kowane hali, exp_continue yana ƙyale halin yanzu yana sa ran ci gaba da matsala daidai bayan kammala aikin yanzu.

stty raw -echo expect_after {-i $ user_spawn_id "p" {aika "\ r \ r \ r"; exp_continue} "+" {incr foo; exp_continue} "i" {hulɗa; exp_continue} "fita" fita}

Ta hanyar tsoho, exp_continue yana sake saita lokaci na lokaci. Ba a sake farawa lokaci ba, idan an kira exp_continue tare da tutar -continue_timer .

sa ran_after [expect_args]
Ayyukan aiki daidai da tsammanin baya sai idan idan alamu daga duka suna sa ran kuma tsammani zasu iya daidaita, ana amfani da alamar tsammanin . Duba umarnin expect_before don ƙarin bayani.

sa ran_background [expect_args]
daukan wannan jayayya kamar yadda ake tsammani , duk da haka ya dawo nan da nan. Ana jarraba ka'idoji a duk lokacin da sabon shigarwar ya zo. Kullin lokaci da tsoho ba su da mahimmanci don tsammanin sake dawo da su kuma an cire su a hankali. In ba haka ba, umarni na expect_background yana amfani da tsammanin baya da kuma bayanan bayanan kamar kamar sa ran .

A lokacin da aka yi la'akari da ayyukan da ake sa ran za a yi la'akari da shi, ana katange aikin da aka yi na baya don wannan spawn id. An cire aikin sarrafa bayanan lokacin da aikin ya gama. Yayin da aka katange kayan aiki na baya, yana yiwuwa a yi (foreground) sa ran a kan wannan spawn id.

Ba zai yiwu a yi tsammanin yayin da ake sa ran tsinkaya ba . Ana tsammanin zuwan tunani na musamman na spawn id ta hanyar furta sabon saiti game da wannan spawn id. Bayyanawa da tsinkaya ba tare da wani samfurin ya kawar da idon spawn da aka ba ta daga ikon iya daidaita alamu a bango.

sa ran_before [expect_args]
daukan wannan jayayya kamar yadda ake tsammani , duk da haka ya dawo nan da nan. Abubuwan da aka yi aiki da alamomi daga cikin 'yan kwanan nan da ake tsammani tare da wannan spawn id an saka su a cikakke ga duk waɗannan ka'idoji na jiran . Idan matsala ta dace, ana bi da shi kamar dai an ƙayyade shi a cikin umurnin sa ran kanta, kuma an haɗa jikin da aka haifa a cikin mahallin umarnin sa ran . Idan alamu daga duka tsammanin suna da tsammanin zai iya daidaita, ana amfani da alamar mai tsammanin .

Idan babu alamar da aka ƙayyade, ba a duba spawn id ba don kowane alamu.

Sai dai idan an rufe ta da wata alama, ana sa ran cewa alamu sun dace da yanayin da aka ƙayyade a lokacin da aka yanke hukuncin da aka yi (ba lokacin da aka daidaita yanayinsa ba).

Alamar alama-sa- ido ta sa ran ko kafin dawo da bayanan yanzu na abin da alamu zai dace. Ta hanyar tsoho, yana yin rahoto a kan halin da ake ciki a yanzu. Za'a iya ba da bayanin ƙayyadaddun spawn id na zaɓi don ƙarin bayani akan wannan spawn id. Misali

expect_before -info -i $ proc

Ana iya bayar da ƙayyadaddun id ƙwarewa a mafi yawan lokuta. Alamar tutar ta rufe kalmomi masu saurin kai tsaye wanda ba kawai daga bayanin kai tsaye ba.

Maimakon bayani na tsararraki, "flag" - "duka" zai haifar "-info" don bayar da rahoto game da dukkanin idon spawn.

Ana iya sake fitar da tutar mai-flag na matsayin hujja ga expect_before.

sa ran_tty [expect_args]
yana son tsammanin amma yana karanta haruffa daga / dev / tty (watau keystrokes daga mai amfani). Ta hanyar tsoho, ana yin karatun a yanayin da aka dafa. Saboda haka, Lines dole ne ya ƙare tare da komawa domin ya sa ran ganin su. Ana iya canza wannan ta hanyar stty (duba umurnin stty da ke ƙasa).

expect_user [expect_args]
yana son tsammanin amma yana karatun abubuwa daga stdin (watau keystrokes daga mai amfani). Ta hanyar tsoho, ana yin karatun a yanayin da aka dafa. Saboda haka, Lines dole ne ya ƙare tare da komawa domin ya sa ran ganin su. Ana iya canza wannan ta hanyar stty (duba umurnin stty da ke ƙasa).

cokali mai yatsa
kirkiro sabon tsari . Sabuwar tsari shine ainihin kwafin tsarin aiki na yanzu. A kan nasarar, toshe ya koma 0 zuwa sabon tsarin (yaro) kuma ya sake dawo da tsarin ID na tsarin yarinyar zuwa tsarin iyaye. A kan gazawar (saboda yawancin albarkatu, misali, sararin samaniya, ƙwaƙwalwar ajiya), toshe ya koma -1 zuwa tsarin iyaye, kuma ba a halicci yara ba .

An yi watsi da tafiyar matakan ta hanyar umarni na fita , kamar tsarin asali. An yarda da matakai don a rubuta su zuwa fayilolin log. Idan ba ku daina haɓaka ko shiga cikin mafi yawan matakai, sakamakon zai iya zama rikice.

Wasu aikace-aikace na pty na iya rikita batun da masu karatu da mawallafa masu yawa, har ma da ɗan lokaci. Saboda haka, shi ne safest to cokali mai yatsa kafin aiwatar da matakai.

hulɗa [string1 body1] ... [stringn [bodyn]]
yana ba da iko ga tsarin na yanzu ga mai amfani, don haka ana aika keystrokes zuwa tsari na yanzu, kuma an mayar da stdout da stderr na halin yanzu.

Za'a iya rarraba nau'i-nau'i nau'i-nau'i a matsayin hujjoji, inda idan aka kashe jiki a lokacin da aka shigar da kirtani daidai. (Ta hanyar tsoho, ba a aika da kirtani ba zuwa tsari na yanzu). An yi la'akari da umurnin mai fassara , idan jikin karshe ya ɓace.

Idan muhawarar dukan bayanin da ake magana da shi yana buƙatar fiye da ɗaya layin, dukkanin muhawara za a iya "ƙaddara" a cikin ɗaya domin kada a hana dakatar da kowane layi tare da ƙaddamarwa. A cikin wannan batu, saurin Tcl da aka saba da shi zai faru duk da takalmin gyaran kafa.

Alal misali, umarnin da ya biyo baya yana hulɗa tare da nau'i-nau'i-nau'in nau'i-nau'in da aka haɗa: Lokacin da aka zartar da Z, Ana tsammanin an dakatar da shi. (The -reset flag mayar da m modes.) A lokacin da 'A aka guga man, mai amfani gani "ka buga wani iko-A" da kuma aiwatar da aka aika a' A. Lokacin da aka buga $, mai amfani yana ganin ranar. A lokacin da aka danna C, ana sa ran zai fita. Idan an shiga "foo", mai amfani yana ganin "bar". Lokacin da aka kunna, mai tsammanin mai fassara yana aiki tare.

saita CTRLZ \ 032 don hulɗa {-reset $ CTRLZ {exec kill -STOP [pid]} \ 001 [send_user] ka danna iko-A \ n "; aika "\ 001"} $ {send_user} Kwanan wata shine [agogon agogo [agogon seconds]].}} \ 003 fita daga {aika_user 'bar'}}

A cikin nau'i-nau'i-nau'i-nau'i, igiyoyi suna daidaita a cikin tsari da aka jera a matsayin muhawara. Maƙallan da ba a dace ba ne ba a aika su zuwa tsari na yanzu a jira na saura zuwa. Idan an shigar da haruffan don haka ba za a iya zama wasa ba, kawai sashi na kirtani za a aika zuwa tsari wanda ba zai iya fara wani wasa ba. Sabili da haka, igiyoyi waɗanda suke da maɓalli na matakai masu dacewa zasu iya dacewa daga baya, idan ƙirar da ta fara ƙoƙarin yin wasa ta ƙare kasa.

Ta hanyar tsoho, daidaitattun launi daidai ne ba tare da katunan katunan ba . (Ya bambanta, umurnin da ake sa ran yana amfani da alamu ta duniya ta hanyar tsoho.) Ana iya amfani da tutar -ex to kare alamomi wanda zai yiwu ya dace da haɗin hulɗa tare da yin haka. Dole ne kariya duk wani tsari da aka fara da "-" wannan hanya. (Dukkan igiyoyi da suka fara tare da "-" an adana su don zaɓin gaba.)

A -ar flag ƙungiyar kirtani za a fassara a matsayin tsarin regexp style. A wannan yanayin, ana adana matakan da suka dace daidai da hulɗar da suke da shi daidai da yadda ake sa ran tsayar da kayan sarrafawa a cikin tarin murnar . Ana nuna goyon baya ga tutar alamar.

Abinda ke nunawa ya gabatar da wani aikin da aka kashe a ƙarshen fayil ɗin. Ƙarin rabaccen nau'i na iya bi maɓallin takarda wanda idan aka haɗa shi idan an gano ƙuƙwalwa yayin rubutaccen fitarwa. Ayyukan ƙaddamarwa na baya -bayan nan "komawa", don yin hulɗar ya sake dawowa akan kowane EOF.

Tsarin lokaci yana tsara lokaci (a cikin seconds) da kuma aikin da aka kashe bayan ba a taɓa karanta haruffa ba don lokacin da aka ba su. Alamar lokaci ya shafi tsarin da aka kayyade kwanan nan. Babu tsohuwa lokaci. Matsayi na musamman "timeout" (amfani da umurnin sa ran ) ba shi da tasiri a kan wannan lokacin.

Alal misali, ana iya amfani da wannan sanarwa ga masu amfani da kai tsaye waɗanda ba su taɓa tattake wani abu ba don sa'a daya amma har yanzu suna da sakonnin sakonni na yau da kullum:

hulɗa -ya samowa $ user_spawn_id lokaci lokaci 3600 koma-biya $ $ spawn_id

Idan alamar ita ce maɓallin maɓallin kalmar, kuma an yarda da alamar (ta hanyar umurnin cire_nulls ), an kashe jiki daidai idan an daidaita ASCII 0 kawai. Ba zai yiwu a daidaita 0 bytes ta duniya ko alamar regexp ba.

Shirye matsala tare da takarda-flag na haifar da hulɗa mai ma'ana (spawn_id) don saitawa zuwa spawn_id wanda yayi daidai da alamar (ko ƙafa).

Ayyuka kamar karya da ci gaba da haifar da tsarin sarrafawa (watau, proc ) don yin hali a al'ada. Duk da haka sake dawowa yakamata komawa zuwa mai kira, yayin da inter_return yana haifar da hulɗa don haifar da dawowa cikin mai kira. Alal misali, idan "proc foo" da ake kira hulɗa wanda sa'an nan kuma ya aiwatar da aikin inter_return , proc foo zai dawo. (Wannan yana nufin cewa idan haɗawa da maɓallin kira tare da haɗin sake dawowa zai haifar da hulɗa don ci gaba, yayin da inter_return zai haifar da hulɗa don komawa ga mai kira.)

Yayinda ake hulɗa , ana amfani da hanya mai kyau domin duk haruffa za a iya wucewa zuwa tsari na yanzu. Idan tsarin yanzu bai karbi sakonnin sarrafa aikin ba, zai dakatar da aika siginar ƙarewa (ta hanyar tsohuwar Z.). Don sake farawa, aika siginar ci gaba (kamar "kashe KAMATA"). Idan kana so ka aika SIGSTOP zuwa irin wannan tsari (by 'Z), la'akari da spwning csh na farko sannan sannan ka fara shirinka. A gefe guda, idan kana so ka aika SIGSTOP don sa ran kanta, fara kira mai fassara (watakila ta amfani da halin haɓakarwa), sa'an nan kuma latsa * Z.

Za a iya amfani da nau'i-nau'i-nau'i-nau'i a matsayin ɗan gajeren lokaci don kauce wa shigar da mai fassara kuma aiwatar da umurni tare. An yi amfani da yanayin da aka riga aka yi amfani da ita yayin da ake kashe jikin jikin kirki.

Don gudun, ayyukan da aka yi a cikin yanayin da ta dace ta tsoho. Siffar tayi ta sake saita m zuwa yanayin da yake da shi kafin yin hulɗar an kashe shi (duk da haka, yanayin dafa shi). Lura cewa haruffa sun shiga lokacin da yanayin ke canzawa zasu iya ɓacewa (wani ɓangare mara kyau na direba mai hawa a kan wasu tsarin). Dalilin da ya kamata ya yi amfani da shi - saiti ne idan aikinka ya dogara ne da gudana a yanayin da aka dafa.

Siffar -echo ta aika da haruffan da suka dace da abin da ke biyo baya zuwa tsari wanda ya haifar da su kamar yadda aka karanta kowane hali. Wannan yana iya zama da amfani idan mai amfani yana buƙatar ganin martani daga alamu na ɓangare.

Idan ana yin alamar tsari amma ƙarshe ya kasa yin wasa, ana aikawa da haruffan zuwa tsari wanda aka ƙaddara . Idan tsarin da aka sauke shi ya sake kira su, mai amfani zai ga haruffa sau biyu. -echo mai yiwuwa ne kawai ya dace a cikin yanayi inda mai amfani ba zai iya cika tsarin ba. Alal misali, karin bayani daga rftp, rubutun rikice-rikice, inda aka yi amfani da mai amfani don shigar da ~ g, ~ p, ko ~ l, don samun, sanya, ko kuma tsara lissafi na yau da kullum. Wadannan suna da nisa daga dokokin ƙarancin ƙaƙa, cewa mai amfani bazai iya rubutawa banda wani abu ba, sai dai kuskure, a cikin wannan hali, za su iya watsi da sakamakon.

yi hulɗa da {-echo ~ g {inganciyar rubutun 1} -echo ~ l {jajircewa 0} -conho ~ {putcurdirectory}}

A -nobuffer flag aika da haruffan da suka dace da wannan alaƙa a kan tsarin fitarwa a matsayin characters suna karanta.

Wannan yana da amfani lokacin da kake so a bar shirin ya sake dawo da tsarin. Alal misali, ana iya amfani da wadannan don saka idanu inda mutum ke kewayawa (hanyar modem Hayes). A duk lokacin da "atd" aka gani rubutun ya rubuta sauran layin.

(), *) \ r "dawo yana sanya $ log" [agogo agogo [agogo seconds]]: aka buga $ interact_out (1, kirtani) "} hulɗa -baura" atd "lognumber

A lokacin hulɗa , ana amfani dashi na amfani da log_user . Musamman, hulɗa zai tilasta fitarwa ta shiga (aikawa zuwa fitarwa) saboda an ɗauka cewa mai amfani bai so ya yi hulɗa ba.

A -o flag yana sa kowane nau'i-nau'i-nau'i-nau'ikan da ke biyo baya suyi amfani da su wajen fitar da tsarin yanzu. Wannan na iya zama da amfani, misali, lokacin da ake hulɗa da runduna waɗanda aika saƙonnin da ba'a so ba a lokacin zaman taro na telnet.

Ta hanyar tsoho, hulɗa yana buƙatar mai amfani ya rubuta rubutun da kuma karatun layi na tsari na Tsammani. Halin -u flag (don "mai amfani") yana yin hulɗa tare don neman mai amfani a matsayin tsari mai suna da hujjarta (wanda dole ne ya zama tsararren id).

Wannan yana ba da izinin matakai biyu marasa dangantaka don a haɗa tare ba tare da yin amfani da madaidaici ba. Don taimakawa wajen lalacewa, Ana sa ran ƙwaƙwalwar ganewa kullum shiga stderr (ko ɓoyewa don wasu sharuɗɗa da debugging bayanai). A saboda wannan dalili, mai fassara zai karanta wani abu daga stdin.

Alal misali, ɗayan nan ya ƙirƙiri tsari na shiga. Sa'an nan kuma ya yi amfani da mai amfani (ba a nuna) ba, kuma a karshe ya haɗa su biyu. Hakika, kowane tsari zai iya sauya don shiga. Alal misali, harsashi, zai ba da damar mai amfani ya yi aiki ba tare da samar da asusu da kalmar sirri ba.

spawn shiga shiga login $ spawn_id spawn tip modem # dial back to to user # connect user to login interact -u $ login

Don aika samfurin zuwa matakai masu yawa, lissafa kowane jerin tsararren tsararraki wanda aka kafa ta hanyar zane - zane. Ana shigar da shigarwa ga rukuni na idon spawn ids ta hanyar jerin tsararru na spawn da aka kafa ta hanyar zane - zane. (Dukansu -yayyun da- takarda na iya ɗaukar jerin lambobi a cikin nau'i-nau'i kamar launi a cikin umurnin jiran , sai dai babu wani_spawn_id da mahimmanci a hulɗa .) Duk lakabi da igiyoyi masu biyowa (ko alamu) suna amfani da wannan shigarwar har zuwa wani - shigarwa ya bayyana. Idan babu wani zaɓi da aka bayyana, -wallafi yana nufin "-wallafa $ user_spawn_id -output". (Hakazalika, tare da alamu waɗanda ba su da -da .) Idan an ƙayyade takaddama ɗaya, to yana rinjaye $ user_spawn_id. Idan an ƙayyade kalma na biyu, shi ya wuce $ spawn_id. Za a iya ƙayyade alamar ƙididdiga masu ƙayyade.

Wadannan matakan shigarwa guda biyu sunyi tsoka don samun samfurori da aka ƙayyade kamar $ spawn_id da $ user_spawn_id (a cikin baya). Idan alama ta alama ta bayyana ba tare da buga takarda ba, an cire jigogi daga wannan tsari .

A - flag ta gabatar da maye gurbin na yanzu spawn_id lokacin da ba a yi amfani da wasu zane-zane ko siga-samfurin ba. A-flag na nuna alamar-flag.

Yana yiwuwa a canza matakan da ake hulɗa da ta ta amfani da ids mai tsauri. (Ana nuna alamar idon kai tsaye a cikin sashe a kan umurnin da ake tsammani.) Za a iya ƙayyade idon spawn ids na kai tsaye tare da launi -i, -u, -put, ko -putput.

mai fassara [args]
sa mai yin amfani da shi don haɗakar da mai amfani da ka'idoji da Tcl. An buga sakamakon kowace umarnin.

Ayyuka kamar karya da ci gaba da haifar da tsarin sarrafawa (watau, proc ) don yin hali a al'ada. Duk da haka sake mayar da ma'anar mai juyawa don komawa ga mai kira, yayin da inter_return ya sa mai fassara ya haifar da komawa a cikin mai kira. Alal misali, idan "proc foo" wanda ake kira ma'anar fassara wanda ya aiwatar da aikin da ya yi, proc foo zai dawo. Duk wani umurni da ya sa mai fassara ya ci gaba da hanzari don sababbin umarni.

Ta hanyar tsoho, mahimmiyar ya ƙunshi nau'i biyu. Lambar farko ta kwatanta zurfin tarihin gwagwarmaya (watau sau nawa Tcl_Eval ya kira). Lambar ta biyu ita ce mai gano tarihin Tcl. Za'a iya saita motsi ta hanyar fassara wani tsari da ake kira "prompt1" wanda ƙimar komawa ta zama ta gaba. Idan wata sanarwa ta bude buɗaɗɗa, parens, gyare-gyare, ko sakonni, na biyu (ta hanyar tsoho "+>") an bayar a kan sabon layi. Za'a iya saita kaddamarwar ta biyu ta hanyar fassara hanyar da ake kira "prompt2".

A lokacin mai fassara , ana amfani da yanayin dafa, koda ma mai kira ya yi amfani da yanayin ƙira.

Idan aka rufe stdin, mai fassara zai dawo sai dai idan an yi amfani da tutar, inda idan aka yi amfani da isharar .

log_file [args] [[-a] fayil]
Idan an bayar da sunan sunan, log_file zai rubuta rikodin zaman (farawa a wannan batu) a cikin fayil ɗin. log_file za ta dakatar da rikodi idan ba a bayar da hujjar ba. Duk wani fayil din logon da ya rigaya ya rufe.

Maimakon filename, ana iya samar da maƙallan fayil na Tcl ta hanyar amfani da launi -open ko -leaveopen . Wannan yana kama da umarnin spawn . (Dubi spawn don ƙarin bayani.)

A -a tashar jiragen saman da aka samar da za a shiga wanda aka rufe ta hanyar command_user .

Ta hanyar tsoho, umarnin log_file yana nufin tsofaffi fayiloli maimakon truncating su, don saukakawa na iya juya shiga da kuma sau da yawa a cikin wani zaman. Don Tuncate fayiloli, yi amfani da -noappend flag.

Ƙaƙidar-- flag ta jawo log_file don sake dawowa bayanan da ba a ba da hujjoji ba.

log_user -info | 0 | 1
Ta hanyar tsoho, aikawa / tsammanin tattaunawa yana shiga cikin stdout (da logfile idan an bude). Ana saran shiga cikin stdout ta hanyar umarni "log_user 0" kuma an sake saita ta "log_user 1". Ba'a canzawa zuwa wurin logfile ba.

A -- flag flag sa log_user don dawo da bayanin na kwanan nan ba info lissafin da aka ba.

match_max [-d] [-i spawn_id] [size]
yana bayyana girman buffer (in bytes) da aka yi amfani da ita ta hanyar tsammanin . Ba tare da ƙarar gardama ba, an mayar da girman halin yanzu.

Tare da -d flag, an saita tsoho girman. (Labaran farkon shi ne 2000.) Tare da tutar, an saita girman don mai suna spawn id, in ba haka ba an saita shi don tsari na yanzu.

zazzage [- # spawn_id] [- # spawn_id] [...] shirin [args]
yana aiwatar da "shirye-shiryen shirin " a madadin shirin Lura na yanzu, wanda ya ƙare. Kwararrun jigilar jigilar hankulan da ake amfani da su a gaban sunan sunan suna kamar shi harsashi mai shiga. Dukkanin spawn_ids an rufe sai dai wa anda aka ambata a matsayin muhawara. Wadannan an tsara su a kan abubuwan da aka gano masu alamar suna.

An tsara mapuna Spawn_ids zuwa abubuwan da aka gano don sabon shirin don hade. Alal misali, layin na gaba yana tafiyar da ladabi kuma ya ba shi damar sarrafa shi ta hanyar tsarin yanzu - in ce, mai kula da chess.

overlay -0 $ spawn_id -1 $ spawn_id -2 $ spawn_id chess

Wannan ya fi dacewa da "hulɗa -u", duk da haka, yana ƙaddamar da damar yin shiryawa don tuntube tun lokacin Tsarin Sake ba shi da iko.

Lura cewa babu mai sarrafawa da aka ba shi. Sabili da haka, idan ka cire haɗin ko daidaitattun daidaitacce, shirye-shiryen da ke gudanar da aiki (ƙusoshin, login, da dai sauransu) ba za su yi aiki yadda ya dace ba.

parity [-d] [-i spawn_id] [darajar]
ya bayyana ko ya kamata a rike shi ko kuma a cire shi daga fitarwa daga cikin matakan da aka sanyawa. Idan darajar ba kome ba, an cire lalata, in ba haka ba za'a cire shi ba. Ba tare da tabbacin ƙimar ba, an mayar da farashin yanzu.

Tare da -d flag, an saita tsohuwar darajar parity. (Labaran farkon shi ne 1, watau, ba a kwance adalcin ba.) Tare da tutar, an ƙayyade adadin da aka sanya wa idin mai suna, idan an saita shi don tsari na yanzu.

cire_nulls [-d] [-i spawn_id] [darajar]
ya bayyana ko an cire maɓuɓɓuka ko cire daga fitarwa daga cikin matakan da aka ƙaddara kafin a daidaita matsala ko adanawa a cikin mai yiwuwa expect_out ko interact_out . Idan darajar ta kasance 1, an cire null. Idan darajar ta kasance 0, ba a cire maɓuɓɓuka ba. Ba tare da tabbacin ƙimar ba, an mayar da farashin yanzu.

Tare da -d flag, an saita tsoho darajar. (Labaran farkon shi ne 1, watau, an cire null.) Tare da flag, an saita darajar don idin mai suna spawn id, in ba haka ba an saita shi don tsari na yanzu.

Ko dai an cire koyaswa ko a'a, Tsammani zai yi rikodin labaran ɓoye zuwa ɓoye da ɓoye.

aika sakon [-flags]
Aika layi zuwa tsari na yanzu. Alal misali, umurnin

aika "sannu duniya \ r"

aika da haruffan, sannu-sannu zuwa tsari na yanzu. (Tcl yana da umurni kamar rubutun (wanda ake kira tsarin ) wanda zai iya gina ƙananan igiyoyi masu rikitarwa.)

Ana aikawa da haruffa nan da nan ko da yake shirye-shiryen tare da shigarwar da aka sanya ta layi ba zai karanta haruffan ba sai an aiko da hali mai dawowa. An nuna hali mai dawowa "\ r".

The - flag sojojin na gaba tattaunawa da za a fassara a matsayin kirtani maimakon flag. Duk wani igiya za a iya riga an riga ta shige "-" ko dai a zahiri alama kamar tutar. Wannan yana samar da inganci mai inganci don ƙayyade igiyoyi masu tsabta ba tare da ɓatar da su ba waɗanda waɗanda ba su da haɗari ba su kama da furanni ba. (Dukkan igiyoyi da suka fara tare da "-" an adana su don zaɓin gaba.)

A - flag ta furta cewa za a aika layi zuwa mai suna spawn_id. Idan spawn_id ne mai amfani_spawn_id , kuma mota yana cikin yanayin da ya dace, ana fassara sabon ƙira a cikin layi don sake dawowa-jerin jerin su don su bayyana kamar suna cikin hanyar da aka dafa. A flag -raw ya ƙi wannan fassarar.

Siffar -null ta aika alamomi maras kyau (0 bytes). Ta hanyar tsoho, an aiko wani null. Mai lamba zai iya biyan -null ya nuna yawancin alamu da za su aika.

Tsarin fashewa ya haifar da yanayin hutu. Wannan kawai yana da hankali idan idon spawn id yana nufin tty na'urar bude ta "spawn -open". Idan har ka sanya wani tsari kamar tip, ya kamata ka yi amfani da yarjejeniyar tip don samar da hutu.

A -s flag sojojin fitar da za a aika "sannu a hankali", saboda haka guje wa halin da ake ciki halin da ake ciki a kwamfuta outtypes wani shigarwa buƙatar da aka tsara don mutum wanda ba zai taba fitar da wannan buffer . Wannan fitarwa yana sarrafawa ta wurin darajan mai sauƙi "send_slow" wanda ya ɗauki jerin abubuwa biyu. Abu na farko shine lamba wanda ya bayyana adadin bytes don aika atomatically. Hanya na biyu shine ainihin lambar da ya bayyana adadin sakanni wanda za'a sa ragowar atomatik. Alal misali, "saita aika_slow {10 .001}" zai tilasta "aika -s" don aika da kirtani tare da 1 millisecond a tsakanin kowane haruffa 10 da aka aiko.

A -h flag tawagar fitar da za a aiko (kamar) kamar mutum ainihin buga. Ra'ayin jinkirin mutum yana bayyana tsakanin haruffa. (Algorithm yana dogara ne a kan rarraba Weibull, tare da gyare-gyaren da ya dace da wannan aikace-aikace na musamman). Wannan fitarwa yana sarrafawa ta wurin darajan mai sauƙi "send_human" wanda ya ɗauki jerin abubuwa biyar. Abubuwa biyu na farko sune halayen haruffan haruffa a cikin seconds. Na farko an yi ta amfani da tsoho. Ana amfani da na biyu a maganganun kalmomi, don ƙaddamar da matsalolin da ke faruwa a wasu lokatai a wasu lokuta. Matsayi na uku shine ma'auni na canji inda .1 yana da mawuyaci, 1 yana da sauƙi mai mahimmanci, kuma 10 yana da matukar mahimmanci. Ƙarshen su ne 0 zuwa ƙarancin komai. Sifofin biyu na ƙarshe sune, bi da bi, mafi ƙarancin kuma iyakar lokaci marar lokaci. Ƙananan da iyakar ana amfani dasu karshe kuma "shirin" lokacin ƙarshe. Matsakaicin matsakaicin zai iya zama bambanci da aka ba da matsakaicin idan mafi ƙarancin kuma iyakar tsada-tsalle na adadi.

A matsayin misali, umarnin da ya biyo baya ya yi sauri a matsayin mai yawan gaske:

saita send_human {.1 .3 1 .05 2} aika -h "Ina jin yunwa. Bari mu yi abincin rana."

yayin da wadannan zasu iya zama mafi dacewa bayan gishiri:

saita aika_human {.4 .4 .2 .5 100} aika -h "Kayan kwanciyar rana lash dare!"

Ka lura cewa kurakuran ba a ƙayyade ba, ko da yake za ka iya saita yanayin gyara kuskure da kanka ta hanyar saka kuskure da gyare-gyare a cikin sakon aikawa.

Lissafi don aikawa da haruffa, don aikawa karya, don ƙarfafa jinkirin kayan aiki da kuma kayan aikin mutum-mutumin ne na kowacce. Sai kawai wanda aka ƙayyade ƙarshe za a yi amfani. Bugu da ƙari kuma, ba za a iya ƙayyade jayayya ba tare da lakabi don aikawa ko ɓaɓɓuka.

Kyakkyawan ra'ayi ne na gabatar da aikawa ta farko zuwa tsari ta hanyar tsammanin . tsammanin zai jira don farawa, yayin aikawa ba zai iya ba. Musamman ma, idan farkon aikawa kafin a fara aiwatar, kuna gudu da hadarin samun bayananku ba tare da kulawa ba. A cikin yanayi inda shirye-shiryen bidiyo ba su da farko, za ku iya aikawa ta hanyar jinkiri kamar yadda:

# Don kaucewa ba da kyautar masu ba da izini game da yadda za a karya, # wannan tsarin ba ya hanzarta ga kalmar wucewar waje ba. # Jira na 5 seconds don aiwatar da cikakken spawn telnet very.secure.gov barci 5 aika kalmar sirri \ r

exp_send ne alias don aikawa. Idan kana amfani da Tsammani ko wani nau'in bambance-bambance na Tsammani a yanayin Tk, aikawa da Tk ya bayyana don manufa daban-daban. exp_send an ba shi don dacewa tsakanin yanayin. Ana ba da alamun irin wannan don sauran sauran umarnin aikawa.

send_error [-flags] kirtani
kamar aika ne , sai dai an fitar da kayan aiki zuwa stderr maimakon tsari na yanzu.

send_log [-] layi
yana son aikawa , sai dai idan an aika maƙalar zuwa fayil ɗin log (duba log_file .) An yi watsi da muhawarar idan ba a bude fayil ɗin log ba.

aika_tty [-flags] kirtani
kamar aika ne , sai dai an fitar da kayan aiki zuwa / dev / tty maimakon tsari na yanzu.

send_user [-flags] kirtani
kamar aika ne , sai dai idan an fitar da kayan aiki zuwa stdout maimakon tsari na yanzu.

sannu barci
sa rubutun ya barci saboda lambar da aka bayar na seconds. Hakanan zai iya zama lambar adadi. Yankewa (da kuma abubuwan Tk idan kuna amfani da Sanda) ana sarrafa su yayin da ake sa ran barci.

shirin [spa] [args] [args]
Ya kirkiro sabon tsarin da ke gudana " sakonnin shirin ". An haɗa shi da stay, stdout da stderr don sa ran su, don su iya karantawa da kuma rubuta su ta wasu ka'idodin Jira . An haɗu da haɗin ta kusa ko kuma idan tsari ya kulle duk wani mai gano fayil.

Lokacin da aka fara aiwatar da tsari , sai an saita madaidaicin spawn_id zuwa wani rubutun da yake magana akan wannan tsari . Hanyar da aka bayyana ta hanyar spawn_id an dauki " tsari na yanzu ". spawn_id za a iya karantawa ko a rubuce, don samar da iko da aiki.

user_spawn_id ne mai amfani na duniya wanda ya ƙunshi bayanan da yake nufin mai amfani. Alal misali, lokacin da aka saita spawn_id wannan darajar, tsammanin yayi kama da expect_user .

.Ina kuskure_spawn_id shine matakan duniya wanda ke dauke da wani bayanan da ke nuna kuskuren kuskure. Alal misali, idan aka saita spawn_id zuwa wannan darajar, aika aikawa kamar send_error .

tty_spawn_id ne mai amfani na duniya wanda ya ƙunshi wani bayanan da yake nufin / dev / tty. Idan / dev / tty ba ya wanzu (kamar a cron, a, ko samfurin tsari), to, tty_spawn_id ba'a bayyana ba. Ana iya gwada wannan a matsayin:

idan {[info vars tty_spawn_id]} {# / dev / tty kasance} da {# / dev / tty ba a wanzu # watakila a cron, tsari, ko a rubutun}

spawn ya dawo tsarin idon UNIX. Idan babu wani tsari da aka sauya, an dawo da shi. Za'a sanya sunan mai suna spawn_out (bawa, suna) zuwa sunan pty bawa.

Ta hanyar tsoho, spawn ya sake nunawa da sunan umarni da muhawara. Halin -noecho ya dakata spawn daga yin wannan.

Siffar- tag ɗin bidiyo yana haifar da fitar da kayan wasan motsa jiki don saukewa zuwa tsarin da aka sace . Ba a goyan bayan wannan a duk tsarin ba.

A cikin gida, spawn yana amfani da pty, an saita shi a matsayin hanyar tty ɗin mai amfani. An ƙaddamar da wannan har sai duk saitunan "sane" (bisa ga stty (1)). Idan an ƙayyade madaidaiciya stty_init , an fassara shi a cikin salon jayayya na hargitsi a matsayin ƙarin sanyi. Alal misali, "saita stty_init raw" zai haifar da ƙarin matakan tafiyar matakai don farawa a cikin hanya mai kyau. -nottycopy na tsayar da ƙaddamarwa dangane da tty mai amfani. -nottyinit yana kullin sakawa "sananne".

A al'ada, spawn yana ɗan lokaci don kashewa. Idan kayi la'akari da lokacin da ake daukar lokaci mai yawa, tabbas za a fuskanci kullun da aka sanya su. Ana gudanar da gwaje-gwajen da yawa a kan ptys don kauce wa haɗari tare da matakai masu ɓata. (Wadannan suna ɗaukar sakonni 10 tare da su.) Gudun Gudaya tare da zaɓi na -d zai nuna idan yana fatan yana fuskantar kullun da yawa a cikin jihohi maras kyau. Idan ba za ku iya kashe matakan da wadannan alamun suna a haɗe ba, za ku iya yin tunani kawai.

Idan ba za a iya samun nasara ba saboda nasarar da aka yi (2) kasa (misali lokacin da babu shirin ), za a mayar da sako na kuskure ta hanyar yin hulɗa na gaba ko tsammanin cewa shirin ya gudana kuma ya samar da saƙon kuskure a matsayin fitarwa. Wannan halayyar wani abu ne na sakamakon aiwatar da spawn . A cikin ƙananan ƙananan ƙafafunni, bayan haka tsarin da aka sace ba shi da wata hanya ta sadarwa tare da asalin Tsammani tsari sai ta hanyar sadarwa ta hanyar spawn_id.

A -open flag yana sa hujja ta gaba a fassara a matsayin mai gano fayil na Tcl (watau, ya dawo ta buɗe .) Za a iya amfani da spawn id a matsayin idan aka yi amfani da shi. (Ba za a yi amfani da mai gano fayil ɗin ba.) Wannan yana baka damar kula da na'urori, fayiloli, da kuma pipelines kamar yadda aka tsara matakai ba tare da amfani da pty ba. 0 an dawo don nuna babu tsarin hade. Lokacin da aka haɗu da haɗin da aka yi wa tsari , haka ne mai gano fayil na Tcl. Alamar -leaveopen tana kama da -open sai dai waxannan -leaveopen suna sa an gano mabudin fayil har ma bayan da aka rufe spa id.

A -pty flag yana sa a bude pty amma babu wani tsari da aka rushe. 0 an dawo don nuna babu tsarin hade. An saita Spawn_id kamar yadda aka saba.

An saita maɓallin variable spawn_out (bawa, fd) zuwa mai gano fayil din daidai da bawan pty. Ana iya rufe shi ta amfani da "kusa -slave".

A- flagore flag ya nuna alamar da za a yi watsi da shi a cikin yanayin da aka yi. In ba haka ba, sigina na samo hali na tsoho. Ana kiran sigina kamar yadda a cikin umarni na tarko , sai dai cewa kowace siginar yana buƙatar takalma daban.

matakin launi
yana sa bayanan bayanan da za a buga kafin a kashe. (Umurnin Tcl na alama yana samo canje-canje.) Matakin ya nuna yadda ya kasance a cikin kira zuwa tari. Alal misali, umarnin da ya biyo baya Ji tsammanin yayin da kake nema matakan farko na 4, amma babu wanda ke ƙasa.

sa ran -c "madauri 4" script.exp

Alamar -- flag na haifar da ƙyaƙwalwar sake dawowa bayanan bayanin abubuwan da ba a ba da bayanai ba.

stty args
canza canje-canje masu kamala daidai da umarnin sati na waje.

Ta hanyar tsoho, ana samun iko mai sarrafawa. Ana iya samun dama ga wasu ƙananan hukumomi ta hanyar aikawa "Abubuwan da ake buƙata don matsayi ya dawo da shi a sakamakon sakamakon." Idan ba'a buƙata matsayi ba kuma ana iya samun iko ga mai sarrafawa, an sake dawo da matsayin da ya kasance na baya da halayen a cikin nau'i wanda zai iya zama amfani da umurnin.

Alal misali, ƙididdigar rawani ko -cooked sanya mota a cikin yanayin ƙananan. Ƙididdigar -raw ko dafa ya sanya mota cikin yanayin dafa. Ƙididdigar ta faɗi da -echo sa na'ura a cikin sauti da yanayin noecho bi da bi.

Misali na gaba ya kwatanta yadda za'a dakatar da sauti na dan lokaci. Ana iya amfani da wannan a cikin takardun-rubutun atomatik don kaucewa saka kalmomin shiga cikin su. (Dubi ƙarin tattaunawa a kan wannan a karkashin GASKIYA HAUSA a ƙasa.)

stty -exho send_user "kalmar sirri:" expect_user -re "(. *) \ n" saita kalmar sirri $ expect_out (1, string) stty echo

tsarin tsarin
yana ba da sakonni zuwa sh (1) a matsayin shigarwa, kamar dai an rubuta shi a matsayin umurni daga wani m. Sa ran jiran har harsashi ya ƙare. Halin da aka dawo daga sh ana sarrafa shi ta hanyar da ya yi amfani da matsayin da ya dawo.

Ya bambanta da aiwatar da wanda yake turawa stdin da stdout zuwa rubutun, tsarin ba shi da maimaitawa (wanin wanda aka nuna ta kirtani kanta). Saboda haka, yana yiwuwa a yi amfani da shirye-shirye wanda dole ne yayi magana kai tsaye zuwa / dev / tty. Don wannan dalili, sakamakon tsarin ba a rubuta a cikin log.

timestamp [args]
dawo da timestamp. Ba tare da wata hujja ba, yawan seconds tun lokacin da aka dawo da lokaci.

A -format flag gabatar da kirtani wanda aka mayar amma tare da maye gurbin da aka yi bisa ga dokokin POSIX domin strftime. Alal misali% a an maye gurbinsu da sunan ranar mako mai ƙuntata (watau Sat). Wasu sune:

% adadin ranar mako mai suna% Awanin ranar mako% b watanni mai suna% B cikakken watan mai suna% c kwanan wata kamar yadda: Wed Oktoba 6 11:45:56 1993% d rana na watan (01-31% H hour (00-23)% Na awa (01-12)% j (001-366)% m watan (01-12)% M minti (00-59)% p am ko am% S na biyu (00-61) % rana (1-7, Litinin ne ranar farko na mako)% U mako (00-53, Lahadi na farko shine ranar farko daya daya)% V mako (01-53, ISO 8601 style)% w rana (0- 6)% W mako (00-53, Litinin farko shine ranar farko na mako daya)% x kwanan wata kamar yadda: Wed Oct 6 1993% X lokacin da: 23:59:59% shekara (00-99) % Y shekara kamar a cikin: 1993% Z lokacinzone (ko babu abin da ba za'a iya yiwuwa) %% a banda kashi alamar

Wasu ƙayyadaddun bayani ba su da cikakke. Sauran haruffa za a wuce ta hanyar bata. Sai kawai C yana da goyan baya.

Harsun kafa-tsararraki ya gabatar da sakanni kaɗan tun lokacin da aka yi amfani da lokacin da aka samo asali daga abin da zai tsara. In ba haka ba, ana amfani da lokaci na yanzu.

Ƙungiyar tarin tararraki-tmt ta fitar da samfurin timestamp don yin amfani da yankin lokaci na GMT . Ba tare da wata alama ba, ana amfani da lokacin lokaci na gida.

sakon [sigina]
sa umarnin da aka ba da za a kashe a nan gaba don samun dukkanin alamar da aka ba. An kashe umurnin a cikin duniya. Idan umurnin bai kasance ba, an dawo da aikin sigina. Idan umurnin shine kirtani SIG_IGN, ana saran sakonni. Idan umurnin shi ne kirtani SIG_DFL, alamar suna haifar da asalin tsarin. sigina ne ko dai sigina ɗaya ko jerin sakonni. Ana iya ƙayyade sigina na lamba ko alama kamar yadda sigina (3). Za a iya kawar da prefix "SIG".

Ba tare da wata hujja (ko hujja ba), tarkon yana dawo da lambar alama ta tarko a halin yanzu ana kashewa.

Kullin-code yana amfani da lambar komawar umarni a wurin duk abin da code Tcl yake gab da dawowa lokacin da umurnin ya fara farawa.

Kullin zane-zane ya sa a yi la'akari da umarnin ta amfani da mai fassara a aiki a lokacin da umurnin ya fara gudu maimakon lokacin da aka bayyana tarkon.

Siffar-sunan yana sa dokar tarkon ya dawo da sunan siginar umarni na tarko a yanzu ana kashe.

Siffar -max ta jawo umarni na tarko don dawo da lambar sigina mafi girma da za a iya saitawa.

Alal misali, umurnin "tarkon {send_user" Ouch! "} SIGINT" zai buga "Ouch!" duk lokacin da mai amfani ya matsa 'C.

Ta hanyar tsoho, SIGINT (wanda za a iya samar da ita ta hanyar danna ^ C) da SIGTERM hanyar sa ran ka fita. Wannan shi ne saboda tarkon, wanda aka tsara ta tsoho lokacin da Farar farawa.

Sugar tarko {SIGINT SIGTERM}

Idan ka yi amfani da -D flag don fara mai lalacewa, SIGINT an sake tsara shi don fara fashi mai amfani. Wannan shi ne saboda mummunan da ke biyowa:

tarkon {exp_debug 1} SIGINT

Za a iya sata tarkon mai lalacewa ta hanyar kafa EXPECT_DEBUG_INIT yanayi zuwa sabon tsarin tarkon.

Hakanan zaka iya, rinjaye duka biyu ta hanyar ƙara umarnin tarko zuwa rubutunka. Musamman ma, idan kana da '' SIGINT 'fita daga kanka, wannan zai shafe tarkon tarwatsa. Wannan yana da amfani idan kana so ka hana masu amfani daga samun zuwa ga dako.

Idan kana so ka ayyana tarkonka a kan SIGINT amma har yanzu tarkon gabura lokacin da yake gudana, yi amfani da:

idan {! [exp_debug]} {trap mystuff SIGINT}

A madadin, zaku iya tarkon gawar ta amfani da wasu sigina.

tarkon ba zai bari ka keta aikin don SIGALRM ba saboda ana amfani dashi a ciki don tsammanin . Dokar cirewa ta kafa SIGALRM zuwa SIG_IGN (watsi). Zaka iya sake gyara wannan har abada idan kun musaki shi a yayin umarnin spawn.

Duba sigina (3) don ƙarin bayani.

jira [args]
jinkirta har sai an cire wani tsari (ko tsari na yanzu idan babu mai suna) ya ƙare.

jira kullum dawo da jerin huɗin mahaɗin. Lambar farko ita ce nauyin tsari wanda aka jira. Lambar ta biyu ita ce alamar idin daidai. Adireshin na uku shine -1 idan wani ɓangaren tsarin aiki ya ɓace, ko kuma in ba haka ba. Idan lambar ta uku ta kasance 0, mahaɗan na huɗu shine matsayi wanda aka samo ta hanyar da aka sauya. Idan mai lamba na uku ya kasance -1, lambar ta huɗu ita ce darajar errno da tsarin tsarin aiki ya tsara. An saita kuskuren kuskuren duniya kuma an saita shi.

Ƙarin abubuwa zasu iya bayyana a ƙarshen ƙimar dawowa daga jira . Wani nau'i na biyar na zaɓi yana nuna ajiyar bayanin. A halin yanzu, ƙimar da za a iya amfani da wannan kashi shi ne KARANTA wanda abin da lambobi biyu ke bi su ne sunan alamar C-style da kuma bayanin ɗan gajeren rubutu.

A - flag tana nuna tsari don jira daidai da sunan mai suna spawn_id (BABA ba tsarin id). A cikin mai kulawa na SIGCHLD, yana yiwuwa a jira kowane tsari wanda aka cire ta amfani da spawn id -1.

Halin da aka yi a cikin launi yana sa jira ya dawo nan da nan tare da nuni na jiran jirage mai kyau. Lokacin da tsari ya fita (daga baya), zai ƙare ta atomatik ba tare da buƙatar jira ba.

Ana iya amfani da umarnin jiran jira don yin amfani da tsari ta hanyar amfani da muhawarar "-i -1". Ba kamar yadda aka yi amfani da shi ba tare da aiwatar da matakai, ana iya kashe wannan umurnin a kowane lokaci. Babu kariya akan abin da aka girbe. Duk da haka, za a iya bincika darajar dawowa don id.

KARANTA

Tana fatan ta atomatik ya san game da ɗakunan karatu guda biyu a cikin ɗakunan rubutun Lura. Wadannan kundayen adireshi masu suna suna bayyana su a cikin shafukan exp_library da kuma exp_exec_library. Dukansu suna nufin su ƙunshi fayilolin masu amfani waɗanda za a iya amfani da su ta wasu rubutun.

Shafin yanar gizo ya ƙunshi fayilolin masu zaman kansu na gine-gine. exp_exec_library ya ƙunshi fayilolin dogara-gida. Dangane da tsarinka, kundayen adireshi biyu na iya zama maras kyau. Dawowar fayil din $ exp_exec_library / cat-buffers ya bayyana ko ka / bin / cat buffers ta tsoho.

BABI NA BUGA

Ma'anar vgrind yana samuwa ga kyawawan-rubutun Lura rubutun. Yayin da aka kwatanta ma'anar vgrind da aka ba da Ra'ayin Fitarwa an shigar da shi daidai, zaka iya amfani dasu kamar:

vgrind-fayil mai juyowa

Misalai

Yana da yawa ba a fili yadda za a saka duk abin da mutum mutumin ya bayyana. Ina ƙarfafa ku ku karanta da kuma gwada misalan misalin misalai na Ra'ayin Buga . Wasu daga cikinsu su ne ainihin shirye-shirye. Sauran su ne kawai misalai na wasu hanyoyi, kuma ba shakka, ma'aurata ne kawai masu fashin kwamfuta mai sauri. Fayil ɗin INSTALL yana da mahimman bayani akan wadannan shirye-shiryen.

Takardun Bugawa (duba SEE ALSO) ma suna amfani. Duk da yake wasu takardu suna amfani da daidaitattun daidaitattun abubuwa da suka dace da tsohuwar fasali na Tsammani, ƙayyadaddun lissafin suna har yanzu suna da cikakkun bayanai kuma sunyi cikakken bayani fiye da wannan mutumin.

CAVEATS

Kwalogizai na iya haɗu da sunayen sunaye na jira. Alal misali, aikawa ta ƙayyade ta Tk don wata ma'ana daban. A saboda wannan dalili, yawancin ka'idodin sa ido suna samuwa a matsayin "exp_XXXX". Umurni da masu canji da suka fara da "exp", "inter", "spawn", da kuma "timeout" ba su da sunayen sunayen. Yi amfani da umarnin karin umarnin idan kana buƙatar wannan daidaituwa tsakanin yanayin.

Ji tsammanin yana daukar ra'ayi na gaskiya game da lalacewa. Musamman ma, za a iya nema da canje-canje da aka karanta ta umarnin musamman ga shirin Tsare - tsaren daga ƙaddamarwa na gida, kuma idan ba a samu ba, a duniya. Alal misali, wannan yana ƙin bukatar buƙatar "lokaci na duniya" a kowace hanya da ka rubuta cewa yana amfani da tsammanin . A wani ɓangaren kuma, ƙididdigar da aka rubuta su ne a kowane lokaci (sai dai idan an ba da umurnin "duniya"). Matsalolin mafi yawancin wannan yana haifar da lokacin da ake kashewa a cikin hanya. A waje da hanyar, spawn_id bai wanzu ba, don haka tsarin da aka sace ba zai iya samun damar kawai ba saboda scoping. Ƙara "duniya spawn_id" zuwa irin wannan hanya.

Idan ba za ka iya ba da dama ga damar multispawning (watau, tsarinka ba ya goyan baya ba kuma zaɓi (BSD *. *), Zabe (SVR> 2), ko kuma wani abu daidai), Tsammani zai iya sarrafa iko ɗaya kawai a lokaci guda. A wannan yanayin, kada kuyi ƙoƙarin saita spawn_id , kuma kada ku aiwatar da matakai ta hanyar aiwatarwa yayin aiwatar da saukewa yana gudana. Bugu da ƙari kuma, baza ku iya tsammanin daga matakai mai yawa ba (tare da mai amfani a matsayin ɗaya) a lokaci guda.

Ƙaddamar da sigogi na iya samun babban tasiri a rubutun. Alal misali, idan an rubuta rubutun don neman sauti, zai yi kuskure idan an kashe kashewa. Saboda wannan dalili, Yi tsammanin mayafin sakonni ta hanyar tsoho. Abin baƙin ciki, wannan zai iya sa abubuwa mara kyau ga sauran shirye-shirye. Alal misali, emacs harsashi yana so ya canza mappings "saba": sabon labaran da aka tsara zuwa sabbin layi maimakon ƙaddarar sabbin kayan sakewa, kuma an sake kashewa. Wannan yana ba da damar yin amfani da emacs don shirya layin shigarwa. Abin takaici, Da fatan ba za a iya tsammani hakan ba.

Kuna iya buƙatar wannan Tsammani kada ku shafe tushen sa na tsoho na sigogi, amma dole ne ku yi hankali lokacin rubuta rubutun don irin waɗannan wurare. A game da emacs, kauce wa dogara akan abubuwa kamar ƙuƙwalwa da maɓallin ƙarewa.

Dokokin da suka yarda da hujjojin da aka yi a cikin jerin guda ( jumlolin jirage da kuma hulɗa ) yi amfani da heuristic don yanke shawarar idan jerin sun kasance hujja ɗaya ko mutane da yawa. Harkokin da ke tattare da shi zai iya ɓacewa kawai a cikin shari'ar lokacin da jerin ke wakiltar wata hujja guda ɗaya wadda ta ƙunshi nau'ikan \ n tare da halayyar marasa tsarki a tsakanin su. Wannan alama ba zai yiwuba ba, duk da haka ana iya amfani da hujjar "-bracation" don yin amfani da wata gardama guda daya da za a yi amfani da ita a matsayin wata hujja guda ɗaya. Wannan za a iya amfani da shi ta hanyar amfani da lambar sa ido na na'ura. Bugu da ƙari, -bauɗar tana da hujja guda daya da za a riƙa ɗauka kamar yadda aka saba da juna / ayyuka.

BUGS

Yana da mahimmanci da ake kira shirin "jima'i" (don "Smart Exec" ko "Aika-Fira"), amma hankali (ko watakila Puritanism) ya rinjayi.

A kan wasu tsarin, lokacin da aka kwantar da harsashi, sai ta yi kuka game da baza su iya samun damar tty ba amma suna gudanar. Wannan yana nufin tsarinka yana da mahimmanci don samun jagorancin tty da tsammanin bai sani ba. Don Allah a gano abin da yake, kuma aika wannan bayanan zuwa gare ni.

Ultrix 4.1 (a kalla sababbin sassan dake kusa da nan) ya ɗauki lokutan sama da 1000000 don zama daidai da 0.

Dandalin UNIX 4.0A (kuma tabbas wasu sigogi) sun ƙi ƙaddamar ptys idan ka ayyana mai jagoran SIGCHLD. Dubi shafin da aka ba da don ƙarin bayani.

IRIX 6.0 ba ya kula da izini na kwarai daidai don haka idan Idan aka yi ƙoƙari na ba da wani ɓangare na baya wanda wani ya yi amfani dasu, to ta kasa. Ƙarawa zuwa IRIX 6.1.

Telnet (wanda aka tabbatar kawai karkashin SunOS 4.1.2) yana rataye idan ba a saita TERM ba. Wannan matsala ne a ƙarƙashin cron, a kuma a cikin rubutun cgi, waɗanda basu ƙayyade TERM ba. Sabili da haka, dole ne ka saita shi a bayyane - abin da yafi amfani da ita ba a mahimmanci ba. Dole ne a saita shi zuwa wani abu! Wadannan tabbas zasu isa ga mafi yawan lokuta.

saita zane (TERM) vt100

Tip (tabbatar kawai a karkashin BSDI BSD / OS 3.1 i386) yana rataye idan SHELL da HOME ba a saita su ba. Wannan matsala ne a ƙarƙashin cron , a kuma a cikin rubutun cgi , wanda ba ya ƙayyade waɗannan masu canjin yanayi. Saboda haka, dole ne ka sanya su bayyane - wace irin nau'i ne mai mahimmanci ba. Dole ne a saita shi zuwa wani abu! Wadannan tabbas zasu isa ga mafi yawan lokuta.

yanci (SHELL) / bin / sh sa (HOME) / usr / local / bin

An tsara wasu ƙaddamarwa na ptys don kernel ya watsar da duk wani bayanan da ba a buga ba bayan 10 zuwa 15 seconds (ainihin lambar shi ne dogara da aiwatarwa) bayan da tsarin ya rufe fayil din fayil din. Saboda haka jiragen shirye-shiryen irin su

barci kwanan rana 20 sa ran

za ta kasa. Don kaucewa wannan, yi kira da shirye-shiryen ba tare da haɗari tare da aiwatarwa ba maimakon spawn . Duk da yake irin waɗannan yanayi suna da hankali, a aikace na taba taɓa wani halin da ya faru wanda za'a iya ɓacewa na karshe na shirin da za a yi da gaske saboda wannan hali.

A gefe guda kuma, Cray UNICOS tana watsar da duk wani bayanan da ba'a karanta ba bayan da tsarin ya rufe fayil din fayil ɗin. Na bayar da rahoton wannan zuwa Cray kuma suna aiki a kan gyara.

Wani lokaci ana jinkirta jinkirta tsakanin tsayayye da amsawa, kamar lokacin da tty ke dubawa yana canza saitunan UART ko dacewa da lada ta hanyar neman farawa / dakatarwa. Yawancin lokaci, duk wannan yana buƙata shine barci don na biyu ko biyu. Ƙarin fasaha mafi mahimmanci shine a sake gwadawa har sai hardware ya shirya don karɓar shigarwa. Misali na gaba yana amfani da hanyoyi guda biyu:

aika "gudun 9600 \ r"; barci 1 sa ran {timeout {aika "\ r"; exp_continue} $ m}

trap -code ba zai yi aiki tare da kowane umurni da ke zaune a cikin tashar Tcl ba, irin su barci. Matsalar ita ce a cikin tashe-tashen hankula, Tcl ya watsar da lambobin dawowa daga masu amfani da kayan aiki async. Gudun gudummawa shine saita tutar a cikin lambar tarko. Sa'an nan kuma duba flag nan da nan bayan umurnin (watau barci).

Umurin da ake tsammani na zaton_background ba shi da la'akari da jigilar muhawarar kuma ba shi da wani ra'ayi na lokaci lokaci.

& # 34; GAME DA SANTA & # 34;

Akwai abubuwa biyu game da Tsammani cewa mai yiwuwa ba mai amfani ba ne. Wannan sashe yana ƙoƙarin magance wasu daga cikin waɗannan abubuwa tare da wasu shawarwari.

Sanarwar da ake tsammani matsala ita ce yadda za a gane harsashi. Tun da yake an tsara waɗannan ta daban daban daban daban da mutane daban-daban, mai yiwuwar yin amfani da na'ura na rlogin zai iya zama da wuya ba tare da sanin wannan ba. Tsarin da ya dace shi ne masu amfani su adana kalma na yau da kullum kwatanta yadda suka dace (musamman, ƙarshen) a cikin yanayin yanayin EXPECT_PROMPT. Za'a iya amfani da code kamar wannan. Idan EXPECT_PROMPT ba a wanzu ba, lambar har yanzu yana da kyakkyawan damar yin aiki daidai.

saiti da sauri "(% | # | \\ $) $";

Ina ƙarfafa ku da ku rubuta abubuwan da za ku yi tsammani da suka hada da ƙarshen duk abin da kuke sa ran gani. Wannan yana kawar da yiwuwar amsa tambayoyin kafin ganin dukkan abu. Bugu da ƙari, yayin da za ku iya amsa tambayoyin kafin ku gan su duka, idan kun amsa da wuri, za a iya amsa tambayarku a cikin tsakiyar tambaya. A wasu kalmomi, tattaunawa da aka samo asali zai zama daidai amma duba yayatawa.

Yawancin hanyoyi sun haɗa da halin sarari a ƙarshen. Alal misali, sauƙin daga ftp ne 'f', 't', 'p', '>' kuma. Don daidaita wannan haɗakarwa, dole ne ka lissafa kowane ɗayan waɗannan haruffa. Yana da kuskuren kuskure don kada a hada da blank. Sanya blank a bayyane.

Idan kayi amfani da tsari na X *, * * zai daidaita duk kayan da aka samu daga ƙarshen X zuwa abu na karshe da aka karɓa. Wannan yana da mahimmanci amma yana iya zama da rikicewa saboda kalmar "abu da aka karɓa" na iya bambanta dangane da gudun kwamfutarka da kuma aiki na I / O biyu ta kwaya da direba na na'urar.

Musamman ma, 'yan adam suna ganin shirin fitar da kayan aiki a cikin manyan hanyoyi (atomically) lokacin da yawancin shirye-shiryen ke samar da kayan aiki ɗaya daga lokaci daya. Yayin da wannan shine yanayin, * * a cikin alamomin sakin layi na baya zai dace da ƙarshen layi na yanzu ba tare da koda yake akwai alama ba, domin a lokacin wasan da duk kayan aikin da aka karɓa.

tsammanin babu wata hanya ta san cewa ƙaddarar za ta fito sai dai idan yanayinka ya kasance daidai da shi.

Ko da ya dogara da ƙaddamar da layi na layi ba daidai ba ne. Ba wai kawai shirye-shiryen ba sukan yi alkawarin game da irin nauyin da suke yi ba, amma tsarin kulawa yana iya rushe samfuran samfurin don haka rudun sun rabu a wurare masu ban mamaki. Sabili da haka, idan zaka iya bayyana wasu haruffan 'yan kalmomi na ƙarshe lokacin da kake rubutu, yana da hikima a yi haka.

Idan kana jiran wani tsari a cikin fitowar ta ƙarshe na shirin kuma shirin ya aika wani abu a maimakon haka, baza ka iya gano wannan tare da maƙallin lokaci ba . Dalilin shi ne cewa tsammanin ba zai sanya lokaci ba - a maimakon haka zai sami jigon jimla . Yi amfani dashi a maimakon. Ko da mafi alhẽri, amfani da duka biyu. Wannan hanya idan wannan layin ya taɓa motsawa, ba za ka iya shirya layin kanta ba.

Newlines yawanci sun tuba zuwa dawo da karusai, jerin layi lokacin da direba mai sarrafawa ya fito. Saboda haka, idan kuna son wani alamu wanda ya dace da layi biyu, daga, say, printf ("foo \ nbar"), ya kamata ku yi amfani da alamar "foo \ r \ nbar".

Irin fassarar irin wannan ya faru ne lokacin karatun daga mai amfani, ta hanyar expect_user . A wannan yanayin, lokacin da kake dannawawa, za'a fassara shi zuwa sabon layi. Idan Anyi tsinkaya to wannan ya wuce zuwa shirin da ya kafa mota zuwa yanayin da ya dace (kamar telnet), za'a zama matsala, kamar yadda shirin yana buƙatar dawowa mai gaskiya. (Wasu shirye-shiryen suna hakikanin gafartawa da cewa za su fassara sabon labaran ta atomatik don dawowa, amma mafi yawan basuyi ba.) Abin takaici, babu wata hanya ta gano cewa shirin ya sanya mota a cikin yanayin da ya dace.

Maimakon yin maye gurbin sabbin kayayyaki tare da dawowa, ma'anar ita ce yin amfani da umurnin "stty raw", wanda zai dakatar da fassarar. Lura, duk da haka, wannan yana nufin cewa ba za ku sake samo siffofin layi ba.

yin hulɗa tare da kwatsam ya kafa majinka zuwa yanayin bashi don haka wannan matsala ba zai tashi ba.

Yana da amfani sosai don adana kalmomin shiga (ko wasu bayanan sirri) a cikin rubutun Lura. Ba'a ba da shawarar wannan ba saboda wani abu da aka adana a kwamfuta yana iya zama mai saukin kamuwa da kowa. Saboda haka, haɗakarwa ta hanyar sadarwa tare da kalmomin sirri daga rubutun ra'ayin kirki ne mafi alhẽri fiye da saka su a zahiri. Duk da haka, wani lokaci irin wannan sakawa shine kawai yiwuwar.

Abin baƙin ciki, tsarin UNIX ba shi da wata hanya ta hanyar samar da rubutun da suke aiwatar da amma ba a iya lissafa su ba. Abubuwan da ke goyan bayan rubutun mashigin harshe zasu iya yin hakan kamar yadda ya kamata:

Ƙirƙiri rubutun Lura (wanda ya ƙunshi asirin asirin) kamar yadda ya saba. Sanya izininsa ya zama 750 (-rwxr-x ---) kuma mallakar wani rukunin amincewa, watau, ƙungiyar da aka yarda ya karanta shi. Idan ya cancanta, ƙirƙirar sabon rukuni don wannan dalili. Kusa, ƙirƙirar / bin / sh script tare da izini 2751 (-rwxr-s - x) mallakar wannan rukuni kamar yadda ya kasance.

Sakamakon shine rubutun da za'a iya kashe (da karantawa) da kowa. Lokacin da ake kira, yana gudanar da rubutun Jira .

& # 34; DUBI ALSO & # 34;

Tcl (3), libexpect (3)
"Binciken Binciken: Aiki na Tcl don Gyara Hanya Kasuwanci" by Don Libes, shafi 602, ISBN 1-56592-090-2, O'Reilly da Associates, 1995.
"Yi tsammanin: Karfafa Wadannan Harkokin Kasuwanci ba tare da Kariya ba" by Don Libes, Taron Kuɗi na Yammacin Ƙasar 1990 na taron USENIX, Anaheim, California, Yuni 11-15, 1990.
.I "Yin amfani da tsammanin Tsarin Ayyukan Gudanarwa na Gudanarwa" by Don Libes, Ayyukan 1990 na Babban Taron Kasuwancin USENIX, na Colorado Springs, Colorado, Oktoba 17-19, 1990.
Ina "Tcl: Wani Maganar Jagora" by John Ousterhout, Ayyuka na Winter 1990 Majalisar Dattijan USENIX, Washington, DC, Janairu 22-26, 1990..I "tsammanin: Rubutun Hoto don Sarrafa Shirye-shiryen Hanya" by Don Libes, Kasuwancin Ƙira , Vol. 4, No. 2, Jami'ar California Press Journals, Nuwamba 1991..I "Shirye-shiryen gwaje-gwajen gwaje-gwaje da gwaje-gwaje game da gwaje-gwajen Conformance", by Don Libes, Ayyukan Taron Satumba 1992 Ƙungiyar USENIX, pp. 135-144, San Antonio, TX, Yuni 12-15, 1992..I "Kibitz - Sadar da Shirye-shiryen Hulɗa Mai Girma Tare", by Don Libes, Software - Practice & Experience, John Wiley & 'Ya'yansa, West Sussex, Ingila, Vol.

23, Nu. 5, Mayu, 1993. Na "Mai Buƙatawa ga Tashoshin Tcl", da Don Libes, Ayyuka na 1993 Tcl / Tk Workshop, Berkeley, CA, Yuni 10-11, 1993.

AUTHOR

Don Libes, Cibiyar Nazarin Harkokin Kasa da Kasa ta Kasa

ACKNOWLEDGMENTS

Godiya ga John Ousterhout na Tcl, da Scott Paisley don wahayi. Mun gode wa Rob Savoye don tsarin haɓakaccen kwarin gwiwar Expect.

Rubutun fayil na TASKIYA suna da yawa daga juyin halitta na tsammanin . Yana sa karatu mai ban sha'awa kuma zai ba ka ƙarin fahimtar wannan software. Na gode wa mutanen da aka ambata a cikinta wanda suka aiko ni da gyare-gyaren buguwa kuma sun ba da taimako.

An tsara zane da kuma aiwatar da tsammanin kudaden da Gwamnatin Amurka ta biya ta hannu, saboda haka ne a cikin yanki. Duk da haka marubucin da NIST zai so bashi idan an yi amfani da wannan shirin da takardun ko wasu daga cikinsu.