exec - subprocess (es) को आमंत्रित करें
सार
कार्यकारी? स्विच ? आर्ग ? तर्क … ?
विवरण
यह आदेश निष्पादित करने के लिए एक या अधिक उपप्रोसेसरों के विनिर्देश के रूप में अपने तर्कों का व्यवहार करता है। तर्क प्रत्येक मानक शेल पाइपलाइन का रूप लेते हैं जहां प्रत्येक आर्ग एक आदेश का एक शब्द बन जाता है, और प्रत्येक विशिष्ट आदेश एक उपप्रजाय बन जाता है।
यदि प्रारंभिक तर्ककार्यकारी के साथ शुरू- तब उन्हें कमांड लाइन स्विच के रूप में माना जाता है और वे पाइपलाइन विनिर्देश का हिस्सा नहीं हैं। निम्नलिखित स्विच वर्तमान में समर्थित हैं:
-keepnewline
पाइपलाइन के आउटपुट में पिछली नई लाइन रखती है। आम तौर पर एक पिछली नई लाइन हटा दी जाएगी।
--
स्विच के अंत को चिह्नित करता है। इस के बाद तर्क पहली के रूप में माना जाएगा आर्ग भले ही यह एक के साथ शुरू होता है-.
यदि एक आर्ग (या की जोड़ी आर्ग एस) के नीचे वर्णित रूपों में से एक है तो इसका उपयोग किया जाता हैकार्यकारी उपप्रोसेसर (एसएस) के बीच इनपुट और आउटपुट के प्रवाह को नियंत्रित करने के लिए। इस तरह के तर्क subprocess (एसएस) को पारित नहीं किया जाएगा। `` <जैसे रूपों में फ़ाइल का नाम '' फ़ाइल का नाम या तो '`<' 'से अलग तर्क में हो सकता है या उसी तर्क में बिना हस्तक्षेप वाले स्थान (यानी` `< फ़ाइल का नाम '').
|
पाइपलाइन में अलग-अलग कमांड अलग करता है। पिछले कमांड के मानक आउटपुट को अगले कमांड के मानक इनपुट में पाइप किया जाएगा।
|&
पाइपलाइन में अलग-अलग कमांड अलग करता है। पिछले कमांड के मानक आउटपुट और मानक त्रुटि दोनों को अगले कमांड के मानक इनपुट में पाइप किया जाएगा। पुनर्निर्देशन का यह रूप 2> और> और जैसे रूपों को ओवरराइड करता है।
< फ़ाइल का नाम
द्वारा नामित फ़ाइल फ़ाइल का नाम पाइपलाइन में पहले कमांड के लिए मानक इनपुट के रूप में खोला और उपयोग किया जाता है।
<@ fileId
FileId एक खुली फ़ाइल के लिए पहचानकर्ता होना चाहिए, जैसे पिछले कॉल से वापसी मूल्यखुला। यह पाइपलाइन में पहले कमांड के लिए मानक इनपुट के रूप में प्रयोग किया जाता है। FileId पढ़ने के लिए खोला जाना चाहिए।
<< मूल्य
मूल्य अपने मानक इनपुट के रूप में पहले कमांड को पारित किया जाता है।
> फ़ाइल का नाम
अंतिम आदेश से मानक आउटपुट नाम की फ़ाइल पर रीडायरेक्ट किया जाता है फ़ाइल का नाम , अपनी पिछली सामग्री को ओवरराइट कर रहा है।
2> फ़ाइल का नाम
पाइपलाइन में सभी आदेशों से मानक त्रुटि नाम की गई फ़ाइल पर रीडायरेक्ट की जाती है फ़ाइल का नाम , अपनी पिछली सामग्री को ओवरराइट कर रहा है।
>& फ़ाइल का नाम
अंतिम आदेश से मानक आउटपुट और सभी आदेशों से मानक त्रुटि दोनों नाम की गई फ़ाइल पर रीडायरेक्ट की जाती हैं फ़ाइल का नाम , अपनी पिछली सामग्री को ओवरराइट कर रहा है।
>> फ़ाइल का नाम
अंतिम आदेश से मानक आउटपुट नाम की फ़ाइल पर रीडायरेक्ट किया जाता है फ़ाइल का नाम , इसे ओवरराइट करने के बजाय इसे जोड़ना।
2>> फ़ाइल का नाम
पाइपलाइन में सभी आदेशों से मानक त्रुटि नाम की गई फ़ाइल पर रीडायरेक्ट की जाती है फ़ाइल का नाम , इसे ओवरराइट करने के बजाय इसे जोड़ना।
>>& फ़ाइल का नाम
अंतिम आदेश से मानक आउटपुट और सभी आदेशों से मानक त्रुटि दोनों नाम की गई फ़ाइल पर रीडायरेक्ट की जाती हैं फ़ाइल का नाम , इसे ओवरराइट करने के बजाय इसे जोड़ना।
>@ fileId
FileId एक खुली फ़ाइल के लिए पहचानकर्ता होना चाहिए, जैसे पिछले कॉल से वापसी मूल्यखुला। अंतिम आदेश से मानक आउटपुट को रीडायरेक्ट किया गया है fileId फाइल, जो लेखन के लिए खोला जाना चाहिए।
2>@ fileId
FileId एक खुली फ़ाइल के लिए पहचानकर्ता होना चाहिए, जैसे पिछले कॉल से वापसी मूल्यखुला। पाइपलाइन में सभी आदेशों से मानक त्रुटि को रीडायरेक्ट किया जाता है fileId फाइल है फ़ाइल लिखने के लिए खोला जाना चाहिए।
>&@ fileId
FileId एक खुली फ़ाइल के लिए पहचानकर्ता होना चाहिए, जैसे पिछले कॉल से वापसी मूल्यखुला। अंतिम आदेश से मानक आउटपुट और सभी आदेशों से मानक त्रुटि दोनों को रीडायरेक्ट किया जाता है fileId फाइल है फ़ाइल लिखने के लिए खोला जाना चाहिए।
यदि मानक आउटपुट को पुनर्निर्देशित नहीं किया गया है तोकार्यकारी आदेश पाइपलाइन में अंतिम कमांड से मानक आउटपुट देता है। यदि पाइपलाइन में से किसी भी आदेश असामान्य रूप से बाहर निकलते हैं या मारे जाते हैं या निलंबित होते हैं, तोकार्यकारी एक त्रुटि लौटाएगी और त्रुटि संदेश में पाइपलाइन के आउटपुट को असामान्य समाप्ति का वर्णन करने वाले त्रुटि संदेशों के बाद शामिल किया जाएगा;एरर कोड परिवर्तनीय में अंतिम असामान्य समाप्ति के बारे में अतिरिक्त जानकारी होगी। यदि कोई भी आदेश अपनी मानक त्रुटि फ़ाइल को लिखता है और उस मानक त्रुटि को पुनर्निर्देशित नहीं किया जाता है, तोकार्यकारी एक त्रुटि वापस कर देगा; त्रुटि संदेश में पाइपलाइन के मानक आउटपुट शामिल होंगे, इसके बाद असामान्य समाप्ति (यदि कोई हो) के बारे में संदेश, मानक त्रुटि आउटपुट के बाद।
यदि परिणाम या त्रुटि संदेश का अंतिम अक्षर एक नई रेखा है तो उस वर्ण को आमतौर पर परिणाम या त्रुटि संदेश से हटा दिया जाता है। यह अन्य टीसीएल रिटर्न वैल्यू के अनुरूप है, जो आमतौर पर न्यूलाइन के साथ समाप्त नहीं होता है। हालांकि, यदि-keepnewline निर्दिष्ट किया गया है कि पीछे की रेखा को बरकरार रखा गया है।
यदि मानक इनपुट `` <'' या `` << 'या `` @' 'के साथ रीडायरेक्ट नहीं किया गया है, तो पाइपलाइन में पहले कमांड के लिए मानक इनपुट एप्लिकेशन के वर्तमान मानक इनपुट से लिया जाता है।
अगर अंतिम आर्ग `` & '' है तो पाइपलाइन पृष्ठभूमि में निष्पादित की जाएगी। इस मामले मेंकार्यकारीआदेश एक सूची लौटाएगा जिसका तत्व पाइपलाइन में सभी उपप्रोसेसरों के लिए प्रक्रिया पहचानकर्ता हैं।पाइपलाइन में अंतिम कमांड से मानक आउटपुट एप्लिकेशन के मानक आउटपुट पर जायेगा यदि इसे रीडायरेक्ट नहीं किया गया है, और पाइपलाइन में सभी आदेशों से त्रुटि आउटपुट एप्लिकेशन की मानक त्रुटि फ़ाइल पर रीडायरेक्ट किए जाएंगे।
प्रत्येक कमांड में पहला शब्द कमांड नाम के रूप में लिया जाता है; tilde-substitution इस पर किया जाता है, और यदि परिणाम में कोई कमी नहीं होती है तो PATH पर्यावरण चर में निर्देशिका को दिए गए नाम से निष्पादन योग्य के लिए खोजा जाता है। यदि नाम में स्लैश होता है तो उसे वर्तमान निर्देशिका से निष्पादन योग्य निष्पादन योग्य संदर्भित करना होगा। आदेशों के तर्कों पर कोई `` ग्लोब 'विस्तार या अन्य शैल-जैसे प्रतिस्थापन नहीं किए जाते हैं।
पोर्टेबिलिटी मुद्दे
विंडोज (सभी संस्करण)
`` का उपयोग करके, सॉकेट से पढ़ना या लिखना@ fileId '' नोटेशन, काम नहीं करता है। सॉकेट से पढ़ते समय, 16-बिट डॉस एप्लिकेशन लटका होगा और 32-बिट एप्लिकेशन तुरंत फ़ाइल के साथ वापस आ जाएगा। जब किसी भी प्रकार का एप्लिकेशन किसी सॉकेट को लिखता है, तो जानकारी को कंसोल पर भेज दिया जाता है, यदि कोई मौजूद है, या त्याग दिया गया है।
कंसोल टेक्स्ट विजेट वास्तविक मानक आईओ क्षमताओं को प्रदान नहीं करता है। कम से कम, मानक इनपुट से रीडायरेक्ट करते समय, सभी एप्लिकेशन तत्काल अंत-फ़ाइल देखेंगे; मानक आउटपुट या मानक त्रुटि पर पुनर्निर्देशित जानकारी को त्याग दिया जाएगा।
या तो अग्रेषित या पिछड़े स्लैश को टीसीएल कमांड के तर्कों के लिए पथ विभाजक के रूप में स्वीकार किया जाता है। किसी एप्लिकेशन को निष्पादित करते समय, एप्लिकेशन के लिए निर्दिष्ट पथ नाम में पथ विभाजक के रूप में आगे या पिछड़े स्लैश भी हो सकते हैं। ध्यान रखें, हालांकि, अधिकांश विंडोज अनुप्रयोग केवल आगे के स्लैश के साथ तर्क स्वीकार करते हैं जैसे विकल्प डिलीमीटर और पथ में बैकस्लाश। किसी एप्लिकेशन के लिए कोई भी तर्क जो आगे स्लैश के साथ पथ नाम निर्दिष्ट करता है, स्वचालित रूप से बैकस्लैश वर्ण का उपयोग करने के लिए परिवर्तित नहीं किया जाएगा। यदि किसी तर्क में पथ विभाजक के रूप में आगे की कमी होती है, तो प्रोग्राम के आधार पर इसे पथ नाम के रूप में पहचाना जा सकता है या नहीं।
इसके अतिरिक्त, 16-बिट डॉस या विंडोज 3.X एप्लिकेशन को कॉल करते समय, सभी पथ नामों को संक्षिप्त, क्रिप्टिक, पथ प्रारूप (उदाहरण के लिए, 'applbakery.default' 'के बजाय `` applba ~ 1.def' 'का उपयोग करना चाहिए। )।
पथ में पंक्ति में दो या अधिक आगे या पिछड़े स्लैश नेटवर्क पथ का संदर्भ लें। उदाहरण के लिए, रूट निर्देशिका का एक सरल concatenationसी:/ एक उपनिर्देशिका के साथ/ विंडोज़ / प्रणाली निकलेगाग: // विंडोज़ / प्रणाली (दो एक साथ slashes), जो माउंट प्वाइंट को संदर्भित करता हैप्रणाली मशीन पर बुलायाविंडोज (और यहसी:/ अनदेखा किया जाता है), और इसके बराबर नहीं हैसी: / विंडोज़ / प्रणाली, जो वर्तमान कंप्यूटर पर एक निर्देशिका का वर्णन करता है।फ़ाइल में शामिल हों कमांड को पथ घटकों को संयोजित करने के लिए इस्तेमाल किया जाना चाहिए।
विंडोज एनटी
किसी एप्लिकेशन को निष्पादित करने का प्रयास करते समय,कार्यकारी पहली बार नाम के लिए खोज की गई थी जैसा कि यह निर्दिष्ट किया गया था। फिर, क्रम में,.com, ।प्रोग्राम फ़ाइल, तथा।बल्ला निर्दिष्ट नाम के अंत में संलग्न हैं और यह लंबे नाम की खोज करता है। यदि किसी एप्लिकेशन का नाम एप्लिकेशन नाम के हिस्से के रूप में निर्दिष्ट नहीं किया गया था, तो एप्लिकेशन का पता लगाने का प्रयास करते समय निम्न निर्देशिका स्वचालित रूप से खोजी जाती है:
निर्देशिका जिसमें से टीसीएल निष्पादन योग्य लोड किया गया था।वर्तमान निर्देशिका।विंडोज एनटी 32-बिट सिस्टम निर्देशिका।विंडोज एनटी 16-बिट सिस्टम निर्देशिका।विंडोज एनटी होम निर्देशिका।पथ में सूचीबद्ध निर्देशिका। शैल बिल्टिन कमांड जैसे निष्पादित करने के लिएdir तथाप्रतिलिपि, कॉलर को `` प्रीपेड करना होगाcmd.exe / सीवांछित आदेश के लिए। विंडोज 95 किसी एप्लिकेशन को निष्पादित करने का प्रयास करते समय,कार्यकारी पहली बार नाम के लिए खोज की गई थी जैसा कि यह निर्दिष्ट किया गया था। फिर, क्रम में,.com, ।प्रोग्राम फ़ाइल, तथा।बल्ला निर्दिष्ट नाम के अंत में संलग्न हैं और यह लंबे नाम की खोज करता है। यदि किसी एप्लिकेशन का नाम एप्लिकेशन नाम के हिस्से के रूप में निर्दिष्ट नहीं किया गया था, तो एप्लिकेशन का पता लगाने का प्रयास करते समय निम्न निर्देशिका स्वचालित रूप से खोजी जाती है: निर्देशिका जिसमें से टीसीएल निष्पादन योग्य लोड किया गया था।वर्तमान निर्देशिका।विंडोज 95 सिस्टम निर्देशिका।विंडोज 95 होम निर्देशिका।पथ में सूचीबद्ध निर्देशिका। शैल बिल्टिन कमांड जैसे निष्पादित करने के लिएdir तथाप्रतिलिपि, कॉलर को `` प्रीपेड करना होगाcommand.com / सीवांछित आदेश के लिए। एक बार 16-बिट डॉस एप्लिकेशन ने कंसोल से मानक इनपुट पढ़ा है और फिर छोड़ दिया है, बाद में 16-बिट डॉस अनुप्रयोगों को चलाए जाने वाले मानक इनपुट को पहले ही बंद कर दिया जाएगा। 32-बिट अनुप्रयोगों में यह समस्या नहीं है और 16-बिट डॉस एप्लिकेशन के बाद भी मानक इनपुट बंद होने के बाद भी सही ढंग से चल जाएगा। इस समय इस बग के लिए कोई ज्ञात कामकाज नहीं है। के बीच पुनर्निर्देशनNUL: डिवाइस और 16-बिट एप्लिकेशन हमेशा काम नहीं करता है। से रीडायरेक्ट करते समयNUL:, कुछ एप्लिकेशन लटका सकते हैं, अन्य को `0x01 'बाइट्स की अनंत धारा मिल जाएगी, और कुछ वास्तव में तुरंत एक त्वरित अंत फ़ाइल प्राप्त करेंगे; व्यवहार स्वयं अनुप्रयोग में संकलित कुछ पर निर्भर करता है। 4K से अधिक या उससे अधिक को पुनर्निर्देशित करते समयNUL:, कुछ अनुप्रयोग लटकाएंगे। 32-बिट अनुप्रयोगों के साथ उपरोक्त समस्याएं नहीं होती हैं। सभी डॉस 16-बिट अनुप्रयोगों को समकालिक रूप से चलाया जाता है। एक पाइप से 16-बिट डॉस एप्लिकेशन में सभी मानक इनपुट एक अस्थायी फ़ाइल में एकत्र किया जाता है; 16-बिट डॉस एप्लिकेशन निष्पादन शुरू होने से पहले पाइप का दूसरा छोर बंद होना चाहिए।16-बिट डॉस एप्लिकेशन से पाइप में सभी मानक आउटपुट या त्रुटि अस्थायी फ़ाइलों में एकत्र की जाती है; अस्थायी फ़ाइलों को पाइपलाइन के अगले चरण में रीडायरेक्ट करने से पहले एप्लिकेशन को समाप्त करना होगा। यह पाइप के कार्यान्वयन में विंडोज 95 बग के लिए एक कामकाज के कारण है, और यह है कि मानक विंडोज 95 डॉस खोल पाइप को कैसे संभालता है। कुछ अनुप्रयोग, जैसे किcommand.com, interactively निष्पादित नहीं किया जाना चाहिए। वे अनुप्रयोग जो सीधे अपने मानक इनपुट से पढ़ने और उनके मानक आउटपुट में लिखने के बजाय कंसोल विंडो तक पहुंच सकते हैं, विफल हो सकते हैं, टीसीएल लटका सकते हैं, या सिस्टम को भी लटका सकते हैं यदि उनकी निजी कंसोल विंडो उनके लिए उपलब्ध नहीं है। लबादा कार्यकारी आदेश लागू नहीं किया गया है और मैकिंटोश के तहत मौजूद नहीं है। यूनिक्स कार्यकारी आदेश पूरी तरह कार्यात्मक है और वर्णित के रूप में काम करता है। त्रुटि (एन), खुला (एन) निष्पादित करें, पाइपलाइन, पुनर्निर्देशन, उपप्रोसेसर जरूरी: उपयोग आदमी आदेश ( % आदमी ) यह देखने के लिए कि आपके विशेष कंप्यूटर पर कमांड का उपयोग कैसे किया जाता है। यह भी देखें
कीवर्ड




