Linux / Kev Txiav Txim Tebchaws Amplification

Kev cia siab yog ib qho kev pab cuam uas hais txog lwm cov kev sib tham sib pab cuam raws li tsab ntawv. Ua raws li tsab ntawv, Qhov kev cia siab paub txog dab tsi yuav tsum tau los ntawm ib qho kev pab cuam thiab seb qhov tseeb teb yuav tsum yog. Ib tus txhais lus txhais tau hais tias muaj cov qauv kev tswj cov ceg ntoo thiab qib siab kom tswj tau qhov kev sib tham. Tsis tas li ntawd, tus neeg siv yuav tuaj yeem tswj thiab sib thooj ncaj qha thaum xav tau, tom qab rov qab los tswj cov ntawv.

Expectk yog kev sib tov ntawm kev cia siab thiab Tk. Nws ua raws li kev cia siab thiab Tk txoj kev xav. Kev cia siab kuj tseem siv ncaj qha rau C los sis C ++ uas tsis muaj Tcl.

Lub npe "Kev Cia Siab" yog los ntawm lub tswv yim ntawm xa / pom tias cov kab zauv pheej nrov los ntawm uucp, kermit thiab lwm yam kev pab tswj cov kev pabcuam. Txawm li cas los tsis zoo li uucp, Cia siab tias generalized thiaj li hais tias nws tuaj yeem khiav raws li tus neeg siv theem-kev hais nrog txhua qhov kev pabcuam thiab haujlwm hauv hlwb. Cia siab tias koj tuaj yeem tham nrog ob peb cov kev pab cuam tib lub sijhawm.

Dab Tsi Ua Li Cas?

Piv txwv li, ntawm no yog qee yam uas qhov kev cia siab hais kom ua tau:

Muaj ntau ntau yam txheej xwm vim li cas lub plhaub tsis tuaj yeem ua cov haujlwm no. Txhua tus muaj peev xwm nrog kev cia siab.

Feem ntau, Xav tau kev pabcuam rau kev khiav haujlwm ntawm txhua qhov kev pabcuam uas yuav tsum tau sib txuas ntawm qhov kev pabcuam thiab tus neeg siv. Tag nrho cov uas tsim nyog yog tias kev sib txuas lus tuaj yeem ntaus ntawv rau hauv. Kev cia siab tseem tuaj yeem muab rov qab rau tus neeg siv yam tsis muaj kev cuam tshuam qhov kev zov me nyuam raug tswj. Zoo sib xws, tus neeg siv yuav tuaj yeem tswj kev ua tiav tsab ntawv txhua lub sijhawm.

Pab

Cia siab nyeem cmdfile rau ib daim ntawv teev cov lus txib rau kev coj ua. Cia siab tias yuav raug hu ua implicitly ntawm lub tshuab uas pab txhawb cov #! cim los ntawm kos cov tsab ntawv ua tiav thiab ua thawj kab hauv tsab ntawv:

#! / usr / zos / bin / cia siab-f

Ntawm chav kawm, txoj kev yuav tsum tau qhia qhov tseeb tias qhov twg yog qhov cia siab nyob. / usr / zos / bin yog ib qho piv txwv xwb.

Tus chij -c chiv ua ntej ib lo lus txib yuav raug sau ua ntej txhua yam hauv tsab ntawv. Qhov lus txib yuav tsum tau hais kom tsis txhob tawg ntawm lub plhaub. Qhov kev xaiv no yuav siv ntau zaus. Ntau cov commands yuav tseg nrog ib -c los ntawm kev cais lawv nrog semicolons. Cov lus txib raug tua nyob rau hauv qhov kev txiav txim lawv tshwm sim. Thaum siv Expectk, qhov kev xaiv no yog teev tias -command.

Lub -d chij ua rau qee cov kev tso tawm hauv kev tshawb nrhiav, uas feem ntau hais txog kev ua haujlwm ntawm kev txib xws li kev cia siab thiab kev sib txuas lus. Cov chij no muaj cov nyhuv tib yam li "exp_internal 1" thaum pib ntawm Tsab Ntawv Tshaj Tawm, ntxiv rau ntawm Txoj Kev Cia Siab.

Lub -D chij muab tau ib qho kev sib cav sib cav. Ib qho zauv nqi yuav tsum ua raws li. Tus debugger yuav coj tswj ua ntej Tcl cov txheej txheem yog tias tus nqi tsis yog xoom lossis yog tias tus ^ C nias los yog ib qho chaw nres tsoo, los yog lwm qhov kev yuam debugger hais tshwm nyob hauv tsab ntawv. Thaum siv Expectk, qhov kev xaiv no yog teev tias - Debug.

Chij -F chij ua ntej cov ntaub ntawv los ntawm kev nyeem cov lus txib. Tus chij nws tus kheej yog nyob ntawm nws yog thaum nws siv tau thaum siv lub #! cim, yog li ntawd lwm cov lus sib tham yuav muab nkag rau ntawm qhov hais kom ua. Thaum siv Expectk, qhov kev xaiv no teev tias yog -file.

Yog vim li cas, qhov kev ua cov ntaub ntawv tau muab sau cia rau hauv lub cim xeeb thiab ua tiav hauv nws txoj kev paub. Nws yog qee lub sij hawm ntshaw kom nyeem cov ntaub ntawv ib kab ntawm ib lub sij hawm. Yuav kom yuam kom arbitrary cov ntaub ntawv yuav tsum tau ua raws li txoj kev no, siv lub cim chawm -b. Thaum siv Expectk, qhov kev xaiv no yog teev tias yog -qhau.

Yog hais tias cov hlua ntawm "-" yog nkag los ua ib filename, cov lus tawm tswv yim nyeem xwb. Siv "./-" los nyeem los ntawm cov ntaub ntawv muaj npe hu ua "-".

Tus chij -i chij ua kom cia siab rau interactively prompt rau commands es tsis txhob nyeem ntawv ntawm cov ntaub ntawv. Kev ceeb toom yog tawm ntawm qhov kev tawm los yog raws li EOF. Tus chij -i yog assumed yog hais tias tsis muaj tus hais cov ntaub ntawv tsis -c siv. Thaum siv Expectk, qhov kev xaiv no teev tias yog-tsis xav ua.

- yuav raug siv los txiav tawm qhov kawg ntawm cov kev xaiv. Qhov no yog qhov tseem ceeb yog tias koj xav kom dhau qhov kev sib tw zoo li qhov koj xaiv uas tsis tau muab txhais los ntawm kev cia siab. Qhov no yuav usefully muab tso rau hauv lub #! kab los tiv thaiv cov kev txhais lus muaj tseeb los ntawm kev pom zoo. Piv txwv, cov nram qab no yuav tawm cov lus sib ceg nrog rau cov lus sau hauv tsab ntawv ntawm cov argv kuj .

#! / usr / zos / rau hauv / cia siab -

Nco ntsoov tias cov cai siv (3) thiab cov cai (execve) (2) yuav tsum raug pom zoo thaum muab kev sib ceg rau qhov #! kab.

Cov ntaub ntawv $ exp_library / expect.rc yog sourced yog tias tam sim no, tshwj tsis yog lub cim N-siv. (Thaum siv Expectk, qhov kev xaiv no yog teev tias -NORC.) Tam sim no tom qab no, cov ntaub ntawv ~ ~ .expect.rc yog sourced tau, tshwj tsis yog lub cim-n siv. Yog hais tias qhov chaw txawv DOTDIR txhais, nws yog kho raws li tus directory thiab .expect.rc yog nyeem los ntawm muaj. Thaum siv Expectk, qhov kev xaiv no teev tias yog -norc. Qhov no sourcing tshwm sim tom qab executing twg -c chij.

-v ua rau cia sau nws cov lej thiab tawm. Qhov sib chij nyob hauv Expectk, uas siv cov npe ntev npe, yog -version.

Qhib args raug tsim ua lub npe thiab muab cia rau hauv lub npe uas muaj npe hu ua argv thiab. argc yog pib rau qhov ntev ntawm argv.

Argv0 txhais tias yog lub npe ntawm tsab ntawv los yog binary yog tias tsis muaj tsab ntawv. Piv txwv, cov nram qab no luam tawm lub npe ntawm tsab ntawv thiab thawj peb nqe lus:

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

Lus txib

Cia siab tias yuav siv Cuab Yeej Siv Lus. Tcl muab kev tswj kev khiav (yog, rau, so), kev ntsuas kev ntsuam xyuas thiab ntau lwm cov nta xws li cov txheej txheem hais txog kev ua haujlwm tshiab. Commands siv ntawm no tab sis tsis sau (teev, yog, exec) yog Tcl lus txib. Cia siab tias yuav txhawb ntxiv cov lus txib. Tshwj tsis yog tias tau teev, commands xa rov qab hlua.

Cov lus txib muaj npe nyob rau hauv thiaj li hais tias lawv tuaj yeem ua sai sai. Txawm li cas los xij, cov neeg siv tshiab yuav pom tias nws pib yooj yim dua los ntawm kev nyeem cov lus piav qhia ntawm cov qaub ncaug, xa, xav tias, thiab sib cuam tshuam, hauv qhov kev txiav txim ntawd.

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

kaw cov kev twb kev txuas mus rau cov txheej txheem tam sim no . Feem ntau cov kev qhia sib txuas lus yuav pom tias EOF ntawm lawv cov stdin thiab tawm; li no zoo li txaus los tua cov txheej txheem thiab. Chij -i chij qhia txog tus txheej txheem kaw qhov sib txuam nrog spawn_id.

Ob qhov kev cia siab thiab kev sib txuas lus yuav pom tau tias thaum tus txheej txheem tam sim no thiab implicitly ua ib qho ze, tab sis yog tias koj tua cov txheej txheem los ntawm, hais tias, "exec tua $ pid", koj yuav tau ntsees hu ze .

Cov cim chij-cimxia txiav txim siab seb cov qoob loo yov puas raug kaw nyob rau hauv cov txheej txheem tshiab los yog cov txheej txheem muaj kev sib txuam. Tshem tawm ib tug qoob loo qhib tawm, siv qhov muaj nqis 0. Ib qho tsis-xoom integer nqi yuam cov qog nqaij ntaws kaw hauv cov txheej txheem tshiab.

Lub-xaj xaj xaj kaw cov qhev ncaj qha nrog cov qoob loo ntawm cov qoob loo. Thaum txoj kev txuas raug kaw, tus qhev yuav raug kaw zoo li yog tias nws tseem qhib.

Tsis muaj teeb meem txawm tias qhov kev twb kev txuas raug kaw lossis implicitly, koj yuav tsum hu tos kom paub tseeb txog qhov sib txawv ntawm cov txheej txheem qhov. Txoj kev hais kom ze tsis hu tuaj tos txij thaum tsis muaj qhov lees tias kev kaw qhov kev txuas yuav ua rau nws tawm.

debug [[-now] 0 | 1]

tswj lub Tcl debugger cia koj nqis los ntawm cov nqe lus thiab teem caij txiav kev sib txuas.

Yog tsis muaj cov lus, ib tug yog xa rov qab yog hais tias tus debugger tsis khiav, txwv tsis pub tus 0 rov qab.

Nrog 1 lub cav, qhov debugger pib. Nrog ib tug sib cav 0, tus debugger yog tso tseg. Yog hais tias muaj 1 qhov sib cav ua ntej dhau los ntawm tus cim chij, tus debugger tau pib tam sim ntawd. Txwv tsis pub, tus debugger pib nrog Tcl nqe tom ntej.

Qhov debug hais kom ua tsis hloov tej cuab yeej. Sib piv qhov no kom pib tos nrog lub -D chij.

Cov lus hais kom ua rau kev sib txuas lus disconnects ib tug forked txheej txheem ntawm lub davhlau ya nyob twg . Nws tseem khiav hauv tus keeb kwm yav dhau. Tus txheej txheem yog muab nws tus kheej cov txheej txheem. Txuj ci I / O yog redirected rau / dev / thov .

Cov khoom tom qab no siv disconnect los mus khiav cov ntawv hauv keeb kwm yav dhau.

yog {{fork]! = 0} tawm disconnect. . .

Tsab ntawv nram qab no nyeem ib lo lus zais thiab tom qab ntawd tau sau ib qho program txhua lub sijhawm uas xav tau ib lo lus zais txhua zaus nws khiav. Tsab ntawv sau tus password kom koj tsuas yog yuav tsum sau nws ib zaug.

\ "\") \ "\" \ ") \ n \"} {} 1 {} {{fork] = 0} {pw 3600; ntxiv} disconnect spawn priv_prog cia siab Password: xa "$ expect_out ( 1, hlua) \ r \ ". . . tawm}

Ib qho kom zoo dua yog siv kev siv lub plhaub asynchronous feature (&) yog tias qhov kev cia siab yuav txuag lub davhlau ya nyob twg ua ntej mus kaw thiab tom qab ntawd thov kom lawv ptys tshiab. Nrog & Cia siab tias tsis muaj sij hawm los nyeem cov davhlau ya nyob twg txoj kev tsis tau vim lub dav hlau twb raug kaw thaum lub sij hawm Cia siab tau txais kev tswj hwm.

tawm [-txais] [txheej xwm]

ua rau cia siab tias yuav tawm los yog tsis npaj los ua li ntawd.

Chij -onexit chij ua rau qhov kev sib cav tom ntej no yog siv los ua ib qho kev tawm tswv yim. Yog tsis muaj kev sib cav, tus neeg tawm tam sim no tawm rov qab.

Tus chij tsis sib tham ua kom cia siab tias yuav npaj tawm mus tab sis tsis txhob tso cai rau kev khiav hauj lwm. Cov neeg tawm tswv yim tawm tswv yim khiav tawm yog cia li cia siab tias tus kheej cov neeg ua hauj lwm. Tsis muaj kev cia siab ntxiv Cov lus txib yuav tsum tseg. Qhov no yog qhov tseem ceeb yog tias koj tab tom yuav tsum cia siab nrog lwm Tcl extensions. Tus neeg txhais lus tam sim no (thiab lub qhov rai loj yog nyob rau hauv cheeb tsam Tk) nyob twj ywm rau lwm qhov Tcl extensions tuaj yeem tu tau. Yog tias qhov kev cia siab tawm tau hu dua (tiam sis qhov no tshwm sim), cov neeg tuav khoom tsis tau rerun.

Thaum tawm qhov teeb meem, tag nrho cov kev sib txuas mus rau kev ua dab tsi raug kaw lawm. Qhov kaw yuav raug kuaj raws li lub EOF ntawm kev ua haujlwm tau zoo. tawm yuav tsis muaj lwm yam kev ua dhau qhov dab tsi yog qhov kev ua tsis zoo (2) tus txheej txheem. Yog li, cov txheej txheem spawned uas tsis tuaj yeem tshawb xyuas txog EOF tseem tuaj yeem khiav. (Ib qho ntawm ntau yam mob yog qhov tseem ceeb rau kev txiav txim siab, piv txwv li, qhov teeb meem yuav tshwm sim tuaj yeem xa tuaj, tab sis cov no yog cov tub-ntxhais, feem ntau sau tseg hauv kev tawm (3).) Cov txheej txheem uas tau khiav mus txuas ntxiv yuav tau txais los ntawm init.

txheej xwm (los yog 0 yog tias tsis sau tseg) rov qab yog qhov kev tawm ntawm kev cia siab . tawm yog implicitly tseg yog kawg ntawm tsab ntawv.

exp_continue [-continue_timer]
Qhov hais kom ua exp_continue cia siab tias nws tus kheej tseem yuav ua tiav kev tshaj qhov rov qab dua li nws txhua zaus yuav. Los ntawm default exp_continue resets lub timeout timer. -continue_timer chij tiv thaiv timer los ntawm kev rov qab pib dua. (Saib qhov xav paub ntxiv.)

exp_internal [-f] tus nqi
ua rau ntxiv commands xa xa diagnostic ntawm sab hauv kom cia siab rau stderr yog tias tus nqi tsis yog xoom. Cov zis no yog neeg xiam oob khab yog qhov tseem ceeb yog 0. Cov ntaub ntawv tshawb xyuas muaj xws li txhua tus cim tau txais, thiab txhua lub sim ua kom phim cov zis tawm ntawm cov qauv.

Yog hais tias cov ntaub ntawv yeem muab, tag nrho cov zis thiab debugging cov zis yog sau rau cov ntaub ntawv ntawd (tsis hais tus nqi ntawm tus nqi ). Cov ntaub ntawv tso tawm yav dhau los tau kaw lawm.

Cov ntawv chij ua rau exp_internal rov qab qhia qhov tseeb ntawm cov lus tsis tshaj tawm cov ntaub ntawv tsis ntev los no.

exp_open [args] [-i spawn_id]
rov qab qhia txog Tcl cov ntaub ntawv pov thawj uas sib raug mus rau tus thawj coj ntawm tus kheej. Cov ntaub ntawv thwj to npe tuaj yeem siv tau yog tias nws qhib Tcl qhib kev hais kom ua. (Cov nyom qus yuav tsum tsis tau siv dua lawm.

Cov cim chij ntawm lub voj voos qhib rau cov neeg ua hauj lwm qhib rau cov tub ceev xwm. Ib tug tos yuav tsum tau sau rau ntawm cov qoob loo tus tsiaj.

exp_pid [-i spawn_id]
rov qab los ntawm txoj kev khiav haujlwm ntawm tus txheej txheem ntawm lub sijhawm tam sim no. Yog hais tias tus chij -i chiv raug siv, lub pid rov qab sib sau mus rau ntawm qhov muab spawn id.

exp_send
yog ib qho npe xa tuaj .

exp_send_error
yog ib qho cai rau send_error .

exp_send_log
yog ib qho cai rau send_log .

exp_send_tty
yog ib qho kev cai rau send_tty .

exp_send_user
yog ib qho kev cai rau send_user .

exp_version [[-exit] version]
yog pab tau kom paub tseeb tias tsab ntawv no yog sib xws nrog rau tam sim no version ntawm Kev Cia Siab.

Yog tsis muaj cov lus, tam sim no tus qauv ntawm kev cia siab rov qab. Qhov no tej zaum yuav tau encoded hauv koj tsab ntawv. Yog hais tias koj yeej paub tias koj tsis siv cov nta ntawm tsis ntev los no versions, koj tuaj yeem hais kom meej ib qho version yav dhau los.

Versions muaj peb tus lej sib cais los ntawm cov dots. Ua ntej yog tus loj naj npawb. Scripts sau rau versions ntawm kev cia siab nrog ib tug txawv loj tooj yuav luag yeej tsis ua hauj lwm. exp_version rov qab ua yuam kev yog tias cov zauv loj tsis phim.

Thib ob yog tus menyuam yaus. Scripts sau rau ib daim ntawv nrog tus menyuam yau ntau dua li cov xov xwm tam sim no yuav nyob ntawm seb ib co tshiab feature thiab yuav tsis khiav. exp_version rov qab ua yuam kev yog hais tias cov zauv loj sib npaug, tab sis tsab ntawv me me muaj ntau tshaj qhov kev cia siab .

Peb yog ib tug lej uas tsis muaj feem hauv qhov sib piv version. Txawm li cas los, nws yog incremented thaum qhov kev tso cai software raug hloov hauv txhua txoj kev, xws li los ntawm lwm cov ntaub ntawv los yog qhov ua kom zoo dua. Nws pib dua 0 rau txhua tus me nyuam tshiab.

Nrog rau -exit chij, Cia siab tias tau luam tawm ib qho yuam kev thiab tawm yog tias lub sijhawm tsis dhau hnub.

cia siab tias [[-txog] pat1 body1] ... [-opts] patn [bodyn]
tos kom txog thaum twg ib qho ntawm cov khoom sib dhos ntawm cov txheej txheem uas tau ua tiav, lub sij hawm teev tseg tau dhau los, los yog qhov xaus-ntawm-ntaub ntawv pom. Yog hais tias qhov kawg ntawm lub cev tsis tas, nws yuav rho tawm.

Cov qauv ntawm qhov kev cia siab tshaj plaws tom ntej no yuav tsum yog siv ua ntej hais kom ua ntej lwm cov qauv. Cov qauv ntawm qhov kev cia siab tshaj plaws tom ntej no --- qhov kev txiav txim yog implicitly siv tom qab lwm yam qauv.

Yog hais tias cov lus sib cav rau tag nrho cov kev cia siab yuav tsum muaj ntau tshaj ib txoj kab, tag nrho cov lus sib cav yuav raug "ua haujlwm" rau hauv ib qho thiaj li tsis txhob nres txhua txoj kab nrog lub nraub qaum ris. Hauv no ib rooj plaub, tus Tcl hloov li niaj zaus yuav tshwm sim txawm tias tus zuaj dag.

Yog hais tias tus qauv yog lo lus tseem ceeb eof , lub cev coj ua tiav thaum xaus-ntawm-ntaub ntawv. Yog hais tias tus qauv yog lub sij hawm tseem ceeb, lub cev coj mus ua tiav raws sij hawm. Yog tias tsis muaj lub sijhawm siv lo lub sij hawm, qhov kev txiav txim tawm tsis raug cai yog ua tiav raws sij hawm. Lub sij hawm ncua sij hawm ncua sij hawm yog 10 vib nas this, tab sis yuav muab teev, piv txwv li 30, los ntawm cov lus txib "set timeout 30". Ib qho sij hawm mus ib txhis yuav raug xaiv los ntawm tus nqi-1. Yog hais tias tus qauv yog lub ntsiab lus tseem ceeb, tus coj lub cev yog tseg rau thaum lub sij hawm ncua sij hawm los yog qhov kawg ntawm cov ntaub ntawv.

Yog tias ib tug qauv sib dhos, ces tus coj lub cev ua tiav. xav kom rov qab los ntawm lub cev (lossis txoj hlua khoob yog tias tsis muaj qauv sib npaug). Thaum muaj ntau yam sib txawv, qhov tshwm sim ua ntej yog siv los xaiv lub cev.

Txhua zaus tshiab cov zis tuaj, nws muab piv rau txhua tus qauv hauv qhov kev txiav txim uas lawv tau teev tseg. Yog li, koj tuaj yeem kuaj xyuas kom tsis txhob muaj kev sib tw los ntawm kev ua tus qauv kawg uas tau cog lus tias yuav tshwm sim, xws li sai. Nyob rau lub sijhawm uas tsis muaj kev qhia sai sai, koj yuav tsum siv sijhawm (xws li koj xav tau yog tias koj tau txais kev sib tham ntawm tes).

Cov qauv teev nyob rau hauv peb txoj kev. Yog lub neej ua ntej, cov qauv no teev nrog Tcl txoj hlua kev hais kom ua. (Cov qauv zoo li no kuj zoo ib yam li C-plhaub kab zauv feem ntau hu ua "glob" patterns). Tus chij -gl tej zaum yuav raug siv los tiv thaiv cov qauv uas tej zaum yuav tsis phim cov xim xav los ntawm kev ua li ntawd. Ib qho qauv pib nrog "-" yuav tsum muaj kev tiv thaiv li no. (Tag nrho cov hlua pib nrog "-" raug tshwj tseg rau kev xaiv yav tom ntej.)

Piv txwv, fragment nram qab no rau kev txheeb xyuas tau zoo. (Nco tias daim ntawv tso cai no yog ib qho txheej txheem uas tau hais tseg rau lwm qhov hauv tsab ntawv.)

xav tias {tibneeg hu tauj coob {tso haujlwm rau khoom; exp_continue} tsis tau ua tiav abort "tsis muaj lo lus zais" rho npe tawm hnub nyoog rho tawm}

Quotes yog qhov tsim nyog rau ntawm tus qauv plaub vim nws muaj chaw, uas yuav tsis cais cov qauv ntawm qhov kev txiav txim. Tus qauv nrog tib yam nkaus (xws li hnub 3 thiab 4) yuav tsum tau teev cov kev nqis tes ua dua. Qhov no yuav zam tau yog siv cov qauv regexp-style (saib hauv qab). Xav paub ntau ntxiv txog kev ua tus qauv glob-style tuaj yeem nrhiav tau hauv phau ntawv Tcl.

Cov qauv Regmb-style ua raws li cov syntax uas tau txhais los ntawm Tcl's regexp (luv luv rau "kev qhia"). regexp qauv yog tswvcuab nrog tus chij -re . Tus piv txwv yav dhau los yuav rov qab sau tau ib qho regexp li:

xav tias {tibneeg hu tauj coob {tso haujlwm rau khoom; exp_continue} - "ua tsis tau tiav | lo lus zais" invalid "rho npe tawm}

Ob hom qauv yog "tsis muaj peev xwm". Qhov no txhais tau hais tias cov qauv tsis tas yuav phim rau tag nrho cov hlua, tab sis tuaj yeem pib thiab xaus qhov khawm nyob txhua qhov ntawm txoj hlua (ntev li txhua qhov ntxiv). Siv ^ kom phim pib ntawm txoj hlua, thiab $ kom phim kawg. Nco ntsoov tias yog tias koj tsis txhob tos qhov kawg ntawm ib txoj hlua, koj cov lus teb tuaj yeem ua kom yooj yim rau hauv nruab nrab ntawm txoj hlua raws li lawv tau hais los ntawm cov txheej txheem uas tau ntsib. Thaum tseem tsim cov txiaj ntsig tseeb, cov zis yuav saib tsis tau zoo. Yog li, siv cov $ yog xav tau yog tias koj tuaj yeem piav qhia txog cov cim ntawm qhov kawg ntawm txoj hlua.

Nco ntsoov tias nyob rau hauv ntau editors, lub ^ thiab $ phim pib thiab kawg ntawm cov kab. Txawm li cas los xij, vim tias tsis xav kom ua li cas, cov cim cim phim pib thiab xaus ntawm cov ntaub ntawv (as opposed to lines) tam sim no nyob rau hauv qhov kev cia siab txuam tsis tau. (Tsis tas li ntawd, saib cov lus ceeb toom hauv qab no ntawm "system indigestion.")

Lub cim chij ua rau tus qauv yuav tsum raug raws li "txoj hlua" tseeb. Tsis muaj kev txhais cov ntsiab lus *, ^, thiab lwm yam yog ua (txawm tias Tcl cov kab li kev cai Tcl ib txwm yuav tsum tau raug cai). Qee cov qauv yeej tsis muaj peev xwm.

Cov chij tsis tuaj yeem ua rau cov cim loj tshaj plaws ntawm cov zis los sib piv tau raws li yog tias lawv tau cim tsawg dua. Tus qauv tsis cuam tshuam dab tsi.

Thaum nyeem cov zis, ntau tshaj 2000 bytes tuaj yeem yuam ua ntej bytes los ua "tsis nco qab". Qhov no yuav raug hloov nrog cov kev ua haujlwm match_max . (Nco ntsoov tias qhov tseem ceeb loj tshaj plaws yuav qeeb tus cim matcher.) Yog tias daim ntawv teev npe yog full_buffer , tus coj lub cev yog tseg yog match_max bytes tau txais thiab tsis muaj lwm cov qauv uas raug sib koom ua ke. Txawm hais tias los yog tsis siv cov lus cim npe full_buffer , cov cim tsis nco qab tau sau rau expect_out (tsis tuaj).

Yog tias daim ntawv teev npe yog qhov lo lus tseem ceeb thov , thiab nulls raug tso cai (ntawm qhov kev tshem tawm tshem tawm ntawm tshem tawm tshem tawm), qhov kev coj ua yog tseg yog ib qho ASCII 0 sib npaug. Nws tseem tsis tau kom haum 0 bytes ntawm glob lossis regexp qauv.

Thaum txuam tus qauv (los yog eof los yog full_buffer), txhua txuam thiab yav dhau los unmatched tso zis yog rua hauv lub variable expect_out (tsis) . Mus txog 9 regexp substring qhov khoom sib txig nyob rau hauv qhov kev hloov siab tos_out (1, txoj hlua) los ntawm expect_out (9, hlua) . Yog tias cov cim chij siv ua ntej tus qauv, qhov pib thiab xaus indices (nyob rau hauv ib daim ntawv uas haum rau lrange ) ntawm 10 cov hlua yuav khaws cia rau hauv cov kev xav expect_out (X, pib) thiab expect_out (X, kawg) qhov X yog ib qho tus zauv, sib raug mus rau txoj kab hauv substring nyob rau hauv qhov tsis tuaj. 0 hais txog cov hlua uas sib phim tag nrho cov qauv thiab yog tsim rau glob qauv raws li cov qauv regexp. Piv txwv, yog ib txheej txheem tau tsim tawm ntawm "abcdefgh \ n", ntawm:

cia siab tias "cd"

yog li yog cov lus hauv qab no tau sau tseg:

teem expect_out (0, txoj hlua) cd teem expect_out (tsis los) abcd

thiab \ "efgh \ n \" yog sab laug hauv cov zis tsis. Yog hais tias tus txheej txheem tsim cov zis "abbbcabkkkka \", ntawm:

cia siab tias-taw qhia-thiab "b (b *). * (k +)"

yog li yog cov lus hauv qab no tau sau tseg:

(teem caij) (0, kawg) 10 set setout (0, kawg) 10 teev set_out (0, kawg) bbbcabkkkk teem expect_out (1, pib) 2 teeb expect_out (1, kawg) 3 teeb expect_out (1, hlua) bb teem expect_out (2, pib) 10 teeb expect_out (2, kawg) 10 teem expect_out (2, hlua) k teeb expect_out (tsis) abbbcabkkkk

thiab \ "\ n \" yog sab laug hauv cov zis tsis. Tus qauv "*" (thiab -re "* *) yuav yaug cov zis uas tsis tas nyeem cov lus tso tawm ntxiv.

Feem ntau, cov khoom tso tawm tau muab pov tseg los ntawm Expect's sab hauv buffers. Qhov no tej zaum yuav tiv thaiv tau los ntawm kev ua ntej ib tus qauv nrog cov cim-tsis yog tus chij. Cov cim no yog qhov tseem ceeb hauv kev sim (thiab yuav muab lo lus luv luv rau-"tsis yog" rau kev yoojyim thaum sim).

Cov qoob loo ntawm tus txuam txuam nrog (los yog eof lossis full_buffer) muab cia hauv expect_out (spawn_id) .

The- timeout chij ua rau qhov kev txiav txim siab tam sim no kom siv cov nqi hauv qab no raws sij hawm siv tsis tau siv tus nqi ntawm qhov txawv sij hawm.

Los ntawm kev ua neej, cov qauv yuav sib npaug ntawm cov txheej txheem tam sim no, tiam sis tus chij -i chij tawm cov zis tawm ntawm cov npe spawn_id tau muab sib piv tawm tsam cov qauv hauv qab no (mus txog rau tom ntej -i ). Daim ntawv teev npe spawn_id yuav tsum yog ib qho chaw sib cais ntawm cov npe spawn_ids los yog ib qho tseem ceeb hais txog xws li cov npe spawn_ids.

Piv txwv, tus piv txwv nram qab no tos txog "kev cob cog" los ntawm tus txheej txheem tam sim no, los yog "tsis khoom", "failed" los sis "invalid password" los ntawm spawn_id npe los ntawm $ proc2.

cia siab tias {-i $ proc2 tibneeg hu tauj coob {tso haujlwm rau khoom; exp_continue} - "ua tsis tau tiav | lo lus zais" invalid "rho npe tawm}

Tus nqi ntawm lub ntiaj teb no txawv any_spawn_id tej zaum yuav siv los piv cov qauv rau cov spawn_ids uas muaj npe nrog tag nrho lwm -i chij hauv qhov kev txiav txim tam sim no. Cov spawn_id ntawm tus chij -i chij uas tsis muaj kab txawv txaij (ie, tam sim ntawd los ntawm lwm -i ) yog muaj rau lwm cov qauv hauv tib qhov kev cia siab hais txog kev txuas nrog any_spawn_id.

Chij -i chij kuj tseem tuaj yeem hloov lub ntiaj teb no uas yog qhov txawv txav rau kev nyeem ntawv rau cov npe ntawm cov npe khoom noj qoob loo. Qhov txawv kuj yog reread thaum twg nws hloov. Qhov no muab ib txoj kev hloov ntawm I / O qhov chaw thaum lub sij hawm hais kom ua tiav. Spawn ids muab qhov no yog hu ua "indirect" spawn ids.

Kev ua haujlwm xws li so thiab ua ntxiv rau kev tswj kev tswj (piv txwv li, rau , proc ) coj zoo rau txoj kev li ib txwm. Qhov hais kom ua exp_continue cia siab tias nws tus kheej tseem yuav ua tiav kev tshaj qhov rov qab dua li nws txhua zaus yuav.

Qhov no yog qhov tseem ceeb rau kev tsis txhob pom zoo loops los yog rov tos cov lus qhia. Cov piv txwv nram qab no yog ib qho ntawm ib qho khoom tawg rau automate rlogin. Tus exp_continue txhob cia sau ob tsab ntawv tos txais (kom nrhiav qhov sai dua) yog hais tias tus rlogin lus cog rau ib lo lus zais.

($ *) $ expect_out (1, hlua) \ r \ "stty \ n \ n \ n \ n \ n \ n \ n \ n" send_user -re " echo exp_continue} tsis muaj tseeb {send_user \ "invalid password los yog account \ n \" tawm} timeout {send_user \ "kev twb kev txuas mus rau $ hosted timed \ n" tawm} eof {send_user \ "kev twb kev txuas mus rau host tsis tau: $ expect_out (tsis)" tawm} re $ prompt}

Piv txwv, fragment nram qab no yuav pab tus neeg siv qhia txog kev sis raug zoo uas twb tau sib tw tas lawm. Hauv qhov no, lub davhlau ya nyob twg yog muab tso rau hauv hom nqaij nyoos. Yog tias tus neeg siv "presses", nws kuj nce mus ntxiv. Yog hais tias "p" yuav nias, ntau cov khoom rov qab xa tuaj rau tus txheej txheem, tej zaum yuav tsum tau thim nws hauv qee txoj kev, thiab "kuv" cia tus neeg siv ntawv cuam tshuam nrog txoj kev, zoo nyiag tseg kev tswj ntawm tsab ntawv. Nyob rau hauv txhua rooj plaub, qhov kev tso tawm exp_continue pub rau tam sim no xav tias yuav mus txuas ntxiv rau kev sib piv tom qab ua qhov kev nqis tes ua tam sim no.

stty nyoos -echo expect_after {-i $ user_spawn_id "p" {xa "\ r \ r \ r"; exp_continue} "+" {incr foo; exp_continue} "kuv" {interact; exp_continue} "tawm" tawm}

Los ua neej ntawd, exp_continue resets lub timeout timer. Lub timer tsis yog restarted, yog hais tias exp_continue yog hu nrog -continue_timer chij.

kev cia siab tom ntej [expect_args]
ua hauj lwm identical rau lub expect_before tsuas yog tias cov qauv ntawm ob leeg mam thiab expect_after yuav phim, cov kev cia siab qauv siv. Saib qhov kev cia siab- ua ntej cov lus txib kom paub ntxiv.

tos_background [expect_args]
yuav siv cov lus sib npaug tib yam li xav tias , tab sis nws rov qab los sai sai. Cov qauv raug kuaj thaum twg cov khoom tshiab tuaj txog. Tus qauv timeout thiab lub neej ntawd tsis muaj meaningless rau expect_background thiab cov twj ywm raug muab pov tseg. Txwv tsis pub, qhov expect_background hais kom ua siv expect_before thiab expect_after cov qauv cia li xav cia .

Thaum expect_background kev ua raug soj ntsuam, tom qab ua rau tus qub qav id yog blocked. Kev ua tiav keeb kwm yog kev zam thaum ua tiav qhov kev txiav txim. Thaum uas tom qab ua tiav lawm, nws tseem tau ua ib qho (foreground) cia siab rau cov qub qav id.

Nws tsis yog ua tau rau txim tuag ib qho kev cia siab thaum lub sij hawm ib qho kev tsis txaus siab yog qhov tsis txaus siab. expect_background rau ib tug spawn id yog deleted los tshaj tawm ib tus tshiab expect_background nrog cov qub qav id. Kev tawm tsam expect_background nrog cov qauv tshem tus muab spawn id los ntawm lub peev xwm los sib piv cov qauv nyob hauv keeb kwm yav dhau.

expect_before [expect_args]
yuav siv cov lus sib npaug tib yam li xav tias , tab sis nws rov qab los sai sai. Txawv-ua haujlwm ntawm qhov kev npaj siab tshaj plaws yav dhau los-ua ntej nrog tus qub qav id yog implicitly ntxiv mus rau ib qho nram qab no xav kom commands. Yog tias tus qauv sib tw, nws raug kho li yog tias nws tau muab teev tseg rau hauv qhov kev cia siab tias nws tus kheej yuav tsum tau ua, thiab lub koom txoos raug coj los siv ua lub ntsiab lus ntawm qhov kev hais kom ua. Yog tias cov qauv ntawm ob qhov kev npaj siab ua ntej thiab xav tias yuav phim, qhov kev cia siab ua ntej yuav raug siv.

Yog hais tias tsis muaj tus qauv teev, cov qaub qaub daim id tsis tshawb xyuas txog cov qauv.

Tsuas yog overridden los ntawm tus chij rau -i , expect_before cov qauv uas tawm tsam cov qoob loo uas tau sau tseg thaum lub sij hawm uas qhov kev cia siab tos txais tau ua tiav lawm (tsis yog thaum nws tus qauv raug sib npaug).

Cho hauv-tus qhab ua rau expect_before los xa cov lus qhia tam sim no ntawm cov qauv nws yuav phim. Yog vim li cas, nws cov lus ceeb toom rau tam sim no spawn id. Ib qho kev xaiv qis qis qis qis qis yuav raug muab rau cov ntaub ntawv ntawm tus tub qus ntawd. Piv txwv

expect_before -info -i $ proc

Feem ntau yog ib qho spawn id specification yuav muab rau. Tus chij-hauv siab suppresses ncaj qha qav ids uas tuaj tsuas yog los ntawm kev qhia tshwj xeeb.

Siv cov lus qhia txog kev tua tsiaj, qhov chij "-raug" yuav ua rau "-info" los tshaj tawm rau txhua tus neeg cov npe khoom noj.

Cov zis ntawm tus chij-tus qhab nees yuav rov qab siv dua li qhov sib cav rau expect_before.

expect_tty [expect_args]
nws zoo li tiam sis nws nyeem cov cim ntawm / dev / tty (ie keystrokes los ntawm tus neeg siv). Yog lub neej ua ntej, nyeem ntawv yog ua rau hom kev ua si. Yog li, cov kab yuav tsum xaus nrog qhov kev xa rov qab thiaj li yuav pom lawv. Qhov no tej zaum yuav hloov ntawm stty (saib cov lus qhia hauv stty hauv qab).

expect_user [expect_args]
nws zoo li tiam sis nws nyeem cov cim ntawm stdin (xws li tus keystrokes ntawm tus neeg siv). Yog lub neej ua ntej, nyeem ntawv yog ua rau hom kev ua si. Yog li, cov kab yuav tsum xaus nrog qhov kev xa rov qab thiaj li yuav pom lawv. Qhov no tej zaum yuav hloov ntawm stty (saib cov lus qhia hauv stty hauv qab).

diav rawg
tsim ib qho tshiab. Tus txheej txheem tshiab yog ib daim qauv qhia meej txog txoj kev cia siab . Ntawm txoj kev vam meej, fork rov qab los 0 rau tus txheej txheem tshiab (tus menyuam) thiab rov qab tus txheej txheem ID ntawm tus txheej txheem rau tus menyuam txoj kev kawm . Ntawm kev tsis ua hauj lwm (tsis yog vim tsis muaj kev pab cuam, piv txwv, qhov chaw sib pauv, nco), rov qab los ntawm kev rov qab los-1 rau niam txiv, thiab tsis muaj tus txheej txheem rau menyuam.

Forked xyum tawm ntawm qhov tawm lus hais tawm , ib yam li tus txheej txheem tseem . Forked processes yog tso cai rau sau ntawv mus rau cov ntaub ntawv teev npe. Yog tias koj tsis siv debugging lossis logging rau feem ntau ntawm cov txheej txheem, qhov no yuav ua rau koj ruam.

Qee qhov kev siv pty tej zaum yuav tsis meej pem los ntawm ntau cov neeg nyeem thiab sau ntawv, txawm ib ntus. Yog li, nws yog qhov zoo tshaj plaws rau lub diav rawg ua ntej txog kev txeej.

interact [string1 body1] ... [stringn [bodyn]]
muab kev tswj ntawm tus txheej txheem tam sim no rau tus neeg siv, yog li ntawd cov keystrokes raug xa mus rau tam sim no , thiab stdout thiab stderr ntawm tus txheej txheem tam sim no raug xa rov qab.

Cov hlua khev-lub cev yuav tau muab teev rau cov lus sib cav, uas yog thaum lub cev raug tua thaum muab txoj hlua coj los sib piv. (Ua ntej, qhov hlua no tsis xa mus rau qhov txheej txheem tam sim no .) Tus neeg txhais lus ua ke yog xav tias, yog tias lub cev tsis muaj qhov kawg.

Yog tias cov lus sib tham rau tag nrho cov lus sib txuas lus yuav tsum muaj ntau tshaj ib txoj kab, tag nrho cov lus sib cav yuav raug "ua haujlwm" rau hauv ib qho kom tsis txhob xaus txhua txoj kab nrog lub nraub qaum ris. Hauv no ib rooj plaub, tus Tcl hloov li niaj zaus yuav tshwm sim txawm tias tus zuaj dag.

Piv txwv li, cov lus txib nram qab no tau ua nrog cov npe ntawm cov hlua nram qab no: Thaum twg ^ Z yuav nias, Tsab cai yog rho tawm. (Tus chij -reset restores lub davhlau ya nyob twg.) Thaum twg ^ Ib tug nias, tus neeg pom "koj ntaus ib tug tswj-A" thiab cov txheej txheem yog xa ib ^ A. Thaum twg $ yog nias, tus neeg siv pom lub hnub. Thaum ^ C yuav nias, Tshaj tawm ntawm kev tawm. Yog tias "foo" nkag mus, tus neeg siv pom "bar". Thaum twg yog pressed, tus neeg txhais lus tias yuav tsum tuaj yeem interactively.

txheej CTRLZ \ 032 interact {-resur $ CTRLZ {exec tua -PUB]} \ 001 {send_user \ "koj ntaus tus tswj-A \"; xa \ "\ 001 \" $ {send_user \ "Lub hnub yog [hom ntawv lub sijhawm [vib nas this]].}} \ 003 tawm foo {send_user \" bar \ "} Teb zoo!

Nyob rau hauv txoj hlua-lub cev, cov hlua sib phim hauv qhov kev txiav txim uas lawv tau teev muaj kev sib ceg. Cov hlua uas ntais ntawv yog tsis raug xa mus rau tus txheej txheem tam sim no rau kev cia siab ntawm cov seem tuaj. Yog cov cim tau nkag mus ntxiv xws li tias tsis muaj peev xwm ua tau ntxiv lawm, tsuas yog ib feem ntawm txoj hlua yuav raug xa mus rau qhov txheej txheem uas tsis tuaj yeem pib ua dua lwm tus ntxiv. Yog li, cov hlua uas yog qhov sib txuam ntawm cov ntawv sib tw ua ke yuav phim tom qab, yog tias cov thawj cov hlua uas sim ua kom phim thaum kawg.

Los ntawm kev ua neej, txoj hlua hloov yog tsis muaj tseeb uas tsis muaj daim npav qus . (Hauv kev sib piv, qhov kev xav tau hais kom siv cov qauv glob-style los ntawm lub neej ua ntej.) Cov cim chij yuav siv los tiv thaiv cov qauv uas yuav txwv tsis pub muaj cov cim chij los ntawm kev ua li ntawd. Ib qho qauv pib nrog "-" yuav tsum muaj kev tiv thaiv li no. (Tag nrho cov hlua pib nrog "-" raug tshwj tseg rau kev xaiv yav tom ntej.)

Lub -re chij yuam cov hlua kom txhais tau tias yog ib qho qauv ntawm tus qauv regexp. Hauv qhov no, piv substrings yog muab rau hauv cov kuj sib txawv thiab cov lus teb sib xws rau qhov kev cia siab tias yuav tso tawm nws cov zis hauv qhov kev sib txawv ntawm expect_out . Cov cim chij yog qhov zoo sib xws.

Tus qauv eof qhia txog qhov kev ua uas ua tiav thaum xaus-ntawm-ntaub ntawv. Ib qho txawv txawv txawv txawv kuj yuav ua raws li cov cim npe-xaj hauv qhov xwm txheej uas nws tau muab piv rau yog tias eof tau ntsuas thaum sau ntawv tso tawm. Lub neej txoj haujlwm eof yog "rov qab", yog li ntawd kev sib txuas lus rov qab pib dua txhua lub EOF.

Tus qauv timeout qhia txog lub sij hawm (hauv vib nas this) thiab kev ua uas ua tom qab tsis muaj cov cim tau nyeem rau ib lub sijhawm twg. Cov sij hawm ncua sij hawm siv rau cov txheej txheem teev nyuam qhuav dhau. Yog tsis muaj lub sij hawm tso tawm. Qhov txawv tshwj xeeb "timeout" (siv los ntawm cov lus txib) yuav tsis cuam tshuam txog qhov sij hawm no.

Piv txwv, cov lus nram qab no yuav siv tau rau cov neeg siv tshuab uas tsis tau ntaus ib lub sij hawm tab sis leej twg tseem tau txais cov xov xwm sib nrawm heev:

INTERACTIONS-muab zauv $ user_spawn_id timeout 3600 xa-tawm cov nyiaj $ spawn_id

Yog hais tias tus qauv yog lub ntsiab lus tseem ceeb, thiab nulls raug tso cai (ntawm qhov kev tshem tawm tshem tawm ntawm tshem tawm tshem tawm), tus coj lub cev yog tseg yog ib qho ASCII 0 sib npaug. Nws tseem tsis tau kom haum 0 bytes ntawm glob lossis regexp qauv.

Prefacing tus qauv nrog tus chij - sau ntawv ua rau cov sib txawv ntawm interact_out (spawn_id) muab teem rau spawn_id uas sib phim tus qauv (los yog eof).

Kev ua haujlwm xws li so thiab ua ntxiv rau kev tswj kev tswj (piv txwv li, rau , proc ) coj zoo rau txoj kev li ib txwm. Txawm li cas los rov qab tuaj yeem ua kev sib txuas lus rov qab mus rau nws tus neeg hu xov tooj, thaum inter_return ua cuam ​​tshuam los ua kom rov qab rau nws tus neeg hu. Piv txwv, yog hais tias "proc foo" hu ua kev sib txuas lus uas ua tiav qhov kev txiav txim ntawm qhov kev txiav txim inter_return , proc foo yuav rov qab los. (Qhov no txhais tau hais tias yog kev sib txuas lus hu ua neeg txhais lus ua ke yuav ua rau kev sib txuas lus mus txuas ntxiv, thaum inter_return yuav ua rau kev sib txuas lus rov qab mus rau nws tus neeg hu.)

Thaum lub sij hawm sib tham , cov hom nyoos yog siv kom tag nrho cov cim tau muab rau cov txheej txheem tam sim no . Yog hais tias tus txheej txheem tam sim no tsis txais txoj haujlwm tswj kev lag luam, nws yuav nres yog tias xa ib qho teeb liab nres (ntawm default ** Z). Rov qab qhib dua, xa ib lub teeb liab mus ntxiv (xws li los ntawm "tua-TAU"). Yog tias koj xav xa SIGSTOP mus rau qhov txheej txheem (los ntawm ^ Z), xav txog spawning csh ua ntej thiab ces khiav koj qhov kev zov me nyuam. Ntawm qhov tod tes, yog tias koj xav xa ib SIGSTOP kom nws tus kheej, thawj tus neeg txhais lus (saib tsam siv lub cim kev khiav tawm), thiab tom qab ntawd nias ^ Z.

Txoj hlua khau-lub cev yuav siv tau ua ib qho kev tsis sib haum xeeb kom tsis txhob nkag mus rau tus neeg txhais lus thiab ua raws li cov lus txib interactively. Lub davhlau ya nyob twg yav dhau los yog siv thaum lub cev ntawm ib txoj hlua-cev khub raug tua.

Rau kev ceev, cov ua haujlwm hauv hom nyoos los ntawm lub neej. Lub -reset flag resets lub davhlau ya nyob twg rau hom nws tau ua ntej kev sib raug zoo raug tua (tsis ua hom, hom ua si). Nco ntsoov tias cov cim nkag thaum qhov kev hloov no tau poob lawm (ib qho tsis muaj hmoo lub dav hlau ntawm cov tsav tsheb hauv qee lub tshuab). Tsuas pub siv vim yog -reset yog tias koj qhov kev ua haujlwm nyob ntawm kev ua si hauv hom siav.

Lub cim chij xa cov cim uas phim li cov qauv nram qab no rau qhov txheej txheem uas tau ua rau lawv txhua tus ua cim nyeem. Qhov no yuav pab tau thaum tus neeg siv yuav tsum tau pom cov lus tawm los ntawm cov qauv ntawm cov qauv.

Yog hais tias tus qauv raug hais lus tab sis nws thiaj li tsis phim, cov cim raug xa mus rau cov txheej txheem uas tau txais kev ntxub ntxaug. Yog hais tias tus txheej txheem spawned ces echoes lawv, tus neeg siv yuav pom cov cim ob zaug. -vo tej zaum tsuas yog tsim nyog nyob rau hauv lub sijhawm uas tus neeg siv yog tsis zoo li tsis tiav tus qauv. Piv txwv, qhov excerpt nram qab no yog los ntawm rftp, recursive-ftp tsab ntawv, qhov twg tus neeg siv yog prompted nkag ~ g, ~, los yog ~ l, tau, tso, lossis teev cov npe tam sim no recursively. Cov no yog nyob deb deb ntawm qhov kev ua haujlwm zoo li ftp, tias tus neeg siv tsis pom zoo li ntawd ~ ua raws li lwm yam, tsuas yog ua yuam kev, hauv qhov teeb meem, lawv mam li cia li tsis pom qhov tshwm sim lawm.

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

Cov cim chij tsis yog xa cov cim uas ua raws li cov qauv hauv qab no rau cov txheej txheem tso tawm raws li cov cim nyeem.

Qhov no yog qhov tseem ceeb thaum koj xav tso ib qho kev pab cuam rov qab rau tus qauv. Piv txwv, cov nram qab no yuav raug siv los saib xyuas qhov chaw uas ib tug neeg tau xaj (lub Hoob Haes-style modem). Txhua lub sij hawm "atd" yog pom cov ntawv teev tseg ntawm seem ntawm kab.

"interact-nobuffer -re" (. *) \ r \ "rov qab tso $ log \" [clock hom [vib nas this]]: dialed $ interact_out (1, hlua) "} interact -nobuffer" atd "lognumber

Lub sij hawm sib tham , kev siv log_user dhau los yog raug kev pom zoo. Hauv particular, interact yuav yuam nws cov zis los yuav tsum in thiaj li tso (xa mus rau cov zis txheem) txij thaum nws yog tus neeg siv tsis xav sib tham.

Cov chij -o chij ua rau cov nram qab no tseem ceeb-tus khub kom siv rau qhov kev tso tawm ntawm txoj haujlwm tam sim no . Qhov no tuaj yeem pab tau, piv txwv li, thaum lis txog cov tswv uas xa cov cim tsis txaus siab thaum lub sijhawm qhib kev kho kev lag luam.

Los ntawm vim, kev sib raug zoo xav kom tus neeg siv yuav tsum sau ntawv stdin thiab nyeem stdout ntawm txoj kev cia siab rau nws tus kheej. Chij -ua chij (rau "tus neeg siv") ua rau kev sib raug zoo rau tus neeg siv raws li tus txheej txheem uas muaj npe los ntawm nws qhov kev sib cav (uas yuav tsum tau yog ib daim id zoo).

Qhov no tso cai rau ob txoj kev tsis sib thooj sib koom ua ke tsis tas siv cov voj qhia tau meej meej. Los pab rau kev debugging, Txhob txwm kuaj mob ib txwm mus rau stderr (los yog stdout rau qee yam logging thiab debugging cov ntaub ntawv). Vim tib qho lus, tus neeg txhais lus yuav nyeem tau ntawv los ntawm stdin.

Piv txwv, cov lus hauv qab no ua ib qho kev tso npe nkag. Tom qab ntawd nws dials tus neeg siv (tsis pom), thiab thaum kawg txuas ob leeg ua ke. Ntawm chav kawm, txhua txoj kev yuav raug hloov rau tus ID nkag mus. Ib lub plhaub, piv txwv, yuav tso cai rau tus neeg siv ua hauj lwm yam tsis muaj kev tso nyiaj thiab tus password.

spawn login login login $ spawn_id ntses taub hau modem # dial rov qab rau neeg siv # txuas tus neeg siv mus login nkag tau -u $ login

Xa cov zis tuaj mus rau ntau tus txheej txheem, sau txhua tus npe spawn daim ntawv teev npe ua ntej los ntawm ib tus txheej txheem favoury . Kev tawm tswv yim rau cov pab pawg neeg tawm cov qoob loo tawm cov qoob loo yuav txiav txim tau los ntawm ib daim ntawv teev npe spawn id ua ntej los ntawm tus chij-tus zauv . (Tag nrho ob qho-cov lus qhia thiab cov npe tawm tau sau npe hauv tib daim ntawv raws li tus chij -i chij hauv qhov kev hais kom cia, tshwj tsis yog tias any_spawn_id tsis cuam ​​tshuam nrog .) Tag nrho cov chij thiab cov hlua nram qab (lossis cov qauv) siv rau cov tswv yim no mus txog rau lwm qhov - input chij tshwm. Yog tias tsis muaj lus qhia tshwm, -tawm lub ntsiab lus "-input $ user_spawn_id-output". (Ib yam li ntawd, nrog cov qauv uas tsis muaj- ntsuas .) Yog tias ib-cov lus teev, nws overrides $ user_spawn_id. Yog hais tias tus thib ob-cov txheej xwm teev, nws overrides $ spawn_id. Chij ntxiv-cov txheej xwm yuav raug sau tseg.

Ob lub ntsiab lus tswv yim txheej txheem tsim muaj lawv cov kev qhia tawm raws li $ spawn_id thiab $ user_spawn_id (hauv nraud). Yog tias tus chij tsis yog-tsis muaj cov cim chij, cov cim ntawm qhov txheej txheem ntawd raug pov tseg.

Chij -i chiv muab ib qho kev hloov rau spawn_id tam sim no thaum tsis muaj lwm qhov cim npe los yog- txheej txheem . A-chij pom tias yog-tus chij.

Nws yog ib qho ua tau kom hloov cov txheej txheem uas tau ua nrog rau kev siv qog qis qis qau. (Cov ntaub ntawv tsis ncaj nraim yog tau piav qhia nyob rau hauv seem ntawm qhov kev hais kom ua.) Cov ntaub ntawv qis qis qis yuav raug sau nrog -i, -u, -input, los yog -product flags.

tus neeg txhais lus [args]
ua rau tus neeg siv yuav tsum tau txais kev cuam tshuam kev cuam tshuam rau Kev Xav thiab Tcl cov lus txib. Qhov tshwm sim ntawm txhua nqe lus txib raug luam tawm.

Kev ua haujlwm xws li so thiab ua ntxiv rau kev tswj kev tswj (piv txwv li, rau , proc ) coj zoo rau txoj kev li ib txwm. Txawm li cas los xij yuav ua rau tus neeg txhais lus xa rov qab mus rau nws tus neeg hu, thaum inter_return ua rau neeg txhais lus los ua kom rov qab tuaj rau nws tus neeg hu. Piv txwv li, yog tias "proc foo" hu ua neeg txhais lus uas tau ua tiav qhov kev txiav txim ntawm qhov kev txiav txim, cov lus tshaj tawm xa rov qab. Lwm cov lus txib ua rau tus neeg txhais lus tuaj yeem ua raws li cov lus txib tshiab.

Yog vim li cas, qhov tseeb muaj ob tug lej. Thawj cov zauv piav qhia qhov tob ntawm qhov kev ntsuam xyuas pawg (piv txwv li, pes tsawg zaug Tcl_Eval raug hu ua). Qhov thib ob uas xam pom yog Tcl keeb kwm keeb kwm. Qhov kev tshwm sim tuaj yeem teev los ntawm kev txhais cov lus "prompt1" uas nws cov nqi tuaj ua tiav qhov txuas ntxiv mus. Yog tias nqe lus qhib muaj quotes, parens, braces, los yog brackets, ib qho kev xaib siab tshaj (ua ntej "+>") yog muab xa tawm raws li qhov tshiab. Qhov kev tshaj lij ntawm theem siab yuav raug teeb tsa los ntawm cov txheej txheem hu ua "prompt2".

Thaum lub sij hawm txhais lus , siv hom yog siv, txawm tias nws qhov kev hu ua siv hom nyoos.

Yog tias stdin raug kaw lawm, tus neeg txhais lus yuav rov qab los tshwj tias siv tus cim chij siv, qhov twg yog qhov kev sib tw tom qab tau txais.

log_file [args] [[-a] ntaub ntawv]
Yog tias ib lub npe filename, log_file yuav kaw cov lus sib tham ntawm qhov kev sib kho (pib ntawm qhov point) hauv cov ntaub ntawv. log_file yuav tso tseg cov ntaub ntawv yog tias tsis muaj kev sib cav. Cov ntaub ntawv teev npe yav dhau los raug kaw.

Siv ib daim ntawv filename, ib tus cim Tcl yuav muab tau los ntawm kev siv tus chij los yog -leaveopen chij. Qhov no zoo ib yam li cov lus cog qoob loo . (Saib xyuas cov qaub ncaug rau ntau tshaj info.)

Lub -a chij rog tso tawm kom tau muab tso tawm uas yog suppressed los ntawm cov log_user hais kom ua.

Los ntawm kev ua neej, qhov log_file hais kom ua cov ntaub ntawv qub es tsis txhob cia lawv, rau qhov kev yoojyim ntawm kev muaj peev xwm tig mus kaw thiab ntau zaus hauv ib zaug. Rau truncate ntaub ntawv, siv tus chij tsis- nkaum .

Tus chij ib- pawj ua rau log_file xa cov lus piav qhia ntawm cov lus tshaj tawm tsis tshua muaj npe tsis ntev los no.

log_user-ntawv | 0 | 1
Yog vim li ntawd, qhov kev xa / kev sib tham yog kev tso tawm rau stdout (thiab cov logfile yog tias qhib). Lub logging rau stdout yog neeg xiam oob qhab los ntawm qhov hais kom ua "log_user 0" thiab reenabled los ntawm "log_user 1". Nkag mus rau lub logfile yog tsis hloov.

Tus chij ib- pawj ua rau log_user rov xa cov lus piav qhia ntawm cov lus tshaj tawm tsis ntev los no.

match_max [-d] [-i spawn_id] [qhov loj]
txhais cov zauv ntawm qhov tsis tuaj yeem (hauv cov bytes) siv hauv tsev los ntawm kev cia siab . Vim tsis sib cav, qhov loj me me rov qab los.

Nrog lub -d chij, lub neej ntawd loj yog teeb. (Lub hauv paus pib pib yog 2000.) Nrog tus chij -i chij, qhov loj yog teem rau lub npe spawn npe, txwv tsis pub nws yog teem rau cov txheej txheem tam sim no .

overlay [- # spawn_id] [- # spawn_id] [...] qhov kev pab cuam [args]
executes "qhov kev pab cuam args" nyob rau hauv qhov chaw ntawm qhov kev kawm tam sim no, uas terminates. Ib qho kev sib tw sib npaug ntawm ob sab sib tw ua ke ntawm cov lus txib uas txhais tau hais tias nws yog tus tswv hauv plhaub. Tag nrho cov spawn_ids raug kaw tshwj tsis yog rau cov npe hu ua cov lus sib cav. Cov no yog mapped rau cov npe ntawm tus neeg paub lub npe.

Spawn_ids yog mapped rau cov ntaub ntawv pov thawj rau qhov kev zov me nyuam tshiab. Piv txwv li, cov kab hauv qab no sau chess thiab tso cai rau nws tswj tau los ntawm tus txheej txheem tam sim no - hais, tus chess master.

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

Qhov no ntau dua li "kev sib txuas lus -u", li cas los xij, nws txi cov peev xwm ua qhov kev sib txuam nrog txij thaum txoj kev cia siab lawm tsis nyob hauv kev tswj hwm.

Nco ntsoov tias tsis muaj kev tswj hwm qhov kev pabcuam. Yog li, yog hais tias koj tshem tawm cov txheej txheem, cov kev pab cuam uas tswj kev ua haujlwm (shells, login, etc) yuav tsis ua haujlwm zoo.

parity [-d] [-i spawn_id] [tus nqi]
txhais tau tias qhov sib txig sib luag yuav tsum muab khaws cia los yog tawm ntawm cov qhov tso tawm ntawm kev ua haujlwm. Yog hais tias tus nqi qis, parity yog stripped, txwv tsis pub nws tsis stripped. Uas tsis muaj nqi cav, qhov nqi tam sim no rov qab.

Nrog tus chij- d , tus nqi parity default yog teeb. (Tus thawj lub neej yog 1, piv txwv li, parity tsis stripped.) Nrog tus chij -i chij, tus parity tus nqi yog teem rau lub npe spawn npe, txwv tsis pub nws yog teem rau cov txheej txheem tam sim no .

remove_nulls [-d] [-i spawn_id] [tus nqi]
txhais tau tias seb cov nulls muab khaws tseg lossis tshem tawm ntawm cov txheej txheem ntawm cov txheej txheem spawned ua ntej txawv txuam lossis khaws cia hauv qhov kev sib txawv ntawm expect_out lossis interact_out . Yog tias tus nqi 1, kev tshem tawm cov nulls. Yog tias tus nqi 0, cov nulls tsis raug tshem tawm. Uas tsis muaj nqi cav, qhov nqi tam sim no rov qab.

Nrog tus chij -d chij, tus nqi default yog teeb. (Tus thawj lub neej yog 1, piv txwv li, cov nulls raug tshem tawm.) Nrog tus chij -i chij, tus nqi yog teev rau cov npe spawn npe, txwv tsis pub nws yog teem rau cov txheej txheem tam sim no .

Seb puas tau los yog tsis tawm cov nulls, Cia siab tias yuav sau cov ntawv bytes rau lub cav thiab stdout.

xa [-flags] txoj hlua
Xa mus rau qhov txheej txheem tam sim no . Piv txwv, hais kom ua

xa "nyob zoo rau lub ntiaj teb \"

xa cov cim, helloworld rau qhov txheej txheem tam sim no . (Tcl muaj xws li ib tsab ntawv sau tawm ( xws li hom ntawv hu ua) uas tsim tau cov hlua yuam kev.)

Cim yog xa tam sim ntawd txawm tias cov kev pab cuam nrog cov ntawv kab-kab laum no yuav tsis nyeem cov cim mus txog thaum xa tus cim xa tuaj. Ib tus cwj pwm rov qab yog raug muab tso rau "\ r \".

Tus - cov cim chij cov kev sib cav tom ntej no kom tau txhais raws li txoj hlua es tsis yog tus chij. Txhua txoj hlua tuaj yeem ua ntej los ntawm "-" losis tsis zoo nws zoo li tus chij. Qhov no muab lub tswv yim txhim khu kev qha kom paub meej tias cov hlua khi kuj tsis muaj kev cuam tshuam los ntawm cov uas ua yuam kev xws li chij. (Tag nrho cov hlua pib nrog "-" raug tshwj tseg rau kev xaiv yav tom ntej.)

Chij -i chij hais tias cov hlua raug xa mus rau lub npe spawn_id. Yog hais tias tus spawn_id yog user_spawn_id , thiab lub davhlau ya nyob twg yog hom nyoos, newlines nyob rau hauv cov hlua yog txhais kom rov qab-newline sequences kom lawv tshwm li yog lub davhlau ya nyob twg yog hom siav. Lub cim chij tsis kam txhais cov lus no.

Cov- npub chij xa tawm cov cim null (0 bytes). Yog vim li cas, ib tug thov raug xa mus. Ib qho integer yuav ua raws li tus naj npawb los qhia seb pes nulls xa.

Lub cim chij ua rau ib qho mob tawg. Qhov no tsuas yog ua rau kev txiav txim siab yog hais tias tus tsiaj txhu yog hais txog tty khoom qhib ntawm "spawn -open". Yog hais tias koj tau muaj tus txheej txheem xws li taub, koj yuav tsum siv cov ntawv lo lus qhuab qhia (convention's convention) rau ua kom muaj kev so.

Cov chais-cov cim tso tawm kom xa mus rau "maj mam", yog li tsis txhob muaj qhov teeb meem tshwm sim uas yog lub computer tawm ntawm qhov kev tawm tswv yim uas tsim los rau ib tug tib neeg uas yuav tsis tuaj yeem tawm qhov qub. Cov zis no yog tswj los ntawm tus nqi ntawm qhov sib txawv ntawm "send_slow" uas yuav siv ob lub npe sau. Thawj lub element yog ib qho integer uas piav qhia txog cov xov tooj ntawm cov bytes xa mus rau atomically. Qhov thib ob lub hauv paus yog tus zauv tiag tiag uas piav qhia cov naj npawb ntawm cov xaum xaim uas lub npe yuav xa tawm. Piv txwv, "set send_slow {10 .001}" yuav yuam "xa-s" xa cov hlua nrog 1 millisecond ntawm txhua 10 cim xa.

Cha-chav rog tso tawm kom xa mus (me ntsis) zoo li ib tug tib neeg tau ntaus ntawv. Tib neeg zoo li qeeb yuav tshwm sim ntawm cov cim. (Lub algorithm yog xyuas raws li qhov kev faib khoom Weibull, nrog cov kev hloov kho raws li daim ntawv thov no.) Qhov tso tawm no yog tswj los ntawm tus nqi ntawm qhov kev hloov "send_human" uas yuav siv tsib daim ntawv sau npe. Thawj ob lub ntsiab lus yog qhov nruab nrab ntawm kev sib tshuam ntawm cov cim hauv vib nas this. Thawj yog siv los ntawm lub neej ntawd. Qhov thib ob yog siv los ntawm lo lus xaus, simulate subtle pauses uas puav zaus tshwm sim ntawm kev hloov li ntawd. Qhov thib peb qhov kev ntsuas yog qhov kev ntsuas ntawm qhov txawv .1 qhov txawv kuj yog, 1 yog qhov txawv txav, thiab 10 yog qhov sib txawv heev. Cov extremes yog 0 rau infinity. Ob lub xeem tsis muaj, feem ntau, qhov tsawg kawg nkaus thiab qhov nruab nrab ntawm kev sib tshuam. Qhov tsawg kawg thiab qhov siab tshaj plaws yog siv lub xeem thiab "clip" kawg zaum kawg. Qhov nruab nrab qhov kawg yuav txawv ntawm qhov nruab nrab ua yog qhov tsawg kawg nkaus thiab qhov siab tshaj qhov txaus siab qhov tseem ceeb.

Ua ib qho piv txwv, cov lus txib nram no emulates tus kab mob ceev ceev thiab zoo ib yam:

teeb send_human {.1 .3 1 .05 2} xa -h "Kuv tshaib plab, Ua noj su."

thaum cov hauv qab no tej zaum yuav haum tom qab lub hangover:

teeb send_human {.4 .4 .2 .5 100} xa -h "Goodd tog hmo ntuj lash!"

Nco ntsoov tias cov uas tsis raug simulated, txawm tias koj tuaj yeem tsim yuam kev kho qhov xwm txheej koj tus kheej los ntawm kev yuam kev thiab kev kho cov lus sib cav.

Tus chij rau xa cov cim null, rau xa so, rau yuam kev tso zis qis thiab rau tib neeg-style cov zis yuav tsum yog kom. Tsuas pub siv lub sijhawm teev kawg nkaus xwb. Txuas ntxiv, tsis muaj txoj hlua cav tau sau nrog tus chij rau xa xa cov cim los yog lov.

Nws yog ib lub tswv yim zoo rau ua ntej xa mus rau tus txheej txheem los ntawm qhov kev cia siab . cia siab tias yuav tos rau txheej txheem pib, thaum xa tsis tuaj. Hauv particular, yog thawj tus xa tiav ua ntej txoj kev pib khiav, koj khiav txoj kev pheej hmoo ntawm koj cov ntaub ntawv ignored. Nyob rau lub sijhawm uas sib tham sib cov kev pabcuam qhia tsis tau sai sai, koj tuaj yeem xa tuaj raws sijhawm hauv qab no xws li:

Yuav kom tsis txhob muab hackers yim pab yuav ua li cas yuav lov nyob rau hauv, qhov no system tsis txhob rau ib lo lus zais lwm. # Tos li 5 nas this rau exec kom tiav spawn telnet very.secure.gov pw tsaug zog 5 xa tus password \ r

exp_send yog ib qho cai rau xa. Yog tias koj siv Expectk lossis lwm yam kev hloov ntawm Kev Cia Siab hauv Tk ib puag ncig, xa txhais los ntawm Tk rau lub hom phiaj txawv nkaus xwb. Exp_send muab rau kev sib haum xeeb ntawm cov cheeb tsam. Zoo li cov neeg txawv tebchaws tau muab rau lwm tus tos lwm tus xa lus txib.

send_error [-flags] txoj hlua
zoo li xa , tsuas yog tias cov zis yog xa mus rau stderr es tsis yog tus txheej txheem tam sim no .

send_log [-] hlua
zoo li xa , tsuas yog hais tias cov hlua tsuas xa mus rau ntawm cov ntaub ntawv log (saib log_file .) Cov nqe lus tsis lees paub yog tias tsis muaj ntaub ntawv teev npe.

send_tty [-flags] txoj hlua
yog li xa , tsuas yog tias cov zis yog xa mus rau / dev / tty rather dua tus txheej txheem tam sim no .

send_user [-flags] txoj hlua
yog li xa , tsuas yog tias cov zis yuav raug xa mus rau stdout es tsis yog tus txheej txheem tam sim no .

pw ib ntus
ua rau tsab ntawv mus pw tsaug zog rau cov naj npawb ntawm ob peb feeb. Cov vib nas this yuav yog zauv zauv. Kev sib tshuam (thiab cov xwm txheej TK yog tias koj siv Expectk) yuav ua tiav thaum tos tos.

Spawn [args] qhov kev pab cuam [args]
tsim ib txheej txheem tshiab khiav "qhov kev pab cuam args". Nws cov stdin, stdout thiab stderr muaj kev txuas nrog kev cia siab, yog li ntawd lawv yuav tsum tau nyeem thiab sau los ntawm lwm cov lus txib. Qhov kev txuas yog tawg los ntawm kev kaw lossis yog txoj haujlwm kaw nws tus kheej cov ntaub ntawv pov thawj.

Thaum ib txheej txheem yog pib los ntawm spawn , qhov sib txawv ntawm spawn_id yog teem rau ib tus piav qhia txog qhov txheej txheem ntawd . Cov txheej txheem uas tau piav qhia los ntawm spawn_id yog suav tias yog "tam sim no ". Spawn_id tej zaum yuav nyeem los yog sau ntawv, tom qab siv txoj kev tswj hwm txoj hauj lwm.

user_spawn_id yog lub ntiaj teb no kuj muaj qhov paub txog uas siv rau tus neeg siv. Piv txwv li, thaum spawn_id raug teem rau qhov txiaj ntsim no, xav tias yuav zoo li expect_user .

Kuv yuam kev_spawn_id yog lub ntiaj teb no txawv txav uas muaj cov lus piav qhia uas yog hais txog qhov yuam kev txheem. Piv txwv li, thaum spawn_id tau teem caij mus rau qhov txiaj ntsim no, xa tej yam zoo li send_error .

tty_spawn_id yog lub ntiaj teb no txawv txav uas muaj cov lus qhia uas yog hais txog / dev / tty. Yog / dev / tty tsis muaj nyob (xws li hauv cron, tom, lossis batch tsab ntawv), ces tty_spawn_id tsis txhais. Qhov no yuav raug kuaj raws li:

{{info muaj tty_spawn_id}} {# / dev / tty exist} lwm {# / dev / tty tsis muaj nyob # tej zaum hauv cron, batch, los yog tsab ntawv}

Spawn rov qab los ntawm UNIX txheej txheem . Yog tias tsis muaj tus txheej txheem , spawn 0. Qhov sib txawv ntawm spawn_out (qhev, lub npe) yog teem rau lub npe ntawm tus cwj mem npuaj qhev.

Los ntawm kev ua neej, spawn echoes cov lus txib thiab cov nqe lus. Lub- pob nees choj nres cov qog nqaij nyoos los ntawm kev ua qhov no.

Tus chij -console chiv ua rau cov khoom tso tawm kom raug xa mus rau cov txheej txheem uas tau txais . Qhov no tsis txaus siab rau txhua lub tshuab.

Internally, spawn siv pty, initialized tib yam li tus neeg siv lub tty. Qhov no yog pib ntxiv kom tag nrho cov chaw yog "ua" (raws li stty (1)). Yog hais tias qhov txawv kuj stty_init txhais, nws txhais rau hauv cov style ntawm stty lus ua ntxiv configuration. Piv txwv, "teev stty_init nyoos" yuav ua rau kom muaj kev qis qis qis dua cov qoob loo pib rau hauv hom qes. -tshau tshaj tawm cov pib ua raws li tus neeg siv lub tty. -nottyinit skips tus "sane" initialization.

Feem ntau, spawn siv sij hawm me ntsis los ua. Yog tias koj paub tias spawn siv sijhawm ntau npaum li cas, tej zaum nws yuav ntsib nrog rau cov neeg uas muaj ptys uas raug mob. Muaj ntau qhov kev ntsuam xyuas tau ua tiav ntawm ptys kom tsis txhob nkag siab nrog kev ua yuam kev. (Cov no siv 10 vib nas this ib npib pd.) Running Expect nrog -d kev xaiv yuav qhia tau tias Tos yog muaj ntau ptys hauv khib xeev. Yog tias koj tsis tuaj yeem tua cov txheej txheem uas cov ptys raug nrog tom qab ntawd, koj tsuas yog rov qab nrhiav dua yuav tsum rov qab tua.

Yog qhov kev zov me nyuam tsis tau muaj kev vam meej vim tias exec (2) tsis muaj (piv txwv li thaum qhov kev zov me nyuam tsis muaj nyob), cov lus yuam kev yuav xa rov qab los ntawm kev sib txuas lus ntxiv los yog xav kom ua raws li yog qhov kev zov me nyuam khiav tawm thiab ua cov lus yuam kev ua zis. Qhov kev coj cwj pwm no yog lub txiaj ntsim ntawm ntuj tsim ntawm qhov kev siv ntawm cov ntses ntaj . Internally, Spawn forks, tom qab uas tus txheej txheem spawned muaj tsis muaj txoj kev sib txuas lus nrog tus txheej txheem cia siab thaum tsuas yog kev sib txuas lus ntawm spawn_id.

Cov cim chij ua rau qhov sib cav tom ntej no yuav tsum tau txhais tias yog Tcl daim ntawv pov thawj (piv txwv li, rov qab qhib .) Cov qoob loo ntawm tus tsiaj tau muab coj los siv tau yog tias nws yog ib qhov kev ua haujlwm . (Yuav tsum tsis siv cov ntaub ntawv pov thawj no.) Qhov no cia koj kho cov khoom nyoos, cov ntaub ntawv, thiab cov kav dej raws li cov txheej txheem uas tsis tau siv yam tsis muaj pty. 0 raug xa rov qab los qhia tias tsis muaj qhov txheej txheem txuam nrog. Thaum txoj kev txuas mus rau qhov txheej txheem uas tau muab tua lawm, ces yog Tcl cov ntaub ntawv pov thawj. Cov cim chij ntawm tus cwj pwm txawv - zoo ib yam nkaus li -puam tsuas yog -tug hwj txwv ua rau tus neeg ua pov thawj ntawm cov ntaub ntawv tawm mus rau sab nraud txawm tias tom qab tus kas tawb yog kaw lawm.

Lub caum chij ua rau lub pty qhib tab sis tsis muaj txheej txheem . 0 raug xa rov qab los qhia tias tsis muaj qhov txheej txheem txuam nrog. Spawn_id yog teem caij li qub.

Qhov sib txawv ntawm spawn_out (qhev, fd) raug teem rau cov ntaub ntawv qhia paub sib npaug uas sib thooj rau tus tub qhev ncaj ncees. Nws tuaj yeem raug kaw siv "close -slave".

Cov cim npe-lub npe hu ua lub cim taw qhia yuav tsum tsis lees paub nyob rau hauv cov txheej txheem . Txwv tsis pub, Pib ntsais koj teeb tau qhov kev coj cwj pwm ua vim. Cov ntawv cim npe muaj npe nyob rau hauv qhov kev hais ua kom tsis pub, tshwj tsis yog tias txhua lub teeb liab yuav tsum muaj ib tus chij txawv.

strace theem
ua rau cov lus hauv qab no tau luam tawm ua ntej yuav raug tua. (Tcl's trace command traces variables.) Theem qhia seb nyob deb npaum li cas hauv kev hu xov tooj. Piv txwv li, cov lus hais hauv qab no hais tias cia siab thaum nrhiav thawj 4 theem ntawm kev hu, tab sis tsis muaj hauv qab no.

xav tias -c "strace 4" script.exp

Tus chij ua haujlwm-ua lag luam ua rau strace rov qab piav qhia txog cov lus tshaj tawm tsis tshua muaj npe tsis ntev los no.

stty args
hloov cov davhlau ya nyob twg tuaj zoo li kev hais kom ua sab nraud.

Yog vim, qhov kev tswj xyuas qhov dav hlau yog nkag mus. Yog hais tias tsis muaj tus txheej txheem thov thiab kev tswj hwm lub davhlau ya nyob twg, cov txheej xwm yav dhau los ntawm cov nqaij nyoos thiab cov cim npe tau muab rov qab rau hauv ib daim ntawv uas tom qab tau ua tiav lawm siv los ntawm kev hais kom ua.

Piv txwv, cov lus nyoos los yog -cooked muab lub dav hlau los ua hom nyoos. Cov nqe lus -raw los yog siav muab lub davhlau ya nyob twg rau hauv hom siav. Cov lus ncha thiab -echo muab lub davhlau ya nyob twg rau hauv hom nos thiab hom noecho.

Cov piv txwv hauv qab no qhia tau tias yuav ua li cas thiaj li ntog tsis tau. Qhov no yuav siv tau rau cov ntawv sau tsis raug-tsis siv neeg kom tsis txhob nkag rau cov passwords hauv lawv. (Saib ntau qhov kev sib tham txog qhov no hauv EXPECT HINTS hauv qab no.)

stty -echo send_user "Password:" expect_user -re "(. *) \ n \" set password $ expect_out (1, hlua) stty ncha

system args
muab args rau sh (1) li cov tswv yim, cia li txhais tau hais tias nws tau raug ntaus ua ib qho lus txib ntawm lub davhlau ya nyob twg. Cia siab tos kom txog thaum lub plhaub tas. Txoj kev xa rov qab los ntawm sh yog daws tib txoj kev uas exec tuav nws txoj kev rov qab tuaj.

Hauv kev sib piv rau exec uas yog redeem stdin thiab stdout rau tsab ntawv, qhov system ua tsis muaj kev hloov (lwm yam tshaj li qhia los ntawm txoj hlua nws tus kheej). Yog li, nws tseem tau siv cov kev pab cuam uas yuav tsum tau tham nrog / dev / tty. Vim li cas, cov ntsiab lus ntawm qhov system tsis raug kaw hauv lub cav.

timestamp [args]
rov qab timestamp. Yog tsis muaj cov lus sibtham, cov vib thab nyub txij thaum lub sijhawm rov qab los.

Cov txheej txheem -format qhia txog ib txoj hlua uas tau xa rov tuaj tiam sis muaj kev hloov ua raws li POSIX cov cai rau strftime. Piv txwv%% a yog hloov los ntawm lub npe ntawm lub npe (piv txwv, Sat). Lwm tus yog:

% lub limtiam npe luv%% A daim ntawv qhia hnub puv hnub%% b lub npe luv lub npe% B lub hli tag nrho lub npe% c hnub ua haujlwm xws li: Wed Oct 6 11:45:56 1993% d hnub ntawm lub hli (01-31% H teev (00-23)% Kuv teev (01-12)% j hnub (001-366)% m hlis (01-12)% M feeb (00-59)% p los yog pm% S ob (00-61) % Ib hnub twg (1-7, Monday yog thawj hnub ntawm lub lim tiam)% Ib as thiv (00-53, thawj hnub Sunday yog thawj hnub ntawm lub lim tiam ib)% V lub lim tiam (01-53, ISO 8601 style)% w hnub (0- 6)% W lub lis piam (00-53, thawj hnub Monday yog thawj hnub ntawm lub lim tiam ib)% x hnub-sij hawm xws li: Wed Oct 6 1993% X lub sij hawm xws li tom: 23:59:59% y xyoo (00-99) % Y xyoo xws li: 1993% Z timezone (los yog tsis muaj dab tsi yog tias tsis muaj kev txiav txim siab) %% tus kos npe feem pua ​​ntawm daim npav

Lwm cov ntsiab lus tseem ceeb yog cov tsis muaj tseeb. Lwm cov cim yuav kis tau los ntawm untouched. Tsuas yog C qhov chaw txhawb nqa xwb.

Cov cim chij - pib chiv cov naj npawb txij li lub caij nyoog siv los ua qhov chaw los ntawm hom ntawv. Txwv tsis pub, lub sijhawm tam sim no yog siv.

Lub -gmt chij zog timestamp tso zis mus siv lub GMT timezone. Thaum tsis muaj tus chij, lub zos siv sij hawmzone siv.

cuab [cuab] cov cim]
ua rau cov lus txib tau muab coj los tso rau tom qab txais tau cov lus ceeb toom. Qhov kev hais kom ua tiav hauv ntiaj teb no. Yog tias cov lus txib tsis tuaj yeem, qhov teeb meem tshwm sim rov qab. Yog hais tias cov lus txib yog cov hlua SIG_IGN, qhov pib ntsig txog. Yog hais tias qhov kev txiav txim yog SIG_DFL txoj hlua, cov teeb meem yog ua rau lub neej ua tsis tau. Pib ntsais koj teeb yog ib lub teeb liab los yog cov npe ntawm cov cim. Cov cim lus yuav qhia tau hais tias muaj pes tsawg los sis lub cim qhia raws li ib lub teeb liab (3). Qhov "SIG" prefix yuav muab rho tawm.

Tsis muaj kev sib cav (los sis qhov kev sib cav), cuab kev rov qab los ntawm tus npawb ntawm cov lus ceeb toom tam sim no raug muab tua.

Tus chij -code chij siv cov cai ntawm qhov hais kom ua qhov kev cai ntawm Tcl twg los xij thaum rov qab hais kom pib khiav.

Tus chij cwj pwm -interp ua rau qhov kev txiav txim siab yuav raug tshuaj xyuas siv tus neeg txhais lus thaum lub sij hawm qhov lus txib pib khiav dhau qhov thaum raug teeb tsa.

Lub cim npe-lub npe ua rau qhov kev hais kom tsis txhob xa rov qab rau lub npe ntawm cov lus hais kom ua tam sim no.

The -max chij ua rau qhov kev hais kom ua xa rov qab rau tus xov tooj loj tshaj plaws uas yuav muab teev.

Piv txwv, lo lus txib "trap {send_user" Ouch! "} SIGINT" yuav sau "Ouch!" txhua zaus tus neeg siv presses ^ C.

Los vim, SIGINT (uas feem ntau yog tau los ntawm nias ^ C) thiab SIGTERM ua rau kom cia siab. Qhov no yog vim li cas tom qab cuab, tsim los ntawm lub neej thaum pib cia pib.

cuab tawm tawm {SIGINT SIGTERM}

Yog tias koj siv tus chij DD los pib qhov debugger, SIGINT raug kho dua los pib qhov sib tham sib debugger. Qhov no yog vim li cas ntawm qhov ntxiab nram qab no:

cuab {exp_debug 1} SIGINT

Tus debugger cuab yeej hloov tau los ntawm qhov chaw kawm ib ntus txawv EXPECT_DEBUG_INIT mus rau ib qho kev hais kom ua tshiab.

Koj tuaj yeem ua tau, tsis tas li no, los ntawm kev ntxiv cov lus yuam kev rau koj tsab ntawv. Hauv particular, yog tias koj muaj koj tus kheej "cuab tawm SIGINT", qhov no yuav ua rau qhov debugger cuab. Qhov no pab tau yog tias koj xav kom cov neeg siv tsis txhob mus debugger txhua.

Yog hais tias koj xav kom txhais tau koj tus kheej cuab rau SIGINT tab sis tseem cuab rau lub debugger thaum nws tseem khiav, siv:

yog {{[exp_debug]} {trap mystug SIGINT}

Xwb, koj tuaj yeem cuab rau lub debugger siv lwm lub teeb liab.

ntxiab tsis pub koj ua haujlwm rau SIGALRM raws li qhov no yog siv hauv kev cia siab . Cov lus hais ua kom sib xyaw nrog SIGALRM rau SIG_IGN (tsis thab plaub). Koj tuaj yeem reenable no ntev li ntev raws li koj lov tes taw nws thaum lub sij hawm tom qab spawn lus txib.

Pom qhov teeb liab (3) kom paub ntxiv.

tos [args]
qeeb qeeb kom txog thaum tus txheej txheem (lossis tus txheej txheem tam sim no yog tias tsis muaj leej twg hu ua) xaus.

tos nquag rov qab ua ib daim ntawv teev cov plaub zauv. Thawj cov zauv yog lub Disease pid ntawm tus txheej txheem uas tau tos. Qhov thib ob integer yog cov coj tus qoob loo id. Qhov peb qhov integer yog -1 yog qhov kev ua yuam kev operating system, los yog 0 lwm yam. Yog tias peb qhov integer yog 0, plaub tus lej yog qhov xwm txheej rov qab los ntawm txoj kev ua haujlwm . Yog tias peb qhov integer yog -1, tus plaub integer yog qhov value of errno teeb tsa los ntawm kev khiav hauj lwm. Lub ntiaj teb no tsis sib xws ntawm errorCode kuj tau teem caij.

Cov ntsiab lus ntxiv yuav tshwm sim tom kawg ntawm tus nqi xa rov qab los ntawm kev tos . Ib qho kev xaiv thib tsib qhia txog chav kawm ntawm cov ntaub ntawv. Tam sim no, tsuas yog qhov muaj nqis rau lub caij no yog CHILDKILLED nyob rau hauv qhov teeb meem tom ntej ob qhov tseem ceeb yog C-style lub npe lub npe thiab ib qho luv luv piav qhia.

Chij -i chij lees tias tus txheej txheem yuav tos sib luag ntawm lub npe spawn_id (TSIS tus txheej txheem kev cai ). Hauv ib tus neeg SIGCHLD handler, nws yog ib qhov ua tau tos rau cov txheej txheem uas tau siv los ntawm kev siv cov qaub ntsuab id.

Cov cim chij ua rau kom rov qab tuaj sai sai nrog qhov qhia tau tias muaj kev vam meej. Thaum cov txheej txheem tawm (tom qab), nws yuav cia li ploj tsis tas yuav tsum muaj kev pom zoo tos.

Cov lus txib tos kuj tseem siv tau tos rau ib qho kev taug kev rau siv cov lus "-i -1". Tsis zoo li nws siv nrog spawned xyum, qhov kev hais kom ua tau tseg txhua lub sijhawm. Yog tsis muaj kev tswj kav uas txoj kev rov qab muaj txheej txheem . Txawm li cas los xij, tus nqi xa tuaj yeem raug tshawb xyuas rau tus txheej txheem tus ID.

LIBRARIES

Cia siab tias yuav paub txog ob lub tsev qiv ntawv rau kev cia siab rau ntawv. Cov no yog txhais los ntawm cov kev qhia uas muaj npe nyob rau ntawm cov kev hloov mus rau exp_library thiab exp_exec_library. Ob qho no txhais tau tias muaj cov ntaub ntawv tso tawm hluav taws xob uas siv tau los ntawm lwm cov ntawv sau tseg.

Exp_library muaj cov ntaub ntawv kho kev ywj pheej. Exp_exec_library muaj cov ntaub ntawv sau txog architecture-dependent. Nyob ntawm koj lub cev, cov kab lus ob qho tag nrho yuav tas tag. Lub neej ntawm cov ntaub ntawv $ exp_exec_library / miv-buffers piav seb koj tus / bin / miv buffers los ntawm default.

PRETTY-PRINTING

Lub vgrind txhais tau muaj rau kev zoo nkauj-luam ntawv sau ntawv. Piv txwv tias lub vgrind txhais los ntawm Kev Txheej Txheem Thoob Tawm yog tsim nyog ntsia, koj tuaj yeem siv nws raws li:

vgrind -lexpect cov ntaub ntawv

PIV TXWV

Nws ntau tsis tau pom tias yuav ua li cas muab txhua yam ua ke hais tias tus txiv neej nplooj piav qhia. Kuv xav kom koj nyeem thiab sim cov piv txwv hauv tus qauv qhia txog kev cia siab . Ib txhia ntawm lawv yog cov kev pab cuam tiag tiag. Lwm tus yog cov lus qhia meej ntawm tej hom kev kawm, thiab tau kawg, ob peb yog ib qho yooj yim ntawm hacks. Cov ntaub ntawv INSTALL muaj ib lub ntsiab lus ceev ceev ntawm cov kev pabcuam no.

Cov ntaub ntawv cia (saib SEE ALSO) kuj tseem ceeb. Hos cov ntaub ntawv siv syntax sib thooj rau yav dhau los ntawm Kev Txawj Ntse, cov kev sib tw nrog yog tseem siv tau thiab mus rau ntau ntau yam tshaj li cov txiv neej no.

CAVEATS

Extensions yuav tsoo nrog cov kev cia siab cov npe. Piv txwv li, xa tau txhais los ntawm Tk rau lub hom phiaj txawv nkaus xwb. Vim li no, feem ntau ntawm cov Lus Cog Tseg tau kuj muaj ua "exp_XXXX". Cov lus txib thiab cov tsiaj ntawv pib nrog "exp", "inter", "spawn", thiab "timeout" tsis muaj pawg neeg. Siv cov npe txuas ntxiv mus txuas ntxiv yog tias koj xav tau kev sib haum xeeb ntawm cov cheeb tsam.

Cia siab tias yuav siv qhov kev pom zoo ntawm kev tshaj tawm. Qee qhov, cov ntawv nyeem tau hais los ntawm cov lus txib rau ntawm txoj kev xav tau yuav tau nrhiav ua ntej los ntawm lub zos cov kev ua haujlwm, thiab yog tias tsis pom, hauv ntiaj teb no. Piv txwv, qhov no obviates qhov yuav tsum tau muab "ntiaj teb timeout" hauv txhua txoj kev koj sau uas siv kev cia siab . Ntawm qhov tod tes, cov ntaub ntawv sau tseg yeej ib txwm nyob hauv lub zos qhov (tshwj tsis yog muaj "kev txiav txim siab" los ntawm "ntiaj teb"). Qhov teeb meem feem ntau tshwm sim no yog thaum cov qaub ncaug raug tua nyob rau hauv ib txoj kev. Sab nraum cov txheej txheem, spawn_id tsis tshwm sim, yog li ntawd cov txheej txheem spawned lawm tsis yoojyim vim tsuas yog ntawm scoping. Ntxiv ib "spawn_id thoob ntiaj teb" kom ua li no.

Yog tias koj tuaj yeem tsis muaj peev xwm pab tau ntau lub peev xwm (xws li, koj qhov system txhawb tsis xaiv leej twg (BSD *. *), Kev xaiv tsa (SVR> 2), tsis muaj dab tsi zoo), Cia siab tias yuav muaj peev xwm tswj tau ib txoj hauv kev ib zaug xwb. Nyob rau hauv qhov no, tsis txhob sim teem caij spawn_id , los yog yuav tsum tau koj coj txoj kev khiav ntawm exec thaum muaj ib tus txheej txheem uas tau khiav mus. Txuas ntxiv, koj yuav tsis muaj peev xwm paub los ntawm ntau cov txheej txheem (nrog rau tus neeg siv ua ib qho) tib lub sijhawm.

Terminal parameters yuav muaj cov nyhuv loj rau ntawm kev sau ntawv. Piv txwv li, yog tias ib tsab ntawv sau los nrhiav kev txhim kho, nws yuav tsis mloog lus yog hais tias tsis txaus siab. Vim li no, Xav tias tsis muaj zog txog kev lag luam tsis muaj qhov tsis zoo. Hmoov tsis, qhov no yuav ua rau tej yam tsis kaj siab rau lwm cov kev pab cuam. Ua ib qho piv txwv, cov emacs plhaub xav hloov cov "kev sib tw" li niaj zaus: cov xov tooj tshiab tau txais mapped rau cov xov tooj tshiab tsis yog cov xa xov tshiab, thiab echoing yog neeg xiam oob khab. Qhov no tso cai rau ib tug siv emacs los kho cov kab ntawv tawm tswv yim. Hmoov tsis, Cia siab tias tsis tuaj yeem twv tau qhov no.

Koj tuaj yeem thov tias qhov kev cia siab tsis dhau qhov nws qhov chaw tsis muaj qhov tsis zoo, tab sis koj yuav tsum ua tib zoo thaum sau cov ntawv sau rau tej qhov chaw zoo li no. Yog hais tias emacs, tsis txhob nyob ntawm tej yam xws li echoing thiab xaus-of-line mappings.

Cov lus txib uas tau txais cov lus sib cav sib ceg rau hauv ib daim ntawv teev npe (qhov kev cia siab txawv txawv thiab kev sib txuas lus ) siv cov lus zoo los txiav txim seb puas muaj npe los yog ntau yam. Lub heuristic yuav tsis tsuas yog nyob rau hauv cov ntaub ntawv thaum daim ntawv ua tau sawv cev ib qho sib cav uas muaj ntau yam embedded \ n nrog cov cim tsis-whitespace ntawm lawv. Qhov no zoo li tsis txaus ntseeg, tiam sis qhov kev sib cav "-nobrace" yuav siv los yuam kom muaj ib qho kev sib cav sib ceg kom muaj kev sib cav. Qhov no yuav conceivably siv nrog tshuab-generated kev cai. Ib yam li ntawd, -qhov kev sib tw yuam kev sib cav sib ceg ua ntau yam qauv / ua haujlwm.

YUG

Nws yog tiag tiag ntxias npe rau qhov kev pab cuam "pw ua ke" (rau tog twg los "Smart Exec" lossis "Send-Expect"), tab sis kev paub zoo (los yog kab tias tsuas yog Puritanism) prevailed.

Nyob rau tej lub tshuab, thaum lub plhaub teej nyug lawm, nws yws txog tias tsis muaj peev xwm nkag mus rau lub tty tab sis sau rau hauv. Qhov no txhais tau hais tias koj lub cev muaj lub tswv yim rau kev nkag mus rau hauv kev tiv thaiv tty uas tos tsis paub txog. Thov paub seb nws yog dab tsi, thiab xa cov ntaub ntawv no rov tuaj rau kuv.

Ultrix 4.1 (tsawg kawg qhov tseeb versions nyob ib ncig ntawm no) txiav txim siab timeouts ntawm saum toj 1000000 los sib npaug rau 0.

Cov UNIX 4.0A (thiab tej zaum lwm cov versions) tsis kam muab cov ptys faib yog tias koj txhais tau ib tug SIGCHLD handler. Pom daim ntawv thov nyiaj pabcuam ntxiv rau cov ntaub ntawv ntxiv.

IRIX 6.0 tsis lis kev cai lij choj uas yog cai kom yog yog tias Tamsim no cia siab tias yuav qiv ib tug pty yav tas los siv los ntawm lwm tus neeg, nws tsis ua haujlwm. Txawj tej yam ntxiv rau IRIX 6.1.

Telnet (muaj tseeb nyob rau hauv SunOS 4.1.2) yog tias TERM tsis teem. Qhov no yog qhov teeb meem nyob rau hauv cron, ntawm thiab hauv cgi ntawv, uas tsis txhais TERM. Yog li, koj yuav tsum tau teev nws ntsees - rau hom dab tsi yog qhov tsis sob. Nws tsuas muaj tau teem caij rau ib yam dab tsi! Cov nram qab no tej zaum txaus rau feem coob.

teem caij env (TERM) vt100

Ntsis (xyuas tias muaj tseeb hauv BSDI BSD / OS 3.1 i386) yog tias SHELL thiab TSIS tsis tau. Qhov no yog qhov teeb meem nyob rau hauv cron , ntawm thiab nyob rau hauv cgi scripts, uas tsis txhais cov tsiaj ntawv no ua haujlwm. Yog li, koj yuav tsum teev lawv ntsees - rau hom dab tsi yog feem ntau sob. Nws tsuas muaj tau teem caij rau ib yam dab tsi! Cov nram qab no tej zaum txaus rau feem coob.

teem caij env (SHELL) / bin / sh teem env (HOME) / usr / zos / bin

Qee qhov kev siv ntawm ptys yog tsim los kom lub ntsiav txav tawm cov lus tso tawm tsis tuaj tom qab 10 mus rau 15 feeb (tiag tiag tus naj npawb yog yuav tsum siv-raws li txoj cai) tom qab tus txheej txheem kaw qhov file descriptor. Yog li cov kev pab cuam xws li

spawn hnub pw 20 xav tau

yuav ploj mus. Yuav zam tau qhov no, thov kom tsis txhob muaj kev sib tham nrog cov exec uas tsis yog cov ntses ntaj . Thaum muaj xwm txheej zoo li no, hauv kev xyaum kuv yeej tsis tau ntsib ib qho teeb meem uas qhov kawg ntawm qhov kev sib txuas lus tiag tiag yuav ploj vim qhov kev coj cwj pwm no.

Ntawm qhov tod tes, Cray UNICOS ptys pov tseg txhua cov tso zis unread tam sim ntawd tom qab tus txheej txheem tau kaw cov ntaub ntawv qhia tawm. Kuv tau qhia qhov no rau Cray thiab lawv tab tom ua haujlwm rau qhov kho.

Qee lub sij hawm yuav tsum tau ncua sij hawm ntawm qhov kev tshoov siab thiab cov lus teb, xws li thaum lub tty interface hloov hloov chaw UART lossis hloov cov nqi baud los ntawm kev nrhiav cov khoom pib / nres. Feem ntau, tag nrho cov no yog xav tau yog pw tsaug zog rau ob lossis ob. Ib qhov kev ua tau zoo dua qub yog rov ua dua qub kom txog rau thaum cov cuab yeej npaj tau txais cov tswv yim. Cov qauv hauv qab no siv ob qho tswv yim:

xa "ceev 9600 \" r; pw 1 xav tias {timeout {xa "\ r \"; exp_continue} $ prompt}

cuab ntxiab -code yuav tsis ua haujlwm nrog cov lus txib uas nyob hauv Tcl cov kev tshwm sim voj, xws li kev pw tsaug zog. Qhov teeb meem yog tias nyob rau hauv lub voj kev tshwm sim, Tcl discards xa cov cim los ntawm async event handlers. Lub workaround yog teeb tsa tus chij rau hauv txoj cai cuab. Tom qab ntawd khij tus cim tam sim ntawd tom qab qhov hais kom ua (piv txwv li, pw tsaug zog).

Qhov kev xav hais kom ua tiav wait_background ignores -timeout cov lus thiab muaj tsis muaj lub tswv yim ntawm timeouts feem ntau.

& # 34; NCO NTSOOV & # 34;

Muaj ob peb yam txog kev cia siab tias yuav tsis yog-intuitive. Qeb no tshoov siab hais txog qee yam ntawm cov khoom no nrog ob peb lub tswv yim.

Ib qho kev xav tias qhov teeb meem yog qhov yuav ua li cas paub txog plhaub lus cog tseg. Txij li cov no muaj kev sib txawv los ntawm cov neeg txawv thiab txawv tus kheej, portable automating rlogin yuav tsis yooj yim yam tsis paub txog qhov tseeb. Lub rooj sib tham uas tsim nyog yuav tsum muaj cov neeg siv khaws cov lus piav qhia lawv cov lus qhia kom sai (tshwj xeeb, kawg ntawm nws) hauv qhov chaw txawv EXPECT_PROMPT. Cov cai li nram qab no yuav raug siv. Yog tias EXPECT_PROMPT tsis muaj nyob, txoj cai tseem muaj lub caij nyoog zoo rau kev ua haujlwm kom raug.

default prompt catch {sai prompt $ env (EXPECT_PROMPT)} tos -re $ prompt

Kuv xav kom koj sau cov qauv kev cia siab tias muaj qhov xaus ntawm txhua yam koj xav pom. Qhov no ua rau cov lus teb ua ntej yuav pom tag nrho cov khoom. Ntxiv mus, thaum koj tuaj yeem teb tau cov lus nug ua ntej lawv pom tag nrho, yog tias koj teb lus ntxov, koj cov lus teb yuav tshwm tau rov qab rau hauv nruab nrab ntawm cov nqe lus nug. Hauv lwm lo lus, qhov kev sib tham resulting yuav muaj tseeb tab sis saib scrambled.

Feem ntau cov lus cog tseg muaj xws li ib qho chaw cim ntawm qhov kawg. Piv txwv, qhov kom sai ntawm ftp yog 'f', 't', 'p', '>' thiab. Ua kom phim cov lus qhia no, koj yuav tsum suav txhua yam ntawm cov cim no. Nws yog ib qho yuam kev uas tsis yog kom tsis muaj qhov seem. Muab qhov dawb paug rau hauv.

Yog tias koj siv ib tug qauv ntawm daim X *, tus * yuav phim tag nrho cov zis tau txais los ntawm X kawg ntawm qhov kawg tau txais. Cov suab no intuitive, tiam sis yuav ua tau me ntsis ruam vim hais tias kab lus "kawg khoom tau txais" yuav txawv nyob ntawm kev ceev ntawm lub computer thiab kev ua I / O ntawm lub ntsiav thiab tus tsav tsheb.

Hauv particular, tib neeg yuav pom cov khoom tsim tawm hauv cov chunks loj loj (atomically) thaum hauv kev muaj tiag cov kev pab cuam feem ntau tsim cov kab zauv ib zaug ib zaug. Piv txwv li qhov no yog qhov rooj, tus * hauv cov qauv ntawm cov pawg lus dhau los yuav tsuas phim kawg ntawm txoj kab no txawm tias zoo li muaj ntau, vim hais tias thaum lub sij hawm ntawm qhov kev sib tw uas yog tag nrho cov zis uas tau txais lawm.

cia siab tias tsis muaj txoj kev paub txog tias cov zis ntxiv tuaj tab yog koj tus qauv no yog rau nws.

Txawm li ntawm kab-taw qhia tau tias qhov no tsis zoo. Tsuas yog cov kev pab cuam tsis tshua muaj kev cog lus txog cov hom puab ua, tab sis qhov system kem ploj tuaj yeem ua rau cov kab tso tawm kom cov kab so ntawm qhov chaw seemingly. Yog li, yog hais tias koj tuaj yeem qhia tau ob peb lub cim tom qab ntawm qhov kev sau ntawv tam sim no, nws txawj ntse ua li ntawd.

Yog tias koj tos rau ib tus qauv hauv cov khoom tsim tawm dhau los ntawm qhov kev pab cuam thiab qhov kev pab cuam tawm lwm yam es tsis txhob, koj yuav tsis pom tau tias nrog lub caij nyoog lo lus tseem ceeb. Yog vim li cas yog tias xav tias yuav tsis timeout - xwb nws yuav tau txais ib qho eof cim. Siv ntawd xwb. Txawm zoo, siv ob qho tib si. Txoj kev ntawd yog tias txoj kab no puas tsiv mus ncig, koj yuav tsis tau hloov cov kab hauv nws tus kheej.

Newlines feem ntau hloov dua siab tshiab rau cov ntawv xa rov qab, cov kab seev thaum tawm ntawm tus neeg tsav tsheb. Yog li, yog tias koj xav tau ib tug qauv uas ntsees ob kab, los ntawm, hais, printf ("foo \ nbar"), koj yuav tsum siv tus qauv "foo \ r \ nbar".

Ib phau ntawv txhais tau zoo tshwm sim thaum nyeem los ntawm tus neeg siv, ntawm expect_user . Hauv qhov no, thaum koj nias xa rov tuaj, nws yuav muab txhais ua ib kab ntawv tshiab. Yog tias cia siab tias kis mus rau qhov kev zov me nyuam uas teev nws qhov chaw dav hlau kom qis hom (zoo li cov telnet), yuav muaj teeb meem, raws li qhov kev zov me nyuam xav kom muaj tseeb rov qab. (Qee qhov kev pab cuam yeej tau zam txim rau lawv tias lawv yuav txhais cov xov xwm tshiab tuaj yeem, tab sis feem ntau tsis.) Hmoov tsis, tsis muaj txoj hau kev nrhiav kom paub tias qhov kev zov me nyuam muab nws lub dav hlau mus ua hom qoob.

Ntau tshaj qhov kev hloov ntawm cov qauv tshiab nrog cov khoom rov qab, qhov kev daws yog siv lo lus "stty raw", uas yuav nres qhov txhais lus. Nco ntsoov tias, qhov no txhais tau hais tias koj yuav tsis tau txais cov kab-kab ua si lawm.

interact implicitly teev koj davhlau ya nyob twg rau hom nyaj ces qhov teeb meem no yuav tsis tshwm sim ces.

Nws yog ib qho tseem ceeb los khaws cov passwords (lossis lwm cov ntaub ntawv ntiag tug) hauv cov ntawv sau cia. Qhov no tsis tau pom zoo vim txhua yam uas tau muab ceev cia rau hauv lub computer yog raug rau txhua tus neeg. Yog li, interactively prompting rau passwords los ntawm ib tsab ntawv yog ib lub tswv yim smarter dua embedding lawv cia. Txawm li cas los xij, qee zaum qhov kev nkag mus yog qhov tsuas yog tau.

Hmoov tsis, UNIX cov ntaub ntawv kaw lus tsis muaj ib txoj kev ncaj nraim ntawm kev tsim cov ntawv sau uas yog executable but unreadable. Lub tshuab uas txhawb cov setgid plhaub scripts tej zaum yuav ua raws li sim li nram qab no:

Tsim Tsab Ntawv Tshaj Tawm (uas muaj cov ntaub ntawv zais cia) raws li niaj zaus. Ua kom nws cov kev tso cai yog 750 (-rwxr-x ---) thiab muaj los ntawm ib pawg ntseeg, xws li, ib pawg uas raug tso cai nyeem nws. Yog tias tsim nyog, tsim ib pawg tshiab rau lub hom phiaj no. Tom ntej, tsim ib tsab ntawv / bin / sh nrog permissions 2751 (-rwxr-s-x) uas yog los ntawm tib pab pawg ua ntej.

Qhov tshwm sim yog ib tsab ntawv uas yuav raug tua (thiab nyeem) los ntawm leej twg. Thaum invoked, nws sau tsab ntawv Askiv.

& # 34; NCO NTSOOV & # 34;

Tcl (3), kev ywj pheej (3)
"Tshawb Pom Tiag: Kev Tcl Ua Raws Li Taus Tawm Rau Automating Interactive Programs" los ntawm Don Libes, pp. 602, ISBN 1-56592-090-2, O'Reilly thiab Associates, 1995.
"cia siab tias: Tivthaiv Cov Tawm Tsom Xyaum Tsis Tivthaiv Pabcuam" los ntawm Don Libes, Tshaj Tawm txog Lub Caij Ntuj Sov xyoo 1990 Lub Rooj Sib Tham USENIX, Anaheim, California, Lub Rau Hli 11-15, 1990.
"Kuv siv tau los ntawm Automate System Administration Cov Haujlwm" los ntawm Don Libes, Tshaj tawm ntawm 1990 USENIX Loj Qhov Kev Nruab Nruab Nrab Systems, Colorado Springs, Colorado, Kaum Hli Ntuj 17-19, 1990.
"Tcl: Cov Lus Cog Tseg: Cov Lus Cog Tseg" yog John Ousterhout, Lub Rooj Sib Tham Txog Lub Caij Ntuj Sov xyoo USENIX, Washington, DC, Lub Ib Hlis 22-26, 1990. Kuv "cia siab tias: Ntawv Sij Hawm Rau Cov Kev Sib Tham Cov Kev Sib Tham" by Don Libes, Computing Systems , Vol. 4, Tsis muaj. 2, University of California Xovxwm Tshaj Tawm, Lub Kaum Ib Hlis Ntuj xyoo 1991. Kuv "Regression Testing and Conformance Testing Interactive Programs", los ntawm Don Libes, Tshaj tawm ntawm Lub Ntuj Sov Kev Sib Txawv Tebchaws USENIX Conference, pp. 135-144, San Antonio, TX, Lub Kaum Ib Hlis 12-15, 1992. Kuv "Kibitz - Txuas Txuas Txawv Cov Kev Sib Txuam Nrog Ntau Hom Kev Ua Ke", los ntawm Don Libes, Software - Xyaum & Kev Paub, John Wiley & Sons, West Sussex, England, Vol.

23, Tsib 5, Tsib Hlis, 1993. Kuv "Debugger rau Tcl Daim Ntawv Thov", los ntawm Don Libes, Tshaj Tawm ntawm 1993 Tcl / Tk Workshop, Berkeley, CA, June 10-11, 1993.

TSO CAI

Don Libes, Lub Koom Haum Lub Tebchaws ntawm Cov Qauv thiab Tshuab

ACKNOWLEDGMENTS

Ua tsaug rau John Ousterhout rau Tcl, thiab Scott Paisley rau kev tshoov siab. Ua tsaug rau Rob Savoye rau kev cia siab tias autoconfiguration code.

KEEB KWM HAIS TXOG DAB TSI ntaub ntawv ntau ntawm cov evolution ntawm kev cia siab . Nws ua rau kev nyeem ntawv zoo thiab yuav muab cov lus qhia ntxiv rau qhov software no. Tsaug rau cov neeg tau hais hauv nws uas xa kuv kab kab fixes thiab muab lwm yam kev pab.

Kev tsim thiab kev siv ntawm Kev Txhim Kho raug them rau hauv ib feem los ntawm tsoomfwv Meskas thiab yog vim li ntawd nyob rau hauv cov pej xeem sau. Txawm li cas los tus sau thiab NIST xav tau credit yog qhov kev zov me nyuam thiab cov ntaub ntawv los yog ib feem ntawm lawv raug siv.