I-Linux / Unix Command Lindela

Lindela uhlelo olukhuluma nezinye izinhlelo zokuxhumana ngokuvumelana neskripthi. Ukulandela iskriphthi, Lindela uyazi ukuthi yini engalindelwa kusuka ohlelweni nokuthi yiyiphi impendulo efanele. Ulimi oluhunyushwe lunikeza izakhiwo zokulawula nezinga eliphezulu ukuqondisa ingxoxo. Ngaphezu kwalokho, umsebenzisi angakwazi ukulawula futhi ahlanganyele ngqo uma efunwa, emva kwalokho abuyisele ukulawula kwiskripthi.

Ukulindela kungumxube wokulindela no-Tk. Iziphatha njengokufana nokulindela kanye nesifiso sikaTk. Lindela futhi ingasetshenziswa ngqo ku-C noma ku-C ++ ngaphandle kwe-Tcl.

Igama elithi "Lindela" livela kumqondo wokuthumela / ukulindela ukulandelana okuphakanyiswe yi-uucp, kermit nezinye izinhlelo zokulawula i-modem. Kodwa ngokungafani ne-uucp, Lindela i-generalized ukuze isebenze njengomyalo wezinga lomsebenzisi nganoma yiluphi uhlelo nomsebenzi engqondweni. Lindela ungakhuluma nezinhlelo eziningana ngesikhathi esifanayo.

Yikuphi okulindelekile ukukwenza

Isibonelo, nansi ezinye izinto umyalo okulindele ongakwenza:

Kunezizathu ezihlukahlukene zokuthi kungani igobolondo ayikwazi ukwenza le misebenzi. Konke kungenzeka nge-Lindela.

Ngokuvamile, Lindela kuyasiza ukuqhuba noma yiluphi uhlelo oludinga ukuxhumana phakathi kohlelo nomsebenzisi. Konke okudingekile ukuthi ukuxhumana kungabonakala ngokuhlelekile. Lindela futhi kungabuyisa ukulawula kumsebenzisi ngaphandle kokunqanda uhlelo olulawulwayo. Ngokufanayo, umsebenzisi angabuyisa iskripthi noma kunini.

Ukusetshenziswa

Lindela ukufunda i-cmdfile ohlwini lwamilayezo okuzokwenza. Kulindeleke ukuthi ingenwe ngokugcwele kumahlelo asekela i- #! ukuphawula ngokumaka iskriphthi njenge-executable nokwenza umugqa wokuqala kuskripthi:

#! / usr / yendawo / ibin / ilindele -f

Yiqiniso, indlela kufanele ichaze ngokunembile ukuthi ulindelephi ukuphila. / usr / yendawo / bin yisibonelo nje.

I-i-flag iqala umyalo ozofezwa ngaphambi kwanoma yisiphi iskripthi. Umyalo kufanele ucashunwe ukuvimbela ukuphulwa yigobolondo. Le ndlela ingasetshenziswa izikhathi eziningi. Imiyalo eminingi ingenziwa ngokukodwa -c ngokuhlukanisa nge-semicolons. Imiyalo ikhiqizwa ngendlela evelayo. Uma usebenzisa i-Expectk, le nketho ichazwa njenge--command.

I-i-flag yenza okuthile okukhipha ukuxilongwa, okuyinto ngokuyinhloko ebika umsebenzi wangaphakathi wemilayezo njengokulindela nokuhlanganyela. Leli flegi linomphumela ofanayo no- "exp_ngaphandle 1" ekuqaleni kweskripthi esilindele, kanye ne-version ye-Lindela ishicilelwe.

I-i-flag ivumela i-debugger esebenzayo. Inani eliphelele kufanele lilandele. I-debugger izothatha ukulawula ngaphambi kwenqubo elandelayo ye-Tcl uma inani lingekho-zero noma uma i- ^ C icindezelwa noma i-breakpoint ishaywa, noma omunye umyalo we-debugger efanelekile uvela kwiskripthi. Uma usebenzisa i-Expectk, le nketho ichazwa ngokuthi - Ukuguqulwa.

I--f flag iqala ifayela lapho kufanele ufunde khona imiyalo. Ifulegi ngokwayo iyakhethwa ngoba iyasiza kuphela uma usebenzisa #! ukuphawula, ukuze ezinye izimpikiswano zinganikezwa emgqeni womyalo. Uma usebenzisa i-Expectk, le nketho ichazwa njenge -file.

Ngokuzenzakalelayo, ifayela lomyalo lifundwa kwimemori futhi liphethwe ngokuphelele. Ngezinye izikhathi kuyadingeka ukufunda amafayela enye umugqa ngesikhathi. Ukuze ucindezele amafayili okungaqondakali ukuthi asebenze ngale ndlela, sebenzisa i-bb flag. Uma usebenzisa i-Expectk, le nketho icacisiwe njenge-buffer.

Uma uchungechunge "-" lunikezwa njengegama lokufaka igama, okufakwayo okujwayelekile kufundwa esikhundleni. Sebenzisa "./-" ukufunda kusuka efayeleni empeleni okuthiwa "-".

I-ifulegi ibangele Lindela ukuhambisa imiyalezo ngokuhlanganyela ngaphandle kokuwafunda kusuka efayeleni. Ukunyusa kupheliswa ngomyalo wokuphuma noma ku-EOF. I-ifulegi iyacatshangwa uma ngabe ifayela lomyalo noma -c lisetshenziswa. Uma usebenzisa i-Expectk, le nketho ichazwa ngokuthi-ayisebenzi.

- ingasetshenziselwa ukuqeda ukuphela kwezinketho. Lokhu kuyasiza uma ufuna ukudlulisa impikiswano efana nenketho kwiskripthi sakho ngaphandle kokuhunyushwa nguLindela. Lokhu kungasetshenziswa kahle ku #! umugqa wokuvimbela noma yikuphi ukuhumusha okufana nefulegi ngokulindela. Isibonelo, okulandelayo kuzoshiya izingxabano zangempela kuhlanganise negama leskripthi ku- argv eguquguqukayo.

#! / usr / yendawo / bin / kulindeleke -

Qaphela ukuthi ukuqoqa okujwayelekile (3) nokufeza (2) imihlangano kumele kugcinwe lapho ungeza izingxabano ku #! umugqa.

Ifayela le-$ exp_library / expect.rc livunyiwe ngokuzenzekelayo uma likhona, ngaphandle kokuthi i-N flag isetshenziswe. (Uma usebenzisa i-Expectk, le nketho icacisiwe njengo-NORC.) Ngokushesha ngemva kwalokhu, ifayela ~ / .expect.rc livaliwe ngokuzenzekelayo, ngaphandle kokuthi i-flag isetshenziswe. Uma i-variable variable ye-DOTDIR ichazwa, iphathwa njenge-directory futhi .expect.rc ifundwa kusuka lapho. Uma usebenzisa i-Expectk, le nketho ichazwa njenge -norc. Lokhu kuvela kwenzeka ngemuva kokusebenzisa noma yikuphi-amafulegi.

-v kubangela ukulindela ukuphrinta inombolo yenguqulo bese uphuma. Ifulegi elihambelanayo ku-Expectk, elisetshenziswa amagama amakhulu wefulegi, yi -version.

I-args ekhethwayo yenziwe ohlwini futhi igcinwe ku-variable evamazwe okuthiwa i-argv futhi. i-argc iqaliswa ubude be-argv.

I-Argv0 ichazwa ukuthi yigama leskriphthi noma kanambambili uma kungekho script esetshenzisiwe. Isibonelo, okulandelayo kufaka igama leskripthi kanye neziphakamiso ezintathu zokuqala:

thumela_user "$ argv0 [lrange $ argv 0 2] \ n"

Imiyalo

Lindela isebenzisa uLimi LokuLawula Ithuluzi. I-Tcl inikeza ukugeleza kokulawula (uma, ukuphumula), ukuhlolwa kokukhuluma nokunye okunye okunjengokuphindaphindiwe nencazelo yenqubo. Imiyalo esetshenziselwa lapha kodwa engachazwa (isethi, uma, yenza) yimilayezo ye-Tcl. Lindela isekela imiyalo eyengeziwe. Ngaphandle kokuthi kuchaziwe ngenye indlela, imiyalo ibuyisela ucingo olungenalutho.

Imiyalo ibhalwe ohlwini lwe-alfabhethi ukuze ikwazi ukutholakala ngokushesha. Noma kunjalo, abasebenzisi abasha bangase bakuthole kulula ukuqala ngokufunda izincazelo zokutshala, ukuthumela, ukulindela, nokuxhumana, kulowo myalelo.

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

ivala uxhumano lwenqubo yamanje. Izinhlelo eziningi zokuxhumana zizobona i- EOF kwi-stdin yazo futhi ziphume; ngakho-ke kuvame ukuvame ukubulala le nqubo . I-i-flag imemezela inqubo yokuvala ehambelana ne-spawn_id okuthiwa.

Bobabili balindela futhi bahlanganyele bazobona lapho inqubo yamanje iphuma futhi ivala ngokuqondile, kodwa uma ubulala inqubo ngokuthi, "bulala ubulale $ pid", udinga ukubiza ngokucacile .

I-flag ye-onexec inquma ukuthi i-id engenazo zivaliwe yini kunoma yiziphi izinqubo ezintsha ezenziwe noma uma inqubo ihlanganiswa. Ukuze ushiye i-id evulekile, sebenzisa inani 0. Inani elingenayo elingu-integer elibamba iqhaza le-spawn livalile kunoma yiziphi izinqubo ezintsha.

Ifulegi-i-flavour ivala isigqila esithinta i-id engenawo. Uma uxhumano luvaliwe, isigqila sivaliwe ngokuzenzakalelayo futhi uma sisaphila.

Kungakhathaliseki ukuthi uxhumano luvaliwe ngokuphelele noma ngokucacile, kufanele ubize ukulinda ukuze usule inqubo ehambisanayo yenqubo ye- kernel. Umyalo oseduze awubizi ukulinda ngoba akukho siqinisekiso sokuthi ukuvala uxhumano lwenqubo kuzokwenza ukuba kuphume.

ukuhlukumeza [-now] 0 | 1]

ilawula i-debugger ye-Tcl ikuvumela ukuba uqhubekele izitatimende bese usetha amaphuzu.

Ngezingxabano, i-1 ibuyiselwa uma ngabe i-debugger ingasebenzi, kungenjalo i-0 ibuyiselwe.

Ngempikiswano engu-1, i-debugger iqalile. Ngempikiswano engu-0, i-debugger imisiwe. Uma ukuphikisana oku-1 kulandelwa yi-manje i-flag, i-debugger iqaliswe ngokushesha. Uma kungenjalo, i-debugger iqalwa ngesitatimende esilandelayo se-Tcl.

Umyalo wokulungisa iphutha awushintshi noma yiziphi izicupho. Qhathanisa lokhu ukuze uqale ukulindela ne--D flag.

Umyalo wokunqamula ukuxhuma unqamula inqubo evaliwe kusukela esibulalayo . Iyaqhubeka isebenza ngemuva. Le nqubo inikezwa inqubo yayo yeqembu. I-O / Standard ejwayelekile iqondiswa kabusha ku- / dev / null .

Isiqephu esilandelayo sisebenzisa ukuxhuma ukuze uqhubeke nokusebenzisa iskripthi ngemuva.

uma {fork] = 0} phuma ukuxhuma. . .

Isikripthi esilandelayo sifunda iphasiwedi bese igijima uhlelo njalo ihora elifuna iphasiwedi njalo lapho isebenza. Isikripthi sinikeza iphasiwedi ukuze nje uthayiphe kanye.

thumela "iphasiwedi?" "linda_user" "(. *) \ n" for {} 1 {} {uma {[fork]! = 0} {alale 3600; qhubekani} unqamule i-spawn priv_prog ilindele iphasiwedi: thumela "$ expect_out ( 1, string) \ r ". . . Phuma }

Inzuzo yokusebenzisa ukuxhuma phezu kwegobolondo isici senqubo ye-inynchronous (&) yilokho Lindela kungagcina imingcele yokugcina ngaphambi kokunqamula bese ubesebenza kuwo ama-ptys amasha. Nge &, Lindela akanalo ithuba lokufunda imingcele yokugcina kusukela ukuphela sekuvele kuxhunyiwe ngesikhathi Ukulindela kuthola ukulawula.

phuma [-opts] [isimo]

kubangele Lindela ukuphuma noma ngenye indlela ulungiselele ukwenza kanjalo.

I-i-flag ye-flag idala ukuphikisana okulandelayo ukuthi kusetshenziswe njengomphathi wokuphuma. Ngaphandle kokuphikisana, umphathi we-exit wamanje uyabuyiselwa.

I-i-flag engabangela i- Lindela ukulungiselela ukuphuma kodwa yeka ukulawula okuncane ukubuyisela ohlelweni lokusebenza. Umphathi we-exit ochazwe ngumsebenzisi ugijimela kanye nabasebenzisa zangaphakathi abaLindele. Akukho okulindelekile okulindelekile ukuthi imiyalo kufanele ilandelwe. Lokhu kuyasiza uma ugijima Ulindela nezinye izandiso ze-Tcl. Umhumushi wamanje (kanye newindwangu enkulu uma kumoya we-Tk) ehlala ukuze ezinye izandiso ze-Tcl zihlanzwe. Uma ukulindela ukuphuma kubizwa ngokuthi futhi futhi (noma lokhu kungase kwenzeke), abaphathi ababuyiselwa.

Phezu kokuphuma, konke ukuxhumeka kwezinqubo eziveziwe kuvaliwe. Ukuvalwa kuzotholakala njenge-EOF ngokwenziwa kwezinqubo. ukuphuma akuthathi ezinye izenzo ezingaphezu kwalokhu okujwayelekile okwenzekayo (2). Ngakho-ke, izinqubo ezingabhekanga ku-EOF zingaqhubeka nokugijima. (Izimo ezihlukahlukene zibalulekile ekunqumeni, isibonelo, yiziphi izibonakaliso zenqubo ekhishweyo ezothunyelwa, kodwa lezi zixhomekeke ohlelweni, ngokuvamile zibhalwe ngaphansi kokuphuma (3).) Izinqubo ezibekwe eceleni ezizoqhubeka zizozuzwa njenge-init.

isimo (noma i-0 uma singacacisiwe) kubuyiselwa njengesimo sokuphuma sokulindela . ukuphuma kukhishwa ngokuphelele uma ukuphela kweskripthi kufinyelelwe.

i-exp_iyoqhubeka [-continue_timer]
Umyalo exp_okuqhubeka uvumela ukuthi uqobo uqhubeke ukuqhuba kunokuba ubuyele ngendlela evamile. Ngokwenza okuzenzakalelayo exp_kudlula uvuselela isikhathi sokuvala kwesikhathi. Ifulegi-i- quinter_timer ivimbela i-timer kusukela ekuqaleni kabusha. (Bheka ulindele ukuthola olunye ulwazi.)

exp_ngaphandle [-f ifayela] value
kubangela imiyalo eqhubekayo yokuthumela ulwazi lokuxilonga ngaphakathi ngaphakathi kulindeleke ukuba u- stderr uma inani lingekho . Lokhu okukhiphayo kukhutshaziwe uma inani lingu-0. Ulwazi lokuhlonza luhlanganisa wonke umlingiswa otholiwe, futhi yonke imizamo eyenziwe ukufanisa ukukhipha kwamanje kumaphethini.

Uma ifayela lokuzikhethela linikezwa, konke okukhiphayo kanye nokukhipha isiphulelo kubhalwa lelo fayela (kungakhathaliseki ukuthi inani lenani ). Noma iyiphi ifayela lokukhishwa lokuhlola elidlule livaliwe.

I-flag ye-flag ibangela i-exp_ yangaphandle ukubuyisela incazelo yezingxoxo ezingezona ulwazi ezingezona ezinikeziwe.

exp_open [args] [-i spawn_id]
ubuyisela isichazamazwi sefayela le-Tcl elihambisana ne-original id idokodo. Isihlonzi sefayela singasetshenziswa njengokungathi sasivuliwe ngomyalo ovulekile we-Tcl. (I-id engenazo kufanele ingasetshenzisiwe. Ukulinda akufanele kwenziwe.

I-flag ye- flaopen ishiya i-id evulekile yokufinyelela ngokulindela imiyalo. Ukulinda kumele kukhishwe kwi-id engenawo.

exp_pid [-i spawn_id]
ubuyisela i-id yenqubo ehambelana nenqubo okwamanje eyenziwe. Uma i -iifulegi isetshenzisiwe, i- pid ibuyele ihambisana neye-id enikezwa i-spawn.

exp_send
i-alias yokuthumela .

exp_send_error
i-alias ye- send_error .

exp_send_log
i-alias ye- send_log .

exp_send_tty
i-alias ye- send_tty .

exp_send_user
i-alias ye- send_user .

exp_version [-exit] inguqulo]
kuyasiza ukuqinisekisa ukuthi iskriphthi iyahambisana ne-version yamanje yeLindela.

Ngezingxabano, inguqulo yamanje yeLindela ibuyiselwa. Le nguqulo ingabe ifakwe ikhodi kusikripthi sakho. Uma empeleni uyazi ukuthi awusebenzisi izici zenguqulo yamuva, ungacacisa inguqulo yangaphambilini.

Izilinganiso zinezinombolo ezintathu ezihlukaniswe ngamachashazi. Okokuqala yinombolo enkulu. Izikripthi ezibhaliwe ngezihumusho zeLindela ngenombolo enkulu ehlukile cishe ngeke zisebenze. i-exp_version ibuyisela iphutha uma izinombolo ezinkulu zingafani .

Okwesibili yinombolo encane. Izikripthi ezibhalelwe inguqulo enezinombolo ezincane kunaleyo inguqulo yamanje ingase ixhomeke kwisici esithile esisha futhi ingase ingasebenzi. i-exp_version ibuyisela iphutha uma izinombolo ezinkulu zifanelana, kodwa inamba encane yeskripthi inkulu kunaleyo yokulindela elindelekile .

Okwesithathu yinombolo engadlali ingxenye yokuqhathaniswa kwesimo. Kodwa-ke, kukhuliswa lapho Kulindeleke ukusatshalaliswa kwesofthiwe kushintshwe nganoma iyiphi indlela, njengamaphepha engeziwe noma ukuthuthukisa. Isetha kabusha ku-0 kunhlobo ngayinye entsha entsha.

Nge- faka ifulegi, Lindela ukuphrinta iphutha futhi uphume uma inguqulo ingekho.

lindela [[-pts] pat1 body1] ... [-opts] patn [bodyn]
linda kuze kube yinye yamaphethini afana nokukhishwa kwenqubo evuliwe, isikhathi esithile siphelile, noma ukuphela kwefayela kuyabonakala. Uma umzimba wokugcina ungenalutho, ungahle ushiye.

Amaphethini asanda kulindela_ngaphambi komyalo asetshenziswe ngokuphelele ngaphambi kwamanye amaphetheni. Amaphethini avela kumyalo osanda kulindela_ukulandela ngemuva kokusetshenziswa emva kwamanye amaphetheni.

Uma izimpikiswano kuzo zonke izitatimende zokulindela zidinga ngaphezulu kweyodwa, zonke izingxabano zingase "zikhonjiswe" zibe enye ukuze kugweme ukuqeda umugqa ngamunye ngokubuyela emuva. Kulolu cala olulodwa, ukushintshwa okujwayelekile kwe-Tcl kuzokwenzeka naphezu kwe-braces.

Uma iphethini yi- eof elingukhiye, umzimba ohambelana nawo uphathwa ngesikhathi sokuphela kwefayela. Uma iphethini yisikhathi sokungena ngegama eliyisihluthulelo, umzimba ohambelana ukwenziwa ngesikhathi sokuhamba kwesikhathi. Uma kungenjalo igama elingukhiye elisetshenzisiwe, isenzo sokungenzi lutho esiphezulu senziwa ngesikhathi sokuhamba kwesikhathi. Isikhathi sokuhlala esizenzakalelayo yisikhathi samasekhondi angu-10 kodwa singasethwa, isibonelo ku-30, ngomyalo "setha isikhathi sokugcina 30". Isikhathi sokungapheli singasikelwa inani -1. Uma iphethini igama elingukhiye elizenzakalelayo , umzimba ohambelanayo ukwenziwa nganoma yisiphi isikhashana noma ukuphela kwefayela.

Uma iphethini ihambisana, khona-ke umzimba ohambelanayo uphathwa. ulindele ukubuyisa umphumela womzimba (noma uchungechunge olungenalutho uma kungekho iphethini ehambelana). Uma kwenzeka ukuthi amaphethini amaningi afana, lowo ovela kuqala usetshenziselwa ukukhetha umzimba.

Ngaso sonke isikhathi isikhathi esisha siphumela, siqhathaniswa nephethini ngayinye ngendlela ehlelwe ngayo. Ngakho-ke, ungase uvivinye ukungabi khona komdlalo ngokwenza iphethini lokugcina okuthile okuqinisekisiwe ukuba kuvele, njengokushesha. Ezimweni lapho kungekho khona okusheshayo, kufanele usebenzise ukuphela kwesikhathi (njengokuthanda kwakho uma usebenzisana ngesandla).

Amaphethini achazwa ngezindlela ezintathu. Ngokuzenzakalelayo, amaphethini acacisiwe njengomyalo we-Tcl's string match . (Amaphethini afanayo nawo afana namazwi ajwayelekile e- C-shell ngokuvamile abizwa ngokuthi "i-glob" amaphethini). I- gg flag ingase isetshenziselwe ukuvikela amaphethini angase ahambisane nawo alindele ukuthi amafulegi akwenze kanjalo. Noma iyiphi iphethini eqala "-" kufanele ivikelwe ngale ndlela. (Zonke izintambo eziqala ngokuthi "-" zigcinelwe izinketho ezizayo.)

Isibonelo, isiqephu esilandelayo sibheka ukungena ngemvume okuphumelelayo. (Qaphela ukuthi ukuphumula kuthathwa njengenqubo echazwe kwenye indawo kusikripthi.)

lindele ukuthi {umatasa {ubeke umatasa \ n; exp_continue} yehlulekile ukulahlekelwa "iphasiwedi engavumelekile" ukukhipha isikhathi sokuxhumeka esixhunyiwe}

Ama-quotes adingekayo kumaphethini wesine ngoba aqukethe isikhala, okungafani nokuhlukanisa iphethini kusukela esenzweni. Amaphethini ngesenzo esifanayo (njengesi-3 no-4) adinga ukufakwa kuhlu lwazo izenzo. Lokhu kungagwema ngokusebenzisa amaphethini wesitayela se-regexp (bona ngezansi). Ulwazi oluningi ekwakheni amaphethini wesitayela se-globe lungatholakala kumhlahlandlela we-Tcl.

Amaphethini wesitayela se-Regexp alandela i-syntax echazwe yi- regexp ye-Tcl (emifushane yomyalo "ovamile"). Amaphethini we-regexp aqaliswa ne-flag -re . Isibonelo sangaphambilini singabhalwa kabusha usebenzisa i-regexp njenge:

lindele ukuthi {umatasa {ubeke umatasa \ n; exp_continue} -re "ihlulekile | iphasiwedi engavumelekile" ilahle isikhathi sokungena esixhunyiwe}

Zombili izinhlobo zamaphetheni "azihambisani". Lokhu kusho ukuthi amaphethini akudingeki afane nawo wonke uchungechunge, kodwa angaqala futhi aqede umdlalo noma yikuphi kuzintambo (uma nje konke okunye kufana). Sebenzisa ^ ukufanisa ukuqala kwechungechunge, ne $ ukufanisa ukuphela. Qaphela ukuthi uma ungalindeli ukuphela kwechungechunge, izimpendulo zakho zingaphelela kalula phakathi kwechungechunge njengoba zikhokhiswa kwinkqubo evezwayo. Ngenkathi usalokhu ukhiqiza imiphumela emihle, okukhiphayo kungabonakala kungokwemvelo. Ngakho-ke, ukusebenzisa i-$ kuyakhuthazwa uma ungakwazi ukuchaza ngokuqondile izinhlamvu ekugcineni kwechungechunge.

Qaphela ukuthi kubahleli abaningi, i- ^ ne-$ bafanisa ukuqala nokuphela kwemigqa ngokulandelana. Kodwa-ke, ngoba kulindeleke ukuthi akuyona i-line oriented, lezi zinhlamvu zifanisa ukuqala nokuphela kwedatha (ngokuphambene nemigqa) okwamanje kulindeleke ukufanisa. (Futhi, bheka inothi elingezansi "ku-system indigestion.")

I-i-flag ye -ex yenza ukuba iphethini ifaniswe njengetambo "eqondile". Ayikho incazelo ye *, ^, njll eyenziwe (nakuba imihlangano evamile ye-Tcl kufanele isabhekwe). Amaphethini afanele ahlale enganaki.

I-flag ye- nonocase yenza abalingiswa abakhulu bokukhipha ukuqhathanisa njengokungathi bezinhlamvu ezingaphansi. Iphethini ayithintekile.

Ngenkathi ufunda okukhiphayo, ngaphezu kuka-2000 amabhayithi angaphoqa ama-byte angaphambili ukuba "akhohlwe". Lokhu kungashintshwa ngomsebenzi wokufana_max . (Qaphela ukuthi izindinganiso ezinkulu kakhulu zinganciphisa umlingisi wephethini.) Uma i- patlist igcwele_buffer , umzimba ohambelanayo uphathwa uma kufaniswa_max byte atholakele futhi awekho amanye amaphethini afanelwe. Kungakhathaliseki ukuthi igama elingukhiye eligcwele_eluse lisetshenzisiwe noma cha, izinhlamvu ezikhohliwe zilotshelwe ukulindela_out (buffer).

Uma i- patlist engamagama angukhiye engekho , futhi okungavumelekile kuvunyelwe (ngomyalo we- remove_nulls ), umzimba ohambelanayo uphathwa uma i- ASCII eyodwa efana neyodwa ifaniswa . Akunakwenzeka ukufanisa ama-bytes angu-0 nge-glob noma amaphethini we-regexp.

Phezu kokufanisa iphethini (noma i-eof noma i-full_buffer), noma yikuphi okufanako nokukhipha okungafani nakakhulu kulondolozwe ku-variable variable expect_out (buffer) . Kuze kube nemidlalo engu-9 ye-regexp engemuva egciniwe elondolozwe ku-variables elindele_kuyi (1, string) ngokulindela_out (9, string) . Uma i -indimba yefulegi isetshenziselwa ngaphambi kwephethini, izinkomba zokuqala nezokuphela (ngesimo esifaneleka lrange ) zezintambo eziyishumi zigcinwa eziguqukwaneni zilindele_ukuthi (X, qalisa) futhi ulindele_ukuthi (X, ekugcineni) lapho i-X idijithali, ihambisana nesimo esingaphansi kwesikhumbuzo. 0 ibhekisela emidlalweni ehambelana nayo yonke iphethini futhi ikhiqizwa amaphethini we-glob kanye namaphethini we-regexp. Isibonelo, uma inqubo ikhiqize ukukhishwa kwe- "abcdefgh \ n", umphumela we:

lindela "cd"

kunjengokuthi izitatimende ezilandelayo ziphelile:

setha ulindele_ku (0, string) cd usethele ukulinda_out (buffer) abcd

futhi "efgh \ n" ishiywe ku-buffer yomkhiqizo. Uma inqubo ikhiqiza umkhiqizo "abbbcabkkkka \ n", umphumela we:

ukulindela -izinkomba- "b (b)) * (k +)"

kunjengokuthi izitatimende ezilandelayo ziphelile:

setha ukulindela_ukuthi (0, qala) 1 usethe kulindeleke_kube (0, ekugcineni) 10 usethe kulindeleke_kube (0, intambo) bbbcabkkkk setha ukulindela_uku (1, qala) (2, qala) 10 usethe kulindeleke_uku (2, ekugcineni) 10 usethe kulindeleke_uku (2, intambo) k ubeke ithemba_out (buffer) abbbcabkkkk

futhi "i \ n" ishiywe kusiphequluli sokukhipha. Iphethini "*" (futhi -re ". *") Izosusa umkhiqizo wokukhipha ngaphandle kokufunda noma yikuphi ukukhipha okuvela enkambisweni.

Ngokuvamile, ukukhishwa okufanisiwe kulahliwe kusuka ekuthengeni kwangaphakathi okulindelwe. Lokhu kungavinjelwa ngokuqamba iphethini nge-i-flag ye- notransfer . Leli flegi liwusizo ngokukhethekile ekuhlolweni (futhi lingabhalwa "hhayi" ngokulula ngenkathi kuhlolwa).

I-id engenayo ehlobene nokukhishwa okuhambisanayo (noma i-eof noma i-full_buffer) igcinwa kulindeleke_out (spawn_id) .

I-ifulegi ye- timeout yenza ukuthi umyalo wamanje ulindele ukusebenzisa i-value elandelayo njengesikhathi sokuchitha isikhathi esikhundleni sokusebenzisa inani le-variableout timeout.

Ngokuzenzakalelayo, amaphethini afanelana nokukhipha okuvela kwinqubo yamanje, noma i- i- flag imemezela ukuthi okukhipha ohlwini olubizwa nge-spawn_id kufanelana ngokumelene nanoma yiziphi amaphethini alandelayo (kuze kufike olandelayo -i ). Uhlu lwe-spawn lufanele lube uhlu lwama-whitespace oluhlukanisiwe lwabantu abamhlophe noma okuguquguqukayo okubhekisela kuhlu olunjalo lwe-spawn_ids.

Isibonelo, isibonelo esilandelayo silinde ukuthi "sixhunyiwe" kusukela enkonzweni yamanje, noma "simatasa", "sihlulekile" noma "iphasiwedi engavumelekile" evela ku-spawn_id okuthiwa yi-$ proc2.

lindela {-i-$ proc2 imatasa {ibeka matasa \ n; exp_continue} -re "ihlulekile | iphasiwedi engavumelekile" ilahle isikhathi sokungena esixhunyiwe}

Inani lokuguquguquka komhlaba jikelele noma i- any_spawn_id ingasetshenziselwa ukufanisa amaphethini kunoma yikuphi ama-spawners okuthiwa yizo zonke ezinye-amaflegi emlayezo owalindele manje. I-spawn_id evela ku-ifulegi engenakho iphethini ehambisanayo (okungukuthi, ilandelwa ngokushesha ngomunye -i ) yenziwa itholakale kunoma yimaphi amanye amaphethini ngokufanayo alindele umyalo ohlobene nanoma iyiphi_spawn_id.

I-ifulege ingase futhi iguqule ukuguquguquka komhlaba jikelele lapho kwenzeka khona okuguquguqukayo kuluhlu lwamagama ama-spawns. Ukuguquguquka kuyaphinda kuphinde kuguquke. Lokhu kunikeza indlela yokuguqula umthombo we-I / O ngenkathi umyalo usuphethwe. Ama-ids ama-Spa ahlinzekwa ngale ndlela abizwa ngokuthi "angabonanga" ama-spawn ids.

Izenzo ezinjengokuphuka nokuqhubeka nezimbangela zokulawula imbangela (ie, for , proc ) ukuziphatha ngendlela evamile. Umyalo exp_okuqhubeka uvumela ukuthi uqobo uqhubeke ukuqhuba kunokuba ubuyele ngendlela evamile.

Lokhu kuyasiza ekugwemeni loops okucacile noma ngokuphindaphindiwe kulindeleke izitatimende. Isibonelo esilandelayo siyingxenye yesigcawu sokwenza i-rlogin ngokuzenzakalelayo. I- exp_inquinue igweme ukubhala isitatimende sesibili sokulindela (ukubheka ukuphinda futhi) uma i-rlogin iphakamisa iphasiwedi.

lindela iphasiwedi: {stty -echo send_user "iphasiwedi (for $ user) kwi $ host:" lindela_user -re "(. *) \ n" thumela_user "\ n" thumela "$ expect_out (1, string) \ r" i-echo exp_continue} iphasiwedi engavumelekile {i-send_user "iphasiwedi engavumelekile noma i-akhawunti \ n" exit} isikhathi sokuphuma {ukuthumela_kuthunyelwe "ku-$ host" "kuphelelwe yisikhathi \ n" ukuphuma} e-{send_user \ "uxhumano kumsingathi wehlulekile: $ expect_out (buffer)" ukuphuma} re $ okusheshayo}

Isibonelo, isiqephu esilandelayo singasisiza umsebenzisi ukuba aqondise ukuxhumana okuvele kushintshwe ngokuphelele. Kulolu cala, lesi sibulali sifakwa kwimodi eluhlaza. Uma umsebenzisi ecindezela "+", ukuguquguquka kuyanda. Uma i- "p" icindezelwe, ukubuyiselwa okuphindaphindiwe kuyathunyelwa enkambisweni, mhlawumbe ukuyiphakamisa ngenye indlela, futhi "i" ivumela umsebenzisi ukuthi ahlanganyele nenqubo, ngokuzenzekela ukweba ukulawula kusuka kwiskripthi. Esimweni ngasinye, i- exp_yodwa ivumela ukuthi amanje alindele ukuqhubeka nephethini emva kokusebenzisa isenzo samanje.

isitembu esingenalutho -echo silindele_ngemva kokuthi {-i $ user_spawn_id "p" {thumela "\ r \ r \ r"; exp_continue} "+" {incr foo; exp_continue} "i" {hlangana; exp_continue} "shiya" ukuphuma}

Ngokuzenzakalelayo, i- exp_upinue ivuselela isikhathi sokuvala isikhathi. I-timer ayiluqaliswa kabusha, uma i- exp_kuphela ibizwa nge- flag_yomsebenzisi

lindela_kulandelayo [kulindeleke]
isebenza ngokufanayo kuya kulindeleke- ngaphandle kwalokho uma uma amaphethini kokubili alindela futhi alindele_ngemva kwalokho angalingana, iphethini elindelekile lisetshenziswa. Bheka okulindele_ngaphambi komyalo ukuthola olunye ulwazi.

kulindeleke-ukubukwa kabusha [kulindeleke]
kuthatha izingxabano ezifanayo njengoba kulindeleke , noma libuya ngokushesha. Amaphethini ahlolwa uma kunikezwa okufakwayo okusha. Isikhathi sokupheka nokuzenzakalela asinalutho ukulindela_ukubuyiselwa emuva futhi sithunyiwe ngokuthula. Uma kungenjalo, umyalo wokulindela_ukubuyela emuva usebenzisa ukulinda_ngaphambi kokulindela_amaphethini emva kwalokho njengalokho kulindelekile .

Uma kulindeleke ukuthi izenzo zokubuyiselwa emuva zihlolwe, ukucubungulwa kwesizinda se-id efanayo ye-spa evinjelwe. Ukucubungula ingemuva kuvaliwe lapho isenzo sigcwaliswa. Ngenkathi ukucubungula kwangemuva kuvinjelwe, kungenzeka ukwenza (ngaphambili) kulindeleke ku-id efanayo ye-spawn.

Akunakwenzeka ukukhipha lokho okulindelwe ngenkathi ilindele_i - background ingavaliwe . ukulindela-ukubuya kwesidakamizwa esithile sokususa kuyasuswa ngokumemezela indawo entsha yokulindela nge-id efanayo. Ukumemezela ukuthi i- prospect_background engenayo iphethini isusa i-id enikezwa yilapho ekwazi ukufanisa amaphethini ngemuva.

lindela_ngaphambi [kulindeleke]
kuthatha izingxabano ezifanayo njengoba kulindeleke , noma libuya ngokushesha. Amabhuloki wesenzo sokwethenjelwa okulindeleke kakhulu-ngaphambi kokuthi i-id efanayo yokufakelwa ihlanganiswe ngokuphelele kunoma yikuphi okulandelayo ukulindela imiyalo. Uma iphethini lifanisa, liphathwa njengokungathi lichaziwe emlindeni owalindelwe ngokwayo, futhi umzimba ohlotshaniswayo uwenziwa ngomongo womyalo olindele . Uma amaphethini avela kokubili alindele_ngaphambi kwalokho futhi alindele angalingana, kulindeleke-ngaphambi kwephethini isetshenziswa.

Uma kungekho iphethini icacisiwe, i-id engenawo ayihlolwe noma yimaphi amaphethini.

Ngaphandle uma kune- i- flag ekhishwe ngokweqile , kulindeleke-ngaphambi kwamaphetheni ukulingana ne-id encane echazwe ngesikhathi esilindele_ngaphambi komyalo wenziwa (hhayi lapho iphethini layo lilingana).

I-flag ye-flag ibangela ukulindela-ngaphambi kokubuyisela ukucaciswa kwamanje kwamaphi amaphetheni azohambisana . Ngokuzenzakalelayo, kubika i-id yangempela yamanje. Ukuchazwa kwe-id yokwehlisa okungazikhethela kunganikezwa ngolwazi kulesi sigameko se-spa. Ngokwesibonelo

lindele_ngaphambi -info -i $ proc

Ngesikhathi esisodwa kunenkinga eyodwa yokwazisa i-spawn. I-flag -indirect icindezela ama-ids abonakalayo abonakalayo avela kuphela ngokucaciswa okungaqondile.

Esikhundleni sokucaciswa kwe-id, i-flag "-all" izobangela "-info" ukubika kuwo wonke ama-ids e-spawn.

Ukukhishwa kwe-flag ye-flag kungasetshenziswa kabusha njengempikiswano yokulindela_ngaphambi kwalokho.

lindela_tty [lindela_izindlebe]
kufana nokulindela kodwa lifunda izinhlamvu ezivela ku / dev / tty (okusho ukuchofoza okuvela kumsebenzisi). Ngokuzenzakalelayo, kufundwa kwenziwa kwimodi ephekwe. Ngakho, imigqa kufanele iphele ngokubuya ukuze kulindeleke ukuwabona. Lokhu kungashintshwa nge- stty (bheka umyalo we- stty ngezansi).

ulindele_user [elindele_args]
kufana nokulindela kodwa lifunda izinhlamvu ezivela ku-stdin (okusho ukuchofoza okuvela kumsebenzisi). Ngokuzenzakalelayo, kufundwa kwenziwa kwimodi ephekwe. Ngakho, imigqa kufanele iphele ngokubuya ukuze kulindeleke ukuwabona. Lokhu kungashintshwa nge- stty (bheka umyalo we- stty ngezansi).

ifom
idala inqubo entsha. Inqubo entsha yikhophi eqondile yalokho okulindeleke inqubo . Ekuphumeleleni, amafomu abuyela emuva ku-inqubo entsha (ingane) futhi abuyisela i-ID yenqubo yentuthuko yengane kumsebenzi womzali. Ukwehluleka (ngokungenakwenzeka ngenxa yokuntuleka kwemithombo, isibonelo, ukuguqula isikhala, imemori), ukubuyisela imfoloko -1 kumzali, futhi akukho nqubo yomntwana eyadalwa.

Izinqubo ezifakiwe ziphuma ngomyalo wokuphuma , njengenqubo yokuqala. Izinqubo ezifakiwe zivunyelwe ukubhala kumafayela welogi. Uma ungakhubaza ukulungisa iphutha noma ukungena kwizinqubo eziningi, umphumela ungadideka.

Okunye ukuqaliswa kwe-pty kungadideka ngabafundi abaningi nabalobi, ngisho nakancane. Ngakho-ke, iphephile kakhulu uma ufakwa ngaphambi kokukhipha izinqubo.

xhumana [string1 body1] ... [stringn [bodyn]]
ilawula inqubo yamanje kumsebenzisi, ngakho-ke ama-keystrokes athunyelwa kwinqubo yamanje, futhi isiteji kanye ne-stderr yenqubo yamanje ibuyiselwa.

Amapayipi womzimba womzimba angacaciswa njengezimpikiswano, lapho kwenzeka khona umzimba uphethwe uma uhlamvu oluhambelanayo lufakiwe. (Ngokuzenzakalelayo, intambo ayithunyelwanga kwinqubo yamanje.) Umyalo wokuhumusha ucatshangwa, uma umzimba wokugcina ulahlekile.

Uma izimpikiswano kuzo zonke izitatimende zokuxhumana zidinga ngaphezulu kweyodwa, zonke izingxabano zingahle zibe "ziboshwe" zibe eyodwa ukuze kugweme ukuqeda umugqa ngamunye ngokubuyela emuva. Kulolu cala olulodwa, ukushintshwa okujwayelekile kwe-Tcl kuzokwenzeka naphezu kwe-braces.

Isibonelo, umyalo olandelayo ugijima usebenzisana nalezi zigaba ezilandelayo ezilandelayo: Uma ^ Z icindezelwe, Lindela imiswe okwesikhashana. (I-i-flag ye- reset ibuyisela izindlela zokugcina.) Uma i- ^ A icindezelwe, umsebenzisi ubona "uthayiphe ukulawula-A" futhi inqubo ithunyelwe ku- ^ A. Uma i-$ icindezelwa, umsebenzisi ubona usuku. Uma ^ C icindezelwe, Lindela ukuphuma. Uma ngabe "foo" ingenisiwe, umsebenzisi ubona "ibha". Uma ~~ icindezelekile, ilindele umhumushi ugijima phakathi.

setha i-CTRLZ \ 032 ukusebenzisana {-reset $ CTRLZ {exec kill -STOP [pid]} \ 001 {send_user "othayiphe ukulawula-A \ n"; thumela "\ 001"} $ {send_user "Usuku luyi [ifomethi yewashi [imizuzwana yewashi]."}} \ 003 ukuphuma foo {ukuthumela "ibha"}}}}

Emibhoshini yomzimba yocingo, izintambo zifaniswa ngendlela ehlelwe ngayo njengezingxabano. Izindinganiso ezihambisana ngokungahambisani nazo zingathunyelwa kwinqubo yamanje ngokulindela okusalayo okuzayo. Uma izinhlamvu zingenwa ngendlela yokuthi angeke isakwazi ukufaniswa, ingxenye kuphela yocingo izothunyelwa enkambeni engakwazi ukuqala omunye umdlalo. Ngakho-ke, izintambo ezingaphansi kwemikhawulo ehlukanisayo zingalingana kamuva, uma izintambo zangempela ezazama ukufana nazo ekugcineni zihluleka.

Ngokuzenzakalelayo, ukufana kwezintambo kufana namakhadi asendle . (Ngokuphambene, umyalo wokulindela usebenzisa amaphethini wesitayela se- globally ngokuzenzakalelayo.) I-flag ye -ex ingasetshenziswa ukuvikela amaphethini angase ahambisane nama- flags ukuze enze kanjalo. Noma iyiphi iphethini eqala "-" kufanele ivikelwe ngale ndlela. (Zonke izintambo eziqala ngokuthi "-" zigcinelwe izinketho ezizayo.)

I-ifulege iphoqa inhlamvu ukuze ihunyushwe njengephrofayli yesitayela se-regexp. Kulesi simo, i-substrings ehambisanayo igcinwa ku-variable interactive_out efanayo ngendlela ikulindela ukugcina okukhiphayo ku-variable variable elindele_out . I-i-flag flag ixhaswa efanayo.

I- eof pattern iveza isenzo esenziwa ekupheleni kwefayela. Iphethini elihlukile le- eof lingase lilandele i- flag yokuthumela lapho ilinganiswa khona uma i-eof itholakele ngenkathi ibhala okukhiphayo. Isenzo sokuzenzakalelayo se- eof "ukubuya", ukuze ukuxhumana kubuyele emuva kunoma iyiphi i-EOF.

Isikhathi sokuhlala sethula isikhathi sokuhamba (ngamasekhondi) nesenzo esenziwa ngemva kokuba kungekho izinhlamvu ezifundwa isikhathi esinikeziwe. Iphethini lokugcina lisebenza kwinqubo echazwe kakhulu kakhulu. Asikho isikhathi sokuzenzakalela. I-variable ekhethiwe "isikhathi sokuhamba" esetshenzisiwe (esetshenziswe umyalo wokulindela) ayinathinteli kule sikhathi sokuhamba kwesikhathi.

Isibonelo, isitatimende esilandelayo singasetshenziselwa abasebenzisi be-autologout abangayifakile lutho ngehora kodwa abathola imiyalezo ejwayelekile yesistimu:

hlangana -kufaka $ $ user_spawn_id isikhathi sokubuya 3600 -buyout \ $ spawn_id

Uma iphethini liyigama elingukhiye, futhi okungavumelekile kuvunyelwe (ngomyalo we- remove_nulls ), umzimba ohambelanayo uphathwa uma i-ASCII eyodwa efana neyodwa ifaniswa. Akunakwenzeka ukufanisa ama-bytes angu-0 nge-glob noma amaphethini we-regexp.

Ukufakela iphethini ngeflegi -kubhalwa kubangele ukuthi i- interactive_out eguquguqukayo (spawn_id) ifakwe ku-spawn_id ehambisana nephethini (noma i-eof).

Izenzo ezinjengokuphuka nokuqhubeka nezimbangela zokulawula imbangela (ie, for , proc ) ukuziphatha ngendlela evamile. Kodwa izimbangela zokubuyisa zihlangana ukuze zibuyele kumuntu oshaya ucingo, kuyilapho inter_return ibangela ukuhlanganyela ukuze kubangele ukubuya kumshayeli wayo. Isibonelo, uma i- "proc foo" ebizwa ngokuthi i- interactive eyabe isenza isenzo inter_return , proc foo sizobuya. (Lokhu kusho ukuthi uma ukuxhumana ukubiza ohumushi phakathi kokuthayipha ukubuyisa kuzokwenza ukuthi ukuhlanganyela kuqhubekele, ngenkathi i- inter_return izobangela ukuthi ukuxhumana kubuyele kumuntu oshaya ucingo.)

Ngesikhathi sokuxhumana , imodi eluhlaza isetshenziswa ukuze zonke izinhlamvu zingadluliselwa kwinqubo yamanje. Uma inqubo yamanje ingabambeli izignali zokulawula umsebenzi, iyoyeka uma ithumela isignali yokumisa (ngokuzenzakalelayo ^ Z). Ukuze uyiqale kabusha, thumela isignali eqhubekayo (njengokuthi "bulala -CONT"). Uma ufuna ngempela ukuthumela i-SIGSTOP kuleyo nqubo (nge ^ Z), cabanga ngokufaka i-csh kuqala bese uqhuba uhlelo lwakho. Ngakolunye uhlangothi, uma ufuna ukuthumela i-SIGSTOP ukuze ilindele, uhumushe kuqala (mhlawumbe ngokusebenzisa uhlamvu lokuphunyuka), bese ucindezela ^ Z.

Amabili womzimba womzimba angasetshenziswa njengendlela encane yokugwema ukufaka umhumushi futhi enze imiyalo ngokulandelana. Imodi yokugcina eyedlule isetshenziswe ngenkathi umzimba wombili wezintambo zomzimba uwenziwa.

Ngejubane, izenzo zenza kumodi eluhlaza ngokuzenzakalelayo. I-i-flag ye- reset iphinda ivuselele ukuphela kwimodi eyayiyenayo ngaphambi kokuba ihlanganyele yenziwa (cishe, imodi ephekiwe). Qaphela ukuthi abalingiswa abangenayo uma imodi ishintshiwe kungase kulahleke (isici esibi somshayeli esibulalayo kwezinye izinhlelo). Isizathu esisodwa sokusebenzisa- ukusetha ukuthi ngabe isenzo sakho sincike ekusebenzeni kwimodi ephekwe.

I- yego ifulegi ithumela izinhlamvu ezifanisa iphethini elandelayo emuva enkambisweni eyenza ukuba umlingisi ngamunye ufundwe. Lokhu kungasiza uma umsebenzisi efuna ukubona impendulo evela kumaphethini afakwe eceleni.

Uma iphethini ikhonjiswa kodwa ekugcineni ihluleka ukufanisa, izinhlamvu zithunyelwa kwinqubo eveziwe. Uma inqubo evezwayo ibuye ibenze, i-user izobona izinhlamvu kabili. -echo cishe ifaneleke ezimweni lapho umsebenzisi engenakwenzeka ukugcwalisa iphethini. Isibonelo, ingqikithi elandelayo ivela ku-rftp, iskriphthi se-recursive-ftp, lapho umsebenzisi ecelwa ukuba angene ~ ~ g, ~ p, noma ~ l, ukuze athole, abeke, noma ahlele uhlu lwemibhalo lwamanje ngokuphindaphindiwe. Lezi zide kakhulu nemilayezo evamile ye-ftp, ukuthi umsebenzisi akakwazi ukuthayipha ~ olulandelwe yilokho okunye, ngaphandle kwephutha, noma ngabe kunjalo, mhlawumbe cishe bayayinaki umphumela.

xhumana {-echo ~ g {getcurdirectory 1} -echo ~ l {getcurdirectory 0} -echo ~ p {putcurdirectory}}

I- flags -nobuffer ithumela izinhlamvu ezifanisa iphethini elandelayo kuya kwinkqubo yokukhipha njengoba izinhlamvu zifundwa.

Lokhu kuyasiza uma ufisa ukuvumela uhlelo lubuyele emuva iphethini. Isibonelo, okulandelayo kungasetshenziswa ukuqapha lapho umuntu edayela (i-modem ye-Hayes-isitayela). Isikhathi ngasinye "i-atd" ibonakala izingodo zesikripthi okunye komugqa.

i-lognumber {} {yokuxhumana -nobuffer -re "(. *) \ r" ibuyisela i-log ye-log "[ifomethi yewashi [amahora wehora]: idluliselwe $ interact_out (1, string)"} ihlanganyele -nobuffer "ye-atd"

Ngesikhathi sokuxhumana , ukusebenzisa kwangaphambilini kwe- log_user kunganakwa. Ngokuyinhloko, ukusebenzisana kuzophoqelela okukhiphayo ukuthi kungene ngemvume (okuthunyelwe kumkhiqizo ojwayelekile) ngoba kucatshangwa ukuthi umsebenzisi akafisi ukuxhumana ngokuyimpumputhe.

I-i-flag idala noma yikuphi ukulandela amaphuzu womzimba oyisihluthulelo ukuze kusetshenziswe ekuphumeni kwenqubo yamanje. Lokhu kungaba usizo, ngokwesibonelo, lapho usebenzisana nabakwa- Host hosts ukuthi uthumele izinhlamvu ezingadingeki ngesikhathi sesitelnet.

Ngokuzenzakalelayo, ukusebenzisana kulindeleke ukuthi umsebenzisi abhale phansi i-stdin futhi afundise uhlelo lokulindela ngokwalo. I-i-flag ("umsebenzisi") yenza ukusebenzisana kubhekane nomsebenzisi njengenqubo ebizwa nge-argument yayo (okumele ibe yi-id).

Lokhu kuvumela izinqubo ezimbili ezingahlangene ukuba zihlangane ngaphandle kokusebenzisa i-loop ecacile. Ukuze usize ekuqedeni ukuxazulula, Lindela ukuxilongwa njalo ukuya ku-stderr (noma ukuthumela imininingwane ethile yokungena ngemvume nokulungisa iphutha). Ngesizathu esifanayo, umyalo wokuhumusha uzofunda ngokuqondile kusuka ku-stdin.

Isibonelo, isiqephu esilandelayo senza inqubo yokungena ngemvume. Khona-ke idonsa umsebenzisi (ongaboniswa), futhi ekugcineni uxhuma lezi zinto ndawonye. Yiqiniso, noma iyiphi inqubo ingasuswa esikhundleni sokungena ngemvume. Ngokwesibonelo, igobolondo ingavumela umsebenzisi ukuthi asebenze ngaphandle kokunikeza i-akhawunti nephasiwedi.

faka login set login $ spawn_id spawn tip modem # shayela emuva umsebenzisi # xhuma umsebenzisi ukungena ngemvume -u $ login

Ukuze uthumele okukhiphayo ezinkambisweni eziningi, dwelisa uhlu olulodwa lwe-id egcweleyo olufakwe yi-flag yokuthumela . Ukufakelwa kweqembu lokukhiqiza ama-ids okukhipha kungenziwa kunqunywe uhla lwama-id owenziwe ngama- prewned by a -put flag. (Kokubili -kufaka noku- ukuthumela kungathatha uhlu ngendlela efana ne -i- flag emyalweni wokulindela, ngaphandle kokuthi noma yikuphi_spawn_id akuyona into ebonakalayo ekusebenzisaneni .) Wonke amafulege alandelayo namathrekhi (noma amaphethini) asebenza kulokhu okufakwayo kuze kube yilapho enye - Ifulegi lokufaka livela. Uma kungenjalo -ukubonakala kuvela, -ukushiya kusho "-kufaka $ user_spawn_id -output". (Ngokufanako, ngamaphetheni angenawo -kufaka .) Uma eyodwa-i- input ikhonjisiwe , idlula i $ user_spawn_id. Uma i-second- input icacisiwe, idlula i-spawn_id $. Ama- flags engeziwe angabonakaliswa .

Lezi zindlela ezimbili zokufaka okuzenzakalelayo zenzeke ukuthi zibe nemiphumela yazo ecacisiwe njenge-spawn_id ne-$ user_spawn_id (ngokuchasene). Uma i-flag iveza ukuthi ayikho- ifulege yokuthumela , izinhlamvu ezivela kule nqubo zilahlwa.

I-ifulegi ingenisa indawo ye-spawn_id yamanje uma kungekho enye-i- input noma-i- flappy flags isetshenzisiwe. A-ifulegi libonisa i-flag.

Kungenzeka ukuthi ushintshe izinqubo ezithintwa ngazo ngokusebenzisa ama-ids angabonakali. (Ama-ids angacacile ama-ids achazwe esigabeni ngomyalo olindelwe.) Ama-ids angacacile angacaciswa nge--i, -u, -put, noma -i-flags.

umhumushi [args]
kubangela ukuthi umsebenzisi angenelelwe ngokuqondile phakathi kwemiyalo yokulindela kanye ne-Tcl. Umphumela womyalo ngamunye ushicilelwe.

Izenzo ezinjengokuphuka nokuqhubeka nezimbangela zokulawula imbangela (ie, for , proc ) ukuziphatha ngendlela evamile. Kodwa ukubuya kubangele ukuhumusha ukuze abuyele kumuntu oshaya ucingo, kanti i- inter_return ibangela ukuhumusha ukuze kubangele ukubuya kumuntu oshaya ucingo. Isibonelo, uma "proc-foo" ebizwa ngokuthi umhumushi okwenza lokho kwenziwe ngaphakathi_return , proc foo izobuya. Noma yimuphi omunye umyalo ubangela ukuhumusha ukuze aqhubeke nokukhuthaza imiyalo emisha.

Ngokuzenzakalelayo, i-prompt iqukethe ama-integers amabili. I-integer yokuqala ichaza ukujula kwesiteji sokuhlola (ie, izikhathi ezingaki i-Tcl_Eval ibizwe). Inombolo yesibili iyisihlonzi somlando we-Tcl. I-prompt ingahle isethwe ngokuchaza inqubo ebizwa ngokuthi i- "prompt1" eyinani layo lokubuya liba yisinyathelo esilandelayo. Uma isitatimende sivule izingcaphuno ezivulekile, ama-parens, ama-braces, noma amabakaki, ukushesha kwesibili (ngokuzenzakalelayo "+>") kukhishwa kwi-newline. Isikhathi sesibili singasethwa ngokuchaza inqubo ebizwa ngokuthi "prompt2".

Ngesikhathi sokuhumusha , imodi ephekwe isetshenziswa, ngisho noma umshayeli wayo esebenzisa imodi eluhlaza.

Uma i-stdin ivaliwe, umhumushi uzobuya ngaphandle kokuthi kusetshenziswe i- flag, lapho kwenzeka khona ukuphikisana okulandelayo.

ifayela le-log_file [args] [[-a]
Uma igama lomsebenzisi lihlinzekwa, i- log_file izorekhoda umbhalo weseshini (ukuqala ngalesosikhathi) kufayili. I-log_file izoyeka ukuqopha uma kungekho ukuphikisana okunikezwayo. Noma yiliphi ifayela logi langaphambilini livaliwe.

Esikhundleni segama lokufaka igama, isihlonzi sefayela se-Tcl singanikezwa ngokusebenzisa ama- flap -open noma -leaveopen . Lokhu kufana nomyalo owenziwe . (Bheka ukuzala ngolwazi olungaphezulu.)

I - ifulegi inamandla okuphuma ukuze angene ngemvume aphethwe ngumyalo we- log_user .

Ngokuzenzakalelayo, umyalo we- log_file ufaka kumafayela amadala kunokuba uwunqume, ukuze kube lula ukuvula ukuphuma futhi ngezikhathi eziningi kwiseseshini eyodwa. Ukuze unciphise amafayela, sebenzisa i- non- flag flag.

I-flag ye-flag yenza ukuba i-log_file ibuyisele incazelo yezingxoxo ezingezona ulwazi ezingaphambilini.

log_user -info | 0 | 1
Ngokuzenzakalelayo, inkhulumomphendvulwano yokuthumela / yokulindela ingene ngemvume ukuze ihambe (kanye nefayela lokungena uma livulekile). Ukungena ngemvume ukuze kuqhubekwe kukhutshaziwe ngumyalo othi "log_user 0" futhi uvuselelwe ngu- "log_user 1". Ukungena ngemvume ku-logfile akushintshiwe.

I-flag ye-flag idala i-log_user ukubuyisela incazelo yezingxoxo ezingezona ulwazi ezingezona ezinikeziwe.

match_max [-d] [-i spawn_id] [usayizi]
ichaza ubukhulu be-buffer (ngama-bytes) asetshenziswe ngaphakathi ngaphakathi kulindeleke . Ngezingxabano zesayizi , usayizi wamanje ubuyiselwe.

Nge-i-flag, usayizi ozenzakalelayo usethe. (Okuzenzakalelayo kokuqala ngu-2000.) Nge-ifulege, ubukhulu bubekwe i-id ebizwa ngokuthi yi-spawn, kungenjalo isethelwe inqubo yamanje.

ukuguqa [- # spawn_id] [- # spawn_id] [...] uhlelo [ama-args]
iqhuba "uhlelo lwe- args" endaweni yamanje elindele uhlelo, eliphela. Ukungqubuzana okungaqondile kuyabangela ukucabangela phambi kwegama lomyalo njengokungathi ligobolondo lokungena ngemvume. Wonke ama-spa_ids avaliwe ngaphandle kwalabo ababizwa ngezingxabano. Lezi zihlelwe kuma-identifiers wefayela eliqanjwe.

I-Spawn_ids ihlelwe ukufaka amafolda e-identifier ukuze uhlelo olusha luzuze. Isibonelo, umugqa olandelayo ugijima chess futhi uwuvumela ukuba ulawulwe yinqubo yamanje - yisho, inkosi chess.

ukumboza -0 $ spawn_id -1 $ spawn_id -2 $ spawn_id chess

Lokhu kusebenza kakhudlwana kunokuba "uhlanganyele -u", noma kunjalo, kudela ikhono lokwenza ukuxhumana okuhleliwe kusukela iNqubo Yokulindela ayisekho ekulawuleni.

Qaphela ukuthi akukho ukuphela kokulawula okunikezwayo. Ngakho-ke, uma unqamula noma uvuselela ukufaka okujwayelekile, izinhlelo ezenza umsebenzi wokulawula umsebenzi (amagobolondo, ukungena ngemvume, njll) ngeke zisebenze kahle.

ubuhle [-d] [-i spawn_id] [inani]
ichaza ukuthi ngabe ubumbano kufanele bugcinwe noma buhlwithwe kusukela ekuphumeni kwezinqubo ezizalwe. Uma inani lingu-zero, ubuhlanga buhlanjululwe, ngaphandle kwalokho akukhenwa. Ngaphandle kokuxabana kwenani , inani lamanje libuyiselwe.

Nge-i-flag, inani le-parity elizenzakalelayo lisethiwe. (Okuzenzakalelayo kokuqala kungu-1, okungukuthi, ubuhle abukhenqwanga.) Nge- i- flag, inani leqembu lihlelelwe i-id ebizwa ngokuthi i-spa, ngaphandle kwalokho isethelwe inqubo yamanje.

Susa_nulls [-d] [-i spawn_id] [inani]
ichaza ukuthi ngabe ama-nulls agcinwa noma asusiwe yini ekuphumeni kwezinqubo ezitholwa ngaphambi kokufaniswa kwephethini noma ukugcina kuguquguquke kulindeleke noma kuhlangene_out . Uma inani lingu-1, ama-nulls asusiwe. Uma inani lingu-0, ama-null asusiwe. Ngaphandle kokuxabana kwenani , inani lamanje libuyiselwe.

Nge-i-flag, inani elizenzakalelayo lisethiwe. (Okuzenzakalelayo kokuqala kungu-1, okungukuthi, i-nulls isusiwe.) Nge- i- flag, inani lisethelwe i-id ebizwa ngokuthi i-spa, kungenjalo isethelwe inqubo yamanje.

Kungakhathaliseki ukuthi kususiwe noma chas, Lindela kuzorekhoda ama-atte angenalutho ku-log naku-stdout.

thumela ucingo lwe- [-flags]
Ithumela ucingo kwinqubo yamanje. Isibonelo, umyalo

thumela "umhlaba wamukelekile"

ithumela izinhlamvu, zithokozisa ngenqubo yamanje. (I-Tcl ihlanganisa umyalo we- printf -fana (obizwa ngokuthi ifomethi ) ongakha izintambo eziyinkimbinkimbi.)

Abalingiswa bathunyelwa ngokushesha nakuba izinhlelo ezinokufakelwa komugqa ongeke zifunde abalingiswa kuze kuthunyelwe umlingiswa wokubuyela. Uhlamvu lokubuyela lukhonjiswe ngokuthi "\ r".

I-flag ibangela ukuphikisana okulandelayo ukuthi kuhunyushwe njengezintambo kunokuba ifulegi. Noma iyiphi inqamulo ingalandelwa "-" noma ngabe empeleni ibukeka njengefulegi. Lokhu kunikeza indlela enokwethenjelwa yokucacisa izintambo eziguquguqukayo ngaphandle kokuqedwa yibo ababukeka ngendlela engafanele njengeflegi. (Zonke izintambo eziqala ngokuthi "-" zigcinelwe izinketho ezizayo.)

I-ifulethi ithi inhlamvu iyathunyelwa ku-spawn_id okuthiwa. Uma i-spawnid ingumsebenzisi_spawn_id , futhi ukugcina kumodi eluhlaza, izintambo ezintsha ku-string zihunyushwa ukubuyela-ukulandelana kwe-newline ukuze kubonakale sengathi ukugcina kuphethwe kwimodi ephekwe. I-i-flag ikhubaza lokhu kuhumusha.

I-ifulegi ifaka izinhlamvu ezingekho (0 bytes). Ngokuzenzakalelayo, i-null eyodwa ithunyelwe. Inombolo ingahle ilandele-- null ukukhombisa ukuthi zingaki ama-nulls ongazithumela.

I-ifulege ye -break idala isimo sokuphumula. Lokhu kumane kunengqondo uma i-id engenazo ibhekisela kudivayisi evulekile evuliwe "nge-spawn -open". Uma usungulwe inqubo efana nesipoti, kufanele usebenzise umhlangano wetiphu ukuze wenze ikhefu.

I-i-flag ibangela ukukhishwa ukuze ithunyelwe "kancane", ngakho-ke gwema isimo esivamile lapho ikhompyutha iphuma ngaphandle kokufaka isikhala sokufakwayo esenzelwe umuntu ongasoze alahleka okufanayo. Lokhu okukhipha kulawulwa yinani leguquguqukayo "thumela_ngenhla" okuthatha uhlu lwamalungu amabili. Isici sokuqala yi-integer echaza inani lezintatheli ezizothumela nge-atomu. Isici sesibili yinombolo yangempela echaza inombolo yemizuzwana lapho i-atomic ithumela khona kufanele ihlukaniswe. Isibonelo, "setha ukuthumela_ngenzansi {10 .001}" ukuphoqa "thumela -s" ukuthumela amashaya nge-1 millisecond phakathi kwezinhlamvu ezingu-10 ezithunyelwe.

I- ihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh Ukulibazisa okufana nabantu kubonakala phakathi kwezinhlamvu. (I-algorithm isekelwe ekusabalazweni kwe-Weibull, ngokuguqulwa okuhambisana nalolu hlelo lokusebenza oluthile.) Lokhu kukhishwa kulawulwa ngenani leguquguquko "thumela_humanisa" elithatha uhlu lwezinto ezinhlanu. Izakhi ezimbili zokuqala ziyisikhathi esiphakathi sokulinganisa izinhlamvu ngemizuzwana. Iyokuqala isetshenziswe ngokuzenzakalelayo. Esesibili sisetshenziswe ekugcineni kwezwi, ukulinganisa ukuphazamiseka okucashile okwenzeka ngezikhathi ezithile ekushintsheni okunjalo. Ipharamitha yesithathu iyinqubo yokuhlukahluka lapho .1 iyahlukahluka kakhulu, i-1 iyaguquka ngokucacile, futhi i-10 ayinakwenzeka. Ukuqhathanisa kungu-0 kuya kokungapheli. Imingcele emibili yokugcina, ngokulandelana, isikhathi esincane nesiphezulu sokungena. Ubuncane kanye nesilinganiso esiphezulu sisetshenziswa ekugcineni futhi "isiqeshana" isikhathi sokugcina. Isilinganiso esiphezulu singase sihluke kakhulu esimeni esinikeziwe uma ubuncane kanye nesiphequluli esiphezulu sezindinganiso ezanele.

Isibonelo, umyalo olandelayo uveza umzila oqinile futhi ohlala njalo:

setha uthumele_umuntu {.1 .3 1 .05 2} thumela -h "Ngilambile. Masidle kwasemini."

kuyilapho lokhu okulandelayo kungase kube kuhle nakakhulu emva kwe-hangover:

setha ukuthumela_humanuntu {.4 .4 .2 .5 .5 100} thumela -h "Ubusuku bokuphumula kweqembu elihle!"

Qaphela ukuthi amaphutha ayilungisiwe, nakuba ungasetha izimo zokulungisa iziphutha ngokwakho ngokufaka amaphutha namaphutha ekuhambeni kokuthumela.

Amafulegi wokuthumela izinhlamvu ezingenalutho, ngokuthumela ukuphumula, ngokuphoqelela okukhiphayo kancane nokukhishwa kwesitayela somuntu ngokuhlanganyela. Kuphela okushiwo okugcina kuzosetshenziswa. Ngaphezu kwalokho, akukho ukuphikisana kwezintambo kungacaciswa namafulegi okuthumela izinhlamvu ezingekho noma izikhala.

Kungumqondo omuhle ukuhamba phambili kokuthunyelwa kokuqala kwinqubo ngokulindela. kulindeleke ukuthi ulinde inqubo ukuthi iqale, ngenkathi ukuthumela kungakwazi. Ngokuyinhloko, uma ukuthunyelwa kokuqala kuqeda ngaphambi kokuba inqubo iqale ukusebenza, ubeka ingozi yokuba idatha yakho inganakiwe. Ezimweni lapho izinhlelo zokuxhumana zinganikeli ngokushesha, ungathumela ukuthumela ngokulibala njengokungathi:

# Ukuze ugweme ukunikeza abaduni bakhombisa ukuthi ungaphumelela kanjani, # le nqubo ayifuni iphasiwedi yangaphandle. # Linda imizuzwana engu-5 ukuze ufeze ukugcwalisa i-telnet kakhulu.secure.gov ukulala 5 ukuthumela iphasiwedi

exp_send iyi-alias yokuthumela. Uma usebenzisa i-Expectk noma okunye okuhlukile kokulindeleke kumvelo we-Tk, thumela kuchazwa yi-Tk ngenhloso ehlukile. exp_send inikezwa ukuhambisana phakathi kwendawo. Ama-aliases afanayo anikezwe amanye amarekhodi wokuthumela okulindelwe.

thumela i-string_error [-flags] string
kufana nokuthunyelwa , ngaphandle kokuthi umkhiqizo uthunyelwa ku-stderr esikhundleni senqubo yamanje.

thumela_log [-] ucingo
kufana nokuthumela , ngaphandle kokuthi ucingo luhanjiswe kuphela kufayela lelogi (bheka i- log_file .) Izimpikiswano zithathwa uma kungenayo ifayela logi evulekile.

thumela i-string [-flags] string
kufana nokuthumela , ngaphandle kokuthi okukhiphayo kuthunyelwe ku- / dev / tty esikhundleni senqubo yamanje.

thumela i-string--flags] ngentambo
kufana nokuthunyelwa , ngaphandle kokuthi umkhiqizo uthunyelwa ku-stdout esikhundleni senqubo yamanje.

imizuzwana yokulala
kubangela ukuthi iskripthi silale ngenombolo enikeziwe yamasekhondi. Amasekhondi angase abe yinombolo yedesimali. Ukuphazamisa (kanye nemicimbi ye-Tk uma usebenzisa i-Expectk) kusetshenzwa ngenkathi Kulindeleke ukulala.

uhlelo lwe-args] [i-args]
kudala inqubo entsha eqhuba "uhlelo lwe- args". I-stdin yayo, i-stdout ne-stderr ixhunyiwe kuLindela, ukuze ifundwe iphinde ibhalwe ngamanye imiyalo Lindela . Ukuxhumeka kuphulwa ngokuvala noma uma inqubo ngokwayo ivaliwe noma yikuphi ukuhlonza ifayela.

Uma inqubo iqalwa ngokuhlonywa, i- spawn_id eguquguqukayo isethelwe kumchazi okhuluma ngaleyo nqubo . Inqubo echazwe ngu- spawn_id ibhekwa " inqubo yamanje ". spawn_id ingase ifunde noma ibhalwe, empeleni ihlinzeke ukulawula umsebenzi.

umsebenzisi_spawn_id yi-variable global equkethe isichazamazwi esibhekisela kumsebenzisi. Isibonelo, uma i- spawn_id isethelwe kule nani, lindela ukuziphatha njengokufana nokulindela .

I- error_spawn_id iyinguquko yomhlaba wonke equkethe isichazamazwi esibhekisela kuphutha elijwayelekile. Isibonelo, uma spawn_id isethwe kule value, thumela ziziphatha like send_error .

i-tty_spawn_id iyinguquko yomhlaba wonke equkethe isichazamazwi esibhekisela ku / dev / tty. Uma ngabe / dev / tty engekho (njenge-cron, at, noma i-batch script), ke-ke tty_spawn_id ayichazwa. Lokhu kungahlolwa njenge:

uma {[info vars tty_spawn_id]} {# / dev / tty ikhona} enye {# / dev / tty ayikho # mhlawumbe ku-cron, batch, noma kusikripthi}

i-spawn ibuyisela i-ID yenqubo ye-UNIX. Uma kungekho nqubo ekhishwayo, i-0 ibuyiselwe. I- spawn_out eguquguqukayo (isigqila, igama) isethelwe egameni ledivayisi yesigqila se-pty.

Ngokwenza okuzenzakalelayo, ukuveza i- echoes igama lomyalo nezimpikiswano. I-- noecho ifulegi liyeka ukwehlisa ukwenza lokhu.

I-flag yekhonsoli ibangela ukukhishwa kwe-console ukuze iqondiswe kwinqubo evezwe. Lokhu akusekelwa kuzo zonke izinhlelo.

Ngaphakathi, ukusalela kusebenzisa i-pty, kuqala ngendlela efanayo nomsebenzisi. Lokhu kuqaliswa kabusha ukuze zonke izilungiselelo "zinyane" (ngokusho kwesimo (1)). Uma i- stty_init eguquguqukayo ichazwa, ihunyushwa ngesitayela sezingqinamba zamagama njengendlela yokucushwa okuqhubekayo. Isibonelo, "setha i-stty_init eluhlaza" kuzokwenza ukuthi ezinye iziphequluli zezinqubo eziqalisiwe ziqale kwimodi eluhlaza. -nottycopy yeqa ukuqala ngokusekelwe kumsebenzisi womsebenzisi. -nottyinit yeqa "ukukhanya" ukuqaliswa.

Ngokuvamile, ukuhlanza kuthatha isikhathi esincane sokukhipha. Uma ubona ukuhluma kuthatha isikhathi esiningi, kungenzeka ukuthi uhlangabezana nama-ptys ashada. Izivivinyo eziningi ziqhutshwa kuma-ptys ukugwema ukungena ngaphakathi ngezinqubo eziphuthumayo. (Lezi zithatha imizuzwana engu-10 nge-pty edibeneyo.) Ukugijima Lindela nge-i-inketho izobonisa uma Kulindeleke ukuthi uhlangane nama-pty amaningi amaningi. Uma ungeke ukwazi ukubulala izinqubo lapho lezi zinhlayiya zinamathele khona, ukukhishwa kwakho kuphela kungase kube ukuqala kabusha.

Uma uhlelo lungenakutholwa ngempumelelo ngoba i-exec (2) ihluleka (isib. Uma uhlelo lingekho), umlayezo wephutha uzobuyiselwa ngokulandelana okulandelayo noma kulindele umyalo njengokuthi uhlelo luye lwagijima futhi lwaveza umlayezo wephutha njengokukhipha. Lokhu kuziphatha kungumphumela wemvelo wokuqaliswa kokutshala . Ngaphakathi, uthola amafoloksi, emva kwalokho inqubo evezweyo ayinayo indlela yokuxhumana nenqubo yokuqala Yilindelwe ngaphandle kokuxhumana nge-spawn_id.

I-flag evulekile yenza ukuba ukuphikisana okulandelayo kuhunyushwe njengesihlonzi sefayela se-Tcl (okungukuthi, kubuyiselwe ngokuvuleka .) I-ID engasetshenziswa ingasetshenziswa njengokungathi yinkqubo evezwayo. (Isihlonzi sefayela akufanele sisetshenziswe.) Lokhu kukuvumela ukuthi uphathe amadivayisi aqoshiwe, amafayela, namapayipi njengoba kwenziwa izinqubo ngaphandle kokusebenzisa i-pty. 0 ibuyiselwa ukukhombisa ukuthi ayikho inqubo ehambisanayo. Uma uxhumano lwenqubo evuliwe luvaliwe, kunjalo nesikhombisi sefayela se-Tcl. I- leveopen ifulege ifana ne-- open ngaphandle kokuthi -leaveopen ibangela ukuthi isihlonzi sefayela sishiywe sivulekile ngisho nangemva kokuba i-id evaliwe ivaliwe.

Ifulege elingenalutho lenza ukuthi i-pty ivuleke kodwa akukho nqubo eyenziwa . 0 ibuyiselwa ukukhombisa ukuthi ayikho inqubo ehambisanayo. I-Spawn_id isethwe njengokujwayelekile.

I- spawn_out eguquguqukayo (isigqila, i-fd) isethelwe kwisihlonzi sefayela esihambelana nenceku ye-pty. Kungavalwa ngokusebenzisa i- "close-slave".

Ifulegi le-i- signore lisho uphawu olunganakiwe enkambisweni eyenziwe . Uma kungenjalo, izimpawu zithola ukuziphatha okuzenzakalelayo. Izimpawu zibizwa ngokuthi umyalo wesicupho , ngaphandle kokuthi isignali ngayinye idinga ifulegi elihlukile.

i-strace level
kubangela ukuthi izitatimende ezilandelayo ziphrintiwe ngaphambi kokubulawa. (I-Tcl's command trace traces variables.) Izinga libonisa ukuthi kude kangakanani emgqeni wekholi ukulandelela. Isibonelo, umyalo olandelayo ugijima Lindela ngenkathi ulandela amazinga okuqala angu-4, kodwa akekho ngaphansi kwalokho.

lindela -c "i-strace 4" script.exp

I-flag ye-flag ibangela ukuxuba ukubuyisela incazelo yezimangalo zamuva ezingezona ulwazi ezinikeziwe.

stty args
shintsha izindlela zokugcina ezifanayo nomyalo wangaphandle we-stty.

Ngokuzenzakalelayo, ukuphela kokulawula kufinyelelwe. Amanye ama-terminals angatholakala nge-appending "Izicelo zesimo zibuyisa njengomphumela womyalo. Uma kungekho isimo esiceliwe futhi isiphequluli sokulawula sifinyeleleke, isimo sangaphambilini sezimfanelo ezibucayi ne-echo zibuyiselwa ngendlela engase ibe kamuva esetshenziswe ngumyalo.

Isibonelo, izimpikiswano eziluhlaza noma eziphekiwe zibeka ukuphela kumodi eluhlaza. Ama-arguments -raw noma okuphekwe abeke ukuphela kumodi ephekwe. Izimpendulo zihambisana futhi- yibeka ukugcina kube yi-echo ne-noecho imodi ngokulandelanayo.

Isibonelo esilandelayo sibonisa indlela yokukhubaza okwesikhashana ukuchofoza. Lokhu kungasetshenziswa kwezinye izikripthi ezenzekelayo ukuze ugweme ukufaka amaphasiwedi kuzo. (Bona ingxoxo eyengeziwe ngalokhu ngaphansi kwe-EXPECT HINTS ngezansi.)

stty -echo uthumela_user "Iphasiwedi:" lindela_user -re "(. *) \ n" usethe iphasiwedi $ expect_out (1, string) stty echo

uhlelo lwe-args
unikeza i- args sh (1) njengokufaka, njengokungathi ifakwe njengomyalo ovela esibulalayo. Lindela ulinde kuze kube yilapho igobolondo iphela. Isimo sokubuya kusuka sh senziwa ngendlela efanayo ukuthi i- exec isingatha isimo sayo sokubuyisa.

Ngokuphambene nokwenza lokho okuqondisa i-stdin nesiteji kwiskriphthi, uhlelo alukwazi ukuhlelwa kabusha (ngaphandle kwalokho okukhonjiswe yocingo ngokwalo). Ngakho-ke, kungenzeka ukusebenzisa izinhlelo okufanele zikhulume ngokuqondile ku / dev / tty. Ngesizathu esifanayo, imiphumela yesistimu ayibhalisiwe kugijimi.

i-timestamp [i-args]
ubuyisela isitembu sesikhathi. Ngezingxabano, inani lamasekhondi kusukela ku-epoch libuyiselwe.

I-ifulegi yefometha ifaka intambo ebuyiswayo kodwa ngezingxenye ezenziwe ngokulandela imithetho ye-POSIX ye-strftime. Isibonelo% a sithathelwa igama elifingqiwe lamasonto onke (ie, Sat). Abanye kukhona:

% igama elibhalwe ngeviki elifingqiwe% Igama eligcwele leviki eligcwele% b igama elibhalwe ngenyanga elifingqiwe% B Igama leenyanga eligcwele% c lesikhathi sokusebenza njengalokhu: Ngomhla ka-Okthoba 6 11:45:56 Ngo-1993%% ngosuku lwenyanga (01-31% H ihora (00-23)% Ihora (01-12)% j usuku (001-366)% m inyanga (01-12)% M iminithi (00-59)% p am noma pm% S wesibili (00-61) % usuku (1-7, ngoMsombuluko usuku lokuqala lwesonto)% U isonto (00-53, ngeSonto lokuqala lusuku lokuqala lwesonto elilodwa)% V ngesonto (01-53, isitayela se-ISO 8601)% w day (0- 6)% W ngesonto (00-53, ngoMsombuluko wokuqala usuku lokuqala lwesonto elilodwa)% x isikhathi sesikhathi sokuthi: Ngomhla ka-Okthoba 6 1993% X isikhathi sokuthi: 23:59:59% yonyaka (00-99) % Y unyaka njengokungathi: 1993% Z isikhathizone (noma akukho uma kungenakuqhathaniswa) %% isibonakaliso esiphezulu sephesenti

Ezinye izimpawu ze-% azifakiwe. Ezinye izinhlamvu zizodluliselwa ezingakaze zenziwe. Indawo kuphela ye-C isekelwa.

I-i-flag ifulege ingenisa imizuzwana embalwa kusukela ngesikhathi sokuthi isetshenziswe njengomthombo ongayifometha . Ngaphandle kwalokho, isikhathi samanje sisetshenzisiwe.

I- gmt ifulege inamandla okukhipha isitembu sesikhathi sesikhathi sokusebenzisa isikhathi se- GMT sesikhathi. Ngaphandle kwefulegi, isikhathi sendawo sendawo sisetshenziswa.

izingobo [[umyalo]
kubangela umyalo onikeziwe ukuthi uzokwenziwa esikhathini esizayo ukuthola noma yiziphi izimpawu ezinikeziwe. Umyalo ukwenziwa kumkhawulo womhlaba jikelele. Uma umyalo engekho, isenzo sesignali sibuyiselwa. Uma umyalo uchungechunge lwe-SIG_IGN, izimpawu azitholakali. Uma umyalo uchungechunge lwe-SIG_DFL, izimpawu ziwumphumela wesimo esizenzakalelayo. izimpawu kungaba uphawu olulodwa noma uhlu lwezimpawu. Amasignali angacaciswa ngenombolo noma ngokufanekisa njengesignali ngayinye (3). Isiqalo "SIG" singasuswa.

Ngezingxabano (noma ingxabano-inombolo), isicupho sibuyisela inombolo yesignali yomyalo wesicupho okwamanje okwenziwa.

Ifulegi le-ikhodi isebenzisa ikhodi yokubuyisa yomyalo endaweni yanoma yikuphi ikhodi i-Tcl eyayiseduze ukubuya lapho umyalo ekuqaleni uqala ukusebenza.

I-flag ye- interpretation yenza ukuba umyalo uhlolwe besebenzisa umhumushi esebenzayo ngesikhathi umyalo uqala ukusebenza kunokuba lapho isicupho senziwa khona.

I-ifulegi yegama- idala umyalo wogibe ukubuyisela igama lesignali yomyalo wesicupho okwamanje okwenziwa.

I-ifulegi ye- amax ibangela umyalo wogibe ukubuyisela inombolo enkulu yesignali engasethwa .

Isibonelo, umyalo othi "ugibe {ukuthumela umyalezo" u-Ouch! "} SIGINT" uzophrinta "u-Ouch!" isikhathi ngasinye umsebenzisi ucindezela ^ C.

Ngokuzenzakalelayo, i-SIGINT (okungasetshenziswa ngokucindezela ^ C) naku-SIGTERM imbangela yokuthi Lindela ukuphuma. Lokhu kungenxa yesicupho esilandelayo, esidalwe ngokuzenzakalelayo lapho Kulindelekile kuqala.

ukuphuma kokugibela {SIGINT SIGTERM}

Uma usebenzisa i-flag ye -D ukuze uqale umsebenzisi we-debugger, i-SIGINT iphinda ihlenge kabusha ukuze iqale i-debugger esebenzayo. Lokhu kungenxa yomgibe olandelayo:

umsizi {exp_debug 1} i-SIGINT

Isicupho se-debugger singashintshwa ngokubeka ukuhlukahluka kwemvelo EXPECT_DEBUG_INIT kumyalo omusha wesicupho.

Ungakwazi, ngaphezu kwalokho, ukwedlula konke kokubili lokhu ngokufaka imiyalo yesicupho kwiskripthi sakho. Ngokuyinhloko, uma unayo "isicupho sakho sokuphuma SIGINT", lokhu kuzodlula umgibe we-debugger. Lokhu kuyasiza uma ufuna ukuvimbela abasebenzisi ukuba bangene kumsebenzisi we-debugger nhlobo.

Uma ufuna ukuchaza isicupho sakho ku-SIGINT kodwa namanje ugibe ku-debugger uma isebenza, sebenzisa:

uma {! [exp_debug]} {ugibe imfihlakalo SIGINT}

Ngaphandle kwalokho, ungabamba ugibe ku-debugger usebenzisa esinye isignali.

isicupho ngeke sikuvumele ukuthi unqobe isenzo se-SIGALRM njengoba lokhu kusetshenziselwa ngaphakathi ukulindela . Umyalo wokunqamula ubeka i-SIGALRM ku-SIG_IGN (ungazinaki). Ungakwazi ukuyibuyisela lokhu uma nje ukhubaze ngesikhathi sokulalelwa okulandelayo.

Bheka isignali (3) ngolwazi olungaphezulu.

linda [args]
liphuza kuze kube yilapho inqubo evezwayo (noma inqubo yamanje uma kungekho muntu ogama layo lingu) liphela.

linda ngokujwayelekile ukubuyisa uhlu lwezinombolo ezine. I-integer yokuqala iyinhlangano ye-pid yenqubo eyalindelwe. I-integer yesibili yiyona id ehambisana nayo. Inombolo yesithathu yi-1 uma kwenzeka iphutha lesistimu yokusebenza, noma 0 kungenjalo. Uma inamba yesithathu yayiyi-0, inamba yesine yisimo esibuyiselwe yinqubo evezwe. Uma inamba yesithathu yayingu--1, inamba yesine yinani le-errno elisethiwe uhlelo lokusebenza. Iphutha eliguquguqukayo lomhlaba jikeleleCode isethwe futhi.

Izakhi ezingeziwe zingase zivele ekupheleni kwenani lokubuya kusuka kulindile . I-option element yesihlanu iveza isigaba solwazi. Njengamanje, inani elilodwa kuphela elingahle leli qembu li-CHILDKILLED uma kunjalo amanani amabili alandelayo yigama lesiginali sesitayela se-C nencazelo emfushane yombhalo.

I-ifulege ichaza inqubo yokulinda ehambelana ne-spawn_id egama layo lingu-(akuyona i-id yenqubo ). Ngaphakathi komphathi we-SIGCHLD, kungenzeka ukuthi ulinde noma iyiphi inqubo eyenziwe ngokusebenzisa i-id ene-1.

I-i-flag ye- nowait yenza ukuba ukulinda kubuyele ngokushesha ngombonakaliso wokulinda ngempumelelo. Uma inqubo iphuma (kamuva), iyolahleka ngokuzenzekelayo ngaphandle kwesidingo sokulinda okucacile.

Umyalo wokulinda ungasetshenziswa futhi ukulinda inqubo evuliwe ngokusebenzisa izimpikiswano "-i -1". Ngokungafani nokusetshenziswa kwayo nezinqubo ezenziwe, lo myalo ungenziwa nganoma isiphi isikhathi. Akukho ukulawula ukuthi iyiphi inqubo evuna. Noma kunjalo, inani lokubuyisa lingabuyekezwa ku-id yohlelo .

IZINCWADI

Lindela ngokuzenzekelayo ukuthi uyazi ukuthi imilayari emibili eyakhelwe ngaphakathi Yilindela izikripthi. Lezi zichazwe yizinkampani ezichazwe eziguqukisweni ze-exp_library kanye ne-exp_exec_library. Zomi zombili zenzelwe ukuqukatha amafayili e-utility angasetshenziswa amanye ama-scripts.

I-exp_library iqukethe amafayela wokuzimela-azimele. i-exp_exec_library iqukethe amafayela ancike ku-architecture. Kuye ngesistimu yakho, zombili izinkampani zingase zingenalutho ngokuphelele. Ukuba khona kwefayela $ exp_exec_library / cat-buffers kuchaza ukuthi ngabe ama-buffers akho / amabhasi noma amathabhu ahleliwe.

UKUQALA-UKUPHILA

Incazelo ye-vgrind itholakala ngokuhle-ukuphrinta Lindela izikripthi. Ucabanga ukuthi incazelo ye-vgrind ehlinzekwe nge- Expect distribution kufanele ifakwe kahle, ungayisebenzisa njenge:

ifayela le-vgrind -lexpect

EXAMPLES

Abaningi abakubonakali ukuthi bangabeka kanjani konke ndawonye ukuthi ikhasi lomuntu lichaze. Ngikhuthaza ukuthi ufunde futhi uzame izibonelo esihlalweni sokwaziswa seLindela ukusabalalisa. Ezinye zazo ziyizinhlelo zangempela. Ezinye zifanekisela izindlela ezithile, kanti-ke, umbhangqwana ungama-hack okusheshayo. Ifayela lokufaka linokubukezwa okusheshayo kwalezi zinhlelo.

Ukulindela amaphepha (bheka Hlola EZINYE) nakho kuyasiza. Nakuba amanye amaphepha asebenzisa i-syntax ehambisana nezinguqulo zangaphambili zokulindela, ama-rationales ahambisanayo ayasebenza futhi angena emininingwaneni eminingi kunalolu khasi lomuntu.

AMAKHAYA

Izandiso zingase zihlanganise ngegama lomyalo we-Expect's. Isibonelo, ukuthumela kuchazwa yi-Tk ngenhloso ehluke ngokuphelele. Ngenxa yalesi sizathu, imiyalo eminingi yokulindela iyatholakala futhi ngokuthi "exp_XXXX". Imiyalo neziguquguquko eziqala ngokuthi "exp", "inter", "spawn", kanye "isikhathi sokuphumula" asinayo izivumelwano. Sebenzisa amagama omyalo anwetshiwe uma udinga lokhu kuhambelana phakathi kwendawo.

Ukulindela kuthatha umbono okhululekile wokubheka. Ngokuyinhloko, okuguquguqukayo okufundwe imiyalo ethize kuhlelo olulindelekile kuzothunyelwa kuqala kusukela ekungeniweni kwendawo, futhi uma kungatholakali, emkhakheni wezwe. Isibonelo, lokhu kuphazamisa isidingo sokubeka "isikhathi esivela emhlabeni wonke" kuzo zonke izinqubo ozibhalayo ozisebenzisayo. Ngakolunye uhlangothi, izilinganiso ezibhaliwe zihlala zihlala endaweni yangaphandle (ngaphandle uma umyalo "wezwe jikelele" ukhishwe). Inkinga evame kakhulu lezimbangela yilapho ukukhishwa kukhishwa ngenqubo. Ngaphandle kwenqubo, i- spawn_id ayisekho, ngakho-ke inqubo eveziwe ayifinyeleleki nje ngenxa yokungena. Engeza i- "spawn_id global" enkambisweni enjalo.

Uma ungeke ukwazi ukunika amandla amandla we-multispawning (ie, uhlelo lwakho alusekeli noma ukhethe (BSD *. *), I-poll (SVR> 2), noma into elinganayo), Lindela uzokwazi kuphela ukulawula inqubo eyodwa ngesikhathi esisodwa. Kulolu cala, ungazami ukusetha i- spawnid , futhi akufanele wenze izinqubo nge-exec ngenkathi inqubo evelayo isebenza. Ngaphezu kwalokho, ngeke ukwazi ukulindela kusuka ezinkambisweni eziningi (kufaka phakathi umsebenzisi munye) ngesikhathi esifanayo.

Imingcele ye-Terminal ingaba nomthelela omkhulu kuma-scripts. Isibonelo, uma iskriphthi sibhaliwe ukufuna ukuchofoza, kuzokwenza kabi uma ukuchofoza kuvuliwe. Ngenxa yalesi sizathu, Lindela amandla amandla okuphazamisa imingcele ngokuzenzakalelayo. Ngeshwa, lokhu kungenza izinto zingathandeki kwezinye izinhlelo. Isibonelo, igobolondo le-emacs lifuna ukushintsha imephu ejwayelekile "evamile": amakholi amasha afakwa emabalazweni amasha esikhundleni sezintambo ezintsha zokubuyisa, futhi ukuchofoza kukhubaziwe. Lokhu kuvumela ukuthi umuntu asebenzise ama-emac ukuhlela umugqa wokufaka. Ngeshwa, Lindela ngeke ukwazi ukuqagela lokhu.

Ungacela ukuthi Lindela ukuthi ungabi ngaphezu kwezilungiselelo ezizenzakalelayo zemingcele yokugcina, kodwa kufanele uqaphele lapho ubhala imibhalo yezindawo ezinjalo. Endabeni ye-emacs, gwema kuye ngokuthi izinto ezinjengama-mapping and end-of-line mappings.

Imilayezo eyamukele izingxabano ibanjwe ohlwini olulodwa ( okulindeleke okuhlukile futhi isebenzisane ) sebenzisa i-heuristic ukuze inqume ukuthi loluhlu luyiqiniso ngempela yini noma okuningi. I-heuristic ingakwazi ukwehluleka kuphela uma kwenzeka uhlu luveza ukuphikisana okukodwa okuneziningi eziningi ezihlanganisiwe \ n nezinhlamvu ezingekho ze-whitespace phakathi kwazo. Lokhu kubonakala kungenakwenzeka, noma ngabe ingxabano "-nobrace" ingasetshenziswa ukuphoqa ukuphikisana okulodwa ukuthi kulandwe njengengxabano eyodwa. Lokhu kungase kusetshenziswe ngokusebenzisa ikhodi elindelwe ngomshini. Ngokufanayo, -ukubamba kwenza ukuthi impikiswano eyodwa ibambe njengamaphethini / izenzo eziningi.

BUGS

Kwakuzama ngempela ukubiza uhlelo "ubulili" (noma "i-Smart EXec" noma "i-Send-Expect"), kodwa ukuqonda okuhle (noma mhlawumbe nje i-Puritanism) kunqoba.

Kwezinye izinhlelo, uma igobolondo ivela, ikhononda ngokuthi ayikwazi ukufinyelela i-tty kodwa isebenza noma kunjalo. Lokhu kusho ukuthi isistimu yakho inendlela yokuthola ukulawula okulindelekile okungazi. Sicela uthole ukuthi kuyini, futhi uthumele lokhu kwaziswa kimi.

I-Ultrix 4.1 (okungenani izinguqulo zakamuva ezungeze lapha) ihlola isikhathi esiphezulu se-1000000 ukuze sibe okulingana no-0.

I-Digital UNIX 4.0A (futhi mhlawumbe ezinye izinguqulo) wenqabe ukwabela ama-ptys uma uchaza umphathi we-SIGCHLD. Bona ikhasi lokuthola ulwazi ngolwazi oluthe xaxa.

I-IRIX 6.0 ayibambisi izimvume ze-pty ngendlela efanele ukuze uma Kulindeleke ukuzama ukunikeza i-pty ngaphambili eyasetshenziswa omunye umuntu, ihluleka. Thuthukela ku-IRIX 6.1.

I-Telnet (eqinisekisiwe ngaphansi kwe-SunOS 4.1.2) ilenga uma i-TERM ingasethiwe. Lena inkinga ngaphansi kwe-cron, nakwi-cgi scripts, engachazi i-TERM. Ngakho-ke, kufanele uyibeke ngokucacile - ukuthi yiluphi uhlobo ngokuvamile olungafaneleki. Kufanele nje usethelwe okuthile! Lokhu okulandelayo kungenzeka kunelungelo lamacala amaningi.

setha i-env (TERM) vt100

Ithiphu (eqinisekisiwe ngaphansi kwe-BSDI BSD / OS 3.1 i386) ilenga uma i-SHELL ne-HOME ingasethiwe. Lena inkinga ngaphansi kwe- cron , nakwi-cgi scripts, engachazi lezi ziguquko zemvelo. Ngakho-ke, kufanele uwabeke ngokucacile - ukuthi yiluphi uhlobo ngokuvamile olungafaneleki. Kufanele nje usethelwe okuthile! Lokhu okulandelayo kungenzeka kunelungelo lamacala amaningi.

setha (SHELL) / bin / sh isethi env (IKHAYA) / usr / yendawo / ibha

Okunye ukuqaliswa kwe-ptys kuklanyelwe ukuze i-kernel ilahle konke okungafundiwe ngemva kwemizuzwana engu-10 kuya kwezingu-15 (inombolo yangempela ukuxhomekeka kokusebenza) ngemuva kokuba inqubo ivaliwe isichazamazwi sefayela. Ngakho Lindela izinhlelo ezifana

Usuku lokulala lulele 20 ulindele

uzohluleka. Ukuze ugweme lokhu, ucela izinhlelo ezingekho zokuxhumana nge- exec instead of spawn . Ngenkathi izimo ezinjalo zingacabangela, ngokwenzayo angikaze ngibhekane nesimo lapho uhlelo lokugcina lwe-interactive lwangempela luzolahleka ngenxa yalokhu kuziphatha.

Ngakolunye uhlangothi, Hamba ama-ptys we-UNICOS alahle noma yikuphi okungafundiwe ngokushesha ngemva kokuba inqubo ivaliwe isichazamazwi sefayela. Ngibikile lokhu ukuze ngiphule futhi basebenzela ukulungiswa.

Ngezinye izikhathi ukulibazisa kuyadingeka phakathi kokushesha kanye nempendulo, njengalapho isikhombimsebenzisi esibonakalayo sishintsha izilungiselelo ze-UART noma zilinganisa amazinga we- baud ngokubheka ukuqala / ukumisa izingcingo. Ngokuvamile, konke lokhu kudinga ukulala okwesibili noma ezimbili. Inqubo enamandla kakhulu ukuzama futhi kuze kube yilapho i-hardware ilungele ukuthola ukufaka. Isibonelo esilandelayo sisebenzisa amasu womabili:

thumela "isivinini 9600 \ r"; ukulala 1 kulindeleke {isikhathi sokuthumela {thumela "\ r"; exp_continue} $ prompt}

I-code-trap ngeke isebenze nanoma imuphi umyalo ohlala e-Tcl's loop yomcimbi, njengokulala. Inkinga yukuthi ku-loop yomcimbi, i-Tcl ilahla amakhodi wokubuyisa avela abaphathi be-async. I-workaround ukusetha ifulegi kumakhodi wesicupho. Bese uhlola ifulegi ngokushesha emva komyalo (ie, ukulala).

Umyalo wokulindela_ukubukela phansi-uyakunqabela-uma ubeka izingxabano futhi awukho umqondo wokuhlala isikhathi eside ngokujwayelekile.

& # 34; I-EXPECT HINTS & # 34;

Kukhona izinto ezimbalwa mayelana nokulindela okungenzeka ukuthi akusiyo enembile. Lesi sigaba sizama ukuxazulula ezinye zezinto ngeziphakamiso ezimbalwa.

Inkinga evamile yokulinda yindlela yokubona i-shell shell. Njengoba lezi zihlelwe ngokuhlukile ngabantu abangehlukile nangama-shells ahlukene, i-rlogin ehamba kahle ingaba nzima ngaphandle kokwazi okusheshayo. Umhlangano onengqondo uwukuba abasebenzisi balondoloze inkulumo evamile echaza ukunyuka kwabo (ikakhulukazi, ukuphela kwalo) endaweni eguquguqukayo yemvelo EXPECT_PROMPT. Ikhodi njengezilandelayo ingasetshenziswa. Uma i-EXPECT_PROMPT engekho, ikhodi isenethuba elihle lokusebenza ngendlela efanele.

setha ngokushesha "(% | # | \\ $) $"; # okuzenzakalelayo okusheshayo catch {setha ngokushesha $ env (EXPECT_PROMPT)} kulindeleke-

Ngikhuthaza ukuba ubhale ukuthi amaphethini afaka ukuphela kwanoma yini oyilindele ukuyibona. Lokhu kugwema ukuthi kungenzeka ukuphendula umbuzo ngaphambi kokubona yonke into. Ngaphezu kwalokho, ngenkathi ungase ukwazi ukuphendula imibuzo ngaphambi kokubona ngokuphelele, uma uphendula kusenesikhathi, impendulo yakho ingase ivele ibhalwe emuva phakathi kombuzo. Ngamanye amazwi, inkhulumomphendvulwano eholayo izobe ilungile kodwa ibheke ukuhlaziywa.

Izinyathelo eziningi zihlanganisa umlingisi wendawo ekupheleni. Isibonelo, ukuphuma kusuka ku-ftp kuwukuthi 'f', 't', 'p', '>' futhi. Ukufanisa lokhu okusheshayo, kufanele ulandelele ngayinye yalezi zinhlamvu. Kuyinto iphutha evamile ukungabi nalutho. Beka okungenalutho ngokucacile.

Uma usebenzisa iphethini yefomu X *, i * izofanisa konke okukhiphayo kusukela ekupheleni kwe-X kuya into yokugcina etholakalayo. Lokhu kuzwakale enembile kepha kungase kube ukudideka ngoba inkulumo ethi "into yokugcina eyamukelekile" ingahluka ngokuya ngejubane lekhompyutha nokucubungula i-I kokubili nge-kernel nomshayeli wedivayisi.

Ngokuyinhloko, abantu bavame ukubona ukukhishwa kwesimiso kufinyelela ezinhlakeni ezinkulu (nge-athomu) lapho empeleni izinhlelo eziningi zikhiqiza umkhiqizo owodwa ngesikhathi. Uma ucabanga ukuthi yilokho kunjalo, i * iphethini yesigaba esedlule ingalinganisa ukuphela komugqa wamanje ngisho noma kubonakala kuningi, ngoba ngesikhathi somdlalo okwakungumkhiqizo owutholile.

kulindeleke ukuthi akukho ndlela yokwazi ukuthi okunye okukhiphayo kuza ngaphandle kokuthi iphethini yakho ilandele ngqo.

Ngisho kuncike ekuqhumeni okuhambisana nomzila akuhlakaniphile. Akukhona nje ukuthi izinhlelo zivame ukuzenza izithembiso mayelana nohlobo lokuxhaphaza abakwenzayo, kodwa ukuhleleka kwesistimu kungahle kuphume umkhiqizo wokuphuma ukuze imigqa iphule ezindaweni ezibonakala sengathi zihleliwe. Ngakho-ke, uma ungakwazi ukuveza izinhlamvu ezimbalwa zokugcina zesikhashana uma ubhala amaphethini, kuwukuhlakanipha ukwenza kanjalo.

Uma ulindele iphethini ekuphumeni kokugcina kohlelo futhi uhlelo luveza okunye okunye esikhundleni salokho, ngeke ukwazi ukuthola lokho ngegama elingukhiye lokugcina. Isizathu ukuthi lokho kulindeleke ngeke kuphele isikhathi - kunalokho kuzothola isibonakaliso se- eof . Sebenzisa lokho kunalokho. Ngcono nakakhulu, sebenzisa kokubili. Ngale ndlela uma lolo lugqa ludluliselwa nxazonke, ngeke kudingeke uhlele umugqa ngokwawo.

I-Newline ivame ukuguqulwa ekubuyiseleni imoto, ukulandelana kwe-linefeed lapho kukhishwa umshayeli wokugcina. Ngakho-ke, uma ufuna iphethini ecacile ngokucacile imigqa emibili, ukusuka, tshela, printf ("foo \ nbar"), kufanele usebenzise iphethini "foo \ r \ n".

Ukuhumusha okufanayo kwenzeka lapho ufunda kusuka kumsebenzisi, ngokulindela_ukulindele . Kulokhu, uma ucindezela ukubuya, kuzohunyushwa ku-newline. Uma Kulindeleke- ke kudlulisela lokho ohlelweni olubeka ukuphela kwalo kwimodi eluhlaza (njenge-telnet), kuzoba nenkinga, njengoba uhlelo lulindele ukubuya kweqiniso. (Ezinye izinhlelo empeleni zithethelela ngokuthi zizohumusha ngokuzenzakalelayo izintambo ezintsha ukuze zibuyiselwe, kodwa iningi alikho.) Ngeshwa, ayikho indlela yokuthola ukuthi uhlelo lubeka ukugcina kwalo ibe yimodi eluhlaza.

Esikhundleni sokufaka esikhundleni sezinhlamvu ezintsha nge-returns, isixazululo ukusebenzisa umyalo othi "stty raw", okuzovimba ukuhumusha. Kodwa-ke, phawula ukuthi lokhu kusho ukuthi ngeke usakwazi ukuthola izici zokuhlela umugqa ophekwe.

uxhumane ngokucacile ukusetha kwakho ukuphela kwimodi eluhlaza ngakho le nkinga ngeke iphakame ngaleso sikhathi.

Ngokuvamile kuyasiza ukugcina amaphasiwedi (noma olunye ulwazi oluyimfihlo) kuLindela izikripthi. Lokhu akunconywa ngoba noma yini egcinwe kwikhompyutha ingakwazi ukuthola noma ubani. Ngakho-ke, ukugqugquzela ngokuphambene amaphasiwedi avela kwiskripthi kungumqondo ohlakaniphile kunokuba ungene ngemvume ngokoqobo. Noma kunjalo, ngezinye izikhathi ukufakwa okunjalo kungukuphela kokungenzeka.

Ngeshwa, uhlelo lwefayela le-UNIX alukho indlela eqondile yokwakha izikripthi ezisebenzayo kodwa ezingafundiwe. Izinhlelo ezisekela izikripthi zegqoke ze-setgid zingalingisa ngokungafani lokhu kanje:

Yakha iskripthi esilindelwe (esine idatha eyimfihlakalo) njengokujwayelekile. Yenza izimvume zayo zibe ngu-750 (-rwxr-x ---) futhi zineqembu elithembekile, okungukuthi, iqembu elivunyelwe ukuyifunda. Uma kunesidingo, dala iqembu elisha ngale njongo. Okulandelayo, dala iskripthi se-bin / sh nezimvume 2751 (-rwxr-s - x) eziphethwe iqembu elifanayo ngaphambili.

Umphumela uba iskripthi esingahle senziwe (futhi sifunde) nganoma ubani. Uma kuphakanyisiwe, kugijima iskripthi esilindele .

& # 34; QAPHELA NABE & # 34;

I-Tcl (3), okungabonakali (3)
"Ukuhlola okulindelekile: Ithuluzi le-Tcl-based Based Tool for Automation Programs Interactive" nguDon Libes, iphe. 602, ISBN 1-56592-090-2, O'Reilly and Associates, 1995.
"lindela: Ukuphulukisa Lokho Okungaqondakali Ukuhambisana Nokusebenza" nguDon Libes, Proceedings of the Summer 1990 inkomfa yase-USENIX, i-Anaheim, eCalifornia, ngoJuni 11-15, 1990.
"Ukusebenzisa ukulindela ukwenza umsebenzi wokuzenzekelayo we-System" ngo-Don Libes, izinkambiso ze-1990 USENIX Large Installation Systems Administration Conference, Colorado Springs, Colorado, ngo-Okthoba 17-19, 1990.
"I-Tcl: Ulimi Lokulawulwa Kwamaphutha" ngoJohn Ousterhout, Proceedings of the Winter 1990 Conference USENIX, Washington, DC, Januwari 22-26, 1990..Ngilindele: Izikripthi Zokulawula Izinhlelo Zokusebenzisana "nguDon Libes, i-Computing Systems , Umq. I-4, No. 2, Imibiko Yomagazini YaseNyuvesi yaseCalifornia, ngoNovemba 1991.Izinhlelo zokuHlelwa koHlaka lokuCubungula nokuThuthukiswa kokuVumelana kukaDon Libes, i-Proceedings of the Summer 1992 USENIX Conference, amakhasi 135-144, eSan Antonio, TX, Juni 12-15, 1992. "I-Kibitz - Ukuxhumanisa Izinhlelo Eziningi Zokusebenzisana Kanye", nguDon Libes, Software - Practice & Experience, uJohn Wiley & Son, West Sussex, England, Vol.

23, No. 5, Meyi, 1993. "I-Debugger yezinhlelo zokusebenza ze-Tcl", i-Don Libes, i-Proceedings ye-1993 Tcl / Tk Workshop, eBerkeley, CA, ngoJuni 10-11, 1993.

U-AUTHOR

UDon Libes, iNational Institute of Standards and Technology

AMAKHAYA

Siyabonga uJohn Ousterhout for Tcl, noScott Paisley ukuze ugqozi. Siyabonga uRob Savoye ngekhodi yokulinda ngokuzenzakalela.

Ifayela le-HISTORY libhala okuningi kokuziphendukela kwemvelo. Yenza ukufunda okuthakazelisayo futhi kungase kukunikeze ukuqondisisa okwengeziwe kule software. Siyabonga ngabantu okukhulunywe kuyo kulowo ongithumelele izixazululo zegciwane futhi wanikeza olunye usizo.

Ukuklama nokuqaliswa kokulindela kwakhokhelwe ingxenye kahulumeni wase-US ngakho-ke kuyisizinda somphakathi. Noma kunjalo umbhali no-NIST bangathanda isikweletu uma lolu hlelo namadokhumenti noma izingxenye zazo zisetshenziswa.