Skip to main content

Mengharapkan Arahan dan Contoh Perintah Linux / Unix

How to Install PuTTY on Windows + SSH Connections Using PuTTY on Windows (April 2025)

How to Install PuTTY on Windows + SSH Connections Using PuTTY on Windows (April 2025)
Anonim

Jangkakan adalah program yang bercakap dengan program interaktif lain mengikut skrip. Mengikuti skrip, Jangkakan tahu apa yang boleh dijangkakan dari program dan apakah tindak balas yang sepatutnya. Bahasa ditafsirkan menyediakan struktur kawalan cawangan dan peringkat tinggi untuk mengarahkan dialog. Di samping itu, pengguna boleh mengawal dan berinteraksi secara langsung apabila dikehendaki, selepas itu mengembalikan kawalan ke skrip.

Expectk adalah campuran Harapan dan Tk. Ia bertindak seperti jangkaan Harapan dan Tk. Jangkakan juga boleh digunakan secara langsung dalam C atau C ++ tanpa Tcl.

Nama "Harapkan" berasal dari idea menghantar / mengharapkan urutan yang dipopulerkan oleh uucp, kermit dan program kawalan modem lain. Bagaimanapun tidak seperti uucp, Harapan adalah umum sehingga dapat dijalankan sebagai perintah tingkat pengguna dengan program dan tugas apa pun dalam fikiran. Jangkakan boleh bercakap dengan beberapa program pada masa yang sama.

Apa yang Harapkan

Sebagai contoh, berikut adalah beberapa perkara yang boleh dijangkakan:

  • Punca komputer anda untuk menghubungi anda semula, supaya anda boleh log masuk tanpa membayar panggilan.
  • Mulakan permainan dan jika konfigurasi optimum tidak muncul, mulakannya semula dan ulang sekali lagi) sehingga ia selesai, dan kemudian serahkan kawalan kepada anda.
  • Jalankan fsck, dan sebagai tindak balas kepada soalan-soalannya, jawab "ya" atau "tidak" atau berikan kawalan kembali kepada anda, berdasarkan kriteria yang telah ditetapkan.
  • Sambung ke rangkaian lain dan dapatkan semula mel anda secara automatik supaya ia muncul seolah-olah ia pada asalnya dihantar ke sistem tempatan anda.
  • Menjalankan pembolehubah persekitaran, direktori semasa, atau apa-apa jenis maklumat merentas rlogin, telnet, tip, su, atau chgrp

Terdapat pelbagai alasan kenapa shell tidak dapat melaksanakan tugas ini. Segala-galanya boleh dilakukan dengan Harapan.

Secara umum, Harapan berguna untuk menjalankan sebarang program yang memerlukan interaksi antara program dan pengguna. Apa yang perlu ialah interaksi boleh ditonjolkan secara programatik. Jangkakan juga boleh memberikan kawalan balik kepada pengguna tanpa menghentikan program yang dikendalikan. Begitu juga, pengguna boleh mengembalikan kawalan ke skrip pada bila-bila masa.

Penggunaan

Jangkakan membaca cmdfile untuk senarai arahan untuk dilaksanakan. Jangkakan boleh digunakan secara implisit pada sistem yang menyokong #! notasi dengan menandakan skrip sebagai boleh laku dan membuat baris pertama dalam skrip:

#! / usr / local / bin / expect -f

Sudah tentu, jalan mesti menerangkan dengan tepat di mana Harapan kehidupan. / usr / local / bin hanyalah satu contoh.

Bendera -c prefaces perintah yang akan dilaksanakan sebelum ada dalam skrip. Perintah tersebut hendaklah dipetik untuk mengelakkan dipecahkan oleh shell. Pilihan ini boleh digunakan beberapa kali. Perintah berbilang boleh dijalankan dengan satu -c dengan memisahkannya dengan titik koma. Perintah dilaksanakan mengikut perintah yang dipaparkan. Apabila menggunakan Expectk, pilihan ini dinyatakan sebagai-arahan.

Bendera -d membolehkan beberapa output diagnostik, yang terutama melaporkan aktiviti dalaman arahan seperti mengharapkan dan berinteraksi. Bendera ini mempunyai kesan yang sama seperti "exp_internal 1" pada permulaan skrip Harapan, ditambah versi Harapan dicetak.

Bendera -D membolehkan debugger interaktif. Nilai integer mesti diikuti. Debugger akan mengambil alih sebelum prosedur Tcl berikutnya jika nilai tidak sifar atau jika a ^ C ditekan atau titik putus dipukul, atau perintah debugger yang lain muncul dalam skrip. Apabila menggunakan Expectk, pilihan ini ditentukan sebagai -Debug.

Bendera -f memaparkan fail dari mana untuk membaca arahan. Bendera itu sendiri adalah pilihan kerana ia hanya berguna apabila menggunakan #! notasi, supaya hujah lain boleh dibekalkan pada baris arahan. Apabila menggunakan Expectk, opsyen ini ditentukan sebagai fail -file.

Secara lalai, fail arahan dibaca ke dalam memori dan dilaksanakan secara keseluruhannya. Ia kadang-kadang wajar untuk membaca fail satu baris pada satu masa. Untuk memaksa fail sewenang-wenangnya ditangani dengan cara ini, gunakan bendera -b. Apabila menggunakan Expectk, pilihan ini ditentukan sebagai -buffer.

Jika rentetan "-" dibekalkan sebagai nama fail, input standard dibaca sebaliknya. Gunakan "./-" untuk membaca dari fail yang sebenarnya dinamakan "-".

The -i flag menyebabkan Expect to interactively prompt for commands instead of reading them from file. Prompting ditamatkan melalui perintah keluar atau EOF. Bendera -i diandaikan jika tiada fail arahan dan -c digunakan. Apabila menggunakan Expectk, opsyen ini ditentukan sebagai -interaktif.

- boleh digunakan untuk membataskan pilihan. Ini berguna jika anda ingin lulus hujah pilihan seperti skrip anda tanpa ia ditafsirkan oleh Harapan. Ini berguna untuk diletakkan di #! garis untuk mengelakkan tafsiran seperti bendera oleh Harapan. Sebagai contoh, yang berikut akan meninggalkan hujah asal termasuk nama skrip dalam pembolehubah argv .

#! / usr / local / bin / expect -

Perhatikan bahawa getopt biasa (3) dan melaksanakan (2) konvensyen mesti diperhatikan apabila menambah argumen kepada #! talian.

Fail $ exp_library / expect.rc diperoleh secara automatik jika ada, melainkan bendera -N digunakan. (Apabila menggunakan Expectk, opsyen ini ditentukan sebagai -NORC.) Segera selepas ini, fail ~ / .expect.rc akan diperoleh secara automatik, kecuali bendera -n digunakan. Sekiranya pembolehubah persekitaran DOTDIR ditakrifkan, ia dianggap sebagai direktori dan .expect.rc dibaca dari sana. Apabila menggunakan Expectk, opsyen ini ditentukan sebagai -norc.Suntikan ini berlaku hanya selepas melaksanakan sebarang bendera -c.

-v menyebabkan Berharap untuk mencetak nombor versi dan keluar. Bendera yang sama di Expectk, yang menggunakan nama bendera panjang, adalah -versi.

Arg argumen dibina ke dalam senarai dan disimpan dalam pembolehubah bernama argv dan. argc diasaskan kepada panjang argv.

Argv0 ditakrifkan sebagai nama skrip atau binary jika skrip tidak digunakan. Sebagai contoh, berikut mencetak nama skrip dan tiga argumen pertama:

send_user "$ argv0 lrange $ argv 0 2 n"

Perintah

Jangkakan menggunakan Bahasa Peranti Alat. Tcl menyediakan aliran kawalan (jika, untuk, pecah), penilaian ungkapan dan beberapa ciri lain seperti definisi rekursi dan prosedur. Perintah yang digunakan di sini tetapi tidak ditakrifkan (set, jika, exec) adalah perintah Tcl. Jangkakan menyokong perintah tambahan. Kecuali dinyatakan sebaliknya, arahan mengembalikan tali kosong.

Perintah disenaraikan mengikut abjad supaya mereka dapat dengan cepat ditempatkan. Walau bagaimanapun, pengguna baru mungkin lebih mudah untuk memulakan dengan membaca deskripsi bertelur, menghantar, mengharapkan, dan berinteraksi, dalam perintah itu.

tutup -slave -onexec 0 | 1 -i spawn_id

menutup sambungan ke proses semasa. Kebanyakan program interaktif akan mengesan EOF pada stdin dan keluar mereka; Oleh itu dekat biasanya cukup untuk membunuh proses itu juga. Bendera -i mengisytiharkan proses untuk menutup sepadan dengan bernama spawn_id.

Kedua-duanya mengharapkan dan berinteraksi akan mengesan apabila proses semasa keluar dan secara tersirat melakukan penutupan, tetapi jika anda membunuh proses tersebut, katakan, "exec kill $ pid", anda perlu secara jelas menghubungi rapat.

Bendera-satuxec menentukan sama ada idjel tertutup dalam mana-mana proses yang baru ditanam atau jika prosesnya dilapisi. Untuk meninggalkan id bertelur terbuka, gunakan nilai 0. Nilai integer bukan sifar memaksa spawn ditutup dalam sebarang proses baru.

Bendera-bendera menutup hamba yang dikaitkan dengan id bertelur. Apabila sambungan ditutup, hamba ditutup secara automatik juga jika ia masih terbuka.

Tidak kira sama ada sambungan ditutup secara tersurat atau secara eksplisit, anda perlu menelefon menunggu untuk membersihkan slot proses kernel yang sepadan. Perintah tutup tidak memanggil menunggu kerana tidak ada jaminan bahawa menutup sambungan proses akan menyebabkannya keluar.

debug -now 0 | 1

mengawal debugger Tcl yang membolehkan anda melangkah melalui penyataan dan menetapkan titik putus.

Dengan tiada hujah, 1 dikembalikan jika debugger tidak berjalan, jika tidak 0 dikembalikan.

Dengan argumen 1, debugger dimulakan. Dengan argumen 0, debugger dihentikan. Sekiranya hujah 1 didahului oleh bendera baru, debugger dimulakan dengan segera. Jika tidak, debugger bermula dengan pernyataan Tcl yang seterusnya.

Perintah debug tidak mengubah sebarang perangkap. Bandingkan ini untuk bermula Mengharapkan dengan bendera -D.

Perintah cabut memutuskan sambungan proses bercabang dari terminal. Ia terus berjalan di latar belakang. Proses ini diberikan kepada kumpulan prosesnya sendiri. Standard I / O diarahkan ke / dev / null.

Fragmen berikut menggunakan putus sambungan untuk terus menjalankan skrip di latar belakang.

jika {fork! = 0} keluar putus hubungan. . .

Skrip berikut membaca kata laluan dan kemudian menjalankan program setiap jam yang menuntut kata laluan setiap kali ia dijalankan. Skrip membekalkan kata laluan supaya anda hanya perlu menaipnya sekali.

send_user "kata laluan?" expect_user -re "(. *) n" untuk {} 1 {} {if { 1, rentetan) r ". . . keluar}

Satu kelebihan untuk menggunakan putus sambungan ke atas ciri proses tak segerak shell (&) ialah Jangkaan dapat menjimatkan parameter terminal sebelum pemotongan dan kemudian kemudian menerapkannya ke pustaka baru. Dengan &, Jangka tidak mempunyai peluang untuk membaca parameter terminal kerana terminal telah terputus oleh masa yang Diharapkan menerima kawalan.

keluar -opsi status

menyebabkan jangkaan untuk keluar atau sebaliknya bersedia untuk berbuat demikian.

The -onexit bendera menyebabkan hujah seterusnya digunakan sebagai pengendali keluar. Tanpa hujah, pengendali keluar semasa dikembalikan.

The -mengecek punca bendera Menjangkakan untuk mempersiapkan diri keluar tetapi berhenti daripada mengembalikan kawalan sebenar ke sistem operasi. Pengendali keluar yang ditetapkan pengguna dijalankan dan juga pengendali dalaman yang Diharapkan. Tidak lagi Mengharapkan arahan harus dilaksanakan. Ini berguna jika anda menjalankan Mengharapkan dengan sambungan Tcl yang lain. Jurubahasa semasa (dan tetingkap utama jika dalam persekitaran Tk) kekal supaya sambungan Tcl yang lain dapat dibersihkan. Sekiranya Diharapkan keluar dipanggil sekali lagi (namun ini mungkin terjadi), pengendali tidak akan kembali.

Apabila keluar, semua sambungan ke proses melahirkan ditutup. Penutupan akan dikesan sebagai EOF dengan menghasilkan proses. keluar tidak mengambil tindakan lain melampaui prosedur _exit (2) biasa. Oleh itu, proses pengeluaran yang tidak memeriksa EOF mungkin terus dijalankan. (Pelbagai syarat adalah penting untuk menentukan, sebagai contoh, apa isyarat yang dihasilkan akan dihantar, tetapi ini bergantung kepada sistem, biasanya didokumenkan di bawah exit (3).) Proses melahirkan yang terus berjalan akan diwarisi oleh init.

status (atau 0 jika tidak dinyatakan) dikembalikan sebagai status keluar dari Menjangkakan . keluar secara tersirat dilaksanakan jika akhir skrip dicapai.

exp_continue -continue_timer

Perintah itu exp_continue membolehkan menjangkakan sendiri untuk terus melaksanakan dan bukannya kembali seperti biasanya. Secara lalai exp_continue menetapkan semula pemasa habis masa. The -continue_timer bendera menghalang pemasa daripada dimulakan semula. (Lihat menjangkakan untuk maklumat lanjut.)

nilai exp_internal -f file

menyebabkan arahan selanjutnya untuk menghantar maklumat diagnostik dalaman kepada Menjangkakan untuk stderr jika nilai adalah tidak sifar. Output ini dinyahdayakan jika nilai adalah 0. Maklumat diagnostik termasuk setiap watak yang diterima, dan setiap percubaan dibuat untuk menyesuaikan output semasa terhadap corak.

Jika pilihan fail dibekalkan, semua output normal dan debug ditulis kepada fail tersebut (tanpa mengira nilai nilai ). Sebarang fail output diagnostik terdahulu ditutup.

The -info bendera menyebabkan exp_internal untuk mengembalikan keterangan hujah bukan maklumat terbaru yang diberikan.

exp_open args -i spawn_id

mengembalikan pengenal fail Tcl yang sepadan dengan idjaan asal yang asal. Pengenal fail kemudian boleh digunakan seolah-olah ia dibuka oleh Tcl buka perintah. (Spawn id tidak boleh digunakan lagi) tunggu tidak boleh dilaksanakan.

The -lawat bendera meninggalkan id bertelur terbuka untuk akses melalui Harapan arahan. A tunggu mesti dilaksanakan pada id bertelur.

exp_pid -i spawn_id

mengembalikan proses id sepadan dengan proses yang sedang ditanam. Sekiranya -i bendera digunakan, pid yang kembali sepadan dengan id bertelur yang diberikan.

exp_send

adalah alias untuk hantar .

exp_send_error

adalah alias untuk send_error .

exp_send_log

adalah alias untuk send_log .

exp_send_tty

adalah alias untuk send_tty .

exp_send_user

adalah alias untuk send_user .

exp_version -exit version

berguna untuk meyakinkan bahawa skrip itu bersesuaian dengan versi yang Diharapkan.

Dengan tiada hujah, versi semasa Menjangkakan dikembalikan. Versi ini kemudian boleh dikodkan dalam skrip anda. Jika anda benar-benar tahu bahawa anda tidak menggunakan ciri versi terkini, anda boleh menentukan versi terdahulu.

Versi terdiri daripada tiga nombor yang dipisahkan oleh titik. Pertama adalah nombor utama. Skrip yang ditulis untuk versi Menjangkakan dengan nombor utama yang berbeza hampir pasti tidak berfungsi. exp_version mengembalikan kesilapan jika angka utama tidak cocok.

Kedua adalah nombor kecil. Skrip yang ditulis untuk versi yang mempunyai bilangan kecil yang lebih kecil daripada versi semasa mungkin bergantung kepada beberapa ciri baru dan mungkin tidak dijalankan. exp_version mengembalikan kesilapan jika angka utama cocok, tetapi jumlah naskah kecil lebih besar dari yang berjalan Menjangkakan .

Ketiga ialah nombor yang tidak memainkan peranan dalam perbandingan versi. Walau bagaimanapun, ia bertambah apabila Menjangkakan pengedaran perisian diubah dengan cara apapun, seperti dengan dokumentasi tambahan atau pengoptimuman. Ia ditetapkan semula kepada 0 pada setiap versi kecil baru.

Dengan -exit bendera, Menjangkakan mencetak ralat dan keluar jika versi telah lapuk.

jangkakan -opts pat1 body1 … -opts patn bodyn

menunggu sehingga salah satu corak sepadan dengan keluaran proses melahirkan, tempoh masa tertentu telah berlalu, atau fail akhir dilihat. Sekiranya badan terakhir kosong, ia boleh ditinggalkan.

Corak dari yang paling baru-baru ini expect_before arahan secara tersirat digunakan sebelum sebarang pola lain. Corak dari yang paling baru-baru ini expect_after arahan secara tersirat digunakan selepas sebarang pola lain.

Jika hujah keseluruhannya menjangkakan pernyataan memerlukan lebih daripada satu baris, semua hujah boleh "disandarkan" menjadi satu untuk mengelakkan mengakhiri setiap baris dengan backslash. Dalam satu kes ini, penggantian Tcl biasa akan berlaku walaupun penyokong gigi.

Jika corak adalah kata kunci eof , badan yang bersesuaian dilaksanakan pada akhir fail. Jika corak adalah kata kunci masa tamat , badan yang bersamaan dilaksanakan pada waktu tamat. Sekiranya tiada kata kunci masa tamat digunakan, tindakan null implisit dilaksanakan pada waktu tamat. Tempoh tamat lalai adalah 10 saat tetapi mungkin ditetapkan, sebagai contoh kepada 30, dengan arahan "menetapkan masa tunggu 30". Masa tamat tak terhingga boleh ditetapkan oleh nilai -1. Jika corak adalah kata kunci lalai , badan yang sama dilaksanakan pada waktu tamat atau akhir fail.

Sekiranya corak sepadan, maka badan yang sama akan dilaksanakan. menjangkakan mengembalikan hasil tubuh (atau rentetan kosong jika tidak ada corak yang cocok). Sekiranya beberapa pola sepadan, yang pertama muncul digunakan untuk memilih badan.

Setiap kali output baru tiba, ia dibandingkan dengan setiap corak dalam susunan yang disenaraikan. Oleh itu, anda boleh menguji ketiadaan perlawanan dengan membuat corak terakhir sesuatu yang dijamin muncul, seperti pantas. Dalam keadaan di mana tidak ada tindakan segera, anda mesti menggunakannya masa tamat (seperti yang anda lakukan jika anda berinteraksi secara manual).

Corak dinyatakan dalam tiga cara. Secara lalai, pola ditentukan dengan Tcl perlawanan rentetan perintah. (Corak sedemikian juga sama dengan ekspresi biasa C-shell yang biasanya dirujuk sebagai corak "glob"). The -gl bendera mungkin boleh digunakan untuk melindungi corak yang sepadan dengannya menjangkakan bendera dari berbuat demikian. Sebarang corak yang bermula dengan "-" harus dilindungi dengan cara ini. (Semua rentetan bermula dengan "-" dikhaskan untuk pilihan masa hadapan.)

Sebagai contoh, serpihan berikut mencari log masuk yang berjaya. (Perhatikan bahawa abort dianggap sebagai prosedur yang ditakrifkan di tempat lain dalam skrip.)

mengharapkan {sibuk {meletakkan sibuk n; exp_continue} gagal membatalkan "kata laluan tidak sah" abort timeout abort disambungkan}

Petikan adalah perlu pada corak keempat kerana ia mengandungi ruang, yang sebaliknya akan memisahkan corak dari tindakan.Corak dengan tindakan yang sama (seperti ke-3 dan ke-4) memerlukan penyenaraian semula tindakan. Ini boleh dielakkan dengan menggunakan corak gaya regexp (lihat di bawah). Maklumat lanjut tentang membentuk corak gaya glob boleh didapati dalam manual Tcl.

Corak gaya regexp mengikut sintaks yang ditakrifkan oleh Tcl regexp (pendek untuk "ungkapan biasa") perintah. corak regexp diperkenalkan dengan bendera -re . Contoh terdahulu boleh ditulis semula menggunakan regexp sebagai:

mengharapkan {sibuk {meletakkan sibuk n; exp_continue} -re "gagal | kata laluan tidak sah" abort timeout abort disambungkan}

Kedua-dua jenis corak adalah "unanchored". Ini bermakna corak tidak sepadan dengan keseluruhan rentetan, tetapi boleh memulakan dan menamatkan perlawanan di mana-mana dalam rentetan (selagi segala yang lain sepadan). Gunakan ^ untuk memadankan permulaan rentetan, dan $ untuk memadankan hujungnya. Ambil perhatian bahawa jika anda tidak menunggu akhir rentetan, respons anda dapat dengan mudah berakhir di tengah tali kerana mereka bergema dari proses yang dihasilkan. Walaupun masih menghasilkan keputusan yang betul, output boleh kelihatan tidak wajar. Oleh itu, penggunaan $ digalakkan jika anda betul-betul dapat menggambarkan watak-watak pada akhir rentetan.

Perhatikan bahawa dalam banyak editor, ^ dan $ sepadan dengan permulaan dan akhir baris masing-masing. Walau bagaimanapun, kerana jangkaan tidak berorientasikan garis, watak-watak ini sepadan dengan permulaan dan akhir data (berbanding dengan baris) pada masa ini dalam penampan sepadan yang diharapkan. (Juga, lihat nota di bawah pada "masalah pencernaan sistem.")

The -ex bendera menyebabkan corak itu dipadankan sebagai rentetan "tepat". Tiada tafsiran *, ^, dan sebagainya dibuat (walaupun konvensyen Tcl biasa masih harus diperhatikan). Corak yang tepat sentiasa tidak disahkan.

The -nocase bendera menyebabkan aksara besar dari output untuk membandingkan seolah-olah mereka huruf kecil. Corak tidak terjejas.

Semasa membaca output, lebih daripada 2000 bait boleh memaksa bait lebih awal untuk "dilupakan". Ini boleh diubah dengan fungsi ini match_max . (Perhatikan bahawa nilai yang berlebihan boleh melambatkan pemadanan corak.) Jika patlist adalah full_buffer , badan yang bersamaan dilaksanakan jika match_max bait telah diterima dan tiada pola lain yang dipadankan. Sama ada atau tidak full_buffer Kata kunci digunakan, watak-watak yang dilupakan dituliskan kepada expect_out (penampan).

Jika patlist adalah kata kunci null , dan nulls dibenarkan (melalui remove_nulls arahan), badan bersamaan dijalankan jika ASCII 0 tunggal dipadankan. Tidak dapat dipadankan 0 byte melalui pola glob atau regexp.

Apabila memadankan pola (atau eof atau full_buffer), output yang hampir sama dan tidak dapat ditandingi akan disimpan dalam pembolehubah expect_out (penampan) . Sehingga 9 perlawanan substring regexp disimpan dalam pembolehubah expect_out (1, string) melalui expect_out (9, string) . Sekiranya -Indeks bendera digunakan sebelum corak, indeks permulaan dan akhir (dalam bentuk yang sesuai untuk lrange ) daripada 10 rentetan disimpan dalam pembolehubah expect_out (X, mulakan) dan expect_out (X, akhir) di mana X adalah satu digit, sepadan dengan kedudukan substring dalam penampan. 0 merujuk kepada rentetan yang sepadan dengan keseluruhan corak dan dihasilkan untuk corak glob serta corak regexp. Contohnya, jika proses menghasilkan output "abcdefgh n", hasil daripada:

mengharapkan "cd"

seolah-olah pernyataan berikut telah dilaksanakan:

tetapkan expect_out (0, string) cd set expect_out (buffer) abcd

dan "efgh n" dibiarkan dalam penampan output. Jika suatu proses menghasilkan output "abbbcabkkkka n", hasil daripada:

mengharapkan -indeks -re "b (b *). * (k +)"

seolah-olah pernyataan berikut telah dilaksanakan:

set expect_out (0, bermula) set set expect_out (0, string) bbbcabkkkk set expect_out (1, mulakan) 2 set expect_out (1, mulakan) (2, mulakan) 10 set expect_out (2, akhir) 10 set expect_out (2, string) k set expect_out (buffer) abbbcabkkkk

dan "a n" dibiarkan dalam penampan output. Corak "*" (dan -re ". *") Akan mengepam penimbal output tanpa membaca lebih banyak output daripada proses.

Biasanya, output yang dipadankan dibuang dari buffer dalaman Harapan. Ini boleh dihalang dengan menggunakan pola dengan -notransfer bendera. Bendera ini amat berguna dalam eksperimen (dan boleh disingkat ke "-not" untuk kemudahan semasa bereksperimen).

The spawn id yang berkaitan dengan output yang sepadan (atau eof atau full_buffer) disimpan dalam expect_out (spawn_id) .

The -masa tamat bendera menyebabkan arahan jangkaan semasa untuk menggunakan nilai berikut sebagai tamat masa dan bukan menggunakan nilai pembolehubah masa tamat.

Secara lalai, pola dipadankan dengan keluaran dari proses semasa, namun -i bendera mengisytiharkan output dari senarai bernama spawn_id dipadankan dengan mana-mana corak berikut (hingga seterusnya -i ). Senarai spawn_id mestilah menjadi ruang spasi yang berasingan dipisahkan daripada spawn_ids atau pembolehubah yang merujuk kepada senarai spawn_id semacam itu.

Sebagai contoh, contoh berikut menunggu "disambungkan" dari proses semasa, atau "sibuk", "gagal" atau "kata laluan tidak sah" dari spawn_id yang dinamakan oleh $ proc2.

menjangka {-i $ proc2 sibuk {meletakkan sibuk n; exp_continue} -re "gagal | kata laluan tidak sah" abort timeout abort disambungkan}

Nilai pembolehubah global any_spawn_id boleh digunakan untuk memadankan pola kepada mana-mana spawn_ids yang dinamakan dengan semua yang lain -i bendera semasa menjangkakan perintah. The spawn_id dari a -i bendera tanpa corak yang berkaitan (iaitu, diikuti serta-merta oleh yang lain -i ) disediakan kepada mana-mana corak lain dalam perkara yang sama menjangkakan arahan yang berkaitan dengan any_spawn_id.

The -i bendera juga boleh menamakan pemboleh ubah global di mana pembolehubah dibaca untuk senarai ungu bertelur. Pembolehubah dibaca semula apabila ia berubah. Ini memberikan satu cara untuk menukar sumber I / O sementara arahan sedang dilaksanakan. Ion ular yang disediakan dengan cara ini dinamakan id yang tidak langsung.

Tindakan seperti pecah dan teruskan menyebabkan struktur kawalan (iaitu, untuk , proc ) untuk berkelakuan dengan cara biasa. Perintah itu exp_continue membolehkan menjangkakan sendiri untuk terus melaksanakan dan bukannya kembali seperti biasanya.

Ini berguna untuk mengelakkan gelung yang jelas atau mengulangi kenyataan yang diharapkan. Contoh berikut adalah sebahagian daripada fragmen untuk mengautomasikan rlogin. The exp_continue mengelakkan diri daripada menulis sesaat menjangkakan pernyataan (untuk mencari semula sekali lagi) jika rlogin meminta kata laluan.

mengharapkan {password: {stty -echo send_user "kata laluan (untuk $ pengguna) di $ host:" expect_user -re "(. *) n" send_user " n" send "$ expect_out (1, string) echo exp_continue} tidak sah {send_user "kata laluan tidak sah atau akaun n" exit} sambungan jangka masa {send_user "kepada tuan rumah $ habis masa n" keluar} sambungan eo {send_user "ke hos gagal: $ expect_out (penampan) re $ prompt}

Sebagai contoh, serpihan berikut mungkin membantu pengguna membimbing interaksi yang sudah benar-benar automatik. Dalam kes ini, terminal dimasukkan ke dalam mod mentah. Sekiranya pengguna menekan "+", pembolehubah dilanjutkan. Jika "p" ditekan, beberapa pulangan dihantar ke proses, mungkin untuk mencubit dalam beberapa cara, dan "i" membolehkan pengguna berinteraksi dengan proses, dengan berkesan mencuri kawalan dari skrip. Dalam setiap kes, exp_continue membenarkan semasa menjangkakan untuk meneruskan pencocokan corak selepas melaksanakan tindakan semasa.

stty mentah -echo expect_after {-i $ user_spawn_id "p" {send " r r r"; exp_continue} "+" {incr foo; exp_continue} "i" {berinteraksi; exp_continue} "berhenti" keluar}

Secara lalai, exp_continue menetapkan semula pemasa habis masa. Pemasa tidak dimulakan semula, jika exp_continue dipanggil dengan -continue_timer bendera.

expect_after expect_args

berfungsi sama dengan expect_before kecuali jika corak dari kedua-duanya menjangkakan dan expect_after boleh dipadankan, yang menjangkakan corak digunakan. Lihat expect_before arahan untuk maklumat lanjut.

expect_background expect_args

mengambil hujah yang sama sepertimenjangkakan , namun ia kembali dengan segera. Corak diuji setiap kali input baru tiba. Corak itumasa tamat danlalai tidak bermaknaexpect_background dan dibuang dengan senyap. Jika tidak, yangexpect_background penggunaan perintahexpect_before danexpect_after corak sepertimenjangkakan tidak.

Bilaexpect_background tindakan sedang dinilai, pemprosesan latar belakang untuk id bertelur yang sama disekat. Pemprosesan latar belakang disekat apabila tindakan selesai. Walaupun pemprosesan latar belakang disekat, adalah mungkin untuk melakukan (latar depan)menjangkakan pada id bertelur yang sama.

Tidak mungkin untuk melaksanakan sesuatumenjangkakan sementara satuexpect_background dibuka sekatan.expect_background untuk id tajam tertentu dipadamkan dengan mengisytiharkan expect_background baru dengan id bertelur yang sama. Mengisytiharkanexpect_background dengan corak tidak mengeluarkan idan ubat yang diberikan dari kemampuan untuk memadankan corak di latar belakang.

expect_before expect_args

mengambil hujah yang sama sepertimenjangkakan , namun ia kembali dengan segera. Pasangan corak tindakan dari yang paling baru-baru iniexpect_before dengan id tajuk yang sama secara tersirat ditambahkan kepada mana-mana yang berikutmenjangkakan arahan. Sekiranya corak sepadan, ia diperlakukan seolah-olah ia telah ditentukan di dalammenjangkakan arahan itu sendiri, dan badan yang berkaitan dilaksanakan dalam konteksmenjangkakan perintah. Jika corak dari kedua-duanyaexpect_before danmenjangkakan boleh dipadankan, yangexpect_before corak digunakan.

Sekiranya tiada corak ditentukan, id bertelur tidak diperiksa untuk sebarang corak.

Kecuali ditahan oleh a-i bendera,expect_before corak perlawanan terhadap id bertelur ditakrifkan pada masa ituexpect_before arahan dilaksanakan (bukan apabila coraknya dipadankan).

Bendera -info menyebabkanexpect_before untuk mengembalikan spesifikasi semasa pola apa yang akan dipadankan. Secara lalai, ia melaporkan id bertelur semasa. Spesifikasi id bertelur pilihan boleh diberikan untuk maklumat mengenai id bertelur itu. Sebagai contoh

expect_before -info -i $ proc

Paling banyaknya satu spesifikasi spawn id dapat diberikan. Secara langsung, bendera itu menafikan id ula langsung yang hanya datang dari spesifikasi tidak langsung.

Daripada spesifikasi id bertelur, bendera "-all" akan menyebabkan "-info" melaporkan pada semua ungu bertelur.

Output bendera -info boleh digunakan semula sebagai hujah yang diharapkan_before.

expect_tty expect_args

adalah sepertimenjangkakan tetapi ia membaca aksara dari / dev / tty (iaitu ketukan kekunci dari pengguna). Secara lalai, bacaan dilakukan dalam mod yang dimasak. Oleh itu, garisan mesti berakhir dengan pemulangan dalam rangka untukmenjangkakan untuk melihat mereka. Ini boleh diubah melaluistty (lihatstty arahan di bawah).

expect_user expect_args

adalah sepertimenjangkakan tetapi ia membaca aksara dari stdin (iaitu ketukan kekunci dari pengguna). Secara lalai, bacaan dilakukan dalam mod yang dimasak. Oleh itu, garisan mesti berakhir dengan pemulangan dalam rangka untukmenjangkakan untuk melihat mereka.Ini boleh diubah melaluistty (lihatstty arahan di bawah).

garpu

mewujudkan satu proses baru. Proses baru adalah salinan sebenar semasaMenjangkakan proses. Pada kejayaan,garpu mengembalikan 0 ke proses baru (anak) dan mengembalikan ID proses proses anak ke proses induk. Mengenai kegagalan (selalu disebabkan kekurangan sumber, mis., Ruang swap, ingatan),garpu mengembalikan -1 ke proses induk, dan tiada proses kanak-kanak dibuat.

Proses pemisahan keluar melaluikeluar arahan, sama seperti proses asal. Proses yang dipecahkan dibenarkan untuk menulis ke fail log. Jika anda tidak melumpuhkan penyahpepijatan atau pembalakan dalam kebanyakan proses, hasilnya dapat mengelirukan.

Sesetengah pelaksanaan pty mungkin dikelirukan oleh berbilang pembaca dan penulis, walaupun seketika. Oleh itu, ia adalah yang paling selamatgarpu sebelum proses pemijahan.

berinteraksi string1 body1 … stringn bodyn

memberikan kawalan proses semasa kepada pengguna, supaya ketukan kekunci dihantar ke proses semasa, dan stdout dan stderr proses semasa dikembalikan.

Pasangan rentetan badan boleh ditentukan sebagai argumen, di mana badan dijalankan apabila rentetan yang sama dimasukkan. (Secara lalai, rentetan tidak dihantar ke proses semasa.)penterjemah arahan diandaikan, jika badan terakhir hilang.

Jika hujah keseluruhannyaberinteraksi pernyataan memerlukan lebih daripada satu baris, semua hujah boleh "disandarkan" menjadi satu untuk mengelakkan mengakhiri setiap baris dengan backslash. Dalam satu kes ini, penggantian Tcl biasa akan berlaku walaupun penyokong gigi.

Sebagai contoh, arahan berikut berjalan berinteraksi dengan pasangan rentetan badan berikut yang ditakrifkan: Apabila ^ Z ditekan,Menjangkakan digantung. (The-reset bendera mengembalikan mod terminal.) Apabila ^ A ditekan, pengguna melihat "anda menaip kawalan-A" dan proses dihantar ^ A. Apabila $ ditekan, pengguna melihat tarikhnya. Apabila ^ C ditekan,Menjangkakan keluar. Jika "foo" dimasukkan, pengguna melihat "bar". Apabila ~ ~ ditekan, yangMenjangkakan penterjemah berjalan secara interaktif.

tetapkan CTRLZ 032 berinteraksi {-reset $ CTRLZ {exec kill -STOP pid} 001 {send_user "anda menaip kawalan-A n"; hantar " 001"} $ {send_user "Tarikh itu format jam jam saat."} 003 exit foo {send_user "bar"} ~~}

Dalam pasangan rentetan badan, rentetan dipadankan dengan urutan yang disenaraikan sebagai argumen. Strings yang sepadan dengan sepadan tidak dihantar ke proses semasa dengan menjangka selebihnya akan datang. Jika watak-watak kemudian dimasuki supaya tidak lagi mungkin perlawanan, hanya bahagian rentetan akan dihantar ke proses yang mungkin tidak dapat memulakan satu lagi perlawanan. Oleh itu, rentetan yang substrings perlawanan separa boleh dipadankan kemudian, jika rentetan asal yang cuba dipadankan akhirnya gagal.

Secara lalai, padanan rentetan adalah tepat tanpa kad liar. (Sebaliknya,menjangkakan arahan menggunakan corak gaya glob secara lalai.)-ex bendera boleh digunakan untuk melindungi corak yang mungkin sepadan dengannyaberinteraksi bendera dari berbuat demikian. Sebarang corak yang bermula dengan "-" harus dilindungi dengan cara ini. (Semua rentetan bermula dengan "-" dikhaskan untuk pilihan masa hadapan.)

The-re bendera memaksa rentetan itu ditafsirkan sebagai corak gaya regexp. Dalam kes ini, subzip yang sepadan disimpan dalam pembolehubah interact_out sama dengan caramenjangkakan menyimpan outputnya dalam pembolehubahexpect_out . The-Indeks bendera disokong juga.

Corak itueof memperkenalkan tindakan yang dilaksanakan pada akhir fail. Satu berasinganeof corak juga boleh mengikuti-pengeluaran bendera yang mana ia dipadankan jika eof dikesan semasa menulis output. Lalaieof tindakan adalah "kembali", supaya ituberinteraksi hanya kembali kepada mana-mana EOF.

Corak itumasa tamat memperkenalkan tamat tempoh (dalam saat) dan tindakan yang dilaksanakan selepas tiada aksara telah dibaca untuk masa yang diberikan. Themasa tamat corak terpakai kepada proses yang paling baru-baru ini. Tiada masa tamat lalai. Pembolehubah khas "tamat masa" (digunakan olehmenjangkakan arahan) tidak menjejaskan masa tamat ini.

Sebagai contoh, pernyataan berikut boleh digunakan untuk pengguna autologout yang tidak menaip apa-apa selama satu jam tetapi yang masih menerima mesej sistem kerap:

berinteraksi -input $ user_spawn_id timeout 3600 return -output $ spawn_id

Jika coraknya adalah kata kuncinull , dan nulls dibenarkan (melaluiremove_nulls arahan), badan bersamaan dijalankan jika ASCII 0 tunggal dipadankan. Tidak dapat dipadankan 0 byte melalui pola glob atau regexp.

Membuat corak dengan bendera-saya tulis menyebabkan pembolehubah interact_out (spawn_id) untuk ditetapkan kepada spawn_id yang sepadan dengan pola (atau eof).

Tindakan sepertipecah danteruskan menyebabkan struktur kawalan (iaitu,untuk , proc ) untuk berkelakuan dengan cara biasa. Walau bagaimanapunkembali menyebabkan berinteraksi untuk kembali kepada pemanggilnya, sementarainter_return sebabberinteraksi untuk menyebabkan pemulangan dalam pemanggilnya. Sebagai contoh, jika "proc foo" dipanggilberinteraksi yang kemudiannya melaksanakan tindakan ituinter_return , proc foo akan kembali. (Ini bermakna jikaberinteraksi panggilanpenterjemah menaip secara interaktifkembali akan menyebabkan interaksi diteruskan, sementarainter_return akan menyebabkan berinteraksi untuk kembali kepada pemanggilnya.)

Semasaberinteraksi , mod mentah digunakan supaya semua aksara dapat disampaikan kepada proses semasa.Jika proses semasa tidak menangkap isyarat kawalan kerja, ia akan berhenti jika menghantar isyarat berhenti (secara lalai ^ Z). Untuk memulakannya semula, hantar isyarat terus (seperti dengan "kill -CONT"). Sekiranya anda benar-benar mahu menghantar SIGSTOP ke proses tersebut (oleh ^ Z), pertimbangkan cawangan pemula pertama dan kemudian menjalankan program anda. Sebaliknya, jika anda mahu menghantar SIGSTOP keMenjangkakan sendiri, juru panggilan pertama (mungkin dengan menggunakan aksara melarikan diri), dan kemudian tekan ^ Z.

Pasangan rentetan badan boleh digunakan sebagai singkatan untuk mengelakkan diri daripada memasuki penterjemah dan melaksanakan perintah secara interaktif. Mod terminal sebelumnya digunakan semasa badan pasangan rentetan badan sedang dijalankan.

Untuk kelajuan, tindakan dilaksanakan dalam mod mentah secara lalai. The-reset bendera mengeset terminal ke mod yang dimiliki sebelumnyaberinteraksi telah dilaksanakan (biasa, mod dimasak). Ambil perhatian bahawa aksara yang dimasukkan apabila mod sedang dihidupkan mungkin hilang (ciri malang bagi pemandu terminal pada sesetengah sistem). Satu-satunya sebab untuk digunakan-reset adalah jika tindakan anda bergantung kepada berjalan dalam mod yang dimasak.

The-echo bendera menghantar aksara yang sepadan dengan pola berikut kembali kepada proses yang menghasilkannya kerana setiap watak dibaca. Ini mungkin berguna apabila pengguna perlu melihat maklum balas daripada corak sebahagian yang ditaip.

Sekiranya corak sedang bergema tetapi akhirnya tidak dapat dipadankan, watak-watak dihantar ke proses melahirkan. Sekiranya proses melahirkan itu menggema mereka, pengguna akan melihat aksara dua kali.-echo mungkin hanya sesuai dalam situasi di mana pengguna tidak mungkin menyelesaikan pola tersebut. Sebagai contoh, petikan berikut adalah dari rftp, skrip rekursif-ftp, di mana pengguna diminta memasukkan ~ g, ~ p, atau ~ l, untuk mendapatkan, meletakkan, atau menyenaraikan direktori semasa secara rekursif. Ini jauh dari arahan normal ftp, bahawa pengguna tidak mungkin mengetik ~ diikuti dengan apa-apa lagi, kecuali tersilap, dalam hal ini, mereka mungkin akan mengabaikan hasilnya pula.

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

The-nobuffer bendera menghantar aksara yang sepadan dengan pola berikut ke dalam proses output apabila aksara dibaca.

Ini berguna apabila anda ingin membiarkan program menggema semula corak. Sebagai contoh, berikut mungkin digunakan untuk memantau di mana seseorang sedang mendail (modem gaya Hayes). Setiap kali "atd" dilihat skrip log selebihnya.

log masuk "{interact -nobuffer -re" (. *) r "mengembalikan log $" format jam jam saat: dipanggil $ interact_out (1, string) "} interact -nobuffer"

Semasaberinteraksi , penggunaan sebelumnyalog_user diabaikan. Secara khususnya,berinteraksi akan memaksa outputnya dilog (dihantar ke output standard) kerana dianggap pengguna tidak ingin berinteraksi secara membabi buta.

The-o bendera menyebabkan mana-mana pasangan kunci utama untuk digunakan pada keluaran proses semasa. Ini boleh berguna, contohnya, apabila berurusan dengan tuan rumah yang menghantar aksara yang tidak diingini semasa sesi telnet.

Secara lalai,berinteraksi menjangka pengguna menulis stdin dan membaca stdoutMenjangkakan proses itu sendiri. The-u bendera (untuk "pengguna") membuatberinteraksi cari pengguna sebagai proses yang dinamakan oleh hujahnya (yang mesti menjadi id yang dihasilkan).

Ini membolehkan dua proses yang tidak berkaitan untuk disatukan tanpa menggunakan gelung eksplisit. Untuk membantu penyahpepijatan, Harapkan diagnostik selalu pergi ke stderr (atau stdout untuk maklumat penebangan dan debugging tertentu). Atas sebab yang sama,penterjemah arahan akan dibaca secara interaktif daripada stdin.

Sebagai contoh, serpihan berikut mencipta proses log masuk. Kemudian ia mendail pengguna (tidak dipaparkan), dan akhirnya menghubungkan keduanya bersama-sama. Sudah tentu, sebarang proses boleh digantikan untuk login. Sebagai shell, misalnya, akan membolehkan pengguna berfungsi tanpa membekalkan akaun dan kata laluan.

login spawn set login $ spawn_id spawn tip modem # dail kembali ke user # connect user to login interact -u $ login

Untuk menghantar output ke pelbagai proses, senaraikan senarai id bertelur terlebih dahulu dengan a-pengeluaran bendera. Input bagi sekumpulan unguang keluaran keluaran mungkin ditentukan oleh senarai id bertelur yang dimulakan oleh a-put bendera. (Kedua-duanya-put dan-pengeluaran boleh mengambil senarai dalam bentuk yang sama dengan-i bendera dalammenjangkakan perintah, kecuali bahawa any_spawn_id tidak bermaknaberinteraksi .) Semua bendera dan rentetan (atau corak) berikut dikenakan pada input ini sehingga bendera lain muncul. Jika tidak-put muncul,-pengeluaran menyiratkan "-input $ user_spawn_id -output". (Begitu juga, dengan pola yang tidak ada-put .) Jika satu-put dinyatakan, ia mengatasi $ user_spawn_id. Sekiranya kedua-put dinyatakan, ia mengatasi $ spawn_id. Tambahan-put bendera mungkin ditentukan.

Kedua-dua proses input tersirat adalah lalai untuk mempunyai output yang ditentukan sebagai $ spawn_id dan $ user_spawn_id (sebaliknya). Sekiranya-put bendera muncul dengan tidak-pengeluaran bendera, aksara dari proses itu dibuang.

The-i bendera memperkenalkan pengganti untuk spawn_id saat tidak ada yang lain-put atau-pengeluaran bendera digunakan. Bendera A -i menyiratkan bendera -o.

Adalah mungkin untuk mengubah proses-proses yang sedang berinteraksi dengan menggunakan ungung tidak langsung. (Tompok engkol tidak langsung diterangkan dalam bahagian pada arahan jangkaan.) Tompok engkol tidak langsung boleh ditentukan dengan bendera -i, -u, -input, atau -output.

jurubahasa args

menyebabkan pengguna diminta secara interaktifMenjangkakan dan perintah Tcl. Hasil setiap arahan dicetak.

Tindakan sepertipecah danteruskan menyebabkan struktur kawalan (iaitu,untuk , proc ) untuk berkelakuan dengan cara biasa. Walau bagaimanapunkembali menyebabkan penterjemah kembali kepada pemanggilnya, sementarainter_return sebabpenterjemah untuk menyebabkan pemulangan dalam pemanggilnya. Sebagai contoh, jika "proc foo" dipanggilpenterjemah yang kemudiannya melaksanakan tindakan ituinter_return , proc foo akan kembali. Mana-mana arahan lain yang menyebabkanpenterjemah untuk terus mendorong arahan baru.

Secara lalai, petikan mengandungi dua bulat. Integer pertama menggambarkan kedalaman stack penilaian (iaitu, berapa kali Tcl_Eval telah dipanggil). Integer kedua ialah pengenal sejarah Tcl. Gesaan boleh ditetapkan dengan menentukan prosedur yang dipanggil "prompt1" yang nilai pulangannya menjadi petanda seterusnya. Sekiranya pernyataan mempunyai sebut harga terbuka, parens, pendakap, atau tanda kurung, perbaruan sekunder (secara lalai "+>") dikeluarkan pada baris baru. Permintaan sekunder boleh ditetapkan dengan menentukan prosedur yang dipanggil "prompt2".

Semasapenterjemah , mod yang dimasak digunakan, walaupun pemanggilnya menggunakan mod mentah.

Sekiranya stdin ditutup,penterjemah akan kembali melainkan jika-tak bendera digunakan, di mana hujah berikutnya dipanggil.

log_file args -a fail

Jika nama fail disediakan,fail log akan merakam transkrip sesi (bermula pada ketika itu) dalam fail.fail log akan berhenti merakam jika tiada hujah diberikan. Sebarang fail log terdahulu ditutup.

Daripada nama fail, pengecam fail Tcl boleh disediakan dengan menggunakan-buka atau-lawat bendera. Ini adalah sama denganbertelur perintah. (Lihatbertelur untuk maklumat lanjut.)

The-a bendera pasukan output yang akan dilogkan yang ditindas olehlog_user perintah.

Secara lalai, yangfail log perintah menambah ke fail lama dan bukannya memecah-belah mereka, kerana kemudahan dapat menghidupkan penebangan dan berbilang kali dalam satu sesi. Untuk memangkas fail, gunakan-nampak bendera.

The-info bendera menyebabkan log_file untuk mengembalikan keterangan hujah bukan maklumat terbaru yang diberikan.

log_user -info | 0 | 1

Secara lalai, dialog hantar / mengharapkan login untuk stdout (dan fail log jika dibuka). Pembalakan ke stdout dilumpuhkan oleh perintah "log_user 0" dan dibolehkan semula oleh "log_user 1". Log masuk ke fail log tidak berubah.

The-info bendera menyebabkan log_user untuk mengembalikan keterangan hujah bukan maklumat terbaru yang diberikan.

match_max -d -i spawn_id size

mentakrifkan ukuran penampan (dalam bait) yang digunakan secara dalaman olehmenjangkakan . Dengan tidak saiz hujah, saiz semasa dikembalikan.

Dengan-d bendera, saiz lalai ditetapkan. (Default adalah 2000.) Dengan-i bendera, saiz ditetapkan untuk id yang bernama bernama, jika tidak, ia ditetapkan untuk proses semasa.

overlay - # spawn_id - # spawn_id … program args

melaksanakan "program args "di tempat semasaMenjangkakan program, yang tamat. Argumen hipetan kosong menimbulkan tanda hubung di depan nama arahan seolah-olah ia merupakan shell masuk. Semua spawn_ids ditutup kecuali bagi mereka yang dinamakan sebagai argumen. Ini dipetakan ke pengenal fail bernama.

Spawn_ids dipetakan ke pengenal fail untuk program baru untuk mewarisi. Contohnya, baris berikut menjalankan catur dan membolehkannya dikawal oleh proses semasa - katakanlah, tuan catur.

overlay -0 $ spawn_id -1 $ spawn_id -2 $ spawn_id catur

Ini lebih berkesan daripada "berinteraksi -u", bagaimanapun, ia mengorbankan keupayaan untuk melakukan interaksi yang diprogramkan sejakMenjangkakan proses tidak lagi terkawal.

Perhatikan bahawa tiada terminal kawalan disediakan. Oleh itu, jika anda memutuskan sambungan atau remap input standard, program yang melakukan kawalan kerja (kerang, login, dll) tidak berfungsi dengan baik.

pariti -d -i spawn_id nilai

mentakrifkan sama ada pariti perlu dikekalkan atau dilucutkan dari keluaran proses pengeluaran. Jika nilai adalah sifar, pariti dilucutkan, jika tidak, ia tidak dilucutkan. Dengan tidak nilai hujah, nilai semasa dikembalikan.

Dengan-d bendera, nilai pariti lalai ditetapkan. (Lalai awal adalah 1, iaitu, pariti tidak dilucutkan.) Dengan-i bendera, nilai pariti ditetapkan untuk id yang bernama bernama, jika tidak, ia ditetapkan untuk proses semasa.

remove_nulls -d -i spawn_id value

mentakrifkan sama ada batal ditahan atau dikeluarkan daripada output proses yang dibuat sebelum pencocokan corak atau menyimpan dalam pembolehubah expect_out atau interact_out . Jika nilai adalah 1, batal akan dikeluarkan. Jika nilai adalah 0, null tidak dikeluarkan. Dengan tidak nilai hujah, nilai semasa dikembalikan.

Dengan-d bendera, nilai lalai ditetapkan. (Lalai awal adalah 1, iaitu, nulls dikeluarkan.) Dengan-i bendera, nilai ditetapkan untuk id yang bernama bernama, jika tidak, ia ditetapkan untuk proses semasa.

Sama ada batal atau tidak dikeluarkan,Menjangkakan akan merekodkan byte batal ke log dan stdout.

hantar rentetan -flags

Hantar tali kepada proses semasa. Sebagai contoh, arahan itu

hantar "hello world "

menghantar watak-watak, menyampaikan kepada proses semasa. (Tcl termasuk perintah printf-like (dipanggilformat ) yang boleh membina rentetan yang rumit.)

Watak dihantar dengan serta-merta walaupun program dengan input baris buffer tidak akan membaca aksara sehingga aksara kembali dihantar. Sifat pemulangan dilambangkan " r".

The-- bendera memaksa hujah seterusnya untuk ditafsirkan sebagai rentetan dan bukan bendera.Sebarang rentetan boleh didahului dengan "-" sama ada ia kelihatan seperti bendera atau tidak. Ini menyediakan mekanisme yang boleh dipercayai untuk menentukan rentetan berubah tanpa terperangkap oleh orang-orang yang kelihatan seperti bendera tidak sengaja. (Semua rentetan bermula dengan "-" dikhaskan untuk pilihan masa hadapan.)

The-i bendera mengisytiharkan bahawa rentetan dihantar ke spawn_id yang dinamakan. Sekiranya spawn_id itu adalah user_spawn_id , dan terminal itu dalam mod mentah, baris baru dalam rentetan diterjemahkan untuk mengembalikan urutan baru-baru supaya ia muncul seolah-olah terminal itu dalam mod yang dimasak. The-raw bendera melumpuhkan terjemahan ini.

The-null bendera menghantar aksara null (0 bait). Secara lalai, satu batal dihantar. Integer boleh mengikuti-null untuk menunjukkan berapa banyak batal untuk dihantar.

The-Bebas bendera menjana keadaan rehat. Ini hanya masuk akal jika id bertelur merujuk kepada peranti tty yang dibuka melalui "spawn -open". Sekiranya anda telah menghasilkan proses seperti tip, anda harus menggunakan konvensyen tip untuk menjana rehat.

The-s pasukan bendera output akan dihantar "perlahan-lahan", oleh itu elakkan keadaan biasa di mana komputer mengesan penimbal input yang direka untuk manusia yang tidak akan mengecewakan penyangga yang sama. Output ini dikawal oleh nilai pembolehubah "send_slow" yang mengambil dua senarai elemen. Elemen pertama adalah integer yang menggambarkan bilangan bait untuk dihantar secara atom. Unsur kedua adalah nombor nyata yang menggambarkan bilangan detik yang dihantar oleh atom yang mesti dipisahkan. Sebagai contoh, "set send_slow {10 .001}" akan memaksa "menghantar -s" untuk menghantar rentetan dengan 1 milisekon di antara setiap 10 aksara yang dihantar.

The-h bendera pasukan output akan dihantar (agak) seperti manusia sebenarnya menaip. Kelewatan seperti manusia muncul di antara watak-watak. (Algoritma ini berdasarkan kepada pengedaran Weibull, dengan pengubahsuaian yang sesuai dengan aplikasi tertentu.) Output ini dikawal oleh nilai pembolehubah "send_human" yang mengambil senarai lima elemen. Kedua-dua elemen pertama adalah masa perarakan rata-rata aksara dalam beberapa saat. Yang pertama digunakan secara lalai. Yang kedua digunakan pada ujung kata, untuk mensimulasikan jeda halus yang kadang-kadang terjadi pada peralihan tersebut. Parameter ketiga adalah ukuran variabiliti di mana .1 adalah agak berubah, 1 adalah pemboleh ubah yang semunasabahnya, dan 10 adalah agak invariable. Keterlaluan adalah 0 hingga infiniti. Dua parameter terakhir adalah masing-masing, waktu interarrival minimum dan maksimum. Minimum dan maksimum digunakan terakhir dan "klip" masa terakhir. Purata muktamad boleh agak berbeza dari purata yang diberikan jika klip minimum dan maksimum cukup nilai.

Sebagai contoh, arahan berikut memberi emel yang cepat dan konsisten:

set send_human {.1 .3 1 .05 2} hantar -h "Saya lapar, makan siang."

manakala yang berikut mungkin lebih sesuai selepas mabuk:

set send_human {.4 .4 .2 .5 100} kirimkan -h "Selamat malam pesta Goodd!"

Perhatikan bahawa ralat tidak disimulasikan, walaupun anda boleh menetapkan situasi pembetulan ralat sendiri dengan membenamkan kesilapan dan pembetulan dalam hujalan hantar.

Bendera untuk menghantar aksara null, untuk menghantar rehat, untuk memaksa output perlahan dan untuk output gaya manusia adalah saling eksklusif. Hanya yang dinyatakan terakhir akan digunakan. Tambahan pula, tidak tali hujah boleh ditentukan dengan bendera untuk menghantar aksara atau pecahan null.

Adalah idea yang baik untuk mendahului yang pertamahantar kepada suatu proses oleh seorangmenjangkakan. menjangkakan akan menunggu proses bermula, sementarahantar tidak boleh. Khususnya, jika yang pertamahantar selesai sebelum proses dijalankan, anda menjalankan risiko untuk mengabaikan data anda. Dalam situasi di mana program interaktif menawarkan tiada permulaan awal, anda boleh mendahuluihantar dengan kelewatan seperti:

# Untuk mengelakkan memberi petunjuk penggodam mengenai cara memecah masuk, # sistem ini tidak meminta kata laluan luaran. # Tunggu selama 5 saat untuk melaksanakan untuk menyelesaikan telnet telanjang sangat.secure.gov tidur 5 hantar kata laluan r

exp_send adalah alias untuk hantar. Jika anda menggunakan Expectk atau beberapa jenis lain yang Diharapkan dalam persekitaran Tk,hantar ditakrifkan oleh Tk untuk tujuan yang sama sekali berbeza.exp_send disediakan untuk kesesuaian antara persekitaran. Alias ​​serupa disediakan untuk arahan hantar lain yang lain.

string send_error -flags

adalah sepertihantar , kecuali bahawa output dihantar ke stderr daripada proses semasa.

send_log - rentetan

adalah sepertihantar , kecuali bahawa rentetan hanya dihantar ke fail log (lihatfail log .) Argumen tidak diendahkan jika tiada fail log terbuka.

send_tty -flags rentetan

adalah sepertihantar , kecuali bahawa output dihantar ke / dev / tty daripada proses semasa.

send_user -flags rentetan

adalah sepertihantar , kecuali bahawa output dihantar ke stdout daripada proses semasa.

tidur detik

menyebabkan skrip tidur untuk bilangan detik yang diberikan. Seconds boleh menjadi nombor perpuluhan. Interput (dan acara Tk jika anda menggunakan Expectk) diproses sementara Harapkan tidur.

menanam args program args

mewujudkan proses baru yang berjalan "program args ". Stdin, stdout dan stderrnya disambungkan kepada Harapan, supaya mereka dapat dibaca dan ditulis oleh yang lainMenjangkakan arahan. Sambungan dipecahkan olehdekat atau jika proses itu sendiri menutup mana-mana pengenal fail.

Apabila proses dimulakan olehbertelur , pembolehubah spawn_id ditetapkan kepada deskriptor merujuk kepada proses itu. Proses yang diterangkan oleh spawn_id dianggap sebagai "semasa proses" . spawn_id boleh dibaca atau ditulis, dengan berkesan menyediakan kawalan kerja.

user_spawn_id adalah pemboleh ubah global yang mengandungi deskriptor yang merujuk kepada pengguna. Sebagai contoh, bila spawn_id ditetapkan pada nilai ini,menjangkakan berkelakuan sepertiexpect_user .

Saya error_spawn_id adalah pemboleh ubah global yang mengandungi deskriptor yang merujuk kepada ralat piawai. Sebagai contoh, bila spawn_id ditetapkan pada nilai ini,hantar berkelakuan sepertisend_error .

tty_spawn_id adalah pembolehubah global yang mengandungi deskriptor yang merujuk kepada / dev / tty. Jika / dev / tty tidak wujud (seperti dalam cron, pada atau skrip batch), maka tty_spawn_id tidak ditakrifkan. Ini boleh diuji sebagai:

{{/ dev / tty exists} else {# / dev / tty does not exist # probably in cron, batch, or at script}

bertelur mengembalikan id proses UNIX. Sekiranya tiada proses yang dihasilkan, 0 dikembalikan. Pembolehubah spawn_out (hamba, nama) ditetapkan pada nama peranti hamba pty.

Secara lalai,bertelur gema nama dan hujah arahan. The-noecho berhenti benderabertelur dari melakukan ini.

The-console bendera menyebabkan output konsol akan diarahkan semula ke proses yang dihasilkan. Ini tidak disokong pada semua sistem.

Secara dalaman,bertelur menggunakan pty, memulakan cara yang sama seperti tty pengguna. Ini selanjutnya dimulakan supaya semua tetapan "waras" (mengikut stty (1)). Jika pembolehubah stty_init didefinisikan, ia ditafsirkan dalam gaya argumen stty sebagai konfigurasi lanjut. Contohnya, "set stty_init mentah" akan menyebabkan terminal proses penambahan selanjutnya bermula dalam mod mentah.-notikopi melewati inisialisasi berdasarkan tty pengguna.-nottyinit melangkau pemula "waras".

Biasanya,bertelur mengambil sedikit masa untuk dilaksanakan. Sekiranya anda perasan ubat-ubatan yang mengambil masa yang besar, kemungkinan besar terdapat masalah yang timbul. Sejumlah ujian dijalankan pada ptys untuk mengelakkan sebarang masalah dengan proses yang salah. (Ini mengambil masa 10 saat bagi setiap pasangan)-d pilihan akan menunjukkan jikaMenjangkakan sedang menghadapi banyak keadaan di luar negeri. Sekiranya anda tidak boleh membunuh proses-proses yang telah dilampirkan, maka satu-satunya cara anda untuk reboot.

Jika program tidak boleh dijangkakan dengan jayanya kerana exec (2) gagal (mis. bila program tidak wujud), mesej ralat akan dikembalikan oleh seterusnyaberinteraksi ataumenjangkakan perintah seolah-olah program telah menjalankan dan menghasilkan mesej ralat sebagai output. Tingkah laku ini adalah akibat semula jadi pelaksanaanbertelur . Secara dalaman, garpu bertele-tele, selepas itu proses penanaman tidak mempunyai cara untuk berkomunikasi dengan yang asalMenjangkakan proses kecuali melalui komunikasi melalui spawn_id.

The-buka bendera menyebabkan hujah seterusnya ditakrifkan sebagai pengecam fail Tcl (iaitu, dikembalikan olehbuka .) Id bertelur kemudian boleh digunakan seolah-olah ia adalah proses melahirkan. (Pengecam fail tidak lagi digunakan.) Ini membolehkan anda merawat peranti mentah, fail dan saluran paip sebagai proses melahirkan tanpa menggunakan pty. 0 dikembalikan untuk menunjukkan tiada proses yang berkaitan. Apabila sambungan ke proses melahirkan ditutup, begitu juga pengenalpasti fail Tcl. The-lawat bendera adalah serupa dengan-buka kecuali itu-lawat menyebabkan pengenal fail dibiarkan terbuka walaupun id tajam ditutup.

The-pty bendera menyebabkan pty dibuka tetapi tiada proses yang dihasilkan. 0 dikembalikan untuk menunjukkan tiada proses yang berkaitan. Spawn_id ditetapkan seperti biasa.

Pembolehubah spawn_out (hamba, fd) ditetapkan kepada pengenal fail sepadan dengan hamba pty. Ia boleh ditutup menggunakan "close -lave".

The-abai nama bendera isyarat untuk diabaikan dalam proses melahirkan. Jika tidak, isyarat mendapatkan kelakuan lalai. Isyarat dinamakan seperti di dalamperangkap arahan, kecuali setiap isyarat memerlukan bendera yang berasingan.

tahap strace

menyebabkan penyataan berikut dicetak sebelum dilaksanakan. (Jejak arahan Tcl mengesan pemboleh ubah.) tahap menunjukkan sejauh mana dalam timbunan panggilan untuk mengesan. Sebagai contoh, arahan berikut berjalanMenjangkakan semasa menelusuri 4 tahap panggilan pertama, tetapi tidak ada di bawah itu.

mengharapkan -c "strace 4" script.exp

The-info bendera men