निष्पादन - लिनक्स कमांड - यूनिक्स कमांड

exec - subprocess (es) को आमंत्रित करें

सार

निष्पादित करना स्विच ? Arg ? Arg ... ?

विवरण

यह आदेश निष्पादित करने के लिए एक या अधिक उपप्रोसेसरों के विनिर्देश के रूप में अपने तर्कों का व्यवहार करता है। तर्क मानक शेल पाइपलाइन का रूप लेते हैं जहां प्रत्येक तर्क कमांड का एक शब्द बन जाता है, और प्रत्येक विशिष्ट कमांड एक उपप्रकार बन जाता है।

यदि प्रारंभ करने के लिए प्रारंभिक तर्क प्रारंभ होते हैं - तो उन्हें कमांड लाइन स्विच के रूप में माना जाता है और वे पाइपलाइन विनिर्देश का हिस्सा नहीं हैं। निम्नलिखित स्विच वर्तमान में समर्थित हैं:

-keepnewline

पाइपलाइन के आउटपुट में पिछली नई लाइन रखती है। आम तौर पर एक पिछली नई लाइन हटा दी जाएगी।

-

स्विच के अंत को चिह्नित करता है। इस के बाद तर्क को पहले तर्क के रूप में माना जाएगा, भले ही यह किसी के साथ शुरू होता है।

यदि एक तर्क (या तर्क की जोड़ी) में नीचे वर्णित रूपों में से एक है तो यह उपप्रोसेस (एसएस) के बीच इनपुट और आउटपुट के प्रवाह को नियंत्रित करने के लिए निष्पादन द्वारा उपयोग किया जाता है। इस तरह के तर्क subprocess (एसएस) को पारित नहीं किया जाएगा। '`< FileName ' 'जैसे रूपों में फ़ाइल नाम या तो' '<' 'से अलग तर्क में हो सकता है या उसी तर्क में बिना किसी हस्तक्षेप वाले स्थान ( यानी` `< fileName ' ') हो सकता है।

|

पाइपलाइन में अलग-अलग कमांड अलग करता है। पिछले कमांड के मानक आउटपुट को अगले कमांड के मानक इनपुट में पाइप किया जाएगा।

| और

पाइपलाइन में अलग-अलग कमांड अलग करता है। पिछले कमांड के मानक आउटपुट और मानक त्रुटि दोनों को अगले कमांड के मानक इनपुट में पाइप किया जाएगा। पुनर्निर्देशन का यह रूप 2> और> और जैसे रूपों को ओवरराइड करता है।

< fileName

फ़ाइल नाम द्वारा नामित फ़ाइल खोला गया है और पाइपलाइन में पहले कमांड के लिए मानक इनपुट के रूप में उपयोग किया जाता है।

<@ fileId

FileId एक खुली फ़ाइल के लिए पहचानकर्ता होना चाहिए, जैसे पिछले कॉल से वापसी मूल्य खोलने के लिए । यह पाइपलाइन में पहले कमांड के लिए मानक इनपुट के रूप में प्रयोग किया जाता है। फ़ाइल आईडी पढ़ने के लिए खोला जाना चाहिए।

<< मूल्य

मूल्य को अपने मानक इनपुट के रूप में पहले कमांड में पास किया जाता है।

> फ़ाइल नाम

अंतिम आदेश से मानक आउटपुट फ़ाइल नाम नाम की फ़ाइल पर रीडायरेक्ट किया गया है, इसकी पिछली सामग्री को ओवरराइट कर रहा है।

2> फ़ाइल नाम

पाइपलाइन में सभी आदेशों से मानक त्रुटि फ़ाइल नाम नाम की फ़ाइल पर रीडायरेक्ट की जाती है, इसकी पिछली सामग्री को ओवरराइट कर देती है।

> और फ़ाइल नाम

अंतिम आदेश से मानक आउटपुट और सभी आदेशों से मानक त्रुटि दोनों को फ़ाइल नाम नाम की फ़ाइल पर रीडायरेक्ट किया जाता है, इसकी पिछली सामग्री को ओवरराइट कर दिया जाता है।

>> फ़ाइल नाम

अंतिम आदेश से मानक आउटपुट फ़ाइल नाम नाम की फ़ाइल पर रीडायरेक्ट किया जाता है, इसे ओवरराइट करने के बजाए इसमें जोड़ना।

2 >> फ़ाइल नाम

पाइपलाइन में सभी आदेशों से मानक त्रुटि फ़ाइल नाम नाम की फ़ाइल पर रीडायरेक्ट की जाती है, इसे ओवरराइट करने के बजाय इसे जोड़ना।

>> और फ़ाइल नाम

अंतिम आदेश से मानक आउटपुट और सभी आदेशों से मानक त्रुटि दोनों फ़ाइल नाम नाम की फ़ाइल पर रीडायरेक्ट की जाती है, इसे ओवरराइट करने के बजाए इसमें जोड़ती है।

> @ fileId

FileId एक खुली फ़ाइल के लिए पहचानकर्ता होना चाहिए, जैसे पिछले कॉल से वापसी मूल्य खोलने के लिए । अंतिम आदेश से मानक आउटपुट फ़ाइल आईडी फ़ाइल पर रीडायरेक्ट किया गया है, जो लेखन के लिए खोला जाना चाहिए।

2> @ fileId

FileId एक खुली फ़ाइल के लिए पहचानकर्ता होना चाहिए, जैसे पिछले कॉल से वापसी मूल्य खोलने के लिए । पाइपलाइन में सभी आदेशों से मानक त्रुटि फ़ाइल आईडी फ़ाइल पर रीडायरेक्ट की जाती है । फ़ाइल लिखने के लिए खोला जाना चाहिए।

> और @ fileId

FileId एक खुली फ़ाइल के लिए पहचानकर्ता होना चाहिए, जैसे पिछले कॉल से वापसी मूल्य खोलने के लिए । अंतिम आदेश से मानक आउटपुट और सभी आदेशों से मानक त्रुटि दोनों फ़ाइल फ़ाइल में रीडायरेक्ट की जाती हैं । फ़ाइल लिखने के लिए खोला जाना चाहिए।

यदि मानक आउटपुट को रीडायरेक्ट नहीं किया गया है तो निष्पादन कमांड पाइपलाइन में अंतिम कमांड से मानक आउटपुट देता है। यदि पाइपलाइन में से किसी भी आदेश असामान्य रूप से बाहर निकलते हैं या मारे जाते हैं या निलंबित होते हैं, तो निष्पादन एक त्रुटि लौटाएगा और त्रुटि संदेश में पाइपलाइन के आउटपुट को असामान्य समाप्ति का वर्णन करने वाले त्रुटि संदेशों के बाद शामिल किया जाएगा; त्रुटि कोड चर के सामने आने वाली अंतिम असामान्य समाप्ति के बारे में अतिरिक्त जानकारी होगी। यदि कोई भी आदेश अपनी मानक त्रुटि फ़ाइल को लिखता है और वह मानक त्रुटि पुनर्निर्देशित नहीं होती है, तो निष्पादन एक त्रुटि लौटाएगा; त्रुटि संदेश में पाइपलाइन के मानक आउटपुट शामिल होंगे, इसके बाद असामान्य समाप्ति (यदि कोई हो) के बारे में संदेश, मानक त्रुटि आउटपुट के बाद।

यदि परिणाम या त्रुटि संदेश का अंतिम अक्षर एक नई रेखा है तो उस वर्ण को आमतौर पर परिणाम या त्रुटि संदेश से हटा दिया जाता है। यह अन्य टीसीएल रिटर्न वैल्यू के अनुरूप है, जो आमतौर पर न्यूलाइन के साथ समाप्त नहीं होता है। हालांकि, अगर - रखरखाव निर्दिष्ट किया गया है तो पीछे की रेखा को बरकरार रखा गया है।

यदि मानक इनपुट `` <'' या `` << 'या `` @' 'के साथ रीडायरेक्ट नहीं किया गया है, तो पाइपलाइन में पहले कमांड के लिए मानक इनपुट एप्लिकेशन के वर्तमान मानक इनपुट से लिया जाता है।

यदि अंतिम तर्क `` & 'है तो पाइपलाइन पृष्ठभूमि में निष्पादित की जाएगी। इस मामले में exec कमांड एक सूची लौटाएगा जिसका तत्व पाइपलाइन में सभी उपप्रोसेसेस के लिए प्रक्रिया पहचानकर्ता हैं। पाइपलाइन में अंतिम कमांड से मानक आउटपुट एप्लिकेशन के मानक आउटपुट पर जायेगा यदि इसे रीडायरेक्ट नहीं किया गया है, और पाइपलाइन में सभी आदेशों से त्रुटि आउटपुट एप्लिकेशन की मानक त्रुटि फ़ाइल पर रीडायरेक्ट किए जाएंगे।

प्रत्येक कमांड में पहला शब्द कमांड नाम के रूप में लिया जाता है; tilde-substitution इस पर किया जाता है, और यदि परिणाम में कोई कमी नहीं होती है तो PATH पर्यावरण चर में निर्देशिका को दिए गए नाम से निष्पादन योग्य के लिए खोजा जाता है। यदि नाम में स्लैश होता है तो उसे वर्तमान निर्देशिका से निष्पादन योग्य निष्पादन योग्य संदर्भित करना होगा। आदेशों के तर्कों पर कोई `` ग्लोब 'विस्तार या अन्य शैल-जैसे प्रतिस्थापन नहीं किए जाते हैं।

पोर्टेबिलिटी मुद्दे

विंडोज़ (सभी संस्करण)

'` @ FileId ' नोटेशन का उपयोग करके, सॉकेट से पढ़ना या लिखना, काम नहीं करता है। सॉकेट से पढ़ते समय, 16-बिट डॉस एप्लिकेशन लटका होगा और 32-बिट एप्लिकेशन तुरंत फ़ाइल के साथ वापस आ जाएगा। जब किसी भी प्रकार का एप्लिकेशन किसी सॉकेट को लिखता है, तो जानकारी को कंसोल पर भेज दिया जाता है, यदि कोई मौजूद है, या त्याग दिया गया है।

कंसोल टेक्स्ट विजेट वास्तविक मानक आईओ क्षमताओं को प्रदान नहीं करता है। कम से कम, मानक इनपुट से रीडायरेक्ट करते समय, सभी एप्लिकेशन तत्काल अंत-फ़ाइल देखेंगे; मानक आउटपुट या मानक त्रुटि पर पुनर्निर्देशित जानकारी को त्याग दिया जाएगा।

या तो अग्रेषित या पिछड़े स्लैश को टीसीएल कमांड के तर्कों के लिए पथ विभाजक के रूप में स्वीकार किया जाता है। किसी एप्लिकेशन को निष्पादित करते समय, एप्लिकेशन के लिए निर्दिष्ट पथ नाम में पथ विभाजक के रूप में आगे या पिछड़े स्लैश भी हो सकते हैं। ध्यान रखें, हालांकि, अधिकांश विंडोज अनुप्रयोग केवल आगे के स्लैश के साथ तर्क स्वीकार करते हैं जैसे विकल्प डिलीमीटर और पथ में बैकस्लाश। किसी एप्लिकेशन के लिए कोई भी तर्क जो आगे स्लैश के साथ पथ नाम निर्दिष्ट करता है, स्वचालित रूप से बैकस्लैश वर्ण का उपयोग करने के लिए परिवर्तित नहीं किया जाएगा। यदि किसी तर्क में पथ विभाजक के रूप में आगे की कमी होती है, तो प्रोग्राम के आधार पर इसे पथ नाम के रूप में पहचाना जा सकता है या नहीं।

इसके अतिरिक्त, 16-बिट डॉस या विंडोज 3.X एप्लिकेशन को कॉल करते समय, सभी पथ नामों को संक्षिप्त, क्रिप्टिक, पथ प्रारूप (उदाहरण के लिए, 'applbakery.default' 'के बजाय `` applba ~ 1.def' 'का उपयोग करना चाहिए। )।

पथ में पंक्ति में दो या अधिक आगे या पिछड़े स्लैश नेटवर्क पथ का संदर्भ लें। उदाहरण के लिए, रूट निर्देशिका सी का एक सरल संयोजन : / उपनिर्देशिका / विंडोज़ / सिस्टम के साथ सी: // विंडोज / सिस्टम (दो स्लेश एक साथ) उत्पन्न करेंगे, जो विंडोज़ नामक मशीन पर सिस्टम नामक माउंट प्वाइंट को संदर्भित करता है (और सी: / अनदेखा किया गया है), और सी: / विंडोज / सिस्टम के बराबर नहीं है , जो वर्तमान कंप्यूटर पर एक निर्देशिका का वर्णन करता है। पथ घटकों को संयोजित करने के लिए फ़ाइल में शामिल होने के लिए इस्तेमाल किया जाना चाहिए।

विंडोज एनटी

किसी एप्लिकेशन को निष्पादित करने का प्रयास करते समय, पहले निर्दिष्ट नाम के लिए exec पहले खोज करता है। फिर, क्रम में, .com , .exe , और .bat निर्दिष्ट नाम के अंत में जोड़े गए हैं और यह लंबे नाम की खोज करता है। यदि किसी एप्लिकेशन का नाम एप्लिकेशन नाम के हिस्से के रूप में निर्दिष्ट नहीं किया गया था, तो एप्लिकेशन का पता लगाने का प्रयास करते समय निम्न निर्देशिका स्वचालित रूप से खोजी जाती है:

निर्देशिका जिसमें से टीसीएल निष्पादन योग्य लोड किया गया था।
वर्तमान निर्देशिका।
विंडोज एनटी 32-बिट सिस्टम निर्देशिका।
विंडोज एनटी 16-बिट सिस्टम निर्देशिका।
विंडोज एनटी होम निर्देशिका।
पथ में सूचीबद्ध निर्देशिका।

शेल बिल्टिन कमांड जैसे डीआईआर और कॉपी को निष्पादित करने के लिए, कॉलर को वांछित कमांड में ' cmd.exe / c ' 'को प्रीपेड करना होगा।

विंडोज 95

किसी एप्लिकेशन को निष्पादित करने का प्रयास करते समय, पहले निर्दिष्ट नाम के लिए exec पहले खोज करता है। फिर, क्रम में, .com , .exe , और .bat निर्दिष्ट नाम के अंत में जोड़े गए हैं और यह लंबे नाम की खोज करता है। यदि किसी एप्लिकेशन का नाम एप्लिकेशन नाम के हिस्से के रूप में निर्दिष्ट नहीं किया गया था, तो एप्लिकेशन का पता लगाने का प्रयास करते समय निम्न निर्देशिका स्वचालित रूप से खोजी जाती है:

निर्देशिका जिसमें से टीसीएल निष्पादन योग्य लोड किया गया था।
वर्तमान निर्देशिका।
विंडोज 95 सिस्टम निर्देशिका।
विंडोज 95 होम निर्देशिका।
पथ में सूचीबद्ध निर्देशिका।

शेल बिल्टिन कमांड जैसे डीआईआर और प्रतिलिपि को निष्पादित करने के लिए, कॉलर को वांछित कमांड में ' command.com / c ' 'को प्रीपेड करना होगा।

एक बार 16-बिट डॉस एप्लिकेशन ने कंसोल से मानक इनपुट पढ़ा है और फिर छोड़ दिया है, बाद में 16-बिट डॉस अनुप्रयोगों को चलाए जाने वाले मानक इनपुट को पहले ही बंद कर दिया जाएगा। 32-बिट अनुप्रयोगों में यह समस्या नहीं है और 16-बिट डॉस एप्लिकेशन के बाद भी मानक इनपुट बंद होने के बाद भी सही ढंग से चल जाएगा। इस समय इस बग के लिए कोई ज्ञात कामकाज नहीं है।

एनयूएल के बीच पुनर्निर्देशन : डिवाइस और 16-बिट अनुप्रयोग हमेशा काम नहीं करता है। एनयूएल से रीडायरेक्ट करते समय : कुछ एप्लिकेशन लटका सकते हैं, अन्य को `0x01 'बाइट्स की अनंत धारा मिल जाएगी, और कुछ वास्तव में तुरंत एक त्वरित अंत फ़ाइल प्राप्त करेंगे; व्यवहार स्वयं अनुप्रयोग में संकलित कुछ पर निर्भर करता है। 4K से अधिक या फिर एनयूएल को रीडायरेक्ट करते समय : कुछ एप्लिकेशन लटकाए जाएंगे। 32-बिट अनुप्रयोगों के साथ उपरोक्त समस्याएं नहीं होती हैं।

सभी डॉस 16-बिट अनुप्रयोगों को समकालिक रूप से चलाया जाता है। एक पाइप से 16-बिट डॉस एप्लिकेशन में सभी मानक इनपुट एक अस्थायी फ़ाइल में एकत्र किया जाता है; 16-बिट डॉस एप्लिकेशन निष्पादन शुरू होने से पहले पाइप का दूसरा छोर बंद होना चाहिए। 16-बिट डॉस एप्लिकेशन से पाइप में सभी मानक आउटपुट या त्रुटि अस्थायी फ़ाइलों में एकत्र की जाती है; अस्थायी फ़ाइलों को पाइपलाइन के अगले चरण में रीडायरेक्ट करने से पहले एप्लिकेशन को समाप्त करना होगा। यह पाइप के कार्यान्वयन में विंडोज 95 बग के लिए एक कामकाज के कारण है, और यह है कि मानक विंडोज 95 डॉस खोल पाइप को कैसे संभालता है।

कमांड डॉट कॉम जैसे कुछ एप्लिकेशन, इंटरैक्टिव रूप से निष्पादित नहीं किए जाने चाहिए। वे अनुप्रयोग जो सीधे अपने मानक इनपुट से पढ़ने और उनके मानक आउटपुट में लिखने के बजाय कंसोल विंडो तक पहुंच सकते हैं, विफल हो सकते हैं, टीसीएल लटका सकते हैं, या सिस्टम को भी लटका सकते हैं यदि उनकी निजी कंसोल विंडो उनके लिए उपलब्ध नहीं है।

लबादा

निष्पादन आदेश लागू नहीं किया गया है और मैकिंतोश के तहत मौजूद नहीं है।

यूनिक्स

निष्पादन आदेश पूरी तरह कार्यात्मक है और वर्णन के अनुसार काम करता है।

यह भी देखें

त्रुटि (एन), खुला (एन)

कीवर्ड

निष्पादित करें, पाइपलाइन, पुनर्निर्देशन, उपप्रोसेसर

महत्वपूर्ण: यह देखने के लिए मैन कमांड ( % man ) का उपयोग करें कि आपके विशेष कंप्यूटर पर कमांड का उपयोग कैसे किया जाता है।