यह कमांड एक्सपेक्ट है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर में से किसी एक का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।
कार्यक्रम:
नाम
अपेक्षा - इंटरैक्टिव कार्यक्रमों के साथ क्रमादेशित संवाद, संस्करण 5
SYNOPSIS
उम्मीद [ -dDinN ] [ -c सीएमडी ] [[ -[f|b]] cmdफ़ाइल ] [ आर्ग ]
परिचय
की अपेक्षा एक प्रोग्राम है जो एक स्क्रिप्ट के अनुसार अन्य इंटरैक्टिव प्रोग्रामों से "बातचीत" करता है।
स्क्रिप्ट का अनुसरण करते हुए, की अपेक्षा जानता है कि किसी कार्यक्रम से क्या अपेक्षा की जा सकती है और क्या
सही प्रतिक्रिया होनी चाहिए. एक व्याख्या की गई भाषा शाखा और उच्च-स्तर प्रदान करती है
संवाद को निर्देशित करने के लिए नियंत्रण संरचनाएँ। इसके अलावा, उपयोगकर्ता नियंत्रण ले सकता है और
वांछित होने पर सीधे बातचीत करें, बाद में स्क्रिप्ट पर नियंत्रण लौटा दें।
उम्मीद का मिश्रण है की अपेक्षा और Tk. यह वैसा ही व्यवहार करता है की अपेक्षा और Tk's इच्छा. की अपेक्षा
इसका उपयोग सीधे C या C++ में भी किया जा सकता है (अर्थात, Tcl के बिना)। देखना libexpect(3).
"उम्मीद" नाम इस विचार से आया है भेजें/उम्मीद करें यूयूसीपी, केर्मिट द्वारा लोकप्रिय अनुक्रम
और अन्य मॉडेम नियंत्रण कार्यक्रम। हालाँकि, यूयूसीपी के विपरीत, की अपेक्षा इसे सामान्यीकृत किया गया है ताकि यह
किसी भी प्रोग्राम और कार्य को ध्यान में रखते हुए उपयोगकर्ता-स्तरीय कमांड के रूप में चलाया जा सकता है। की अपेक्षा वास्तव में कर सकते हैं
एक ही समय में कई कार्यक्रमों पर बात करें।
उदाहरण के लिए, यहां कुछ चीजें हैं की अपेक्षा क्या कर सकते हैं:
· अपने कंप्यूटर को आपको वापस डायल करने के लिए कहें, ताकि आप बिना भुगतान किए लॉगिन कर सकें
कॉल।
· एक गेम शुरू करें (उदाहरण के लिए, दुष्ट) और यदि इष्टतम कॉन्फ़िगरेशन दिखाई नहीं देता है,
इसे तब तक पुनः आरंभ करें (बार-बार) जब तक ऐसा न हो जाए, फिर नियंत्रण अपने हाथ में सौंप दें।
· fsck चलाएँ, और उसके प्रश्नों के उत्तर में "हाँ", "नहीं" का उत्तर दें या नियंत्रण दें
पूर्व निर्धारित मानदंडों के आधार पर आपके पास वापस।
· किसी अन्य नेटवर्क या बीबीएस (उदाहरण के लिए, एमसीआई मेल, कंप्यूसर्व) से कनेक्ट करें और
स्वचालित रूप से आपका मेल पुनर्प्राप्त करें ताकि ऐसा प्रतीत हो जैसे कि यह मूल रूप से था
आपके स्थानीय सिस्टम पर भेजा गया.
· पर्यावरण चर, वर्तमान निर्देशिका, या किसी भी प्रकार की जानकारी ले जाएं
आरलॉगिन, टेलनेट, टिप, एसयू, सीएचजीआरपी, आदि में।
ऐसे कई कारण हैं जिनकी वजह से शेल ये कार्य नहीं कर पाता है। (कोशिश करो, तुम करोगे
देखें।) सब कुछ संभव है की अपेक्षा.
सामान्य रूप में, की अपेक्षा किसी भी प्रोग्राम को चलाने के लिए उपयोगी है जिसके लिए परस्पर क्रिया की आवश्यकता होती है
प्रोग्राम और उपयोगकर्ता. बस इतना जरूरी है कि बातचीत हो सके
प्रोग्रामेटिक रूप से चित्रित। की अपेक्षा उपयोगकर्ता को बैक कंट्रोल भी दे सकता है (बिना
यदि वांछित हो तो नियंत्रित किये जा रहे प्रोग्राम को रोकें। इसी प्रकार, उपयोगकर्ता नियंत्रण वापस कर सकता है
किसी भी समय स्क्रिप्ट के लिए.
उपयोग
की अपेक्षा पढ़ता cmdफ़ाइल निष्पादित करने के लिए आदेशों की सूची के लिए। की अपेक्षा भी लागू किया जा सकता है
परोक्ष रूप से उन प्रणालियों पर जो # का समर्थन करते हैं! निष्पादन योग्य स्क्रिप्ट को चिह्नित करके नोटेशन, और
अपनी स्क्रिप्ट में पहली पंक्ति बनाना:
#!/usr/bin/उम्मीद -f
बेशक, पथ को सटीक रूप से वर्णन करना चाहिए कि कहां की अपेक्षा रहता है। / Usr / bin बस एक है
उदाहरण।
RSI -c फ़्लैग स्क्रिप्ट में किसी भी कमांड से पहले निष्पादित होने वाला कमांड प्रस्तुत करता है। आदेश
खोल से टूटने से बचाने के लिए उद्धृत किया जाना चाहिए। इस विकल्प का उपयोग किया जा सकता है
कई बार। एकाधिक कमांड को एक ही साथ निष्पादित किया जा सकता है -c उन्हें अलग करके
अर्धविराम के साथ. आदेशों को उनके प्रकट होने के क्रम में क्रियान्वित किया जाता है। (एक्सपेक्टक का उपयोग करते समय,
यह विकल्प इस प्रकार निर्दिष्ट है -कंद.)
RSI -d फ़्लैग कुछ डायग्नोस्टिक आउटपुट सक्षम करता है, जो मुख्य रूप से आंतरिक गतिविधि की रिपोर्ट करता है
जैसे आदेश उम्मीद और बातचीत. इस ध्वज का प्रभाव "exp_internal 1" जैसा ही है
एक्सपेक्ट स्क्रिप्ट की शुरुआत में, प्लस संस्करण में की अपेक्षा मुद्रित है. (द स्ट्रेस
कमांड स्टेटमेंट्स को ट्रेस करने के लिए उपयोगी है, और निशान कमांड ट्रेसिंग के लिए उपयोगी है
वेरिएबल असाइनमेंट।) (एक्सपेक्टक का उपयोग करते समय, यह विकल्प इस प्रकार निर्दिष्ट किया जाता है -डायग.)
RSI -D फ़्लैग एक इंटरैक्टिव डिबगर को सक्षम बनाता है। एक पूर्णांक मान का अनुसरण करना चाहिए.
यदि मान शून्य नहीं है या यदि कोई है तो डिबगर अगली टीसीएल प्रक्रिया से पहले नियंत्रण ले लेगा
^C दबाया जाता है (या ब्रेकप्वाइंट हिट होता है, या अन्य उपयुक्त डिबगर कमांड दिखाई देता है
लिपि)। इस पर अधिक जानकारी के लिए README फ़ाइल देखें या यह भी देखें (नीचे)।
डिबगर. (एक्सपेक्टक का उपयोग करते समय, यह विकल्प इस प्रकार निर्दिष्ट किया जाता है -डीबग.)
RSI -f फ़्लैग उस फ़ाइल का परिचय देता है जिससे कमांड पढ़ा जा सकता है। झंडा स्वयं वैकल्पिक है
क्योंकि यह केवल # का उपयोग करते समय उपयोगी है! अंकन (ऊपर देखें), ताकि अन्य तर्क मिल सकें
कमांड लाइन पर आपूर्ति की जाएगी। (एक्सपेक्टक का उपयोग करते समय, यह विकल्प इस प्रकार निर्दिष्ट किया जाता है -file.)
डिफ़ॉल्ट रूप से, कमांड फ़ाइल को मेमोरी में पढ़ा जाता है और पूरी तरह से निष्पादित किया जाता है। यह है
कभी-कभी फ़ाइलों को एक समय में एक पंक्ति में पढ़ना वांछनीय होता है। उदाहरण के लिए, stdin इसे पढ़ा जाता है
रास्ता। मनमानी फ़ाइलों को इस तरह से प्रबंधित करने के लिए बाध्य करने के लिए, का उपयोग करें -b झंडा। (कब
एक्सपेक्टक का उपयोग करते हुए, इस विकल्प को इस प्रकार निर्दिष्ट किया गया है -बफर.)नोटकिstdio-
बफरिंगमईअभी भीलेनाजगहतथापिइसका फीफो या से पढ़ते समय समस्याएँ पैदा नहीं होनी चाहिए
स्टडिन
यदि स्ट्रिंग "-" फ़ाइल नाम के रूप में दी गई है, तो इसके बजाय मानक इनपुट पढ़ा जाता है। (उपयोग "।/-"
वास्तव में "-" नामक फ़ाइल से पढ़ने के लिए।)
RSI -i झंडा कारण की अपेक्षा आदेशों को पढ़ने के बजाय उनके लिए अंतःक्रियात्मक रूप से संकेत देना
एक फ़ाइल से. संकेत देना के माध्यम से समाप्त किया जाता है निकास आदेश या ईओएफ पर। देखना दुभाषिया
(नीचे) अधिक जानकारी के लिए। -i मान लिया गया है कि न तो कोई कमांड फ़ाइल है और न ही -c प्रयोग किया जाता है।
(एक्सपेक्टक का उपयोग करते समय, यह विकल्प इस प्रकार निर्दिष्ट किया जाता है -इंटरैक्टिव.)
-- विकल्पों के अंत को परिसीमित करने के लिए उपयोग किया जा सकता है। यदि आप पास करना चाहते हैं तो यह उपयोगी है
आपकी स्क्रिप्ट के लिए विकल्प जैसा तर्क, बिना इसकी व्याख्या किए की अपेक्षा। यह हो सकता है
उपयोगी रूप से # में रखा जाएगा! एक्सपेक्ट द्वारा किसी भी ध्वज जैसी व्याख्या को रोकने के लिए लाइन। के लिए
उदाहरण के लिए, निम्नलिखित में मूल तर्क (स्क्रिप्ट नाम सहित) छोड़ दिए जाएंगे
चर अर्जीवी.
#!/usr/bin/उम्मीद --
ध्यान दें कि सामान्य गेटोप्ट(3) और क्रियान्वित करना(2) जोड़ते समय परंपराओं का ध्यान रखना चाहिए
# के लिए तर्क! रेखा।
फ़ाइल $exp_library/expect.rc मौजूद होने पर स्वचालित रूप से सोर्स की जाती है, जब तक कि -N झंडा है
इस्तेमाल किया गया। (एक्सपेक्टक का उपयोग करते समय, यह विकल्प इस प्रकार निर्दिष्ट किया जाता है -एनओआरसी.) इसके तुरंत बाद,
फ़ाइल ~/.उम्मीद.rc स्वचालित रूप से सोर्स किया जाता है, जब तक कि -n ध्वज का प्रयोग किया जाता है. यदि
पर्यावरण चर DOTDIR को परिभाषित किया गया है, इसे एक निर्देशिका के रूप में माना जाता है और .expect.rc है
वहां से पढ़ें. (एक्सपेक्टक का उपयोग करते समय, यह विकल्प इस प्रकार निर्दिष्ट किया जाता है -नोरसी.) यह सोर्सिंग
किसी को क्रियान्वित करने के बाद ही होता है -c झंडे।
-v एक्सपेक्ट को इसके संस्करण संख्या को प्रिंट करने और बाहर निकलने का कारण बनता है। (संबंधित ध्वज में
एक्सपेक्टक, जो लंबे ध्वज नामों का उपयोग करता है, -संस्करण है।)
ऐच्छिक आर्ग एक सूची में निर्मित किया जाता है और नामित चर में संग्रहीत किया जाता है अर्जीवी. एर्गसी is
argv की लंबाई से प्रारंभ किया गया।
argv0 इसे स्क्रिप्ट के नाम के रूप में परिभाषित किया गया है (या यदि कोई स्क्रिप्ट का उपयोग नहीं किया जाता है तो बाइनरी)। के लिए
उदाहरण के लिए, निम्नलिखित स्क्रिप्ट का नाम और पहले तीन तर्क प्रिंट करता है:
भेजें_उपयोगकर्ता "$argv0 [lrange $argv 0 2]\n"
कमानों
की अपेक्षा का उपयोग करता है Tcl (टूल कमांड लैंग्वेज)। टीसीएल नियंत्रण प्रवाह प्रदान करता है (उदाहरण के लिए, यदि, के लिए,
ब्रेक), अभिव्यक्ति मूल्यांकन और कई अन्य विशेषताएं जैसे रिकर्सन, प्रक्रिया
परिभाषा, आदि। कमांड का उपयोग यहां किया गया है लेकिन परिभाषित नहीं किया गया है (उदाहरण के लिए, सेट, if, कार्यकारी) टीसीएल हैं
आदेश (देखें टीसीएल(3))। की अपेक्षा नीचे वर्णित अतिरिक्त आदेशों का समर्थन करता है। जब तक
अन्यथा निर्दिष्ट, आदेश खाली स्ट्रिंग लौटाते हैं।
आदेशों को वर्णानुक्रम में सूचीबद्ध किया गया है ताकि उनका शीघ्रता से पता लगाया जा सके। हालाँकि, नया
उपयोगकर्ताओं के लिए विवरण पढ़कर शुरुआत करना आसान हो सकता है अंडे, भेजें, उम्मीद, तथा
बातचीत, उस क्रम में।
ध्यान दें कि भाषा (एक्सपेक्ट और टीसीएल दोनों) का सबसे अच्छा परिचय इसमें प्रदान किया गया है
पुस्तक "एक्सप्लोरिंग एक्सपेक्ट" (नीचे यह भी देखें)। उदाहरण इस मैन पेज में शामिल हैं लेकिन
वे बहुत सीमित हैं क्योंकि यह मैन पेज मुख्य रूप से संदर्भ सामग्री के रूप में है।
ध्यान दें कि इस मैन पेज के टेक्स्ट में, अपरकेस "ई" के साथ "एक्सपेक्ट" का तात्पर्य है
की अपेक्षा प्रोग्राम जबकि "उम्मीद" लोअर-केस "ई" के साथ संदर्भित करता है उम्मीद कमांड के भीतर
la की अपेक्षा कार्यक्रम.)
बंद करे [-गुलाम] [-onexec 0|1] [-मैं स्पॉन_आईडी]
वर्तमान प्रक्रिया से कनेक्शन बंद कर देता है। अधिकांश इंटरैक्टिव प्रोग्राम पता लगा लेंगे
उनके अध्ययन और निकास पर ईओएफ; इस प्रकार बंद करे आमतौर पर इस प्रक्रिया को ख़त्म करने के लिए पर्याप्त है
कुंआ। -i ध्वज नामित के अनुरूप प्रक्रिया को बंद करने की घोषणा करता है
स्पॉन_आईडी.
दोनों उम्मीद और बातचीत यह पता लगाएगा कि वर्तमान प्रक्रिया कब और अंतर्निहित रूप से बाहर निकलती है
करो ए बंद करे. लेकिन यदि आप प्रक्रिया को समाप्त करते हैं, कहते हैं, "execkill $pid", तो आपको इसकी आवश्यकता होगी
स्पष्ट रूप से कॉल करें बंद करे.
RSI -onexec फ़्लैग यह निर्धारित करता है कि किसी भी नए स्पॉन में स्पॉन आईडी बंद की जाएगी या नहीं
प्रक्रियाएँ या यदि प्रक्रिया ओवरले की गई है। स्पॉन आईडी को खुला छोड़ने के लिए, मान का उपयोग करें
0. एक गैर-शून्य पूर्णांक मान किसी भी नए में स्पॉन को बंद (डिफ़ॉल्ट) करने के लिए बाध्य करेगा
प्रक्रियाओं.
RSI -दास फ़्लैग स्पॉन आईडी से जुड़े स्लेव को बंद कर देता है। (देखें "स्पॉन-पीटीआई"।)
जब कनेक्शन बंद हो जाता है, तो स्लेव स्वचालित रूप से भी बंद हो जाता है
खुला.
इससे कोई फर्क नहीं पड़ता कि कनेक्शन अप्रत्यक्ष रूप से या स्पष्ट रूप से बंद है, आपको कॉल करना चाहिए
प्रतीक्षा संबंधित कर्नेल प्रक्रिया स्लॉट को साफ़ करने के लिए। बंद करे फोन नहीं करता प्रतीक्षा
चूँकि इस बात की कोई गारंटी नहीं है कि किसी प्रक्रिया कनेक्शन को बंद करने से वह बाहर निकल जाएगा।
देख प्रतीक्षा अधिक जानकारी के लिए नीचे।
डिबग [[-अब] 0|1]
एक टीसीएल डिबगर को नियंत्रित करता है जो आपको बयानों के माध्यम से कदम उठाने, ब्रेकप्वाइंट सेट करने की अनुमति देता है,
इत्यादि
बिना किसी तर्क के, यदि डिबगर नहीं चल रहा है तो 1 लौटाया जाता है, अन्यथा 0 लौटाया जाता है
लौटा हुआ।
1 तर्क के साथ, डिबगर प्रारंभ किया जाता है। 0 तर्क के साथ, डिबगर है
रोका हुआ। यदि 1 तर्क से पहले है -अभी ध्वज, डिबगर प्रारंभ हो गया है
तुरंत (अर्थात, के बीच में डिबग स्वयं आदेश दें)। अन्यथा
डिबगर को अगले टीसीएल स्टेटमेंट के साथ शुरू किया जाता है।
RSI डिबग आदेश कोई जाल नहीं बदलता. इसकी तुलना स्टार्टिंग एक्सपेक्ट से करें
la -D झंडा (ऊपर देखें)।
डिबगर पर अधिक जानकारी के लिए README फ़ाइल देखें या यह भी देखें (नीचे)।
काटना
टर्मिनल से एक फोर्क्ड प्रक्रिया को डिस्कनेक्ट करता है। में यह चलता रहता है
पृष्ठभूमि। प्रक्रिया को अपना स्वयं का प्रक्रिया समूह दिया जाता है (यदि संभव हो तो)। मानक I/O
/dev/null पर पुनर्निर्देशित किया गया है।
निम्नलिखित खंड का उपयोग करता है काटना में स्क्रिप्ट चलाना जारी रखने के लिए
पृष्ठभूमि.
यदि {[fork]!=0} बाहर निकलें
काटना
. . .
निम्न स्क्रिप्ट एक पासवर्ड पढ़ती है, और फिर हर घंटे एक प्रोग्राम चलाती है
इसे चलाने पर हर बार पासवर्ड की मांग होती है। स्क्रिप्ट पासवर्ड प्रदान करती है ताकि
आपको इसे केवल एक बार टाइप करना होगा। (देखें स्टट्टी कमांड जो दर्शाता है कि कैसे मुड़ना है
ऑफ पासवर्ड गूंज रहा है।)
भेजें_उपयोगकर्ता "पासवर्ड?\ "
उम्मीद_उपयोगकर्ता -re "(.*)\n"
1 के लिए {} {
यदि {[कांटा]!=0} {नींद 3600;जारी रखें}
काटना
स्पॉन प्राइवेट_प्रोग
पासवर्ड की अपेक्षा करें:
"$expect_out(1,string)\r" भेजें
. . .
निकास
}
उपयोग करने का एक फायदा काटना शेल के ऊपर अतुल्यकालिक प्रक्रिया सुविधा (&) है
कि की अपेक्षा वियोग से पहले और फिर बाद में टर्मिनल पैरामीटर्स को सहेज सकता है
उन्हें नए पीटीवाई पर लागू करें। साथ &, की अपेक्षा को पढ़ने का मौका नहीं मिलता
टर्मिनल के पैरामीटर चूंकि टर्मिनल पहले ही समय से डिस्कनेक्ट हो चुका है की अपेक्षा
नियंत्रण प्राप्त करता है.
निकास [-opts] [स्थिति]
का कारण बनता है की अपेक्षा बाहर निकलना या अन्यथा ऐसा करने के लिए तैयार होना।
RSI -एक निकास फ़्लैग अगले तर्क को निकास हैंडलर के रूप में उपयोग करने का कारण बनता है। बिना एक
तर्क, वर्तमान निकास हैंडलर वापस कर दिया जाता है।
RSI -बाहर का कोई मार्ग नहीं झंडा कारण की अपेक्षा बाहर निकलने की तैयारी करना लेकिन वास्तव में रुकना
ऑपरेटिंग सिस्टम पर नियंत्रण लौटाना। उपयोगकर्ता द्वारा परिभाषित निकास हैंडलर को इस प्रकार चलाया जाता है
साथ ही एक्सपेक्ट के अपने आंतरिक संचालक भी। आगे कोई एक्सपेक्ट कमांड नहीं होनी चाहिए
निष्पादित। यदि आप अन्य टीसीएल एक्सटेंशन के साथ एक्सपेक्ट चला रहे हैं तो यह उपयोगी है।
वर्तमान दुभाषिया (और मुख्य विंडो यदि Tk वातावरण में है) तो अन्य बने रहें
टीसीएल एक्सटेंशन साफ़ कर सकते हैं। अगर उम्मीद है निकास दोबारा बुलाया जाता है (हालांकि यह हो सकता है
घटित होता है), हैंडलर पुनः नहीं चलाए जाते हैं।
बाहर निकलने पर, उत्पन्न प्रक्रियाओं से सभी कनेक्शन बंद हो जाते हैं। क्लोजर होगा
उत्पन्न प्रक्रियाओं द्वारा ईओएफ के रूप में पता लगाया गया। निकास उससे आगे कोई अन्य कार्रवाई नहीं करता
साधारण _बाहर जाएं(2) प्रक्रिया करती है. इस प्रकार, ऐसी प्रक्रियाएँ उत्पन्न हुईं जिनकी जाँच नहीं की जाती है
ईओएफ चलता रह सकता है। (निर्धारित करने के लिए विभिन्न प्रकार की स्थितियाँ महत्वपूर्ण हैं
उदाहरण के लिए, एक उत्पन्न प्रक्रिया को कौन से संकेत भेजे जाएंगे, लेकिन ये सिस्टम हैं-
आश्रित, आम तौर पर इसके अंतर्गत प्रलेखित निकास(3).) उत्पन्न प्रक्रियाएं जो जारी रहती हैं
रन init द्वारा विरासत में मिलेगा।
हैसियत (या यदि निर्दिष्ट नहीं है तो 0) की निकास स्थिति के रूप में लौटाया जाता है की अपेक्षा. निकास is
यदि स्क्रिप्ट के अंत तक पहुँच जाता है तो अंतर्निहित रूप से निष्पादित किया जाता है।
exp_जारी रखें [-जारी_समय]
आदेश exp_जारी रखें की अनुमति देता है उम्मीद इसके बजाय खुद को क्रियान्वित करना जारी रखें
सामान्य रूप से वापस लौटना। डिफ़ॉल्ट रूप से exp_जारी रखें टाइमआउट टाइमर को रीसेट करता है।
RSI -जारी_समय ध्वज टाइमर को पुनः प्रारंभ होने से रोकता है। (देखना उम्मीद और अधिक के लिए
जानकारी।)
exp_internal [-एफ फ़ाइल] मूल्य
आंतरिक रूप से नैदानिक जानकारी भेजने के लिए अतिरिक्त आदेशों का कारण बनता है की अपेक्षा stderr को
if मूल्य गैर-शून्य है. यह आउटपुट अक्षम है यदि मूल्य 0 है. निदान
जानकारी में प्राप्त प्रत्येक चरित्र और मिलान करने के लिए किए गए प्रत्येक प्रयास शामिल हैं
पैटर्न के विरुद्ध वर्तमान आउटपुट।
यदि वैकल्पिक पट्टिका आपूर्ति की जाती है, सभी सामान्य और डिबगिंग आउटपुट उसी पर लिखे जाते हैं
फ़ाइल (मूल्य की परवाह किए बिना) मूल्य). कोई भी पिछली डायग्नोस्टिक आउटपुट फ़ाइल है
बन्द है।
RSI -इनफो फ़्लैग के कारण exp_internal नवीनतम गैर- का विवरण लौटाता है
जानकारी तर्क दिए गए.
exp_open [तर्क] [-मैं स्पॉन_आईडी]
एक टीसीएल फ़ाइल पहचानकर्ता लौटाता है जो मूल स्पॉन आईडी से मेल खाता है। फ़ाइल
फिर पहचानकर्ता का उपयोग ऐसे किया जा सकता है जैसे कि इसे टीसीएल द्वारा खोला गया हो खुला आज्ञा। (स्पॉन
आईडी का अब उपयोग नहीं किया जाना चाहिए. ए प्रतीक्षा निष्पादित नहीं किया जाना चाहिए.
RSI -खुला छोड़े फ़्लैग स्पॉन आईडी को एक्सपेक्ट कमांड के माध्यम से पहुंच के लिए खुला छोड़ देता है। ए
प्रतीक्षा स्पॉन आईडी पर निष्पादित किया जाना चाहिए।
exp_pid [-मैं स्पॉन_आईडी]
वर्तमान में उत्पन्न प्रक्रिया के अनुरूप प्रक्रिया आईडी लौटाता है। यदि -i
ध्वज का उपयोग किया जाता है, लौटाया गया पीआईडी दिए गए स्पॉन आईडी से मेल खाता है।
exp_send
के लिए एक उपनाम है भेजें.
exp_send_error
के लिए एक उपनाम है भेजें_त्रुटि.
exp_send_log
के लिए एक उपनाम है भेजें_लॉग.
exp_send_tty
के लिए एक उपनाम है भेजें_ट्टी.
exp_send_user
के लिए एक उपनाम है भेजें_उपयोगकर्ता.
exp_version [[-बाहर निकलना] संस्करण]
यह सुनिश्चित करने के लिए उपयोगी है कि स्क्रिप्ट वर्तमान संस्करण के साथ संगत है
अपेक्षा करना।
बिना किसी तर्क के, का वर्तमान संस्करण की अपेक्षा लौटा दिया जाता है. यह संस्करण तब हो सकता है
अपनी स्क्रिप्ट में एन्कोड किया जाए। यदि आप वास्तव में जानते हैं कि आप इसकी सुविधाओं का उपयोग नहीं कर रहे हैं
नवीनतम संस्करण, आप कोई पुराना संस्करण निर्दिष्ट कर सकते हैं.
संस्करणों में बिंदुओं द्वारा अलग किए गए तीन नंबर होते हैं। सबसे पहले प्रमुख संख्या है.
के संस्करणों के लिए लिखी गई स्क्रिप्ट की अपेक्षा एक अलग प्रमुख संख्या के साथ लगभग होगा
निश्चित रूप से काम नहीं करेगा. exp_version यदि प्रमुख संख्याएँ मेल नहीं खातीं तो एक त्रुटि आती है।
दूसरा है गौण संख्या. बड़े माइनर वाले संस्करण के लिए स्क्रिप्ट लिखी गईं
वर्तमान संस्करण की तुलना में संख्या कुछ नई सुविधा पर निर्भर हो सकती है और नहीं चल सकती है।
exp_version यदि बड़ी संख्याएँ मेल खाती हैं, लेकिन स्क्रिप्ट छोटी संख्या से मेल खाती है, तो एक त्रुटि आती है
दौड़ने से भी बड़ा है की अपेक्षा.
तीसरा एक संख्या है जो संस्करण तुलना में कोई भूमिका नहीं निभाती है। हालांकि यह है
वृद्धि हुई जब की अपेक्षा सॉफ़्टवेयर वितरण को किसी भी तरह से बदला जाता है, जैसे कि
अतिरिक्त दस्तावेज़ीकरण या अनुकूलन. प्रत्येक नए माइनर पर इसे 0 पर रीसेट कर दिया जाता है
संस्करण.
उसके साथ -बाहर जाएं झंडा, की अपेक्षा एक त्रुटि प्रिंट करता है और संस्करण पुराना होने पर बाहर निकल जाता है।
उम्मीद [[-ऑप्ट्स] pat1 शरीर1] ... [-opts] patn [शरीर]
तब तक प्रतीक्षा करता है जब तक कि कोई एक पैटर्न किसी निर्दिष्ट प्रक्रिया के आउटपुट से मेल नहीं खाता
समय अवधि बीत चुकी है, या फ़ाइल का अंत देखा गया है। यदि अंतिम निकाय खाली है, तो यह
छोड़ा जा सकता है।
सबसे हाल के पैटर्न अपेक्षा_पहले कमांड का उपयोग किसी से भी पहले अंतर्निहित रूप से किया जाता है
अन्य पैटर्न. सबसे हाल के पैटर्न उम्मीद_बाद आदेश अन्तर्निहित हैं
किसी अन्य पैटर्न के बाद उपयोग किया जाता है।
यदि संपूर्ण के लिए तर्क उम्मीद कथन के लिए एक से अधिक पंक्तियों की आवश्यकता होती है, सभी
तर्कों को एक में "बंधा" दिया जा सकता है ताकि प्रत्येक पंक्ति को a के साथ समाप्त करने से बचा जा सके
बैकस्लैश इस एक मामले में, इसके बावजूद सामान्य टीसीएल प्रतिस्थापन घटित होंगे
ब्रेसिज़।
यदि कोई पैटर्न कीवर्ड है EOF, संबंधित निकाय को अंत में निष्पादित किया जाता है-
फ़ाइल। यदि कोई पैटर्न कीवर्ड है मध्यांतर, संबंधित निकाय पर क्रियान्वित किया जाता है
समय समाप्त। यदि कोई टाइमआउट कीवर्ड का उपयोग नहीं किया जाता है, तो एक अंतर्निहित शून्य कार्रवाई निष्पादित की जाती है
समय समाप्त। डिफ़ॉल्ट टाइमआउट अवधि 10 सेकंड है, लेकिन इसे सेट किया जा सकता है, उदाहरण के लिए
30, "सेट टाइमआउट 30" कमांड द्वारा। एक अनंत टाइमआउट द्वारा निर्दिष्ट किया जा सकता है
मान -1. यदि कोई पैटर्न कीवर्ड है चूक, संबंधित निकाय निष्पादित किया जाता है
या तो टाइमआउट या फ़ाइल के अंत पर।
यदि कोई पैटर्न मेल खाता है, तो संबंधित बॉडी निष्पादित की जाती है। उम्मीद रिटर्न देता है
मुख्य भाग का परिणाम (या यदि कोई पैटर्न मेल नहीं खाता तो खाली स्ट्रिंग)। ऐसा होने पर कि
एकाधिक पैटर्न मेल खाते हैं, सबसे पहले दिखने वाले पैटर्न का उपयोग किसी बॉडी का चयन करने के लिए किया जाता है।
हर बार जब नया आउटपुट आता है, तो उसकी तुलना प्रत्येक पैटर्न से उसी क्रम में की जाती है, जिस क्रम में वे हैं
सूचीबद्ध. इस प्रकार, आप अंतिम पैटर्न बनाकर मैच की अनुपस्थिति का परीक्षण कर सकते हैं
कुछ प्रकट होने की गारंटी, जैसे संकेत। ऐसी स्थितियों में जहां कोई नहीं है
शीघ्र, आपको उपयोग करना चाहिए मध्यांतर (बिल्कुल वैसे ही जैसे आप करेंगे यदि आप मैन्युअल रूप से बातचीत कर रहे हों)।
पैटर्न तीन प्रकार से निर्दिष्ट किये जाते हैं। डिफ़ॉल्ट रूप से, पैटर्न इस प्रकार निर्दिष्ट होते हैं
टीसीएल स्ट्रिंग मैच आज्ञा। (ऐसे पैटर्न भी सी-शेल रेगुलर के समान हैं
अभिव्यक्तियों को आमतौर पर "ग्लोब" पैटर्न के रूप में जाना जाता है)। -गल झंडे का इस्तेमाल किया जा सकता है
उन पैटर्न की सुरक्षा के लिए जो अन्यथा मेल खा सकते हैं उम्मीद ऐसा करने से झंडे। कोई
"-" से शुरू होने वाले पैटर्न को इस तरह संरक्षित किया जाना चाहिए। (सभी तार शुरू हो रहे हैं
"-" के साथ भविष्य के विकल्पों के लिए आरक्षित हैं।)
उदाहरण के लिए, निम्नलिखित खंड एक सफल लॉगिन की तलाश करता है। (ध्यान दें कि गर्भपात
ऐसा माना जाता है कि यह स्क्रिप्ट में कहीं और परिभाषित एक प्रक्रिया है।)
अपेक्षा करना {
व्यस्त {व्यस्त डालता है\n ; exp_जारी रखें}
असफल गर्भपात
"अमान्य पासवर्ड" निरस्त करें
समयबाह्य निरस्त
जुड़ा हुआ
}
चौथे पैटर्न पर उद्धरण आवश्यक हैं क्योंकि इसमें एक स्थान है, जो होगा
अन्यथा पैटर्न को क्रिया से अलग करें। समान क्रिया वाले पैटर्न (जैसे
तीसरे और चौथे के रूप में) कार्यों को फिर से सूचीबद्ध करने की आवश्यकता है। के प्रयोग से इससे बचा जा सकता है
रेगेक्सपी-शैली पैटर्न (नीचे देखें)। ग्लोब-शैली पैटर्न बनाने के बारे में अधिक जानकारी
टीसीएल मैनुअल में पाया जा सकता है।
रेगएक्सपी-शैली पैटर्न टीसीएल द्वारा परिभाषित वाक्यविन्यास का पालन करते हैं regexp ('नियमित' का संक्षिप्त रूप)
अभिव्यक्ति") कमांड। regexp पैटर्न ध्वज के साथ पेश किए जाते हैं -re।
पिछले उदाहरण को regexp का उपयोग करके फिर से लिखा जा सकता है:
अपेक्षा करना {
व्यस्त {व्यस्त डालता है\n ; exp_जारी रखें}
-re "असफल|अमान्य पासवर्ड" निरस्त करें
समयबाह्य निरस्त
जुड़ा हुआ
}
दोनों प्रकार के पैटर्न "अनएंकर्ड" हैं। इसका मतलब यह है कि पैटर्न की आवश्यकता नहीं है
संपूर्ण स्ट्रिंग का मिलान करें, लेकिन स्ट्रिंग में कहीं भी मिलान प्रारंभ और समाप्त कर सकते हैं (जैसे
जब तक बाकी सब कुछ मेल खाता है)। स्ट्रिंग की शुरुआत से मिलान करने के लिए ^ का उपयोग करें, और $
अंत से मेल खाने के लिए. ध्यान दें कि यदि आप किसी स्ट्रिंग के अंत की प्रतीक्षा नहीं करते हैं, तो आपका
प्रतिक्रियाएँ आसानी से स्ट्रिंग के बीच में समाप्त हो सकती हैं क्योंकि वे से प्रतिध्वनित होती हैं
उत्पन्न प्रक्रिया. अभी भी सही परिणाम देते हुए, आउटपुट दिख सकता है
अप्राकृतिक. इस प्रकार, यदि आप पात्रों का सटीक वर्णन कर सकते हैं तो $ के उपयोग को प्रोत्साहित किया जाता है
एक स्ट्रिंग के अंत में.
ध्यान दें कि कई संपादकों में, ^ और $ पंक्तियों की शुरुआत और अंत से मेल खाते हैं
क्रमश। हालाँकि, क्योंकि उम्मीद लाइन ओरिएंटेड नहीं है, ये अक्षर मेल खाते हैं
वर्तमान में अपेक्षित डेटा की शुरुआत और अंत (लाइनों के विपरीत)।
मिलान बफ़र. (इसके अलावा, नीचे "सिस्टम अपच" पर नोट देखें)
RSI -भूतपूर्व ध्वज पैटर्न को "सटीक" स्ट्रिंग के रूप में मिलान करने का कारण बनता है। नहीं
*, ^, आदि की व्याख्या की गई है (हालाँकि सामान्य टीसीएल सम्मेलन अभी भी होने चाहिए
परीक्षण में रहना)। सटीक पैटर्न हमेशा अनियंत्रित होते हैं।
RSI -कोई मामला नहीं फ़्लैग आउटपुट के अपरकेस वर्णों की तुलना करने का कारण बनता है जैसे कि वे
छोटे अक्षर थे. पैटर्न प्रभावित नहीं होता.
आउटपुट पढ़ते समय, 2000 से अधिक बाइट्स पहले वाले बाइट्स को बाध्य कर सकते हैं
"भूल गई"। इसे फ़ंक्शन के साथ बदला जा सकता है मैच_मैक्स. (ध्यान दें कि
अत्यधिक बड़े मान पैटर्न मिलान को धीमा कर सकते हैं।) यदि patlist is
पूर्ण_बफर, यदि संबंधित निकाय निष्पादित किया जाता है मैच_मैक्स बाइट्स हो गए हैं
प्राप्त हुआ और कोई अन्य पैटर्न मेल नहीं खाता। चाहे या नहीं पूर्ण_बफर कीवर्ड
का उपयोग किया जाता है, भूले हुए अक्षरexpect_out(buffer) पर लिखे जाते हैं।
If patlist कीवर्ड है रिक्त, और शून्य की अनुमति है (के माध्यम से) हटाएं_शून्य
कमांड), यदि एकल ASCII 0 का मिलान होता है तो संबंधित बॉडी निष्पादित की जाती है। यह है
ग्लोब या रेगेक्सपी पैटर्न के माध्यम से 0 बाइट्स का मिलान करना संभव नहीं है।
किसी पैटर्न (या ईओएफ या फुल_बफर) से मिलान करने पर, कोई भी मिलान और पहले
बेजोड़ आउटपुट वेरिएबल में सहेजा जाता है उम्मीद_बाहर(बफर). 9 रेगेक्सपी तक
सबस्ट्रिंग मिलान वेरिएबल में सहेजे जाते हैं उम्मीद_बाहर(1,स्ट्रिंग) पूज्य गुरुदेव के मार्गदर्शन से संपन्न कर सकते हैं -
उम्मीद_बाहर(9,स्ट्रिंग)। अगर -सूचकांक ध्वज का उपयोग किसी पैटर्न, आरंभ से पहले किया जाता है
और अंतिम सूचकांक (के लिए उपयुक्त रूप में) व्यवस्था) में 10 स्ट्रिंग्स संग्रहीत हैं
चर उम्मीद_बाहर(एक्स, प्रारंभ) और उम्मीद_बाहर(एक्स,अंत) जहाँ X एक अंक है,
बफ़र में सबस्ट्रिंग स्थिति से मेल खाता है। 0 स्ट्रिंग्स को संदर्भित करता है जो
संपूर्ण पैटर्न से मेल खाता है और ग्लोब पैटर्न के साथ-साथ रेगेक्सपी के लिए भी तैयार किया गया है
पैटर्न. उदाहरण के लिए, यदि किसी प्रक्रिया ने "abcdefgh\n" का आउटपुट उत्पन्न किया है, तो परिणाम
की:
"सीडी" की अपेक्षा करें
ऐसा है मानो निम्नलिखित कथन निष्पादित हो गए हों:
उम्मीद_आउट(0,स्ट्रिंग) सीडी सेट करें
उम्मीद_आउट(बफर) एबीसीडी सेट करें
और "efgh\n" आउटपुट बफ़र में छोड़ दिया गया है। यदि कोई प्रक्रिया आउटपुट उत्पन्न करती है
"abbbcabkkkka\n", इसका परिणाम:
उम्मीद -सूचकांक -re "b(b*).*(k+)"
ऐसा है मानो निम्नलिखित कथन निष्पादित हो गए हों:
उम्मीद_आउट(0,प्रारंभ) 1 सेट करें
उम्मीद_आउट(0,अंत) 10 सेट करें
उम्मीद_आउट(0,स्ट्रिंग) bbbcabkkkk सेट करें
उम्मीद_आउट(1,प्रारंभ) 2 सेट करें
उम्मीद_आउट(1,अंत) 3 सेट करें
उम्मीद_आउट(1,स्ट्रिंग) बीबी सेट करें
उम्मीद_आउट(2,प्रारंभ) 10 सेट करें
उम्मीद_आउट(2,अंत) 10 सेट करें
उम्मीद_आउट(2,स्ट्रिंग) k सेट करें
उम्मीद_आउट(बफर) abbbcabkkkk सेट करें
और आउटपुट बफ़र में "a\n" बचा है। पैटर्न "*" (और -रे ".*") फ्लश हो जाएगा
प्रक्रिया से कोई और आउटपुट पढ़े बिना आउटपुट बफ़र।
आम तौर पर, मिलान किए गए आउटपुट को एक्सपेक्ट के आंतरिक बफ़र्स से हटा दिया जाता है। शायद यह
के साथ एक पैटर्न उपसर्ग लगाकर रोका जा सकता है -स्थानांतरण नहीं झंडा। ये झंडा है
प्रयोग में विशेष रूप से उपयोगी (और सुविधा के लिए इसे "-नहीं" के रूप में संक्षिप्त किया जा सकता है
प्रयोग करते समय)।
मिलान आउटपुट (या ईओएफ या फुल_बफर) से जुड़ी स्पॉन आईडी संग्रहीत की जाती है
in उम्मीद_आउट(स्पॉन_आईडी).
RSI -समय समाप्त फ़्लैग वर्तमान उम्मीद कमांड को निम्न मान के रूप में उपयोग करने का कारण बनता है
टाइमआउट वैरिएबल के मान का उपयोग करने के बजाय टाइमआउट।
हालाँकि, डिफ़ॉल्ट रूप से, पैटर्न का मिलान वर्तमान प्रक्रिया के आउटपुट से किया जाता है
la -i ध्वज घोषित करता है कि नामित स्पॉन_आईडी सूची से आउटपुट का किसी के साथ मिलान किया जाएगा
निम्नलिखित पैटर्न (अगले तक)। -i). स्पॉन_आईडी सूची या तो होनी चाहिए
स्पॉन_आईड्स की व्हाइटस्पेस अलग सूची या ऐसी सूची का संदर्भ देने वाला एक चर
spawn_ids.
उदाहरण के लिए, निम्नलिखित उदाहरण वर्तमान प्रक्रिया से "कनेक्टेड" की प्रतीक्षा करता है,
या $proc2 द्वारा नामित spawn_id से "व्यस्त", "असफल" या "अमान्य पासवर्ड"।
अपेक्षा करना {
-i $proc2 व्यस्त {व्यस्त डालता है\n ; exp_जारी रखें}
-re "असफल|अमान्य पासवर्ड" निरस्त करें
समयबाह्य निरस्त
जुड़ा हुआ
}
वैश्विक चर का मान Any_spawn_id किसी भी पैटर्न से मिलान करने के लिए उपयोग किया जा सकता है
spawn_ids जिनका नाम अन्य सभी के साथ रखा गया है -i वर्तमान में झंडे उम्मीद आदेश।
ए से स्पॉन_आईडी -i बिना किसी संबद्ध पैटर्न वाला ध्वज (यानी, तुरंत अनुसरण किया गया)।
एक और -i) उसी में किसी अन्य पैटर्न के लिए उपलब्ध कराया गया है उम्मीद आदेश
के साथ जुड़े Any_spawn_id.
RSI -i ध्वज एक वैश्विक चर का नाम भी दे सकता है, ऐसी स्थिति में चर को a के लिए पढ़ा जाता है
स्पॉन आईडी की सूची. जब भी परिवर्तन होता है तो वेरिएबल को दोबारा पढ़ा जाता है। यह एक रास्ता प्रदान करता है
कमांड के निष्पादन के दौरान I/O स्रोत को बदलना। स्पॉन आईडी प्रदान की गई
इस तरीके को "अप्रत्यक्ष" स्पॉन आईडी कहा जाता है।
जैसी कार्रवाइयां तोड़ना और जारी रखने के कारण नियंत्रण संरचनाएं (अर्थात्, एसटी , proc) करने के लिए
सामान्य तरीके से व्यवहार करें. आदेश exp_जारी रखें की अनुमति देता है उम्मीद खुद को जारी रखने के लिए
सामान्य रूप से वापस लौटने के बजाय क्रियान्वित करना।
यह स्पष्ट लूप या बार-बार अपेक्षित कथनों से बचने के लिए उपयोगी है।
निम्नलिखित उदाहरण आरलॉगिन को स्वचालित करने के लिए एक टुकड़े का हिस्सा है। exp_जारी रखें से बचा जाता है
एक सेकंड लिखना होगा उम्मीद कथन (संकेत को फिर से देखने के लिए) यदि
rlogin पासवर्ड के लिए संकेत देता है।
अपेक्षा करना {
पासवर्ड: {
stty -प्रतिध्वनि
$host पर $user का पासवर्ड भेजें: "
उम्मीद_उपयोगकर्ता -re "(.*)\n"
भेजें_उपयोगकर्ता "\n"
"$expect_out(1,string)\r" भेजें
स्थिर प्रतिध्वनि
exp_जारी रखें
} ग़लत {
भेजें_उपयोगकर्ता "अमान्य पासवर्ड या खाता\n"
निकास
} समय समाप्त {
भेजें_उपयोगकर्ता "$होस्ट से कनेक्शन का समय समाप्त\n"
निकास
} ईओएफ {
भेजें_उपयोगकर्ता
"होस्ट से कनेक्शन विफल: $expect_out(बफर)"
निकास
} -रे $प्रॉम्प्ट
}
उदाहरण के लिए, निम्नलिखित अंश उपयोगकर्ता को किसी इंटरैक्शन का मार्गदर्शन करने में मदद कर सकता है
पहले से ही पूरी तरह से स्वचालित। इस स्थिति में, टर्मिनल को रॉ मोड में डाल दिया जाता है। यदि
उपयोगकर्ता "+" दबाता है, एक वेरिएबल बढ़ जाता है। यदि "पी" दबाया जाता है, तो कई रिटर्न मिलते हैं
प्रक्रिया में भेजा गया, शायद इसे किसी तरह से पोक करने के लिए, और "i" उपयोगकर्ता को इंटरैक्ट करने देता है
इस प्रक्रिया के साथ, प्रभावी ढंग से स्क्रिप्ट से नियंत्रण छीन लिया जाता है। हर मामले में,
la exp_जारी रखें वर्तमान की अनुमति देता है उम्मीद बाद में पैटर्न मिलान जारी रखने के लिए
वर्तमान कार्रवाई निष्पादित करना.
stty कच्ची-प्रतिध्वनि
अपेक्षा_बाद {
-मैं $user_spawn_id
"पी" {भेजें "\r\r\r"; exp_जारी रखें}
"+" {incr foo; exp_जारी रखें}
"मैं" {बातचीत; exp_जारी रखें}
"छोड़ो" बाहर निकलें
}
डिफ़ॉल्ट रूप से, exp_जारी रखें टाइमआउट टाइमर को रीसेट करता है। यदि टाइमर पुनः प्रारंभ नहीं हुआ है
exp_जारी रखें के साथ बुलाया जाता है -जारी_समय झंडा।
उम्मीद_बाद [उम्मीद_आर्ग्स]
के समान कार्य करता है अपेक्षा_पहले सिवाय इसके कि यदि दोनों से पैटर्न उम्मीद और
उम्मीद_बाद मेल कर सकते हैं, उम्मीद पैटर्न का प्रयोग किया जाता है. देखें अपेक्षा_पहले आदेश
देखें।
उम्मीद_पृष्ठभूमि [उम्मीद_आर्ग्स]
के समान ही तर्क लेता है उम्मीद, हालाँकि यह तुरंत वापस आ जाता है। पैटर्न हैं
जब भी नया इनपुट आता है तो परीक्षण किया जाता है। नमूना मध्यांतर और चूक अर्थहीन हैं
सेवा मेरे उम्मीद_पृष्ठभूमि और चुपचाप त्याग दिए जाते हैं। अन्यथा उम्मीद_पृष्ठभूमि
कमांड का उपयोग करता है अपेक्षा_पहले और उम्मीद_बाद पैटर्न बिल्कुल पसंद है उम्मीद करता है.
. उम्मीद_पृष्ठभूमि कार्यों का मूल्यांकन किया जा रहा है, पृष्ठभूमि प्रसंस्करण के लिए
वही स्पॉन आईडी ब्लॉक कर दी गई है। कार्रवाई होने पर बैकग्राउंड प्रोसेसिंग अनब्लॉक हो जाती है
पूरा करता है। जबकि पृष्ठभूमि प्रसंस्करण अवरुद्ध है, ऐसा करना संभव है
(अग्रभूमि) उम्मीद एक ही स्पॉन आईडी पर.
पर अमल करना संभव नहीं है उम्मीद जबकि ए उम्मीद_पृष्ठभूमि अनब्लॉक है.
उम्मीद_पृष्ठभूमि किसी विशेष स्पॉन आईडी के लिए एक नई घोषणा करके हटा दिया जाता है
समान स्पॉन आईडी के साथ उम्मीद_बैकग्राउंड। घोषणा उम्मीद_पृष्ठभूमि कोई साथ
पैटर्न दिए गए स्पॉन आईडी को पैटर्न से मिलान करने की क्षमता से हटा देता है
पृष्ठभूमि.
अपेक्षा_पहले [उम्मीद_आर्ग्स]
के समान ही तर्क लेता है उम्मीद, हालाँकि यह तुरंत वापस आ जाता है। पैटर्न-क्रिया
सबसे हाल की जोड़ियां अपेक्षा_पहले समान स्पॉन आईडी के साथ अंतर्निहित रूप से जोड़ा जाता है
किसी भी निम्नलिखित के लिए उम्मीद आदेश. यदि कोई पैटर्न मेल खाता है, तो उसके साथ ऐसा व्यवहार किया जाता है जैसे कि वह था
में निर्दिष्ट किया गया है उम्मीद कमांड स्वयं, और संबंधित निकाय को निष्पादित किया जाता है
का संदर्भ उम्मीद आज्ञा। यदि दोनों से पैटर्न अपेक्षा_पहले और उम्मीद
मेल कर सकते हैं, अपेक्षा_पहले पैटर्न का प्रयोग किया जाता है.
यदि कोई पैटर्न निर्दिष्ट नहीं है, तो किसी भी पैटर्न के लिए स्पॉन आईडी की जाँच नहीं की जाती है।
जब तक कि a द्वारा ओवरराइड न किया गया हो -i झंडा, अपेक्षा_पहले पैटर्न स्पॉन आईडी से मेल खाते हैं
उस समय परिभाषित किया गया था कि अपेक्षा_पहले कमांड निष्पादित किया गया था (तब नहीं जब यह
पैटर्न मेल खाता है)।
-जानकारी ध्वज का कारण बनता है अपेक्षा_पहले किसकी वर्तमान विशिष्टताओं को वापस करने के लिए
पैटर्न यह मेल खाएगा। डिफ़ॉल्ट रूप से, यह वर्तमान स्पॉन आईडी पर रिपोर्ट करता है। एक
उस स्पॉन आईडी की जानकारी के लिए वैकल्पिक स्पॉन आईडी विनिर्देश दिया जा सकता है। के लिए
उदाहरण
उम्मीद_से पहले -जानकारी -i $proc
अधिकतम एक स्पॉन आईडी विनिर्देश दिया जा सकता है। ध्वज-अप्रत्यक्ष दमन करता है
प्रत्यक्ष स्पॉन आईडी जो केवल अप्रत्यक्ष विशिष्टताओं से आती हैं।
स्पॉन आईडी विनिर्देश के बजाय, ध्वज "-all" रिपोर्ट करने के लिए "-info" का कारण बनेगा
सभी स्पॉन आईडी.
-जानकारी ध्वज के आउटपुट को उम्मीद_से पहले के तर्क के रूप में पुन: उपयोग किया जा सकता है।
उम्मीद_ट्टी [उम्मीद_आर्ग्स]
के समान ही उम्मीद लेकिन यह /dev/tty से अक्षर पढ़ता है (अर्थात् कीस्ट्रोक्स
उपयोगकर्ता)। डिफ़ॉल्ट रूप से, रीडिंग कुक्ड मोड में की जाती है। इस प्रकार, पंक्तियों को समाप्त होना चाहिए
के लिए एक वापसी उम्मीद उन्हें देखने के लिए। इसके माध्यम से बदला जा सकता है स्टट्टी (देखें
स्टट्टी नीचे आदेश)।
उम्मीद_उपयोगकर्ता [उम्मीद_आर्ग्स]
के समान ही उम्मीद लेकिन यह stdin से अक्षर पढ़ता है (यानी उपयोगकर्ता से कीस्ट्रोक्स)।
डिफ़ॉल्ट रूप से, रीडिंग कुक्ड मोड में की जाती है। इस प्रकार, पंक्तियाँ रिटर्न के साथ समाप्त होनी चाहिए
के क्रम में उम्मीद उन्हें देखने के लिए। इसके माध्यम से बदला जा सकता है स्टट्टी (देखें स्टट्टी आदेश
नीचे).
कांटा एक नई प्रक्रिया बनाता है. नई प्रक्रिया वर्तमान की हूबहू नकल है की अपेक्षा
प्रक्रिया। सफलता पर, कांटा नई (चाइल्ड) प्रक्रिया में 0 लौटाता है और लौटाता है
चाइल्ड प्रक्रिया की प्रक्रिया आईडी को मूल प्रक्रिया में बदलें। विफलता पर (निश्चित रूप से देय)
संसाधनों की कमी, उदाहरण के लिए, स्थान, मेमोरी की अदला-बदली), कांटा मूल को -1 लौटाता है
प्रक्रिया, और कोई चाइल्ड प्रक्रिया नहीं बनाई गई है।
फोर्क्ड प्रक्रियाएं इसके माध्यम से बाहर निकलती हैं निकास आदेश, बिल्कुल मूल प्रक्रिया की तरह। दो नोकवाला
प्रक्रियाओं को लॉग फ़ाइलों में लिखने की अनुमति है। यदि आप डिबगिंग अक्षम नहीं करते हैं या
अधिकांश प्रक्रियाओं में लॉग इन करने पर परिणाम भ्रमित करने वाला हो सकता है।
कुछ पीटीआई कार्यान्वयन कई पाठकों और लेखकों द्वारा भ्रमित भी हो सकते हैं
क्षण भर के लिए. इस प्रकार, यह सबसे सुरक्षित है कांटा स्पॉनिंग प्रक्रियाओं से पहले.
बातचीत [स्ट्रिंग1 शरीर1] ... [स्ट्रिंग [शरीर]]
उपयोगकर्ता को वर्तमान प्रक्रिया का नियंत्रण देता है, ताकि कीस्ट्रोक्स को भेजा जा सके
वर्तमान प्रक्रिया, और वर्तमान प्रक्रिया के stdout और stderr लौटा दिए जाते हैं।
स्ट्रिंग-बॉडी जोड़े को तर्क के रूप में निर्दिष्ट किया जा सकता है, जिस स्थिति में बॉडी निष्पादित होती है
जब संबंधित स्ट्रिंग दर्ज की जाती है। (डिफ़ॉल्ट रूप से, स्ट्रिंग नहीं भेजी जाती है
वर्तमान प्रक्रिया.) द दुभाषिया यदि अंतिम निकाय है तो आदेश मान लिया जाता है
लापता।
यदि संपूर्ण के लिए तर्क बातचीत कथन के लिए एक से अधिक पंक्तियों की आवश्यकता होती है, सभी
तर्कों को एक में "बंधा" दिया जा सकता है ताकि प्रत्येक पंक्ति को ए के साथ समाप्त करने से बचा जा सके
बैकस्लैश इस एक मामले में, इसके बावजूद सामान्य टीसीएल प्रतिस्थापन घटित होंगे
ब्रेसिज़।
उदाहरण के लिए, निम्न कमांड निम्न स्ट्रिंग-बॉडी के साथ इंटरैक्ट चलाता है
जोड़े परिभाषित: जब ^Z दबाया जाता है, की अपेक्षा निलंबित कर दिया है। (द -रीसेट ध्वज पुनर्स्थापित करता है
टर्मिनल मोड।) जब ^ए दबाया जाता है, तो उपयोगकर्ता देखता है "आपने एक नियंत्रण-ए टाइप किया है" और
प्रक्रिया को ^ए भेजा जाता है। जब $ दबाया जाता है, तो उपयोगकर्ता को तारीख दिखाई देती है। जब ^C है
दब गया, की अपेक्षा बाहर निकलता है. यदि "फू" दर्ज किया जाता है, तो उपयोगकर्ता को "बार" दिखाई देता है। जब ~~ है
दबाया, की अपेक्षा दुभाषिया अंतःक्रियात्मक रूप से चलता है।
CTRLZ \032 सेट करें
इंटरैक्ट करना {
-रीसेट $CTRLZ {execkill -STOP [pid]}
\001 {send_user "आपने एक control-A टाइप किया है";
"\001" भेजें
}
$ {send_user "तिथि [घड़ी प्रारूप [घड़ी सेकंड]] है।"}
\003 बाहर निकलें
फू {send_user "bar"}
~~
}
स्ट्रिंग-बॉडी जोड़े में, स्ट्रिंग्स का मिलान उस क्रम में किया जाता है जिस क्रम में वे तर्क के रूप में सूचीबद्ध होते हैं।
आंशिक रूप से मेल खाने वाली स्ट्रिंग्स को प्रत्याशा में वर्तमान प्रक्रिया में नहीं भेजा जाता है
शेष आ रहा है. यदि वर्णों को ऐसे दर्ज किया जाता है कि अब और नहीं किया जा सकता है
संभवतः एक मिलान हो, स्ट्रिंग का केवल भाग ही प्रक्रिया में भेजा जाएगा
संभवत: दूसरा मैच शुरू नहीं हो सकता। इस प्रकार, स्ट्रिंग्स जो आंशिक के सबस्ट्रिंग्स हैं
मिलान बाद में मिलान कर सकते हैं, यदि मूल तार जो मिलान करने का प्रयास कर रहे थे
अंततः विफल हो जाता है।
डिफ़ॉल्ट रूप से, स्ट्रिंग मिलान बिना किसी वाइल्ड कार्ड के सटीक होता है। (इसके विपरीत, उम्मीद
कमांड डिफ़ॉल्ट रूप से ग्लोब-शैली पैटर्न का उपयोग करता है।) -भूतपूर्व रक्षा के लिए ध्वज का उपयोग किया जा सकता है
पैटर्न जो अन्यथा मेल खा सकते हैं बातचीत ऐसा करने से झंडे। कोई भी पैटर्न
"-" से शुरुआत करते हुए इसे इस तरह संरक्षित किया जाना चाहिए। (सभी तार "-" से शुरू होते हैं
भविष्य के विकल्पों के लिए आरक्षित हैं।)
RSI -re फ़्लैग स्ट्रिंग को रेगेक्सपी-शैली पैटर्न के रूप में व्याख्या करने के लिए बाध्य करता है। इस में
मामले में, मिलान करने वाले सबस्ट्रिंग को वेरिएबल में संग्रहीत किया जाता है इंटरैक्ट_आउट इसी प्रकार
रास्ता उम्मीद अपने आउटपुट को वेरिएबल में संग्रहीत करता है उम्मीद_बाहर। -सूचकांक झंडा है
इसी तरह समर्थित.
पैटर्न EOF एक क्रिया का परिचय देता है जिसे फ़ाइल के अंत में निष्पादित किया जाता है। एक विभक्त
EOF पैटर्न भी अनुसरण कर सकता है आउटपुट ध्वज जिस स्थिति में ईओएफ से मेल खाता है
आउटपुट लिखते समय पता लगाया जाता है। डिफ़ॉल्ट EOF क्रिया "वापसी" है, इसलिए
बातचीत बस किसी भी ईओएफ पर रिटर्न मिलता है।
पैटर्न मध्यांतर एक टाइमआउट (सेकंड में) और क्रियान्वित क्रिया का परिचय देता है
एक निश्चित समय तक कोई भी पात्र न पढ़े जाने के बाद। मध्यांतर पैटर्न लागू होता है
सबसे हाल ही में निर्दिष्ट प्रक्रिया. कोई डिफ़ॉल्ट टाइमआउट नहीं है. विशेष
वेरिएबल "टाइमआउट" (द्वारा उपयोग किया जाता है उम्मीद कमांड) का इस टाइमआउट पर कोई प्रभाव नहीं पड़ता है।
उदाहरण के लिए, निम्नलिखित कथन का उपयोग उन उपयोगकर्ताओं के लिए किया जा सकता है जिन्होंने ऑटोलॉगआउट नहीं किया है
एक घंटे तक कुछ भी टाइप किया लेकिन फिर भी किसे बार-बार सिस्टम संदेश मिलते हैं:
इंटरैक्ट -इनपुट $user_spawn_id टाइमआउट 3600 रिटर्न -आउटपुट
$स्पॉन_आईडी
यदि पैटर्न कीवर्ड है रिक्त, और शून्य की अनुमति है (के माध्यम से) हटाएं_शून्य
कमांड), यदि एकल ASCII 0 का मिलान होता है तो संबंधित बॉडी निष्पादित की जाती है। यह है
ग्लोब या रेगेक्सपी पैटर्न के माध्यम से 0 बाइट्स का मिलान करना संभव नहीं है।
ध्वज के साथ एक पैटर्न प्रस्तुत करना -मैं लिखता हूं परिवर्तन का कारण बनता है इंटरैक्ट_आउट(स्पॉन_आईडी)
spawn_id पर सेट किया जाना है जो पैटर्न (या eof) से मेल खाता है।
जैसी कार्रवाइयां तोड़ना और जारी रखने के कारण नियंत्रण संरचनाएं (अर्थात्, एसटी , proc) करने के लिए
सामान्य तरीके से व्यवहार करें. तथापि वापसी इंटरैक्ट को उसके कॉल करने वाले के पास वापस लौटने का कारण बनता है,
जब अंतर_वापसी का कारण बनता है बातचीत अपने कॉलर में वापसी का कारण बनने के लिए। उदाहरण के लिए, यदि
"प्रोक फू" कहा जाता है बातचीत जिसके बाद कार्रवाई को अंजाम दिया गया अंतर_वापसी, proc foo
लौटेंगे। (इसका मतलब यह है कि अगर बातचीत कॉल दुभाषिया इंटरैक्टिव टाइपिंग
वापसी जबकि, बातचीत जारी रहेगी अंतर_वापसी कारण होगा
अपने कॉल करने वाले के पास लौटने के लिए इंटरैक्ट करें।)
दौरान बातचीत, रॉ मोड का उपयोग किया जाता है ताकि सभी वर्णों को पास किया जा सके
वर्तमान प्रक्रिया। यदि वर्तमान प्रक्रिया कार्य नियंत्रण संकेतों को नहीं पकड़ती है, तो यह पकड़ लेगी
यदि स्टॉप सिग्नल भेजा जाए तो रुकें (डिफ़ॉल्ट रूप से ^Z)। इसे पुनः आरंभ करने के लिए, जारी रखें सिग्नल भेजें
(जैसे कि "kill -CONT ")। यदि आप वास्तव में ऐसे किसी को SIGSTOP भेजना चाहते हैं
प्रक्रिया (^Z द्वारा), पहले सीएसएच उत्पन्न करने और फिर अपना प्रोग्राम चलाने पर विचार करें। पर
दूसरी ओर, यदि आप SIGSTOP भेजना चाहते हैं की अपेक्षा स्वयं, पहले दुभाषिया को बुलाओ
(शायद एस्केप कैरेक्टर का उपयोग करके), और फिर ^Z दबाएँ।
स्ट्रिंग-बॉडी जोड़े को प्रवेश करने से बचने के लिए शॉर्टहैंड के रूप में उपयोग किया जा सकता है
दुभाषिया और आदेशों को अंतःक्रियात्मक रूप से निष्पादित करना। पिछले टर्मिनल मोड का उपयोग किया जाता है
जबकि स्ट्रिंग-बॉडी जोड़ी की बॉडी निष्पादित की जा रही है।
गति के लिए, क्रियाएँ डिफ़ॉल्ट रूप से रॉ मोड में निष्पादित होती हैं। -रीसेट ध्वज रीसेट करता है
उस मोड पर टर्मिनल जो पहले था बातचीत निष्पादित किया गया था (हमेशा, पकाए गए मोड में)।
ध्यान दें कि जब मोड स्विच किया जा रहा हो तो दर्ज किए गए अक्षर खो सकते हैं (ए)।
कुछ प्रणालियों पर टर्मिनल ड्राइवर की दुर्भाग्यपूर्ण विशेषता)। उपयोग करने का एकमात्र कारण
-रीसेट यदि आपकी क्रिया पके हुए मोड में चलने पर निर्भर करती है।
RSI -तो ध्वज उन वर्णों को प्रक्रिया में वापस भेजता है जो निम्नलिखित पैटर्न से मेल खाते हैं
जैसे ही प्रत्येक चरित्र पढ़ा जाता है, उन्हें उत्पन्न किया जाता है। यह तब उपयोगी हो सकता है जब उपयोगकर्ता
आंशिक रूप से टाइप किए गए पैटर्न से फीडबैक देखने की जरूरत है।
यदि कोई पैटर्न प्रतिध्वनित किया जा रहा है लेकिन अंततः मेल खाने में विफल रहता है, तो वर्ण भेज दिए जाते हैं
उत्पन्न प्रक्रिया के लिए. यदि उत्पन्न प्रक्रिया फिर उन्हें प्रतिध्वनित करती है, तो उपयोगकर्ता देखेगा
अक्षर दो बार. -तो संभवतः केवल उन स्थितियों में उपयुक्त है जहां
उपयोगकर्ता द्वारा पैटर्न को पूरा नहीं करने की संभावना नहीं है। उदाहरण के लिए, निम्नलिखित अंश है
आरएफटीपी से, पुनरावर्ती-एफ़टीपी स्क्रिप्ट, जहां उपयोगकर्ता को ~g, ~p, या दर्ज करने के लिए प्रेरित किया जाता है
~l, वर्तमान निर्देशिका को पुनरावर्ती रूप से प्राप्त करने, रखने या सूचीबद्ध करने के लिए। ये बहुत दूर हैं
सामान्य एफ़टीपी कमांड से, उपयोगकर्ता द्वारा ~ के बाद टाइप करने की संभावना नहीं है
गलती के अलावा और कुछ भी, ऐसी स्थिति में, वे संभवतः इसे अनदेखा कर देंगे
परिणाम वैसे भी.
इंटरैक्ट करना {
-इको ~g {getcurdirectory 1}
-प्रतिध्वनि ~एल {getcurdirectory 0}
-इको ~p {putcurdirectory}
}
RSI -नोबफर ध्वज निम्नलिखित पैटर्न से मेल खाने वाले अक्षर भेजता है
जैसे ही अक्षर पढ़े जाते हैं आउटपुट प्रक्रिया।
यह तब उपयोगी होता है जब आप किसी प्रोग्राम को पैटर्न को प्रतिध्वनित करने देना चाहते हैं। उदाहरण के लिए,
निम्नलिखित का उपयोग यह निगरानी करने के लिए किया जा सकता है कि कोई व्यक्ति कहाँ डायल कर रहा है (हेस-शैली)।
मॉडेम). हर बार जब "atd" दिखाई देता है तो स्क्रिप्ट शेष पंक्ति को लॉग कर देती है।
प्रोक लॉगनंबर {} {
इंटरैक्ट -नोबफ़र -रे "(.*)\r" रिटर्न
$log डालता है "[घड़ी प्रारूप [घड़ी सेकंड]]: डायल किया गया $interact_out(1,string)"
}
इंटरैक्ट -नोबफर "एटीडी" लॉगनंबर
दौरान बातचीत, का पिछला उपयोग log_user नजरअंदाज कर दिया जाता है. विशेष रूप से, बातचीत मर्जी
इसके आउटपुट को लॉग करने के लिए बाध्य करें (मानक आउटपुट पर भेजा जाए) क्योंकि यह माना जाता है
उपयोगकर्ता आँख बंद करके बातचीत नहीं करना चाहता।
RSI -o फ़्लैग किसी भी निम्नलिखित कुंजी-बॉडी जोड़े को आउटपुट पर लागू करने का कारण बनता है
वर्तमान प्रक्रिया। यह उपयोगी हो सकता है, उदाहरण के लिए, भेजने वाले मेज़बानों के साथ व्यवहार करते समय
टेलनेट सत्र के दौरान अवांछित पात्र।
डिफ़ॉल्ट रूप से, बातचीत अपेक्षा करता है कि उपयोगकर्ता stdin लिख रहा होगा और stdout पढ़ रहा होगा
की अपेक्षा स्वयं प्रक्रिया करें. -u ध्वज ("उपयोगकर्ता" के लिए) बनाता है बातचीत उपयोगकर्ता को इस रूप में खोजें
प्रक्रिया को उसके तर्क द्वारा नामित किया गया है (जो एक उत्पन्न आईडी होनी चाहिए)।
यह दो असंबंधित प्रक्रियाओं को किसी स्पष्ट का उपयोग किए बिना एक साथ जोड़ने की अनुमति देता है
कुंडली। डिबगिंग में सहायता के लिए, एक्सपेक्ट डायग्नोस्टिक्स हमेशा stderr (या stdout for) पर जाता है
कुछ लॉगिंग और डिबगिंग जानकारी)। इसी कारण से, दुभाषिया
कमांड stdin से अंतःक्रियात्मक रूप से पढ़ेगा।
उदाहरण के लिए, निम्नलिखित खंड एक लॉगिन प्रक्रिया बनाता है। फिर यह उपयोगकर्ता को डायल करता है
(दिखाया नहीं गया), और अंत में दोनों को एक साथ जोड़ता है। बेशक, कोई भी प्रक्रिया हो सकती है
लॉगिन के लिए प्रतिस्थापित। उदाहरण के लिए, एक शेल उपयोगकर्ता को इसके बिना काम करने की अनुमति देगा
एक खाता और पासवर्ड प्रदान करना।
स्पॉन लॉगिन
लॉगिन $spawn_id सेट करें
स्पॉन टिप मॉडेम
# उपयोगकर्ता को वापस डायल करें
# उपयोगकर्ता को लॉगिन करने के लिए कनेक्ट करें
इंटरैक्ट -यू $लॉगिन
एकाधिक प्रक्रियाओं में आउटपुट भेजने के लिए, प्रत्येक स्पॉन आईडी सूची को पहले से सूचीबद्ध करें आउटपुट
झंडा। आउटपुट स्पॉन आईडी के समूह के लिए इनपुट स्पॉन आईडी सूची द्वारा निर्धारित किया जा सकता है
ए द्वारा प्रस्तावना -इनपुट झंडा। (दोनों -इनपुट और आउटपुट सूचियाँ उसी रूप में ले सकते हैं
जैसा -i में झंडा उम्मीद आदेश, सिवाय इसके कि Any_spawn_id इसमें सार्थक नहीं है
बातचीत.) निम्नलिखित सभी झंडे और तार (या पैटर्न) इस इनपुट पर तब तक लागू होते हैं
दूसरा -इनपुट ध्वज प्रकट होता है। अगर कोई नहीं -इनपुट प्रकट होता है, आउटपुट तात्पर्य "-इनपुट
$user_spawn_id -output"। (इसी तरह, ऐसे पैटर्न के साथ जिनमें नहीं है -इनपुट।) अगर
एक -इनपुट निर्दिष्ट है, यह $user_spawn_id को ओवरराइड करता है। यदि एक सेकंड -इनपुट is
निर्दिष्ट, यह $spawn_id को ओवरराइड करता है। अतिरिक्त -इनपुट झंडे निर्दिष्ट किए जा सकते हैं।
दो निहित इनपुट प्रक्रियाएं डिफ़ॉल्ट रूप से अपने आउटपुट को निर्दिष्ट करती हैं
$spawn_id और $user_spawn_id (विपरीत)। यदि एक -इनपुट ध्वज संख्या के साथ प्रकट होता है आउटपुट
ध्वज, उस प्रक्रिया के अक्षर हटा दिए जाते हैं।
RSI -i ध्वज वर्तमान spawn_id के लिए एक प्रतिस्थापन प्रस्तुत करता है जब कोई अन्य नहीं होता है -इनपुट
or आउटपुट झंडों का प्रयोग किया जाता है. A -i ध्वज का तात्पर्य -o ध्वज से है।
इसका उपयोग करके जिन प्रक्रियाओं के साथ इंटरैक्ट किया जा रहा है उन्हें बदलना संभव है
अप्रत्यक्ष स्पॉन आईडी। (अप्रत्यक्ष स्पॉन आईडी का वर्णन अपेक्षा अनुभाग में किया गया है
कमांड।) अप्रत्यक्ष स्पॉन आईडी को -i, -u, -इनपुट, या -आउटपुट के साथ निर्दिष्ट किया जा सकता है
झंडे।
दुभाषिया [तर्क]
उपयोगकर्ता को अंतःक्रियात्मक रूप से प्रेरित करने का कारण बनता है की अपेक्षा और टीसीएल कमांड।
प्रत्येक कमांड का परिणाम मुद्रित होता है।
जैसी कार्रवाइयां तोड़ना और जारी रखने के कारण नियंत्रण संरचनाएं (अर्थात्, एसटी , proc) करने के लिए
सामान्य तरीके से व्यवहार करें. तथापि वापसी दुभाषिया को उसके कॉल करने वाले के पास लौटने का कारण बनता है,
जब अंतर_वापसी का कारण बनता है दुभाषिया अपने कॉलर में वापसी का कारण बनने के लिए। उदाहरण के लिए,
यदि "proc foo" कहा जाता है दुभाषिया जिसके बाद कार्रवाई को अंजाम दिया गया अंतर_वापसी, proc
foo लौटेंगे। कोई अन्य आदेश कारण बनता है दुभाषिया के लिए संकेत जारी रखने के लिए
नये आदेश.
डिफ़ॉल्ट रूप से, प्रॉम्प्ट में दो पूर्णांक होते हैं। पहला पूर्णांक गहराई का वर्णन करता है
मूल्यांकन स्टैक का (यानी, कितनी बार Tcl_Eval को कॉल किया गया है)। दूसरा
पूर्णांक टीसीएल इतिहास पहचानकर्ता है। प्रॉम्प्ट को परिभाषित करके सेट किया जा सकता है
प्रक्रिया को "प्रॉम्प्ट1" कहा जाता है जिसका रिटर्न मान अगला प्रॉम्प्ट बन जाता है। यदि एक
कथन में खुले उद्धरण चिह्न, माता-पिता, ब्रेसिज़ या कोष्ठक हैं, एक द्वितीयक संकेत (द्वारा)।
डिफ़ॉल्ट "+>") नई लाइन पर जारी किया जाता है। द्वितीयक प्रॉम्प्ट को परिभाषित करके सेट किया जा सकता है
एक प्रक्रिया जिसे "प्रॉम्प्ट2" कहा जाता है।
दौरान दुभाषिया, पका हुआ मोड का उपयोग किया जाता है, भले ही इसका कॉलर कच्चे मोड का उपयोग कर रहा हो।
यदि stdin बंद है, दुभाषिया जब तक वापस नहीं आएगा -इओफ़ जिसमें ध्वज का प्रयोग किया जाता है
मामले में अगला तर्क लागू किया जाता है।
बोटा दस्तावेज [तर्क] [[-ए] फ़ाइल]
यदि कोई फ़ाइल नाम प्रदान किया गया है, बोटा दस्तावेज सत्र का एक प्रतिलेख रिकॉर्ड करेगा
(उस बिंदु से शुरुआत) फ़ाइल में। बोटा दस्तावेज यदि कोई तर्क नहीं है तो रिकॉर्डिंग बंद कर दी जाएगी
दिया हुआ है। कोई भी पिछली लॉग फ़ाइल बंद है.
फ़ाइल नाम के बजाय, इसका उपयोग करके एक Tcl फ़ाइल पहचानकर्ता प्रदान किया जा सकता है -खुला हुआ or
-खुला छोड़े झंडे. यह के समान है अंडे आज्ञा। (देखना अंडे अधिक जानकारी के लिए।)
RSI -a फ़्लैग आउटपुट को लॉग करने के लिए बाध्य करता है जिसे इसके द्वारा दबा दिया गया था log_user आदेश।
डिफ़ॉल्ट रूप से, बोटा दस्तावेज आदेश संलग्न कर देता है पुरानी फ़ाइलों को छोटा करने के बजाय,
एक ही समय में कई बार लॉगिंग को बंद और चालू करने में सक्षम होने की सुविधा के लिए
सत्र। फ़ाइलों को छोटा करने के लिए, का उपयोग करें -नहीं जोड़ें झंडा।
RSI -इनफो फ़्लैग के कारण log_file नवीनतम गैर-जानकारी का विवरण लौटाता है
तर्क दिए गए.
log_user -जानकारी|0|1
डिफ़ॉल्ट रूप से, भेजें/उम्मीद संवाद को stdout में लॉग किया जाता है (और यदि खुला हो तो एक लॉगफ़ाइल)।
stdout में लॉगिंग "log_user 0" कमांड द्वारा अक्षम कर दी गई है और पुनः सक्षम कर दी गई है
"लॉग_यूजर 1"। लॉगफ़ाइल में लॉगिंग अपरिवर्तित है.
RSI -इनफो फ़्लैग के कारण log_user नवीनतम गैर-जानकारी का विवरण लौटाता है
तर्क दिए गए.
मैच_मैक्स [-डी] [-मैं स्पॉन_आईडी] [आकार]
द्वारा आंतरिक रूप से उपयोग किए जाने वाले बफ़र के आकार को (बाइट्स में) परिभाषित करता है उम्मीद. कोई साथ आकार
तर्क, वर्तमान आकार लौटा दिया जाता है।
उसके साथ -d ध्वज, डिफ़ॉल्ट आकार सेट है। (प्रारंभिक डिफ़ॉल्ट 2000 है।) के साथ
-i ध्वज, आकार नामित स्पॉन आईडी के लिए सेट है, अन्यथा यह वर्तमान के लिए सेट है
प्रक्रिया.
ओवरले [-# स्पॉन_आईडी] [-# स्पॉन_आईडी] [...] कार्यक्रम [तर्क]
मार डाला कार्यक्रम आर्ग वर्तमान के स्थान पर की अपेक्षा प्रोग्राम, जो समाप्त हो जाता है। ए
नंगे हाइफ़न तर्क कमांड नाम के सामने एक हाइफ़न को बाध्य करता है जैसे कि यह एक था
लॉगिन शेल. तर्क के रूप में नामित लोगों को छोड़कर सभी स्पॉन_आईडी बंद हैं। इन
नामित फ़ाइल पहचानकर्ताओं पर मैप किए जाते हैं।
नए प्रोग्राम को इनहेरिट करने के लिए Spawn_ids को फ़ाइल पहचानकर्ताओं में मैप किया जाता है। के लिए
उदाहरण के लिए, निम्न पंक्ति शतरंज चलाती है और इसे करंट द्वारा नियंत्रित करने की अनुमति देती है
प्रक्रिया - मान लीजिए, एक शतरंज मास्टर।
ओवरले -0 $स्पॉन_आईडी -1 $स्पॉन_आईडी -2 $स्पॉन_आईडी शतरंज
यह "इंटरैक्ट-यू" से अधिक कुशल है, हालांकि, यह करने की क्षमता का त्याग करता है
के बाद से क्रमादेशित बातचीत की अपेक्षा प्रक्रिया अब नियंत्रण में नहीं है.
ध्यान दें कि कोई नियंत्रण टर्मिनल प्रदान नहीं किया गया है। इस प्रकार, यदि आप डिस्कनेक्ट या रीमैप करते हैं
मानक इनपुट, प्रोग्राम जो कार्य नियंत्रण करते हैं (शैल, लॉगिन, आदि) काम नहीं करेंगे
अच्छी तरह।
समानता [-डी] [-मैं स्पॉन_आईडी] [कीमत]
यह परिभाषित करता है कि स्पॉन्ड के आउटपुट से समता बरकरार रखी जानी चाहिए या छीन ली जानी चाहिए
प्रक्रियाएँ। अगर मूल्य शून्य है, समता छीन ली गई है, अन्यथा यह छीनी नहीं गई है।
कोई साथ मूल्य तर्क, वर्तमान मान लौटाया जाता है।
उसके साथ -d ध्वज, डिफ़ॉल्ट समता मान सेट है। (प्रारंभिक डिफ़ॉल्ट 1 है, यानी,
समता छीनी नहीं गई है।) के साथ -i ध्वज, समता मान नामित के लिए निर्धारित है
स्पॉन आईडी, अन्यथा यह वर्तमान प्रक्रिया के लिए सेट है।
हटाएं_शून्य [-डी] [-मैं स्पॉन_आईडी] [कीमत]
परिभाषित करता है कि उत्पन्न प्रक्रियाओं के आउटपुट से शून्य बनाए रखा जाता है या हटा दिया जाता है
पैटर्न मिलान या वेरिएबल में भंडारण से पहले उम्मीद_बाहर or इंटरैक्ट_आउट. अगर
मूल्य 1 है, शून्य हटा दिए जाते हैं। अगर मूल्य 0 है, शून्य नहीं हटाए गए हैं। कोई साथ मूल्य
तर्क, वर्तमान मान लौटाया जाता है।
उसके साथ -d ध्वज, डिफ़ॉल्ट मान सेट है। (प्रारंभिक डिफ़ॉल्ट 1 है, अर्थात, शून्य
हटा दिए जाते हैं.) के साथ -i ध्वज, मान नामित स्पॉन आईडी के लिए निर्धारित है, अन्यथा
यह वर्तमान प्रक्रिया के लिए सेट है.
शून्य हटाये गये हैं या नहीं, की अपेक्षा लॉग में शून्य बाइट्स रिकॉर्ड करेगा और
स्टडआउट
भेजें [-झंडे] स्ट्रिंग
भेजता है स्ट्रिंग वर्तमान प्रक्रिया के लिए. उदाहरण के लिए, आदेश
"हैलो वर्ल्ड\r" भेजें
अक्षर भेजता है, नमस्ते दुनिया वर्तमान प्रक्रिया के लिए.
(टीसीएल में एक प्रिंटफ-जैसा कमांड शामिल है (जिसे कहा जाता है)। प्रारूप) जो मनमाने ढंग से निर्माण कर सकता है
जटिल तार.)
अक्षर तुरंत भेज दिए जाते हैं, हालांकि लाइन-बफ़र्ड इनपुट वाले प्रोग्राम नहीं भेजेंगे
जब तक कोई रिटर्न कैरेक्टर नहीं भेजा जाता तब तक अक्षरों को पढ़ें। एक रिटर्न कैरेक्टर दर्शाया गया है
"\आर"।
RSI -- फ़्लैग अगले तर्क को a के बजाय एक स्ट्रिंग के रूप में व्याख्या करने के लिए बाध्य करता है
झंडा। किसी भी स्ट्रिंग के पहले "--" लगाया जा सकता है, चाहे वह वास्तव में जैसा दिखता हो या नहीं
झंडा। यह बिना परिवर्तनीय स्ट्रिंग्स को निर्दिष्ट करने के लिए एक विश्वसनीय तंत्र प्रदान करता है
जो गलती से झंडों की तरह दिखते हैं, उनसे फंस गए। (सभी तार शुरू होते हैं
"-" भविष्य के विकल्पों के लिए आरक्षित हैं।)
RSI -i ध्वज घोषित करता है कि स्ट्रिंग को नामित spawn_id पर भेजा जाएगा। यदि spawn_id
is उपयोगकर्ता_स्पॉन_आईडी, और टर्मिनल रॉ मोड में है, स्ट्रिंग में नई लाइनें हैं
रिटर्न-न्यूलाइन अनुक्रमों में अनुवादित ताकि वे ऐसे दिखें मानो टर्मिनल अंदर था
पकाया मोड. -कच्चा फ़्लैग इस अनुवाद को अक्षम कर देता है.
RSI -व्यर्थ ध्वज शून्य अक्षर (0 बाइट्स) भेजता है। डिफ़ॉल्ट रूप से, एक शून्य भेजा जाता है। एक
पूर्णांक अनुसरण कर सकता है -व्यर्थ यह इंगित करने के लिए कि कितने नल भेजने हैं।
RSI -टूटना ध्वज एक विराम स्थिति उत्पन्न करता है। यह केवल तभी समझ में आता है जब स्पॉन आईडी
"स्पॉन-ओपन" के माध्यम से खोले गए एक ट्टी डिवाइस को संदर्भित करता है। यदि आपने ऐसी कोई प्रक्रिया उत्पन्न की है
टिप के रूप में, आपको ब्रेक उत्पन्न करने के लिए टिप की परिपाटी का उपयोग करना चाहिए।
RSI -s फ़्लैग आउटपुट को "धीरे-धीरे" भेजने के लिए बाध्य करता है, इस प्रकार सामान्य स्थिति से बचें
एक कंप्यूटर उस इनपुट बफ़र से आगे निकल जाता है जिसे ऐसे इंसान के लिए डिज़ाइन किया गया था जो कभी ऐसा नहीं करेगा
समान बफ़र को आउटटाइप करें। यह आउटपुट वेरिएबल के मान द्वारा नियंत्रित होता है
"send_slow" जो दो तत्वों की सूची लेता है। पहला तत्व एक पूर्णांक है
परमाणु रूप से भेजे जाने वाले बाइट्स की संख्या का वर्णन करता है। दूसरा तत्व वास्तविक है
वह संख्या जो परमाणु द्वारा भेजे जाने वाले सेकंड की संख्या का वर्णन करती है
अलग हो गए. उदाहरण के लिए, "set sent_slow {10 .001}" "send -s" को भेजने के लिए बाध्य करेगा
भेजे गए प्रत्येक 1 वर्णों के बीच 10 मिलीसेकंड वाली स्ट्रिंग।
RSI -h फ़्लैग आउटपुट को वास्तव में टाइपिंग करने वाले इंसान की तरह (कुछ हद तक) भेजने के लिए बाध्य करता है।
पात्रों के बीच मनुष्य जैसी देरी दिखाई देती है। (एल्गोरिदम एक पर आधारित है
वेइबुल वितरण, इस विशेष एप्लिकेशन के अनुरूप संशोधनों के साथ।) यह
आउटपुट को वेरिएबल "send_ human" के मान से नियंत्रित किया जाता है जो पांच लेता है
तत्व सूची. पहले दो तत्व पात्रों के औसत अंतर-आगमन समय हैं
सेकंड. पहला डिफ़ॉल्ट रूप से उपयोग किया जाता है. दूसरे का प्रयोग शब्द के अंत में किया जाता है
ऐसे परिवर्तनों पर कभी-कभी होने वाले सूक्ष्म विरामों का अनुकरण करें। तीसरा
पैरामीटर परिवर्तनशीलता का एक माप है जहां .1 काफी परिवर्तनशील है, 1 उचित है
परिवर्तनशील, और 10 काफी अपरिवर्तनीय है। चरम 0 से अनंत तक हैं। अंतिम दो
पैरामीटर क्रमशः न्यूनतम और अधिकतम अंतराल समय हैं। न्यूनतम
और अधिकतम का उपयोग अंतिम बार और "क्लिप" का अंतिम बार किया जाता है। अंतिम औसत हो सकता है
यदि न्यूनतम और अधिकतम क्लिप पर्याप्त है तो दिए गए औसत से काफी भिन्न है
मूल्यों.
उदाहरण के तौर पर, निम्नलिखित कमांड एक तेज़ और सुसंगत टाइपिस्ट का अनुकरण करता है:
सेट सेंड_ह्यूमन {.1 .3 1 .05 2}
भेजें -h "मुझे भूख लगी है। चलो दोपहर का भोजन करते हैं।"
जबकि हैंगओवर के बाद निम्नलिखित अधिक उपयुक्त हो सकता है:
सेंड_ह्यूमन सेट करें {.4 .4 .2 .5 100}
भेजें -h "गुड पार्टी लैश नाइट!"
ध्यान दें कि त्रुटियाँ सिम्युलेटेड नहीं हैं, हालाँकि आप त्रुटि सुधार सेट कर सकते हैं
एक भेजें तर्क में गलतियों और सुधारों को एम्बेड करके स्वयं को स्थितिबद्ध करें।
शून्य अक्षर भेजने के लिए, ब्रेक भेजने के लिए, धीमे आउटपुट के लिए बाध्य करने के लिए झंडे
और मानव-शैली आउटपुट के लिए परस्पर अनन्य हैं। केवल वही अंतिम वसीयत निर्दिष्ट करेगा
इस्तेमाल किया गया। इसके अलावा, नहीं स्ट्रिंग भेजने के लिए झंडे के साथ तर्क निर्दिष्ट किया जा सकता है
शून्य वर्ण या विराम.
पहले से पहले जाना एक अच्छा विचार है भेजें एक द्वारा एक प्रक्रिया के लिए उम्मीद. उम्मीद मर्जी
प्रक्रिया शुरू होने तक प्रतीक्षा करें भेजें नही सकता। विशेषकर, यदि प्रथम भेजें
प्रक्रिया शुरू होने से पहले पूरी हो जाती है, तो आप अपना डेटा खोने का जोखिम उठाते हैं
अवहेलना करना। ऐसी स्थितियों में जहां इंटरैक्टिव प्रोग्राम कोई प्रारंभिक संकेत नहीं देते हैं, आप ऐसा कर सकते हैं
पछाड़ भेजें देरी से जैसे:
# हैकर्स को सेंध लगाने के संकेत देने से बचने के लिए,
# यह सिस्टम बाहरी पासवर्ड के लिए संकेत नहीं देता है.
# निष्पादन पूरा होने के लिए 5 सेकंड तक प्रतीक्षा करें
स्पॉन टेलनेट Very.secure.gov
नींद 5
पासवर्ड भेजें\r
exp_send के लिए एक उपनाम है भेजें. यदि आप एक्सपेक्टक या किसी अन्य प्रकार का उपयोग कर रहे हैं
Tk वातावरण में अपेक्षा करें, भेजें Tk द्वारा पूर्णतः भिन्न के लिए परिभाषित किया गया है
उद्देश्य। exp_send वातावरण के बीच अनुकूलता के लिए प्रदान किया गया है। समान
अन्य एक्सपेक्ट के अन्य सेंड कमांड के लिए उपनाम प्रदान किए गए हैं।
भेजें_त्रुटि [-झंडे] स्ट्रिंग
के समान ही भेजें, सिवाय इसके कि आउटपुट को करंट के बजाय stderr पर भेजा जाता है
प्रक्रिया.
भेजें_लॉग [--] स्ट्रिंग
के समान ही भेजें, सिवाय इसके कि स्ट्रिंग केवल लॉग फ़ाइल में भेजी जाती है (देखें)। बोटा दस्तावेज.)
यदि कोई लॉग फ़ाइल खुली नहीं है तो तर्कों को अनदेखा कर दिया जाता है।
भेजें_ट्टी [-झंडे] स्ट्रिंग
के समान ही भेजें, सिवाय इसके कि आउटपुट को करंट के बजाय /dev/tty पर भेजा जाता है
प्रक्रिया.
भेजें_उपयोगकर्ता [-झंडे] स्ट्रिंग
के समान ही भेजें, सिवाय इसके कि आउटपुट को करंट के बजाय stdout पर भेजा जाता है
प्रक्रिया.
नींद सेकंड
स्क्रिप्ट को दिए गए सेकंड के लिए निष्क्रिय कर देता है। सेकंड हो सकते हैं a
दशमलव संख्या। व्यवधान (और यदि आप एक्सपेक्ट का उपयोग कर रहे हैं तो Tk ईवेंट) संसाधित होते हैं
जबकि एक्सपेक्ट सोता है।
अंडे [तर्क] कार्यक्रम [तर्क]
चलने वाली एक नई प्रक्रिया बनाता है कार्यक्रम आर्ग. इसके stdin, stdout और stderr हैं
एक्सपेक्ट से जुड़ा हुआ है, ताकि उन्हें अन्य लोगों द्वारा पढ़ा और लिखा जा सके की अपेक्षा आदेश देता है।
से कनेक्शन टूट गया है बंद करे या यदि प्रक्रिया स्वयं किसी फ़ाइल को बंद कर देती है
पहचानकर्ता।
जब कोई प्रक्रिया प्रारंभ की जाती है अंडे, परिवर्तनशील स्पॉन_आईडी एक डिस्क्रिप्टर पर सेट है
उस प्रक्रिया का जिक्र करते हुए. द्वारा वर्णित प्रक्रिया स्पॉन_आईडी माना जाता है
वर्तमान प्रक्रिया. स्पॉन_आईडी वास्तव में कार्य नियंत्रण प्रदान करते हुए पढ़ा या लिखा जा सकता है।
उपयोगकर्ता_स्पॉन_आईडी एक वैश्विक वैरिएबल है जिसमें एक डिस्क्रिप्टर होता है जो उपयोगकर्ता को संदर्भित करता है।
उदाहरण के लिए, जब स्पॉन_आईडी इस मान पर सेट है, उम्मीद जैसा व्यवहार करता है उम्मीद_उपयोगकर्ता.
त्रुटि_स्पॉन_आईडी एक वैश्विक वैरिएबल है जिसमें एक डिस्क्रिप्टर होता है जो संदर्भित करता है
मानक त्रुटि। उदाहरण के लिए, जब स्पॉन_आईडी इस मान पर सेट है, भेजें जैसा व्यवहार करता है
भेजें_त्रुटि.
tty_spawn_id एक वैश्विक वैरिएबल है जिसमें एक डिस्क्रिप्टर होता है जो /dev/tty को संदर्भित करता है।
यदि /dev/tty मौजूद नहीं है (जैसे क्रॉन, एट या बैच स्क्रिप्ट में), तो
tty_spawn_id परिभाषित नहीं है। इसका परीक्षण इस प्रकार किया जा सकता है:
यदि {[जानकारी संस्करण tty_spawn_id]} {
# /dev/tty मौजूद है
और} {
# /dev/tty मौजूद नहीं है
# शायद क्रॉन, बैच, या स्क्रिप्ट में
}
अंडे UNIX प्रक्रिया आईडी लौटाता है। यदि कोई प्रक्रिया उत्पन्न नहीं होती है, तो 0 लौटाया जाता है।
परिवर्तनशील स्पॉन_आउट(गुलाम,नाम) पीटीआई स्लेव डिवाइस के नाम पर सेट है।
डिफ़ॉल्ट रूप से, अंडे कमांड नाम और तर्कों को प्रतिध्वनित करता है। -नोइको झंडा रुकता है
अंडे ऐसा करने से.
RSI -console ध्वज के कारण कंसोल आउटपुट उत्पन्न प्रक्रिया पर पुनर्निर्देशित हो जाता है।
यह सभी प्रणालियों पर समर्थित नहीं है.
आंतरिक रूप से, अंडे एक पीटीआई का उपयोग करता है, जिसे उपयोगकर्ता की ट्टी की तरह ही प्रारंभ किया जाता है। यह है
आगे आरंभ किया गया ताकि सभी सेटिंग्स "समझदार" हों (के अनुसार)। स्टट्टी(1))। अगर
परिवर्तनशील stty_init परिभाषित किया गया है, इसकी व्याख्या स्टिटी तर्कों की शैली में की गई है
आगे का विन्यास. उदाहरण के लिए, "सेट stty_init raw" आगे उत्पन्न होने का कारण बनेगा
प्रक्रियाओं के टर्मिनलों को कच्चे मोड में प्रारंभ करना। -नॉटीकॉपी आरंभीकरण को छोड़ देता है
उपयोगकर्ता की ट्टी के आधार पर। -nottyinit "समझदार" आरंभीकरण को छोड़ देता है।
सामान्य रूप से, अंडे निष्पादित करने में थोड़ा समय लगता है. यदि आप स्पॉन को लेते हुए देखते हैं
समय की महत्वपूर्ण मात्रा, यह संभवत: पीटीवाई का सामना कर रही है जो कि वेडेड हैं। ए
गलत प्रक्रियाओं के साथ उलझनों से बचने के लिए पीटीआई पर कई परीक्षण चलाए जाते हैं।
(इनमें प्रति वेज पीटीई 10 सेकंड लगते हैं।) रनिंग एक्सपेक्ट के साथ -d विकल्प दिखेगा
if की अपेक्षा विषम राज्यों में कई पीटीआई का सामना हो रहा है। यदि आप प्रक्रियाओं को ख़त्म नहीं कर सकते
जिससे ये पीटीआई जुड़े हुए हैं, आपका एकमात्र सहारा रीबूट करना हो सकता है।
If कार्यक्रम सफलतापूर्वक उत्पन्न नहीं किया जा सकता क्योंकि कार्यकारी(2) विफल रहता है (उदाहरण के लिए कब कार्यक्रम
मौजूद नहीं है), अगले द्वारा एक त्रुटि संदेश लौटाया जाएगा बातचीत or उम्मीद
आदेश मानो कार्यक्रम चलाया था और आउटपुट के रूप में त्रुटि संदेश उत्पन्न किया था। यह
व्यवहार कार्यान्वयन का एक स्वाभाविक परिणाम है अंडे. आंतरिक रूप से, स्पॉन
कांटे, जिसके बाद उत्पन्न प्रक्रिया के पास मूल के साथ संचार करने का कोई तरीका नहीं होता है
की अपेक्षा spawn_id के माध्यम से संचार को छोड़कर प्रक्रिया।
RSI -खुला हुआ ध्वज अगले तर्क को टीसीएल फ़ाइल पहचानकर्ता के रूप में व्याख्या करने का कारण बनता है
(अर्थात, द्वारा लौटाया गया खुला.) स्पॉन आईडी का उपयोग तब किया जा सकता है जैसे कि वह स्पॉन हो
प्रक्रिया। (फ़ाइल पहचानकर्ता का अब उपयोग नहीं किया जाना चाहिए।) इससे आप कच्चे का इलाज कर सकते हैं
पीटीआई का उपयोग किए बिना उत्पन्न प्रक्रियाओं के रूप में डिवाइस, फ़ाइलें और पाइपलाइन। 0 है
यह इंगित करने के लिए लौटाया गया कि कोई संबद्ध प्रक्रिया नहीं है। जब से कनेक्शन
उत्पन्न प्रक्रिया बंद है, इसलिए टीसीएल फ़ाइल पहचानकर्ता भी बंद है। -खुला छोड़े झंडा है
के समान -खुला हुआ सिवाय इसके कि -खुला छोड़े फ़ाइल पहचानकर्ता को खुला छोड़ने का कारण बनता है
स्पॉन आईडी बंद होने के बाद भी.
RSI -पीटीआई फ़्लैग के कारण पीटीआई खुल जाती है लेकिन कोई प्रक्रिया उत्पन्न नहीं होती। 0 को वापस कर दिया गया है
इंगित करें कि कोई संबद्ध प्रक्रिया नहीं है। Spawn_id हमेशा की तरह सेट है।
चर स्पॉन_आउट(गुलाम,एफडी) के अनुरूप फ़ाइल पहचानकर्ता पर सेट किया गया है
पीटीआई गुलाम. इसे "क्लोज-स्लेव" का उपयोग करके बंद किया जा सकता है।
RSI -अनदेखा करना ध्वज उत्पन्न प्रक्रिया में अनदेखा किए जाने वाले सिग्नल का नाम देता है। अन्यथा,
सिग्नल को डिफ़ॉल्ट व्यवहार मिलता है। सिग्नलों को इस प्रकार नाम दिया गया है जाल आदेश, सिवाय
प्रत्येक सिग्नल के लिए एक अलग ध्वज की आवश्यकता होती है।
स्ट्रेस स्तर
निष्पादित होने से पहले निम्नलिखित कथनों को मुद्रित करने का कारण बनता है। (टीसीएल का निशान
कमांड वेरिएबल का पता लगाता है।) स्तर इंगित करता है कि ट्रेस करने के लिए कॉल स्टैक में कितना नीचे है।
उदाहरण के लिए, निम्न आदेश चलता है की अपेक्षा के पहले 4 स्तरों का पता लगाते समय
कॉल, लेकिन उससे नीचे कोई नहीं।
उम्मीद -सी "स्ट्रेस 4" स्क्रिप्ट.एक्सपी
RSI -इनफो फ़्लैग के कारण स्ट्रेस नवीनतम गैर-जानकारी का विवरण लौटाता है
तर्क दिए गए.
स्टट्टी आर्ग
बाहरी stty कमांड के समान ही टर्मिनल मोड बदलता है।
डिफ़ॉल्ट रूप से, नियंत्रण टर्मिनल तक पहुंच प्राप्त होती है। अन्य टर्मिनलों तक पहुँचा जा सकता है
कमांड में "< /dev/tty..." जोड़कर। (ध्यान दें कि तर्क नहीं होना चाहिए
एक ही तर्क में समूहीकृत।)
स्थिति के लिए अनुरोध इसे कमांड के परिणाम के रूप में लौटाते हैं। यदि कोई स्थिति नहीं है
अनुरोध किया गया है और नियंत्रण टर्मिनल तक पहुंच प्राप्त की गई है, कच्चे की पिछली स्थिति
और इको विशेषताएँ एक ऐसे रूप में लौटा दी जाती हैं जिसे बाद में कमांड द्वारा उपयोग किया जा सकता है।
उदाहरण के लिए, तर्क कच्चा or -पकाया टर्मिनल को रॉ मोड में डालें।
तर्क -कच्चा or पकाया टर्मिनल को कुक्ड मोड में डालें। तर्क गूंज और
-तो टर्मिनल को क्रमशः इको और नोइको मोड में रखें।
निम्नलिखित उदाहरण दिखाता है कि प्रतिध्वनि को अस्थायी रूप से कैसे अक्षम किया जाए। यह हो सकता है
अन्यथा-स्वचालित स्क्रिप्ट में पासवर्ड एम्बेड करने से बचने के लिए उपयोग किया जाता है। (और देखें
नीचे अपेक्षित संकेत के अंतर्गत इस पर चर्चा।)
stty -प्रतिध्वनि
भेजें_उपयोगकर्ता "पासवर्ड:"
उम्मीद_उपयोगकर्ता -re "(.*)\n"
पासवर्ड सेट करें $expect_out(1,स्ट्रिंग)
स्थिर प्रतिध्वनि
प्रणाली आर्ग
देता है आर्ग सेवा मेरे sh(1) इनपुट के रूप में, जैसे कि इसे एक कमांड के रूप में टाइप किया गया हो
टर्मिनल। की अपेक्षा शेल समाप्त होने तक प्रतीक्षा करता है। श से वापसी की स्थिति है
उसी तरह से संभाला कार्यकारी इसकी वापसी स्थिति को संभालता है।
के विपरीत कार्यकारी जो stdin और stdout को स्क्रिप्ट पर रीडायरेक्ट करता है, प्रणाली प्रदर्शन
कोई पुनर्निर्देशन नहीं (स्ट्रिंग द्वारा इंगित के अलावा)। इस प्रकार, यह है
उन प्रोग्रामों का उपयोग करना संभव है जिन्हें सीधे /dev/tty से बात करनी होगी। इसी कारण से,
का परिणाम प्रणाली लॉग में दर्ज नहीं हैं.
टाइमस्टैम्प [तर्क]
एक टाइमस्टैम्प लौटाता है। बिना किसी तर्क के, युग के बाद से सेकंड की संख्या है
लौटा हुआ।
RSI -परिवर्तन ध्वज एक स्ट्रिंग प्रस्तुत करता है जिसे वापस कर दिया जाता है लेकिन प्रतिस्थापन के साथ
strftime के लिए POSIX नियमों के अनुसार। उदाहरण के लिए %a को an से बदल दिया गया है
संक्षिप्त कार्यदिवस का नाम (अर्थात, शनिवार)। अन्य हैं:
%a संक्षिप्त कार्यदिवस का नाम
%एक पूर्ण कार्यदिवस का नाम
%b संक्षिप्त माह का नाम
%B पूरे महीने का नाम
%c दिनांक-समय इस प्रकार है: बुध अक्टूबर 6 11:45:56 1993
महीने का %d दिन (01-31)
%H घंटा (00-23)
%I घंटा (01-12)
%j दिन (001-366)
%m महीना (01-12)
%M मिनट (00-59)
%p पूर्वाह्न या अपराह्न
%S सेकंड (00-61)
%u दिन (1-7, सोमवार सप्ताह का पहला दिन है)
%यू सप्ताह (00-53, पहला रविवार सप्ताह का पहला दिन है)
%V सप्ताह (01-53, ISO 8601 शैली)
%w दिन (0-6)
%W सप्ताह (00-53, पहला सोमवार सप्ताह का पहला दिन है)
%x दिनांक-समय इस प्रकार है: बुध 6 अक्टूबर 1993
%X समय इस प्रकार है: 23:59:59
%y वर्ष (00-99)
%Y वर्ष यथा: 1993
%Z समयक्षेत्र (या यदि निर्धारित नहीं है तो कुछ भी नहीं)
%% एक नंगे प्रतिशत चिह्न
अन्य % विशिष्टताएँ अपरिभाषित हैं. अन्य पात्रों को आगे बढ़ाया जाएगा
अछूता. केवल C लोकेल समर्थित है.
RSI -सेकंड ध्वज युग के बाद से कई सेकंड का परिचय देता है जिसका उपयोग एक के रूप में किया जाना है
स्रोत जिससे प्रारूपित करना है। अन्यथा, वर्तमान समय का उपयोग किया जाता है.
RSI -GMT फ़्लैग टाइमस्टैम्प आउटपुट को GMT टाइमज़ोन का उपयोग करने के लिए बाध्य करता है। बिना किसी झंडे के,
स्थानीय समयक्षेत्र का उपयोग किया जाता है.
जाल [[आज्ञा] संकेत]
दिए गए का कारण बनता है आदेश दिए गए में से किसी की भविष्य में प्राप्ति पर निष्पादित किया जाएगा
संकेत. कमांड को वैश्विक दायरे में निष्पादित किया जाता है। अगर आदेश अनुपस्थित है,
सिग्नल कार्रवाई वापस आ गई है. अगर आदेश स्ट्रिंग SIG_IGN है, सिग्नल हैं
अवहेलना करना। अगर आदेश स्ट्रिंग SIG_DFL है, सिग्नल सिस्टम के लिए परिणाम हैं
चूक। संकेत या तो एक एकल संकेत है या संकेतों की एक सूची है। संकेत हो सकते हैं
संख्यात्मक या प्रतीकात्मक रूप से निर्दिष्ट संकेत(3). "SIG" उपसर्ग हो सकता है
छोड़ा गया
बिना किसी तर्क (या तर्क-संख्या) के, जाल का सिग्नल नंबर लौटाता है
ट्रैप कमांड वर्तमान में क्रियान्वित किया जा रहा है।
RSI -कोड टीसीएल जो भी कोड था, उसके स्थान पर फ़्लैग कमांड के रिटर्न कोड का उपयोग करता है
जब कमांड मूल रूप से चलना शुरू हुई तो वापस लौटने वाला था।
RSI -इंटरप फ़्लैग सक्रिय दुभाषिया का उपयोग करके कमांड का मूल्यांकन करने का कारण बनता है
ट्रैप घोषित होने के समय के बजाय वह समय जब कमांड चलना शुरू हुआ।
RSI -रतालू ध्वज का कारण बनता है जाल ट्रैप कमांड का सिग्नल नाम वापस करने का आदेश
वर्तमान में निष्पादित किया जा रहा है।
RSI अधिकतम ध्वज का कारण बनता है जाल सबसे बड़ा सिग्नल नंबर लौटाने का आदेश
सेट हो।
उदाहरण के लिए, कमांड "ट्रैप {send_user "आउच!"} SIGINT" "आउच!" प्रिंट करेगा। प्रत्येक
जिस समय उपयोगकर्ता ^C दबाता है।
डिफ़ॉल्ट रूप से, SIGINT (जिसे आमतौर पर ^C दबाकर उत्पन्न किया जा सकता है) और SIGTERM कारण होते हैं
बाहर निकलने की उम्मीद है. यह निम्न जाल के कारण होता है, जो एक्सपेक्ट होने पर डिफ़ॉल्ट रूप से बनाया जाता है
शुरू होता है।
जाल निकास {SIGINT SIGTERM}
यदि आप डिबगर शुरू करने के लिए -D ध्वज का उपयोग करते हैं, तो SIGINT को शुरू करने के लिए फिर से परिभाषित किया गया है
इंटरैक्टिव डिबगर. यह निम्नलिखित जाल के कारण है:
जाल {exp_debug 1} संकेत
डिबगर ट्रैप को पर्यावरण चर सेट करके बदला जा सकता है
एक नए ट्रैप कमांड के लिए EXPECT_DEBUG_INIT।
बेशक, आप अपने में ट्रैप कमांड जोड़कर इन दोनों को ओवरराइड कर सकते हैं
लिखी हुई कहानी। विशेष रूप से, यदि आपके पास अपना स्वयं का "ट्रैप एग्जिट सिगिनट" है, तो यह ओवरराइड हो जाएगा
डिबगर जाल. यदि आप उपयोगकर्ताओं को इन तक पहुंचने से रोकना चाहते हैं तो यह उपयोगी है
बिल्कुल डिबगर।
यदि आप SIGINT पर अपना स्वयं का ट्रैप परिभाषित करना चाहते हैं, लेकिन फिर भी डिबगर पर ट्रैप करते हैं
चल रहा है, उपयोग करें:
अगर {![exp_debug]} {ट्रैप मिस्टफ SIGINT}
वैकल्पिक रूप से, आप किसी अन्य सिग्नल का उपयोग करके डिबगर को ट्रैप कर सकते हैं।
जाल आपको SIGALRM के लिए कार्रवाई को ओवरराइड नहीं करने देगा क्योंकि इसका उपयोग आंतरिक रूप से किया जाता है
की अपेक्षा. डिस्कनेक्ट कमांड SIGALRM को SIG_IGN (अनदेखा) पर सेट करता है। आप पुनः सक्षम कर सकते हैं
यह तब तक है जब तक आप इसे बाद के स्पॉन कमांड के दौरान अक्षम कर देते हैं।
देख संकेत(3) अधिक जानकारी के लिए।
प्रतीक्षा [तर्क]
किसी उत्पन्न प्रक्रिया (या वर्तमान प्रक्रिया यदि किसी का नाम नहीं है) के समाप्त होने तक विलंब होता है।
प्रतीक्षा सामान्यतः चार पूर्णांकों की सूची लौटाता है। पहला पूर्णांक का पिड है
जिस प्रक्रिया का इंतजार किया गया। दूसरा पूर्णांक संगत स्पॉन आईडी है।
यदि कोई ऑपरेटिंग सिस्टम त्रुटि हुई तो तीसरा पूर्णांक -1 है, या अन्यथा 0 है। अगर
तीसरा पूर्णांक 0 था, चौथा पूर्णांक स्पॉन्ड द्वारा लौटाई गई स्थिति है
प्रक्रिया। यदि तीसरा पूर्णांक -1 था, तो चौथा पूर्णांक त्रुटिपूर्ण सेट का मान है
ऑपरेटिंग सिस्टम द्वारा. वैश्विक वैरिएबल एररकोड भी सेट है।
अतिरिक्त तत्व रिटर्न वैल्यू के अंत में दिखाई दे सकते हैं प्रतीक्षा. एक
वैकल्पिक पाँचवाँ तत्व सूचना के एक वर्ग की पहचान करता है। वर्तमान में, एकमात्र
इस तत्व का संभावित मान CHILDKILLED है, ऐसी स्थिति में अगले दो मान हैं
सी-शैली सिग्नल नाम और एक संक्षिप्त पाठ्य विवरण।
RSI -i ध्वज नामित spawn_id (NOT) के अनुरूप प्रतीक्षा करने की प्रक्रिया की घोषणा करता है
प्रक्रिया आईडी). SIGCHLD हैंडलर के अंदर, किसी भी उत्पन्न होने की प्रतीक्षा करना संभव है
स्पॉन आईडी -1 का उपयोग करके प्रक्रिया करें।
RSI -नहीं रुको ध्वज के संकेत के साथ प्रतीक्षा तुरंत वापस आने का कारण बनती है
सफल प्रतीक्षा. जब प्रक्रिया समाप्त हो जाएगी (बाद में), तो यह स्वचालित रूप से गायब हो जाएगी
स्पष्ट प्रतीक्षा की आवश्यकता के बिना।
RSI प्रतीक्षा कमांड का उपयोग "-i" तर्कों का उपयोग करके फोर्कड प्रक्रिया के लिए प्रतीक्षा करने के लिए भी किया जा सकता है
-1"। उत्पन्न प्रक्रियाओं के साथ इसके उपयोग के विपरीत, इस आदेश को किसी भी समय निष्पादित किया जा सकता है
समय। किस प्रक्रिया से लाभ मिलता है, इस पर कोई नियंत्रण नहीं है। हालाँकि, वापसी मूल्य
प्रक्रिया आईडी के लिए जाँच की जा सकती है।
पुस्तकालय
एक्सपेक्ट स्वचालित रूप से एक्सपेक्ट स्क्रिप्ट के लिए दो अंतर्निहित लाइब्रेरी के बारे में जानता है। ये हैं
चर exp_library और exp_exec_library में नामित निर्देशिकाओं द्वारा परिभाषित। दोनों
इनमें उपयोगिता फ़ाइलें शामिल होती हैं जिनका उपयोग अन्य स्क्रिप्ट द्वारा किया जा सकता है।
exp_library में आर्किटेक्चर-स्वतंत्र फ़ाइलें शामिल हैं। exp_exec_library शामिल है
आर्किटेक्चर-निर्भर फ़ाइलें। आपके सिस्टम के आधार पर, दोनों निर्देशिकाएं पूरी तरह से हो सकती हैं
खाली। फ़ाइल $exp_exec_library/cat-buffers का अस्तित्व बताता है कि क्या आपका
/बिन/बिल्ली डिफ़ॉल्ट रूप से बफ़र्स।
सुंदर-मुद्रण
प्रिटी-प्रिंटिंग के लिए एक वीग्रिंड परिभाषा उपलब्ध है की अपेक्षा स्क्रिप्ट. वीग्राइंड मानकर
परिभाषा के साथ आपूर्ति की गई की अपेक्षा वितरण सही ढंग से स्थापित है, आप इसका उपयोग कर सकते हैं
के रूप में:
vgrind -leexpect फ़ाइल
उदाहरण
बहुतों को यह स्पष्ट नहीं है कि मैन पेज में बताई गई हर चीज़ को एक साथ कैसे रखा जाए। मैं
आपको उदाहरण निर्देशिका में उदाहरणों को पढ़ने और आज़माने के लिए प्रोत्साहित करें की अपेक्षा
वितरण। उनमें से कुछ वास्तविक कार्यक्रम हैं. अन्य केवल निश्चितता के उदाहरण मात्र हैं
तकनीकें, और निश्चित रूप से, कुछ त्वरित हैक हैं। INSTALL फ़ाइल में एक त्वरित है
इन कार्यक्रमों का अवलोकन.
RSI की अपेक्षा कागजात (यह भी देखें) भी उपयोगी हैं। जबकि कुछ पेपर सिंटैक्स का उपयोग करते हैं
एक्सपेक्ट के पुराने संस्करणों के अनुरूप, संलग्न तर्क अभी भी मान्य हैं
और इस मैन पेज से कहीं अधिक विस्तार में जाएं।
चेतावनियां
एक्सटेंशन एक्सपेक्ट के कमांड नामों से टकरा सकते हैं। उदाहरण के लिए, भेजें Tk द्वारा परिभाषित किया गया है
बिल्कुल अलग उद्देश्य के लिए। इस कारण से, अधिकांश की अपेक्षा आदेश भी हैं
"exp_XXXX" के रूप में उपलब्ध है। "एक्सप", "इंटर", "स्पॉन" से शुरू होने वाले कमांड और वेरिएबल
और "टाइमआउट" में उपनाम नहीं हैं। यदि आपको इसकी आवश्यकता हो तो विस्तारित कमांड नामों का उपयोग करें
वातावरण के बीच अनुकूलता.
की अपेक्षा दायरे के बारे में काफी उदारवादी दृष्टिकोण अपनाता है। विशेष रूप से, वेरिएबल कमांड द्वारा पढ़े जाते हैं
के लिए विशिष्ट की अपेक्षा कार्यक्रम पहले स्थानीय दायरे से मांगा जाएगा, और यदि नहीं
वैश्विक दायरे में पाया गया। उदाहरण के लिए, इससे "वैश्विक टाइमआउट" रखने की आवश्यकता समाप्त हो जाती है
आपके द्वारा लिखी जाने वाली प्रत्येक प्रक्रिया में इसका उपयोग होता है उम्मीद. दूसरी ओर, लिखे गए चर हैं
हमेशा स्थानीय दायरे में (जब तक कि कोई "वैश्विक" आदेश जारी न किया गया हो)। सबसे आम
यह समस्या तब उत्पन्न होती है जब स्पॉन को एक प्रक्रिया में निष्पादित किया जाता है। प्रक्रिया के बाहर,
स्पॉन_आईडी अब अस्तित्व में नहीं है, इसलिए उत्पन्न प्रक्रिया अब केवल इसलिए पहुंच योग्य नहीं है
दायरे का. ऐसी प्रक्रिया में एक "ग्लोबल स्पॉन_आईडी" जोड़ें।
यदि आप मल्टीस्पॉनिंग क्षमता को सक्षम नहीं कर सकते हैं (यानी, आपका सिस्टम किसी का भी समर्थन नहीं करता है)।
चुनें (बीएसडी *.*), पोल (एसवीआर>2), न ही कुछ समतुल्य), की अपेक्षा ही कर सकेंगे
एक समय में एक ही प्रक्रिया को नियंत्रित करें। इस स्थिति में, सेट करने का प्रयास न करें स्पॉन_आईडी, और न ही
जब कोई प्रक्रिया चल रही हो तो क्या आपको निष्पादन के माध्यम से प्रक्रियाओं को निष्पादित करना चाहिए। आगे,
तुम नहीं कर पाओगे उम्मीद एकाधिक प्रक्रियाओं से (एक उपयोगकर्ता सहित)।
उसी समय।
टर्मिनल पैरामीटर स्क्रिप्ट पर बड़ा प्रभाव डाल सकते हैं। उदाहरण के लिए, यदि कोई स्क्रिप्ट लिखी जाती है
प्रतिध्वनि की तलाश करने के लिए, यदि प्रतिध्वनि बंद कर दी जाए तो यह गलत व्यवहार करेगा। इस कारण से, अपेक्षा करें
डिफ़ॉल्ट रूप से समझदार टर्मिनल पैरामीटर को बाध्य करता है। दुर्भाग्य से, इससे चीज़ें बन सकती हैं
अन्य कार्यक्रमों के लिए अप्रिय. उदाहरण के तौर पर, Emacs शेल "सामान्य" को बदलना चाहता है
मैपिंग: कैरिज-रिटर्न न्यूलाइन और इकोइंग के बजाय न्यूलाइन को न्यूलाइन में मैप किया जाता है
अक्षम है। यह किसी को इनपुट लाइन को संपादित करने के लिए ईमैक का उपयोग करने की अनुमति देता है। दुर्भाग्य से, उम्मीद है
संभवतः इसका अनुमान नहीं लगाया जा सकता.
आप अनुरोध कर सकते हैं कि एक्सपेक्ट टर्मिनल मापदंडों की अपनी डिफ़ॉल्ट सेटिंग को ओवरराइड न करे, लेकिन
ऐसे परिवेश के लिए स्क्रिप्ट लिखते समय आपको बहुत सावधान रहना चाहिए। के मामले में
ईमैक, इकोइंग और एंड-ऑफ़-लाइन मैपिंग जैसी चीज़ों पर निर्भर रहने से बचें।
तर्कों को स्वीकार करने वाले आदेश एक ही सूची में एकत्रित हो गए (द उम्मीद वेरिएंट और
बातचीत) यह तय करने के लिए एक अनुमान का उपयोग करें कि सूची वास्तव में एक तर्क है या कई।
अनुमानी केवल उस स्थिति में विफल हो सकता है जब सूची वास्तव में एकल का प्रतिनिधित्व करती हो
तर्क जिसमें एकाधिक एम्बेडेड \n हैं और उनके बीच गैर-व्हाट्सएप वर्ण हैं।
यह पर्याप्त रूप से असंभव प्रतीत होता है, हालाँकि तर्क "-नोब्रेस" का उपयोग बल देने के लिए किया जा सकता है
एकल तर्क को एकल तर्क के रूप में संभाला जाना चाहिए। इसका प्रयोग संभवतः इसके साथ किया जा सकता है
मशीन-जनरेटेड एक्सपेक्ट कोड। इसी तरह, -ब्रेस एकल तर्क को इस रूप में संभालने के लिए बाध्य करता है
एकाधिक पैटर्न/क्रियाएँ।
onworks.net सेवाओं का उपयोग करके ऑनलाइन उम्मीद का उपयोग करें