श - लिनक्स कमांड - यूनिक्स कमांड

नाम

बैश - जीएनयू बोर्न-फिर शेल

SYNOPSIS

बैश [विकल्प] [फाइल]

विवरण

बैश एक sh -compatible कमांड भाषा दुभाषिया है जो मानक इनपुट या फ़ाइल से पढ़ने वाले आदेश निष्पादित करता है। बैश में कॉर्न और सी शैल ( ksh और csh ) से उपयोगी विशेषताओं को भी शामिल किया गया है।

बैश का उद्देश्य आईईईई पॉज़िक्स शैल और टूल्स स्पेसिफिकेशन (आईईईई वर्किंग ग्रुप 1003.2) का एक अनुरूप कार्यान्वयन होना है।

विकल्प

सेट बिल्टिन कमांड के विवरण में प्रलेखित सिंगल-कैरेक्टर शैल विकल्पों के अतिरिक्त, बैश निम्न विकल्पों को व्याख्या करता है जब इसे लागू किया जाता है:

-सी स्ट्रिंग

यदि -c विकल्प मौजूद है, तो स्ट्रिंग से कमांड पढ़े जाते हैं। यदि स्ट्रिंग के बाद तर्क हैं, तो उन्हें $ 0 से शुरू होने वाले स्थितित्मक पैरामीटर को असाइन किया जाता है।

-मैं

यदि -i विकल्प मौजूद है, तो खोल इंटरैक्टिव है

-l

बैश कार्य करें जैसे कि इसे लॉगिन खोल के रूप में बुलाया गया था (नीचे INVOCATION देखें)।

-r

यदि -r विकल्प मौजूद है, तो खोल प्रतिबंधित हो जाता है (नीचे प्रतिबंधित शेल देखें)।

-s

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

डी

$ से पहले सभी डबल-उद्धृत तारों की एक सूची मानक आउटपुट पर मुद्रित होती है। ये तार हैं जो भाषा अनुवाद के अधीन हैं जब वर्तमान लोकेल सी या पॉज़िक्स नहीं है । यह -n विकल्प का तात्पर्य है; कोई आदेश निष्पादित नहीं किया जाएगा।

[- +] ओ [ shopt_option ]

shopt_option दुकान में निर्मित शेल विकल्पों में से एक है (नीचे शेल बिल्टिन कमांड देखें)। अगर shopt_option मौजूद है, -O उस विकल्प का मान सेट करता है; + ओ इसे unsets। अगर shopt_option की आपूर्ति नहीं की जाती है, तो दुकान द्वारा स्वीकार किए गए खोल विकल्पों के नाम और मान मानक आउटपुट पर मुद्रित होते हैं। यदि आमंत्रण विकल्प + ओ है , तो आउटपुट को प्रारूप में प्रदर्शित किया जाता है जिसे इनपुट के रूप में पुन: उपयोग किया जा सकता है।

- विकल्पों के अंत को संकेत देता है और आगे विकल्प प्रसंस्करण अक्षम करता है। के बाद किसी भी तर्क - फ़ाइल नाम और तर्क के रूप में माना जाता है। एक तर्क - के बराबर है -

बैश भी कई बहु-चरित्र विकल्पों का व्याख्या करता है। सिंगल-कैरेक्टर विकल्पों को पहचानने से पहले ये विकल्प कमांड लाइन पर दिखाई देना चाहिए।

--dump-पो-तार

समकक्ष टू- डी , लेकिन आउटपुट जीएनयू गेटटेक्स्ट पीओ (पोर्टेबल ऑब्जेक्ट) फ़ाइल प्रारूप में है।

--dump-तार

समकक्ष- डी

--मदद

मानक आउटपुट पर एक उपयोग संदेश प्रदर्शित करें और सफलतापूर्वक बाहर निकलें।

--init-file फ़ाइल

- आरसीएफ फाइल

शैल इंटरैक्टिव होने पर मानक व्यक्तिगत प्रारंभिक फ़ाइल ~ / .bashrc की बजाय फ़ाइल से कमांड निष्पादित करें (नीचे INVOCATION देखें)।

--लॉग इन करें

समकक्ष -एल

--noediting

खोल इंटरैक्टिव होने पर कमांड लाइनों को पढ़ने के लिए जीएनयू रीडलाइन लाइब्रेरी का उपयोग न करें।

--noprofile

सिस्टम-व्यापी स्टार्टअप फ़ाइल / आदि / प्रोफ़ाइल या व्यक्तिगत प्रारंभिक फ़ाइलों में से कोई भी ~ / .bash_profile , ~ / .bash_login , या ~ / profile को न पढ़ें । डिफ़ॉल्ट रूप से, बैश इन फ़ाइलों को तब लॉगिन करता है जब इसे लॉगिन खोल के रूप में बुलाया जाता है (नीचे INVOCATION देखें)।

--norc

शैल इंटरैक्टिव होने पर व्यक्तिगत प्रारंभिक फ़ाइल ~ / .bashrc को पढ़ और निष्पादित न करें। शेल को श के रूप में बुलाया जाता है, तो यह विकल्प डिफ़ॉल्ट रूप से चालू होता है।

--posix

मानक ( पॉज़िक्स मोड ) से मेल खाने के लिए POSIX 1003.2 मानक से डिफ़ॉल्ट ऑपरेशन भिन्न होने पर बैश के व्यवहार को बदलें।

--वर्जित

खोल प्रतिबंधित हो जाता है (नीचे प्रतिबंधित शेल देखें)।

--rpm-की आवश्यकता है

खोल स्क्रिप्ट चलाने के लिए आवश्यक फ़ाइलों की सूची तैयार करें। यह '-n' का तात्पर्य है और संकलन समय त्रुटि जांच जांच के समान सीमाओं के अधीन है; बैकटीक्स, [] परीक्षण, और evals को पार्स नहीं किया गया है, इसलिए कुछ निर्भरताओं को याद किया जा सकता है। --verbose समतुल्य से -v

--version

मानक आउटपुट पर बैश के इस उदाहरण के लिए संस्करण जानकारी दिखाएं और सफलतापूर्वक बाहर निकलें।

ARGUMENTS

यदि विकल्प प्रसंस्करण के बाद तर्क रहते हैं, और न तो -सी और न ही विकल्प प्रदान किया गया है, तो पहला तर्क शेल कमांड वाले फ़ाइल का नाम माना जाता है। यदि इस फैशन में बैश लगाया जाता है, तो $ 0 फ़ाइल के नाम पर सेट होता है, और स्थितित्मक पैरामीटर शेष तर्कों पर सेट होते हैं। बैश इस फ़ाइल से कमांड को पढ़ता है और निष्पादित करता है, फिर बाहर निकलता है। बैश की निकास स्थिति स्क्रिप्ट में निष्पादित अंतिम आदेश की निकास स्थिति है। यदि कोई आदेश निष्पादित नहीं किया जाता है, तो बाहर निकलने की स्थिति 0 है। वर्तमान निर्देशिका में फ़ाइल को खोलने के लिए पहले प्रयास किया जाता है, और यदि कोई फ़ाइल नहीं मिलती है, तो खोल स्क्रिप्ट के लिए PATH में निर्देशिकाओं की खोज करता है।

मंगलाचरण

एक लॉगिन खोल वह है जिसका तर्क शून्य का पहला अक्षर एक है - या एक --login विकल्प के साथ शुरू हुआ।

एक इंटरैक्टिव खोल एक गैर-विकल्प तर्क के बिना शुरू किया जाता है और -सी विकल्प के बिना जिसका मानक इनपुट और आउटपुट टर्मिनलों से जुड़ा होता है (जैसा कि इसाटी (3) द्वारा निर्धारित किया गया है), या एक -i विकल्प के साथ शुरू हुआ है। पीएस 1 सेट है और $ - इसमें शामिल है यदि बैश इंटरैक्टिव है, तो इस स्थिति का परीक्षण करने के लिए शेल स्क्रिप्ट या स्टार्टअप फ़ाइल की इजाजत देता है।

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

जब बैश को एक इंटरैक्टिव लॉगिन शेल के रूप में बुलाया जाता है, या --login विकल्प के साथ एक गैर-इंटरैक्टिव खोल के रूप में, यह फ़ाइल फ़ाइल / etc / प्रोफ़ाइल से कमांड को पढ़ता है और निष्पादित करता है, अगर वह फ़ाइल मौजूद है। उस फ़ाइल को पढ़ने के बाद, यह उस क्रम में ~ / .bash_profile , ~ / .bash_login , और ~ /profile की तलाश करता है , और मौजूद पहले से कमांड को पढ़ता है और निष्पादित करता है और पठनीय है। जब इस व्यवहार को रोकने के लिए खोल शुरू हो जाती है तो --noprofile विकल्प का उपयोग किया जा सकता है।

जब एक लॉगिन खोल निकलता है, तो बैश फ़ाइल ~ / .bash_logout से आदेशों को पढ़ता है और निष्पादित करता है, यदि यह मौजूद है।

जब एक इंटरैक्टिव खोल जो लॉगिन शेल नहीं है, तो बैश पढ़ता है और ~ / .bashrc से कमांड निष्पादित करता है, अगर वह फ़ाइल मौजूद है। यह --norc विकल्प का उपयोग करके अवरुद्ध हो सकता है। --rcfile फ़ाइल विकल्प ~ / .bashrc की बजाय फ़ाइल से कमांड को पढ़ने और निष्पादित करने के लिए बाश को मजबूर करेगा।

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

अगर [-एन "$ BASH_ENV"]; फिर । "$ BASH_ENV"; फाई

लेकिन PATH चर का मान फ़ाइल नाम की खोज के लिए उपयोग नहीं किया जाता है।

यदि नाम sh के साथ बाश लगाया जाता है, तो यह संभवतः जितना संभव हो सके sh के ऐतिहासिक संस्करणों के स्टार्टअप व्यवहार की नकल करने की कोशिश करता है, जबकि POSIX मानक के अनुरूप भी। जब एक इंटरैक्टिव लॉगिन खोल के रूप में या --login विकल्प के साथ एक गैर-इंटरैक्टिव खोल के रूप में बुलाया जाता है, तो यह पहले उस क्रम में / etc / profile और ~ / profile से आदेशों को पढ़ने और निष्पादित करने का प्रयास करता है। इस व्यवहार को रोकने के लिए --noprofile विकल्प का उपयोग किया जा सकता है। नाम sh के साथ एक इंटरैक्टिव खोल के रूप में बुलाए जाने पर , बैश वैरिएबल एनएनवी की तलाश करता है , अगर इसे परिभाषित किया जाता है तो इसका मूल्य बढ़ाता है, और विस्तारित मान को फ़ाइल के नाम के रूप में पढ़ने और निष्पादित करने के लिए उपयोग करता है। चूंकि sh के रूप में बुलाया गया खोल किसी भी अन्य स्टार्टअप फ़ाइलों से कमांड को पढ़ने और निष्पादित करने का प्रयास नहीं करता है, तो --rcfile विकल्प का कोई प्रभाव नहीं पड़ता है। नाम sh के साथ बुलाया गया एक गैर-इंटरैक्टिव खोल किसी अन्य स्टार्टअप फ़ाइलों को पढ़ने का प्रयास नहीं करता है। जब sh के रूप में बुलाया जाता है , स्टार्टअप फ़ाइलों को पढ़ने के बाद बैश पॉज़िक्स मोड में प्रवेश करता है।

जब पॉज़िक्स मोड में बैश प्रारंभ होता है, जैसा कि --posix कमांड लाइन विकल्प के साथ, यह स्टार्टअप फ़ाइलों के लिए POSIX मानक का पालन करता है। इस मोड में, इंटरैक्टिव शैल ENV चर का विस्तार करते हैं और कमांड को उस फ़ाइल से पढ़ और निष्पादित किया जाता है जिसका नाम विस्तारित मान है। कोई अन्य स्टार्टअप फाइलें पढ़ी नहीं जाती हैं।

बैश यह निर्धारित करने का प्रयास करता है कि यह दूरस्थ शेल डिमन द्वारा चलाया जा रहा है, आमतौर पर rshd । यदि bash निर्धारित करता है कि यह rshd द्वारा चलाया जा रहा है, तो यह ~ / .bashrc से कमांड को पढ़ता है और निष्पादित करता है, अगर वह फ़ाइल मौजूद है और पठनीय है। यदि यह sh के रूप में बुलाया जाता है तो यह ऐसा नहीं करेगा। --norc विकल्प का उपयोग इस व्यवहार को बाधित करने के लिए किया जा सकता है, और --rcfile विकल्प का उपयोग किसी अन्य फ़ाइल को पढ़ने के लिए मजबूर करने के लिए किया जा सकता है, लेकिन rshd आमतौर पर उन विकल्पों के साथ खोल को नहीं बुलाता है या उन्हें निर्दिष्ट करने की अनुमति नहीं देता है।

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

परिभाषाएं

निम्नलिखित परिभाषाओं का उपयोग इस दस्तावेज़ के बाकी हिस्सों में किया जाता है।

रिक्त

एक स्थान या टैब।

शब्द

शैल द्वारा एक इकाई के रूप में माना जाने वाले वर्णों का एक अनुक्रम। टोकन के रूप में भी जाना जाता है।

नाम

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

metacharacter

एक चरित्र जो, जब unquoted, शब्दों को अलग करता है। निम्न में से एक:

| &; () <> स्पेस टैब

नियंत्रण ऑपरेटर

एक टोकन जो नियंत्रण समारोह करता है। यह निम्नलिखित प्रतीकों में से एक है:

|| & &&; ;; () | <न्यू लाइन>

सुरक्षित शब्द

संरक्षित शब्द ऐसे शब्द होते हैं जिनके पास खोल का विशेष अर्थ होता है। निम्नलिखित शब्द आरक्षित के रूप में पहचाने जाते हैं जब अनिश्चित और या तो एक साधारण कमांड का पहला शब्द (नीचे शेल ग्रैमर देखें) या किसी मामले के तीसरे शब्द या कमांड के लिए:

! यदि कार्य में {} समय [[]] तब तक चयन में अगर कार्य के लिए esac fi esf fi किया जाता है

शेल ग्रमर

सरल आदेश

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

एक साधारण कमांड का रिटर्न वैल्यू इसकी निकास स्थिति है, या 128+ एन अगर कमांड को कमांड द्वारा समाप्त किया जाता है।

पाइपलाइन

एक पाइपलाइन चरित्र द्वारा अलग किए गए एक या अधिक कमांड का अनुक्रम है । पाइपलाइन के लिए प्रारूप है:

[ समय [ -पी ]] [! ] कमांड [ | कमांड 2 ...]

कमांड का मानक आउटपुट पाइप के माध्यम से कमांड 2 के मानक इनपुट में जुड़ा हुआ है । यह कनेक्शन कमांड द्वारा निर्दिष्ट किसी भी पुनर्निर्देशन से पहले किया जाता है (नीचे लालसा देखें)।

अगर आरक्षित शब्द ! एक पाइपलाइन से पहले, उस पाइपलाइन की निकास स्थिति अंतिम कमांड की निकास स्थिति का तार्किक नहीं है। अन्यथा, पाइपलाइन की स्थिति अंतिम कमांड की निकास स्थिति है। एक मूल्य वापस करने से पहले खोलने के लिए पाइपलाइन में सभी आदेशों के लिए खोल प्रतीक्षा करता है।

यदि समय आरक्षित शब्द एक पाइपलाइन से पहले है, तो पाइपलाइन समाप्त होने पर समाप्त होने के साथ-साथ उपयोगकर्ता और सिस्टम निष्पादन द्वारा खपत प्रणाली की सूचना दी जाती है। -p विकल्प आउटपुट प्रारूप को POSIX द्वारा निर्दिष्ट में बदल देता है। TIMEFORMAT चर को प्रारूप स्ट्रिंग पर सेट किया जा सकता है जो निर्दिष्ट करता है कि समय की जानकारी कैसे प्रदर्शित की जानी चाहिए; नीचे शैल चर के नीचे TIMEFORMAT का विवरण देखें।

पाइपलाइन में प्रत्येक कमांड को एक अलग प्रक्रिया के रूप में निष्पादित किया जाता है (यानी, सबहेल में)।

सूचियाँ

एक सूची ऑपरेटरों में से एक द्वारा अलग एक या अधिक पाइपलाइनों का एक अनुक्रम है ; , & , && , या || , और वैकल्पिक रूप से एक में समाप्त ; , और , या

इन सूची ऑपरेटरों में से, && और || बराबर प्राथमिकता है, इसके बाद ; और ,, जो बराबर प्राथमिकता है।

आदेशों को कम करने के लिए अर्धविराम की बजाय सूची में एक या अधिक न्यूलाइन का अनुक्रम दिखाई दे सकता है।

यदि नियंत्रण ऑपरेटर द्वारा कमांड को समाप्त कर दिया जाता है, तो शेल पृष्ठभूमि में कमांड में कमांड निष्पादित करता है। खोल कमांड को समाप्त करने की प्रतीक्षा नहीं करता है, और वापसी की स्थिति 0 है। द्वारा अलग किए गए कमांड ; अनुक्रमिक रूप से निष्पादित कर रहे हैं; खोल प्रत्येक आदेश के बदले में समाप्त होने की प्रतीक्षा करता है। वापसी की स्थिति निष्पादित अंतिम आदेश की निकास स्थिति है।

नियंत्रण ऑपरेटर && और || क्रमशः इंगित करें और सूचियां और सूचियां। एक और सूची में फॉर्म है

कमांड 1 और कमांड 2

कमांड 2 निष्पादित किया जाता है, और केवल तभी, कमांड 1 शून्य की निकास स्थिति देता है।

एक या सूची में फॉर्म है

कमांड 1 || command2

कमांड 2 निष्पादित किया जाता है यदि केवल और यदि कमांड 1 गैर-शून्य निकास स्थिति देता है। AND और OR सूचियों की वापसी स्थिति सूची में निष्पादित अंतिम आदेश की निकास स्थिति है।

कंपाउंड कमांड

एक कंपाउंड कमांड निम्न में से एक है:

( सूची )

सूची को सबहेल में निष्पादित किया जाता है। परिवर्तनीय असाइनमेंट और अंतर्निहित कमांड जो शेल के पर्यावरण को प्रभावित करते हैं, कमांड पूर्ण होने के बाद प्रभावी नहीं होते हैं। वापसी की स्थिति सूची की निकास स्थिति है।

{ सूची ; }

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

(( अभिव्यक्ति ))

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

[[ अभिव्यक्ति ]]

सशर्त अभिव्यक्ति अभिव्यक्ति के मूल्यांकन के आधार पर 0 या 1 की स्थिति लौटाएं। अभिव्यक्तियां निम्नलिखित अभिव्यक्तियों के तहत नीचे वर्णित प्राइमरी से बनी हैं शब्द विभाजन और पथनाम विस्तार [[ और ]] के बीच के शब्दों पर नहीं किया जाता है; tilde विस्तार, पैरामीटर और परिवर्तनीय विस्तार, अंकगणितीय विस्तार, कमांड प्रतिस्थापन, प्रक्रिया प्रतिस्थापन, और उद्धरण हटाने का प्रदर्शन किया जाता है।

जब == और ! = ऑपरेटरों का उपयोग किया जाता है, ऑपरेटर के दाईं ओर की स्ट्रिंग को पैटर्न पैटर्न माना जाता है और पैटर्न मिलान के तहत नीचे वर्णित नियमों के अनुसार मेल खाता है। स्ट्रिंग मान 0 है यदि स्ट्रिंग क्रमशः पैटर्न से मेल खाता है या मेल नहीं खाता है, और 1 अन्यथा। पैटर्न के किसी भी भाग को स्ट्रिंग के रूप में मिलान करने के लिए मजबूर करने के लिए उद्धृत किया जा सकता है।

अभिव्यक्तियों को निम्नलिखित ऑपरेटरों का उपयोग करके जोड़ा जा सकता है, जो प्राथमिकता के घटते क्रम में सूचीबद्ध हैं:

( अभिव्यक्ति )

अभिव्यक्ति का मूल्य देता है। इसका उपयोग ऑपरेटरों की सामान्य प्राथमिकता को ओवरराइड करने के लिए किया जा सकता है।

! अभिव्यक्ति

सच है अगर अभिव्यक्ति झूठी है।

अभिव्यक्ति 1 && अभिव्यक्ति 2

सही है अगर अभिव्यक्ति 1 और अभिव्यक्ति 2 दोनों सत्य हैं।

अभिव्यक्ति 1 || अभिव्यक्ति 2 सही है अगर अभिव्यक्ति 1 या अभिव्यक्ति 2 सत्य है।

&& और || ऑपरेटर अभिव्यक्ति 1 का मूल्यांकन नहीं करते हैं यदि अभिव्यक्ति 1 का मान संपूर्ण सशर्त अभिव्यक्ति के वापसी मूल्य को निर्धारित करने के लिए पर्याप्त है।

नाम के लिए [ शब्द में ]; सूची करो ; किया हुआ

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

के लिए (( expr1 ; expr2 ; expr3 )); सूची करो ; किया हुआ

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

नाम [ शब्द में ] का चयन करें ; सूची करो ; किया हुआ

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

मामले शब्द [[(] पैटर्न [ | पैटर्न ]

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

अगर सूची ; फिर सूची; [ एलिफ सूची ; फिर सूची ; ] ... [ और सूची ; ] फाई

अगर सूची निष्पादित की जाती है। यदि इसकी निकास स्थिति शून्य है, तो सूची को निष्पादित किया जाता है। अन्यथा, प्रत्येक एलिफ सूची बदले में निष्पादित की जाती है, और यदि इसकी निकास स्थिति शून्य है, तो संबंधित सूची को निष्पादित किया जाता है और आदेश पूर्ण हो जाता है। अन्यथा, अगर मौजूद है तो अन्य सूची निष्पादित की जाती है। बाहर निकलने की स्थिति निष्पादित अंतिम आदेश की निकास स्थिति है, या शून्य अगर कोई शर्त सही साबित नहीं होती है।

जबकि सूची ; सूची करो ; किया हुआ

सूची तक ; सूची करो ; किया हुआ

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

[ समारोह ] नाम () { सूची ; }

यह नाम नामक एक समारोह को परिभाषित करता है। फ़ंक्शन का बॉडी {और} के बीच कमांड की सूची है। जब भी नाम एक साधारण कमांड के नाम के रूप में निर्दिष्ट किया जाता है तो यह सूची निष्पादित की जाती है। किसी फ़ंक्शन की निकास स्थिति शरीर में निष्पादित अंतिम आदेश की निकास स्थिति है। (नीचे समारोह देखें।)

टिप्पणियाँ

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

का हवाला देते हुए

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

परिभाषाओं के तहत ऊपर सूचीबद्ध प्रत्येक मेटाएक्टैक्टर्स के पास खोल के लिए विशेष अर्थ है और यदि इसे स्वयं प्रस्तुत करना है तो उसे उद्धृत किया जाना चाहिए।

जब कमांड इतिहास विस्तार सुविधाओं का उपयोग किया जा रहा है, इतिहास विस्तार चरित्र, आमतौर पर ! , इतिहास विस्तार को रोकने के लिए उद्धृत किया जाना चाहिए।

तीन उद्धरण तंत्र हैं: बचने का पात्र , एकल उद्धरण, और डबल उद्धरण।

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

एकल उद्धरणों में वर्णों को समाहित करना उद्धरण के भीतर प्रत्येक वर्ण के शाब्दिक मूल्य को संरक्षित करता है। सिंगल कोट्स के बीच एक सिंगल कोट नहीं हो सकता है, यहां तक ​​कि बैकस्लैश से पहले भी।

डबल कोट्स में अक्षर संलग्न करना उद्धरण के भीतर सभी वर्णों के शाब्दिक मूल्य को संरक्षित करता है, $ , ` , और \ के अपवाद के साथ। अक्षर $ और ' डबल कोट्स के भीतर अपना विशेष अर्थ बनाए रखें। बैकस्लैश केवल निम्नलिखित वर्णों में से एक के बाद इसका विशेष अर्थ बरकरार रखता है: $ , ` , " , \ , या । डबल कोट को बैकस्लैश से पहले डबल कोट्स के भीतर उद्धृत किया जा सकता है।

विशेष पैरामीटर * और @ का विशेष अर्थ होता है जब डबल कोट्स में (नीचे पैरामीटर देखें)।

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

\ए

चेतावनी (घंटी)

\ b

बैकस्पेस

\ ई

एक बचने का चरित्र

\ च

फ़ीड बनाएं

\ n

नई पंक्ति

\ r

कैरिज रिटर्न

\ t

क्षैतिज टैब

\ v

लंबवत टैब

\\

बैकस्लैश

\ '

एकल बोली

\ n नहीं

आठ-बिट चरित्र जिसका मूल्य ऑक्टल मान एनएनएन (एक से तीन अंक) है

\ एक्स एचएच

आठ-बिट चरित्र जिसका मूल्य हेक्साडेसिमल मान एचएच (एक या दो हेक्स अंक) है

\ सी एक्स

एक नियंत्रण- एक्स चरित्र

विस्तारित परिणाम एकल उद्धृत है, जैसे कि डॉलर का संकेत मौजूद नहीं था।

एक डॉलर के हस्ताक्षर ( $ ) से पहले एक डबल-उद्धृत स्ट्रिंग वर्तमान लोकेल के अनुसार स्ट्रिंग का अनुवाद करने का कारण बन जाएगी। यदि वर्तमान लोकेल सी या पॉज़िक्स है , तो डॉलर के चिह्न को नजरअंदाज कर दिया जाता है। यदि स्ट्रिंग का अनुवाद और प्रतिस्थापित किया गया है, तो प्रतिस्थापन डबल-उद्धृत है।

पैरामीटर

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

एक पैरामीटर सेट किया गया है यदि इसे एक मान असाइन किया गया है। शून्य स्ट्रिंग एक मान्य मान है। एक बार एक चर सेट हो जाने पर, यह केवल अनसेट निर्मित कमांड का उपयोग करके अनसेट हो सकता है (नीचे शेल बिल्टिन कमांड देखें)।

एक चर के रूप में एक चर निर्दिष्ट किया जा सकता है

नाम = [ मूल्य ]

यदि मान नहीं दिया जाता है, तो चर को शून्य स्ट्रिंग असाइन की जाती है। सभी मूल्यों में टिल्डे विस्तार, पैरामीटर और परिवर्तनीय विस्तार, कमांड प्रतिस्थापन, अंकगणितीय विस्तार, और उद्धरण हटाने (नीचे विस्तार देखें) से गुजरना है। यदि चर के पास इसके पूर्णांक विशेषता सेट हैं, तो मान अंकगणितीय विस्तार के अधीन है भले ही $ ((...)) विस्तार का उपयोग न किया जाए (नीचे अंकगणितीय विस्तार देखें)। स्पेशल पैरामीटर्स के तहत नीचे बताए गए अनुसार "$ @" के अपवाद के साथ वर्ड स्प्लिटिंग नहीं किया जाता है। पथनाम विस्तार नहीं किया जाता है। असाइनमेंट स्टेटमेंट्स घोषित , टाइपसेट , निर्यात , रीडोनली और स्थानीय बिल्टिन कमांड के तर्क के रूप में भी प्रकट हो सकते हैं।

स्थितित्मक पैरामीटर्स

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

जब एक अंक से अधिक अंक वाले एक स्थितित्मक पैरामीटर का विस्तार किया जाता है, तो इसे ब्रेसिज़ में संलग्न किया जाना चाहिए (नीचे विस्तार देखें)।

विशेष पैरामीटर्स

खोल विशेष रूप से कई मानकों का इलाज करता है। इन पैरामीटर का संदर्भ केवल तभी किया जा सकता है; उन्हें असाइनमेंट की अनुमति नहीं है।

*

एक से शुरू, स्थितित्मक मानकों में फैलता है। जब विस्तार डबल कोट्स के भीतर होता है, तो यह आईएफएस विशेष चर के पहले अक्षर से अलग प्रत्येक पैरामीटर के मान के साथ एक शब्द तक फैलता है। यही है, " $ * " " $ 1 सी $ 2 सी ... " के बराबर है, जहां सी आईएफएस वैरिएबल के मान का पहला अक्षर है। यदि आईएफएस अनसेट है, तो पैरामीटर रिक्त स्थान से अलग होते हैं। यदि आईएफएस शून्य है, पैरामीटर विभाजक हस्तक्षेप किए बिना शामिल हो गए हैं।

@

एक से शुरू, स्थितित्मक मानकों में फैलता है। जब विस्तार डबल कोट्स के भीतर होता है, तो प्रत्येक पैरामीटर एक अलग शब्द तक फैलता है। यही है, " $ @ " " $ 1 " " $ 2 " के बराबर है ... जब कोई स्थितित्मक पैरामीटर नहीं होता है, तो " $ @ " और $ @ कुछ भी नहीं बढ़ता है (यानी, उन्हें हटा दिया जाता है)।

#

दशमलव में स्थितित्मक पैरामीटर की संख्या में विस्तार करता है।

?

हाल ही में निष्पादित अग्रभूमि पाइपलाइन की स्थिति में विस्तारित है।

-

आवेदक पर सेट किए गए वर्तमान विकल्प झंडे तक फैला है, सेट बिल्टिन कमांड द्वारा, या शैल स्वयं द्वारा सेट किए गए (जैसे -i विकल्प)।

$

खोल की प्रक्रिया आईडी में फैलता है। एक () सबहेल में, यह वर्तमान खोल की प्रक्रिया आईडी तक फैलता है, न कि सबहेल।

!

हाल ही में निष्पादित पृष्ठभूमि (एसिंक्रोनस) कमांड की प्रक्रिया आईडी में विस्तारित होता है।

0

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

_

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

शैल चर

शेल द्वारा निम्नलिखित चर सेट किए गए हैं:

दे घुमा के

बैश के इस उदाहरण को आमंत्रित करने के लिए उपयोग किए गए पूर्ण फ़ाइल नाम में विस्तारित होता है।

BASH_VERSINFO

एक पठनीय सरणी चर जिसके सदस्यों को बैश के इस उदाहरण के लिए संस्करण जानकारी है। सरणी सदस्यों को सौंपा गया मान इस प्रकार है:

BASH_VERSINFO [ 0]

प्रमुख संस्करण संख्या ( रिलीज )।

BASH_VERSINFO [ 1]

मामूली संस्करण संख्या ( संस्करण )।

BASH_VERSINFO [ 2]

पैच स्तर।

BASH_VERSINFO [ 3]

निर्माण संस्करण।

BASH_VERSINFO [ 4]

रिलीज की स्थिति (उदाहरण के लिए, बीटा 1 )।

BASH_VERSINFO [ 5]

MACHTYPE का मूल्य।

BASH_VERSION

बैश के इस उदाहरण के संस्करण का वर्णन करने वाली स्ट्रिंग में विस्तारित होता है।

COMP_CWORD

COMP_LINE

वर्तमान कमांड लाइन। यह चर केवल शैल फ़ंक्शंस और प्रोग्रामेबल पूर्ण करने की सुविधाओं द्वारा आमंत्रित बाहरी आदेशों में उपलब्ध है (नीचे प्रोग्राम करने योग्य पूर्णता देखें)।

COMP_POINT

COMP_WORDS

वर्तमान कमांड लाइन में अलग-अलग शब्दों से युक्त एक सरणी चर (नीचे तीर देखें)। यह चर केवल प्रोग्राम करने योग्य समापन सुविधाओं द्वारा आमंत्रित शैल फ़ंक्शंस में उपलब्ध है (नीचे प्रोग्राम करने योग्य पूर्णता देखें)।

DIRSTACK

निर्देशिका सरणी की वर्तमान सामग्री युक्त एक सरणी चर (नीचे तीर देखें)। निर्देशिकाओं को ढेर में दिखाई देने वाले क्रम में प्रदर्शित होते हैं। इस सरणी चर के सदस्यों को असाइन करना पहले से ही स्टैक में निर्देशिकाओं को संशोधित करने के लिए उपयोग किया जा सकता है, लेकिन pushd और popd buildins का उपयोग निर्देशिकाओं को जोड़ने और निकालने के लिए किया जाना चाहिए। इस चर के लिए असाइनमेंट वर्तमान निर्देशिका को नहीं बदलेगा। यदि डिस्टास्ट अनसेट है, तो यह इसके विशेष गुण खो देता है, भले ही इसे बाद में रीसेट किया जाए।

EUID

वर्तमान उपयोगकर्ता की प्रभावी उपयोगकर्ता आईडी में विस्तारित होता है, जिसे शैल स्टार्टअप में प्रारंभ किया जाता है। यह चर केवल पढ़ने योग्य है।

FUNCNAME

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

समूह

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

HISTCMD

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

HOSTNAME

स्वचालित रूप से वर्तमान होस्ट के नाम पर सेट करें।

HOSTTYPE

स्वचालित रूप से एक स्ट्रिंग पर सेट करें जो विशिष्ट प्रकार के मशीन का वर्णन करता है जिस पर बैश निष्पादित हो रहा है। डिफ़ॉल्ट सिस्टम-निर्भर है।

lineno

प्रत्येक बार जब इस पैरामीटर का संदर्भ दिया जाता है, तो शैल एक स्क्रिप्ट या फ़ंक्शन के भीतर वर्तमान अनुक्रमिक रेखा संख्या (1 से शुरू) का प्रतिनिधित्व करने वाला दशमलव संख्या प्रतिस्थापित करता है। जब किसी स्क्रिप्ट या फ़ंक्शन में नहीं होता है, तो प्रतिस्थापित मूल्य सार्थक होने की गारंटी नहीं देता है। यदि LINENO अनसेट है, तो यह इसके विशेष गुण खो देता है, भले ही इसे बाद में रीसेट किया जाए।

MACHTYPE

मानक जीएनयू सीपीयू-कंपनी-सिस्टम प्रारूप में स्वचालित रूप से उस स्ट्रिंग पर सेट करें जो सिस्टम प्रकार का पूरी तरह से वर्णन करता है जिस पर बैश निष्पादित हो रहा है। डिफ़ॉल्ट सिस्टम-निर्भर है।

OLDPWD

सीडी कमांड द्वारा सेट की गई पिछली कार्य निर्देशिका।

OPTARG

Getopts अंतर्निहित कमांड द्वारा संसाधित अंतिम विकल्प तर्क का मान (नीचे शेल बिल्टिन कमांड देखें)।

OPTIND

गेटोपेट्स बिल्टिन कमांड द्वारा संसाधित किए जाने वाले अगले तर्क की अनुक्रमणिका (नीचे शेल बिल्टिन कमांड देखें)।

OSTYPE

स्वचालित रूप से एक स्ट्रिंग पर सेट करें जो ऑपरेटिंग सिस्टम का वर्णन करता है जिस पर बैश निष्पादित हो रहा है। डिफ़ॉल्ट सिस्टम-निर्भर है।

PIPESTATUS

सबसे हाल ही में निष्पादित अग्रभूमि पाइपलाइन (जिसमें केवल एक ही कमांड हो सकता है) में प्रक्रियाओं से निकास स्थिति मानों की एक सूची वाली एक सरणी चर (नीचे तीर देखें)।

PPID

खोल के माता-पिता की प्रक्रिया आईडी। यह चर केवल पढ़ने योग्य है।

लोक निर्माण विभाग

सीडी कमांड द्वारा सेट की गई वर्तमान कार्यशील निर्देशिका।

यादृच्छिक

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

जवाब दे दो

जब कोई तर्क प्रदान नहीं किया जाता है तो निर्मित बिल्टिन कमांड द्वारा पढ़ा गया इनपुट की रेखा पर सेट करें।

सेकंड

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

SHELLOPTS

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

SHLVL

हर बार एक बार बढ़ाया जाता है बैश का एक उदाहरण शुरू होता है।

यूआईडी

वर्तमान उपयोगकर्ता की उपयोगकर्ता आईडी में विस्तार होता है, जिसे स्टार्ट स्टार्टअप में प्रारंभ किया जाता है। यह चर केवल पढ़ने योग्य है।

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

BASH_ENV

यदि यह पैरामीटर सेट किया गया है जब बैश शेल स्क्रिप्ट निष्पादित कर रहा है, तो इसका मान शेल को प्रारंभ करने के लिए कमांड वाले फ़ाइल नाम के रूप में व्याख्या किया जाता है, जैसा ~ / .bashrc में होता है । फ़ाइल नाम के रूप में व्याख्या करने से पहले BASH_ENV का मान पैरामीटर विस्तार, कमांड प्रतिस्थापन, और अंकगणितीय विस्तार के अधीन है। परिणामी फ़ाइल नाम की खोज के लिए पैथ का उपयोग नहीं किया जाता है।

CDPATH

सीडी कमांड के लिए खोज पथ। यह निर्देशिकाओं की एक कोलन से अलग सूची है जिसमें शैल सीडी कमांड द्वारा निर्दिष्ट गंतव्य निर्देशिकाओं की तलाश करता है। नमूना मान "।: ~: / Usr" है।

कॉलम

चयन सूचियों को प्रिंट करते समय टर्मिनल चौड़ाई निर्धारित करने के लिए चयनित बिल्टिन कमांड द्वारा उपयोग किया जाता है। एक सिग्विन की प्राप्ति पर स्वचालित रूप से सेट करें।

COMPREPLY

एक सरणी चर जिसमें से बैश प्रोग्राम करने योग्य समापन सुविधा द्वारा लागू शेल फ़ंक्शन द्वारा उत्पन्न संभावित समापन को पढ़ता है (नीचे प्रोग्राम करने योग्य पूर्णता देखें)।

FCEDIT

एफसी बिल्टिन कमांड के लिए डिफ़ॉल्ट संपादक।

FIGNORE

फ़ाइल नाम पूरा करते समय अनदेखा करने के लिए प्रत्यय की एक कोलन से अलग सूची (नीचे पढ़ें नीचे देखें)। एक फ़ाइल नाम जिसका प्रत्यय FIGNORE में प्रविष्टियों में से किसी एक से मेल खाता है, मिलान किए गए फ़ाइल नामों की सूची से बाहर रखा गया है। नमूना मान ".o: ~" है।

GLOBIGNORE

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

HISTCONTROL

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

HISTFILE

फ़ाइल का नाम जिसमें कमांड इतिहास सहेजा गया है (नीचे इतिहास देखें)। डिफ़ॉल्ट मान ~ / .bash_history है । अगर सेट नहीं होता है, तो एक इंटरैक्टिव खोल निकलने पर कमांड इतिहास सहेजा नहीं जाता है।

HISTFILESIZE

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

HISTIGNORE

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

HISTSIZE

कमांड इतिहास में याद रखने के लिए कमांड की संख्या (नीचे इतिहास देखें)। डिफ़ॉल्ट मान 500 है।

होम

वर्तमान उपयोगकर्ता की होम निर्देशिका; सीडी बिल्टिन कमांड के लिए डिफ़ॉल्ट तर्क। टिल्ड विस्तार करते समय इस चर का मान भी उपयोग किया जाता है।

HOSTFILE

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

भारतीय विदेश सेवा

आंतरिक फील्ड विभाजक जो विस्तार के बाद शब्द विभाजन के लिए उपयोग किया जाता है और पढ़ने के लिए कमांड कमांड वाले शब्दों में लाइनों को विभाजित करता है। डिफ़ॉल्ट मान `` '' है।

IGNOREEOF

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

INPUTRC

रीडलाइन स्टार्टअप फ़ाइल के लिए फ़ाइल नाम, ~ / .inputrc के डिफ़ॉल्ट को ओवरराइड करना (नीचे रीडलाइन देखें)।

LANG

किसी भी श्रेणी के लिए लोकेल श्रेणी निर्धारित करने के लिए प्रयुक्त होता है जिसे विशेष रूप से एलसी_ से शुरू होने वाले चर के साथ नहीं चुना जाता है।

LC_ALL

यह चर LANAN के मान को ओवरराइड करता है और किसी अन्य एलसी_ चर को लोकेल श्रेणी निर्दिष्ट करता है।

LC_COLLATE

यह चर पथनाम विस्तार के परिणामों को सॉर्ट करते समय उपयोग किए गए कोलेक्शन ऑर्डर को निर्धारित करता है, और पथनाम विस्तार और पैटर्न मिलान के भीतर श्रेणी अभिव्यक्तियों, समकक्ष वर्गों और कोटिंग अनुक्रमों के व्यवहार को निर्धारित करता है।

LC_CTYPE

यह चर पथ पथ विस्तार और पैटर्न मिलान के भीतर वर्णों की व्याख्या और चरित्र वर्गों के व्यवहार को निर्धारित करता है।

LC_MESSAGES

यह चर निर्धारित करता है कि लोकेल एक $ से पहले डबल-उद्धृत तारों का अनुवाद करने के लिए प्रयोग किया जाता है।

LC_NUMERIC

यह चर संख्या संख्या स्वरूपण के लिए उपयोग की जाने वाली लोकेल श्रेणी निर्धारित करता है।

लाइनें

मुद्रण चयन सूचियों के लिए कॉलम लंबाई निर्धारित करने के लिए चयनित बिल्टिन कमांड द्वारा उपयोग किया जाता है। एक सिग्विन की प्राप्ति पर स्वचालित रूप से सेट करें।

मेल

यदि यह पैरामीटर फ़ाइल नाम पर सेट है और MAILPATH चर सेट नहीं है, तो बैश निर्दिष्ट फ़ाइल में मेल के आगमन के उपयोगकर्ता को सूचित करता है।

MAILCHECK

निर्दिष्ट करता है कि कितनी बार (सेकेंड में) मेल के लिए बैश चेक करता है। डिफ़ॉल्ट साठ सेकण्ड है। जब मेल की जांच करने का समय हो, तो प्राथमिक प्रॉम्प्ट प्रदर्शित करने से पहले खोल ऐसा करता है। यदि यह चर सेट नहीं है, या उस मान पर सेट है जो शून्य से अधिक या बराबर संख्या नहीं है, तो खोल मेल जांच अक्षम करता है।

MAILPATH

मेल के लिए फ़ाइल नामों की एक कोलन से अलग सूची की जांच की जानी चाहिए। जब किसी विशेष फ़ाइल में मेल आता है तो संदेश मुद्रित किया जा सकता है, फ़ाइल नाम को '?' से अलग करके निर्दिष्ट किया जा सकता है। संदेश के पाठ में उपयोग किए जाने पर, $ _ वर्तमान मेलफाइल के नाम पर विस्तारित होता है। उदाहरण:

MAILPATH = '/ var / mail / bfox? "आपके पास मेल है": ~ / shell-mail? "$ _ में मेल है!"

बैश इस चर के लिए एक डिफ़ॉल्ट मान प्रदान करता है, लेकिन उपयोगकर्ता मेल फ़ाइलों का स्थान जो सिस्टम का उपयोग करता है वह सिस्टम निर्भर है (उदाहरण के लिए, / var / mail / $ USER )।

OPTERR

यदि मान 1 पर सेट किया गया है, तो गेट्स गेटोपेट्स बिल्टिन कमांड द्वारा उत्पन्न त्रुटि संदेश प्रदर्शित करता है (नीचे शेल बिल्टिन कमांड देखें)। OPTERR को प्रत्येक बार खोलने के लिए प्रारंभ किया जाता है या खोल स्क्रिप्ट निष्पादित की जाती है।

पथ

आदेशों के लिए खोज पथ। यह निर्देशिकाओं की एक कोलन से अलग सूची है जिसमें खोल कमांड की तलाश करता है (नीचे कमांड निष्पादन देखें)। डिफ़ॉल्ट पथ सिस्टम-निर्भर है, और व्यवस्थापक द्वारा सेट किया गया है जो बैश स्थापित करता है। एक सामान्य मान `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin: '' है।

POSIXLY_CORRECT

यदि बैच प्रारंभ होने पर यह चर वातावरण में है, तो स्टार्टअप फ़ाइलों को पढ़ने से पहले शेल पॉज़िक्स मोड में प्रवेश करता है, जैसे कि --pospos invocoice विकल्प प्रदान किया गया था। यदि यह सेट चल रहा है, तो यह सेट है, बैश पॉज़िक्स मोड सक्षम करता है , जैसे कि कमांड सेट-पॉज़िक्स निष्पादित किया गया था।

PROMPT_COMMAND

यदि सेट किया गया है, तो प्रत्येक प्राथमिक प्रॉम्प्ट जारी करने से पहले मान को कमांड के रूप में निष्पादित किया जाता है।

PS1

इस पैरामीटर का मान विस्तारित है (नीचे प्रोपेटिंग देखें) और प्राथमिक प्रॉम्प्ट स्ट्रिंग के रूप में उपयोग किया जाता है। डिफ़ॉल्ट मान `` s- \ v \ $ '' है।

पीएस 2

इस पैरामीटर का मान PS1 के साथ विस्तारित किया गया है और द्वितीयक प्रॉम्प्ट स्ट्रिंग के रूप में उपयोग किया जाता है। डिफ़ॉल्ट `` > '' है।

PS3

इस पैरामीटर का मान चयन कमांड के लिए प्रॉम्प्ट के रूप में प्रयोग किया जाता है (उपरोक्त शेल ग्रैमर देखें)।

PS4

इस पैरामीटर का मान PS1 के साथ विस्तारित किया गया है और निष्पादन ट्रेस के दौरान प्रत्येक कमांड बैश डिस्प्ले से पहले मान मुद्रित किया जाता है। पीएस 4 का पहला चरित्र संकेत के कई स्तरों को इंगित करने के लिए आवश्यकतानुसार कई बार दोहराया जाता है। डिफ़ॉल्ट '` + ' है।

समय प्रारूप

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

%%

एक शाब्दिक %

% [ पी ] [एल] आर

सेकंड में विलुप्त समय।

% [ पी ] [एल] यू

उपयोगकर्ता मोड में खर्च किए गए CPU सेकंड की संख्या।

% [ पी ] [एल] एस

सिस्टम मोड में खर्च किए गए CPU सेकंड की संख्या।

% P

सीपीयू प्रतिशत, (% यू +% एस) /% आर के रूप में गणना की।

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

वैकल्पिक एल फॉर्म एमएम एमएस एसएस के मिनटों सहित एक लंबा प्रारूप निर्दिष्ट करता है। एफएफ एस पी का मान निर्धारित करता है कि अंश शामिल है या नहीं।

यदि यह चर सेट नहीं है, तो बैश कार्य करता है जैसे कि उसके पास मूल्य $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' था । यदि मान शून्य है, तो कोई समय की जानकारी प्रदर्शित नहीं होती है। स्वरूप स्ट्रिंग प्रदर्शित होने पर एक पिछली नईलाइन जोड़ दी जाती है।

TMOUT

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

auto_resume

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

histchars

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

Arrays

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

यदि किसी चर को वाक्यविन्यास नाम [ subscript ] = value का उपयोग करने के लिए असाइन किया गया है तो एक सरणी स्वचालित रूप से बनाई जाती है। सबस्क्रिप्ट को अंकगणितीय अभिव्यक्ति के रूप में माना जाता है जिसे शून्य से अधिक या बराबर संख्या में मूल्यांकन करना चाहिए। स्पष्ट रूप से एक सरणी घोषित करने के लिए, घोषणा का उपयोग करें- एक नाम (नीचे शेल बिल्टिन कमांड देखें)। घोषित करें- एक नाम [ सबस्क्रिप्ट ] भी स्वीकार किया जाता है; सबस्क्रिप्ट को अनदेखा किया जाता है। घोषित और रीडोनली बिल्टिन का उपयोग करके गुणों को सरणी चर के लिए निर्दिष्ट किया जा सकता है। प्रत्येक विशेषता एक सरणी के सभी सदस्यों पर लागू होती है।

Arrays को फॉर्म नाम = ( मान 1 ... मान n ) के कंपाउंड असाइनमेंट का उपयोग करने के लिए असाइन किया गया है, जहां प्रत्येक मान फ़ॉर्म [ subscript ] = string का है । केवल स्ट्रिंग की आवश्यकता है। यदि वैकल्पिक ब्रैकेट्स और सबस्क्रिप्ट की आपूर्ति की जाती है, तो उस इंडेक्स को असाइन किया जाता है; अन्यथा असाइन किए गए तत्व की अनुक्रमणिका बयान के साथ सौंपा गया अंतिम सूचकांक है। इंडेक्सिंग शून्य से शुरू होता है। इस वाक्यविन्यास को बिल्टिन घोषित करके भी स्वीकार किया जाता है। व्यक्तिगत सरणी तत्वों को उपरोक्त नाम [ subscript ] = मान वाक्यविन्यास का उपयोग करने के लिए असाइन किया जा सकता है।

अनसेट सेटिन का उपयोग सरणी को नष्ट करने के लिए किया जाता है। अनसेट नाम [ सबस्क्रिप्ट ] इंडेक्स सबस्क्रिप्ट पर सरणी तत्व को नष्ट कर देता है। नाम अनसेट करें , जहां नाम एक सरणी है, या नाम अनसेट नाम [ सबस्क्रिप्ट ], जहां सबस्क्रिप्ट * या @ है , पूरे सरणी को हटा देता है।

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

विस्तार

शब्दों को विभाजित करने के बाद कमांड लाइन पर विस्तार किया जाता है। सात प्रकार के विस्तार किए गए हैं: ब्रेस विस्तार , टिल्ड विस्तार , पैरामीटर और परिवर्तनीय विस्तार , कमांड प्रतिस्थापन , अंकगणितीय विस्तार , शब्द विभाजन , और पथनाम विस्तार

विस्तार का क्रम है: ब्रेस विस्तार, टिल्ड विस्तार, पैरामीटर, परिवर्तनीय और अंकगणितीय विस्तार और कमांड प्रतिस्थापन (बाएं से दाएं फैशन में किया गया), शब्द विभाजन और पथनाम विस्तार।

उन प्रणालियों पर जो इसका समर्थन कर सकते हैं, एक अतिरिक्त विस्तार उपलब्ध है: प्रक्रिया प्रतिस्थापन

ब्रेस विस्तार

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

ब्रेस विस्तार घोंसला हो सकता है। प्रत्येक विस्तारित स्ट्रिंग के परिणाम क्रमबद्ध नहीं होते हैं; बाएं से दाएं आदेश संरक्षित है। उदाहरण के लिए, एक { डी, सी, बी } ई 'ade ace abe' में फैलता है।

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

इस निर्माण को आम तौर पर शॉर्टेंड के रूप में उपयोग किया जाता है जब तारों का सामान्य उपसर्ग उपरोक्त उदाहरण से अधिक लंबा होता है:

mkdir / usr / local / src / bash / {पुराना, नया, dist, bugs}

या

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

ब्रेस विस्तार ने sh के ऐतिहासिक संस्करणों के साथ थोड़ी असंगतता प्रस्तुत की है । जब वे किसी शब्द के हिस्से के रूप में दिखाई देते हैं तो उन्हें खोलने या बंद करने वाले ब्रेसिज़ का इलाज नहीं होता है, और आउटपुट में उन्हें संरक्षित करता है। बश ब्रेस विस्तार के परिणामस्वरूप शब्दों से ब्रेसिज़ को हटा देता है। उदाहरण के लिए, फ़ाइल {1,2} के रूप में sh में दर्ज एक शब्द आउटपुट में समान रूप से दिखाई देता है। बैश द्वारा विस्तार के बाद फ़ाइल 1 फ़ाइल 2 के रूप में एक ही शब्द आउटपुट है। यदि sh के साथ सख्त संगतता वांछित है, तो + बी विकल्प के साथ बाश शुरू करें या सेट कमांड के लिए + बी विकल्प के साथ ब्रेस विस्तार अक्षम करें (नीचे शेल बिल्टिन कमांड देखें)।

टिल्ड विस्तार

यदि एक शब्द एक निर्विवाद टिल्डे चरित्र (` ~ ') से शुरू होता है, तो पहले अनगिनत स्लैश (या सभी पात्रों, यदि कोई निर्विवाद स्लैश नहीं है) से पहले के सभी वर्णों को टिल्ड-उपसर्ग माना जाता है। यदि टिल्डे-उपसर्ग में वर्णों में से कोई भी उद्धृत नहीं किया गया है, तो टिल्डे के बाद टिल्डे-उपसर्ग में वर्णों को संभावित लॉगिन नाम के रूप में माना जाता है। यदि यह लॉगिन नाम शून्य स्ट्रिंग है, तो टिल्डे को शेल पैरामीटर HOME के मान के साथ प्रतिस्थापित किया जाता है। यदि घर अनसेट है, तो खोल को निष्पादित करने वाले उपयोगकर्ता की होम निर्देशिका इसके बजाय प्रतिस्थापित की जाती है। अन्यथा, tilde-prefix को निर्दिष्ट लॉगिन नाम से जुड़े होम निर्देशिका के साथ प्रतिस्थापित किया जाता है।

यदि टिल्डे-उपसर्ग एक '~ +' है, तो शैल वेरिएबल पीडब्ल्यूडी का मान tilde-prefix को प्रतिस्थापित करता है। यदि टिल्डे-उपसर्ग एक ~ ~ - 'है, तो शैल वेरिएबल OLDPWD का मान , यदि सेट किया गया है, तो प्रतिस्थापित किया गया है। यदि टिल्डे-उपसर्ग में टिल्डे के बाद वाले वर्णों में संख्या एन होता है , वैकल्पिक रूप से '+' या '-' द्वारा पूर्ववर्ती किया जाता है, तो टिल्डे-उपसर्ग को निर्देशिका स्टैक से संबंधित तत्व के साथ प्रतिस्थापित किया जाता है, क्योंकि यह प्रदर्शित किया जाएगा एक बहस के रूप में tilde-prefix के साथ बुलाया dirs द्वारा निर्मित। यदि टिल्डे-उपसर्ग में टिल्डे के बाद वाले वर्णों में एक अग्रणी '+' या '-' के बिना संख्या होती है, तो `+ 'माना जाता है।

अगर लॉगिन नाम अमान्य है, या टिल्ड विस्तार विफल रहता है, तो शब्द अपरिवर्तित है।

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

पैरामीटर विस्तार

` $ 'वर्ण पैरामीटर विस्तार, कमांड प्रतिस्थापन, या अंकगणितीय विस्तार प्रस्तुत करता है। पैरामीटर नाम या प्रतीक का विस्तार किया जा सकता है ब्रेसिज़ में संलग्न किया जा सकता है, जो वैकल्पिक हैं लेकिन वेरिएबल को उस वर्ण के तुरंत बाद वर्णों से विस्तारित करने के लिए सेवा प्रदान करते हैं जिन्हें नाम के हिस्से के रूप में व्याख्या किया जा सकता है।

जब ब्रेसिज़ का उपयोग किया जाता है, तो मेलिंग एंडिंग ब्रेस बैकस्लैश से बचने वाले या 'उद्धृत स्ट्रिंग के भीतर' नहीं होता है, न कि एम्बेडेड अंकगणितीय विस्तार, कमांड प्रतिस्थापन या पैरामीटर विस्तार के भीतर।

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

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

डिफ़ॉल्ट मान का प्रयोग करें । यदि पैरामीटर अनसेट या शून्य है, तो शब्द का विस्तार प्रतिस्थापित किया जाता है। अन्यथा, पैरामीटर का मान प्रतिस्थापित किया जाता है।

डिफ़ॉल्ट मान असाइन करें । यदि पैरामीटर अनसेट या शून्य है, तो शब्द का विस्तार पैरामीटर को असाइन किया गया है। पैरामीटर का मान तब प्रतिस्थापित किया जाता है। स्थितित्मक पैरामीटर और विशेष पैरामीटर इस तरह से असाइन नहीं किए जा सकते हैं।

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

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

वेरिएबल के नामों का विस्तार करता है जिनके नाम उपसर्ग के साथ शुरू होते हैं, जो आईएफएस विशेष चर के पहले अक्षर से अलग होते हैं।

पैरामीटर के मूल्य के अक्षरों में लंबाई प्रतिस्थापित है। यदि पैरामीटर * या @ है , तो प्रतिस्थापित मूल्य स्थितित्मक पैरामीटर की संख्या है। यदि पैरामीटर * या @ द्वारा सब्सक्राइब किया गया सरणी नाम है, तो प्रतिस्थापित मान सरणी में तत्वों की संख्या है।

शब्द को पथनाम विस्तार के रूप में पैटर्न बनाने के लिए विस्तारित किया गया है। यदि पैटर्न पैरामीटर के मान की शुरुआत से मेल खाता है, तो विस्तार का परिणाम सबसे कम मिलान पैटर्न (`` # '' केस) या सबसे लंबा मिलान पैटर्न ('` ## ' के साथ पैरामीटर का विस्तारित मान है। 'मामला) हटा दिया गया। यदि पैरामीटर @ या * है , तो पैटर्न निष्कासन ऑपरेशन बदले में प्रत्येक स्थितित्मक पैरामीटर पर लागू होता है, और विस्तार परिणामस्वरूप सूची है। यदि पैरामीटर @ या * के साथ सब्सक्राइब किया गया एक सरणी चर है, तो पैटर्न निष्कासन ऑपरेशन बदले में सरणी के प्रत्येक सदस्य पर लागू होता है, और विस्तार परिणामस्वरूप सूची है।

शब्द को पथनाम विस्तार के रूप में पैटर्न बनाने के लिए विस्तारित किया गया है। यदि पैटर्न पैरामीटर के विस्तारित मान के पीछे वाले हिस्से से मेल खाता है, तो विस्तार का परिणाम सबसे कम मिलान पैटर्न (`` % '' केस) या सबसे लंबा मिलान पैटर्न (`` % 'के साथ पैरामीटर का विस्तारित मान है। % '' केस) हटा दिया गया। यदि पैरामीटर @ या * है , तो पैटर्न निष्कासन ऑपरेशन बदले में प्रत्येक स्थितित्मक पैरामीटर पर लागू होता है, और विस्तार परिणामस्वरूप सूची है। यदि पैरामीटर @ या * के साथ सब्सक्राइब किया गया एक सरणी चर है, तो पैटर्न निष्कासन ऑपरेशन बदले में सरणी के प्रत्येक सदस्य पर लागू होता है, और विस्तार परिणामस्वरूप सूची है।

पैटर्न को पथनाम विस्तार के रूप में पैटर्न बनाने के लिए विस्तारित किया गया है। पैरामीटर का विस्तार किया गया है और इसके मूल्य के खिलाफ पैटर्न का सबसे लंबा मिलान स्ट्रिंग के साथ बदल दिया गया है । पहले फॉर्म में, केवल पहला मैच बदल दिया गया है। दूसरा रूप स्ट्रिंग के साथ पैटर्न के सभी मैचों को प्रतिस्थापित करने का कारण बनता है। यदि पैटर्न # के साथ शुरू होता है, तो यह पैरामीटर के विस्तारित मूल्य की शुरुआत में मेल खाना चाहिए। यदि पैटर्न % के साथ शुरू होता है, तो यह पैरामीटर के विस्तारित मान के अंत में मेल खाना चाहिए। यदि स्ट्रिंग शून्य है, पैटर्न के मिलान हटा दिए जाते हैं और / निम्नलिखित पैटर्न छोड़ा जा सकता है। यदि पैरामीटर @ या * है , तो प्रतिस्थापन ऑपरेशन बदले में प्रत्येक स्थितित्मक पैरामीटर पर लागू होता है, और विस्तार परिणामस्वरूप सूची है। यदि पैरामीटर @ या * के साथ सब्सक्राइब किया गया एक सरणी चर है, तो प्रतिस्थापन ऑपरेशन बदले में सरणी के प्रत्येक सदस्य पर लागू होता है, और विस्तार परिणामस्वरूप सूची है।

कमांड प्रतिस्थापन

कमांड प्रतिस्थापन कमांड नाम को प्रतिस्थापित करने के लिए कमांड के आउटपुट की अनुमति देता है। दो रूप हैं:

$ ( कमांड )

या

' आदेश '

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

जब प्रतिस्थापन के पुराने शैली के बैकक्वॉइट फॉर्म का उपयोग किया जाता है, तो बैकस्लैश अपने शाब्दिक अर्थ को बरकरार रखता है, इसके बाद $ , ` , या \ के बाद । बैकस्लैश से पहले पहले बैकक्वॉट कमांड प्रतिस्थापन को समाप्त नहीं करता है। $ ( कमांड ) फॉर्म का उपयोग करते समय, कोष्ठक के बीच के सभी वर्ण कमांड बनाते हैं; किसी विशेष रूप से इलाज नहीं किया जाता है।

कमांड प्रतिस्थापन घोंसला हो सकता है। बैकक्वाटेड फॉर्म का उपयोग करते समय घोंसला करने के लिए, बैकस्लाश के साथ आंतरिक बैकक्वॉट से बचें।

यदि प्रतिस्थापन डबल कोट्स के भीतर प्रकट होता है, तो शब्द विभाजन और पथनाम विस्तार परिणामों पर नहीं किया जाता है।

अंकगणितीय विस्तार

अंकगणितीय विस्तार अंकगणितीय अभिव्यक्ति के मूल्यांकन और परिणाम की प्रतिस्थापन की अनुमति देता है। अंकगणितीय विस्तार के लिए प्रारूप है:

$ (( अभिव्यक्ति ))

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

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

प्रक्रिया प्रतिस्थापन

प्रक्रिया प्रतिस्थापन उन प्रणालियों पर समर्थित है जो नामित पाइप ( एफआईएफओ ) या / dev / fd विधि को खुली फ़ाइलों का नाम देने का समर्थन करते हैं। यह <( सूची ) या > ( सूची ) का रूप लेता है। प्रक्रिया सूची को इसके इनपुट या आउटपुट के साथ एक फीफो या कुछ फ़ाइल / dev / fd में जोड़ा जाता है। विस्तार के परिणामस्वरूप इस फ़ाइल का नाम वर्तमान कमांड के लिए एक तर्क के रूप में पारित किया गया है। यदि > ( सूची ) फ़ॉर्म का उपयोग किया जाता है, तो फ़ाइल में लिखने से सूची के लिए इनपुट प्रदान किया जाएगा। यदि <( सूची ) फ़ॉर्म का उपयोग किया जाता है, तो सूची के आउटपुट को प्राप्त करने के लिए एक तर्क के रूप में पारित फ़ाइल को पढ़ा जाना चाहिए।

जब उपलब्ध हो, प्रक्रिया प्रतिस्थापन पैरामीटर और परिवर्तनीय विस्तार, कमांड प्रतिस्थापन, और अंकगणितीय विस्तार के साथ एक साथ किया जाता है।

शब्द विभाजन

खोल पैरामीटर विस्तार, कमांड प्रतिस्थापन, और अंकगणितीय विस्तार के परिणाम स्कैन करता है जो शब्द विभाजन के लिए डबल कोट्स के भीतर नहीं होता है।

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

स्पष्ट शून्य तर्क ( "" या "' ) बनाए रखा जाता है। निर्विवाद अंतर्निहित शून्य तर्क, जिसके मानकों के विस्तार से परिणाम नहीं हैं, को हटा दिया जाता है। यदि कोई मान वाला कोई पैरामीटर डबल कोट्स के भीतर विस्तारित नहीं होता है, तो एक नल तर्क परिणाम और बनाए रखा जाता है।

ध्यान दें कि यदि कोई विस्तार नहीं होता है, तो कोई विभाजन नहीं किया जाता है।

पथनाम विस्तार

शब्द विभाजन के बाद, जब तक -f विकल्प सेट नहीं किया गया है, तो बैश वर्णों के लिए प्रत्येक शब्द स्कैन करता है * ,? , और [ । यदि इनमें से एक वर्ण प्रकट होता है, तो शब्द को पैटर्न के रूप में माना जाता है, और पैटर्न से मेल खाने वाले फ़ाइल नामों की वर्णानुक्रमित क्रमबद्ध सूची के साथ प्रतिस्थापित किया जाता है। यदि कोई मेल खाने वाला फ़ाइल नाम नहीं मिला है, और खोल विकल्प nullglob अक्षम है, तो शब्द अपरिवर्तित छोड़ा गया है। यदि nullglob विकल्प सेट है, और कोई मिलान नहीं मिलता है, तो शब्द हटा दिया जाता है। यदि शेल विकल्प nocaseglob सक्षम है, तो मिलान वर्णमाला वर्णों के मामले के संबंध में किया जाता है। जब पथनाम विस्तार के लिए एक पैटर्न का उपयोग किया जाता है, तो किसी नाम की शुरुआत में वर्ण '`।' ' या स्लैश के तुरंत बाद वर्ण को स्पष्ट रूप से मिलान किया जाना चाहिए, जब तक कि खोल विकल्प dotglob सेट न हो। पथनाम से मिलान करते समय, स्लैश चरित्र को हमेशा स्पष्ट रूप से मिलान किया जाना चाहिए। अन्य मामलों में, '`' ' चरित्र का विशेष रूप से इलाज नहीं किया जाता है। Nocaseglob , nullglob , और dotglob खोल विकल्पों के विवरण के लिए शेल बिल्टिन कमांड के तहत नीचे दुकान की जानकारी देखें।

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

पैटर्न मिलान

किसी भी चरित्र जो पैटर्न में प्रकट होता है, नीचे वर्णित विशेष पैटर्न वर्णों के अलावा, स्वयं से मेल खाता है। एनयूएल चरित्र एक पैटर्न में नहीं हो सकता है। यदि विशेष रूप से मिलान किया जाना है तो विशेष पैटर्न वर्णों को उद्धृत किया जाना चाहिए।

विशेष पैटर्न वर्णों का निम्नलिखित अर्थ हैं:

*

शून्य स्ट्रिंग सहित किसी भी स्ट्रिंग से मेल खाता है।

?

किसी एकल चरित्र से मेल खाता है।

[...]

संलग्न पात्रों में से किसी एक से मेल खाता है। एक हाइफ़न द्वारा अलग वर्णों की एक जोड़ी एक श्रेणी अभिव्यक्ति को दर्शाती है; वर्तमान लोकेल के कोटिंग अनुक्रम और चरित्र सेट का उपयोग करके, उन दो पात्रों के बीच जो भी चरित्र है, समेत, यह मिलान किया जाता है। यदि पहला चरित्र [ एक है ! या ^ ^ तब कोई भी चरित्र संलग्न नहीं है। रेंज एक्सप्रेशन में वर्णों का सॉर्टिंग ऑर्डर वर्तमान लोकेल द्वारा निर्धारित किया जाता है और सेट होने पर LC_COLLATE खोल चर के मान को निर्धारित किया जाता है। ए - सेट में पहले या आखिरी चरित्र के रूप में इसे शामिल करके मिलान किया जा सकता है। ए ] इसे सेट में पहले अक्षर के रूप में शामिल करके मिलान किया जा सकता है।

[ और ] के भीतर, वर्ण वर्गों को वाक्यविन्यास [: वर्ग :] का उपयोग करके निर्दिष्ट किया जा सकता है, जहां कक्षा POSIX.2 मानक में परिभाषित निम्न वर्गों में से एक है:

alnum अल्फा ascii खाली cntrl अंक ग्राफ निचले प्रिंट punct अंतरिक्ष ऊपरी शब्द xdigit
एक चरित्र वर्ग उस वर्ग से संबंधित किसी भी चरित्र से मेल खाता है। शब्द वर्ग शब्द अक्षरों, अंक, और चरित्र _ से मेल खाता है।

[ और ] के भीतर, एक समकक्ष वर्ग को वाक्यविन्यास [= c =] का उपयोग करके निर्दिष्ट किया जा सकता है, जो वर्ण सी के रूप में एक ही संयोजन वजन (वर्तमान लोकेल द्वारा परिभाषित) वाले सभी वर्णों से मेल खाता है।

[ और ] के भीतर, वाक्यविन्यास [। प्रतीक ।] कोटिंग प्रतीक प्रतीक से मेल खाता है।

अगर extglob खोल विकल्प को निर्मित दुकान का उपयोग कर सक्षम किया गया है, तो कई विस्तारित पैटर्न मिलान ऑपरेटरों को पहचाना जाता है। निम्नलिखित विवरण में, एक पैटर्न-सूची एक या अधिक पैटर्नों की एक सूची है जो | । निम्नलिखित पैटर्न में से एक या अधिक का उपयोग करके समग्र पैटर्न का गठन किया जा सकता है:

? ( पैटर्न सूची )

दिए गए पैटर्न की शून्य या एक घटना से मेल खाता है

* ( पैटर्न-सूची )

दिए गए पैटर्न के शून्य या अधिक घटनाओं से मेल खाता है

+ ( पैटर्न-सूची )

दिए गए पैटर्न की एक या अधिक घटनाओं से मेल खाता है

@ ( पैटर्न-सूची )

दिए गए पैटर्न में से एक बिल्कुल मेल खाता है

! ( पैटर्न सूची )

दिए गए पैटर्न में से किसी एक को छोड़कर कुछ भी मेल खाता है

उद्धरण हटाने

पिछले विस्तार के बाद, उपरोक्त विस्तारों में से किसी एक के परिणामस्वरूप वर्णित \ '' , और " वर्णों की सभी अनजान घटनाएं हटा दी गई हैं।

REDIRECTION

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

निम्नलिखित विवरणों में, यदि फ़ाइल डिस्क्रिप्टर नंबर छोड़ा गया है, और पुनर्निर्देशन ऑपरेटर का पहला अक्षर <है , तो पुनर्निर्देशन मानक इनपुट (फ़ाइल वर्णनकर्ता 0) को संदर्भित करता है। यदि पुनर्निर्देशन ऑपरेटर का पहला अक्षर > है , तो रीडायरेक्शन मानक आउटपुट (फ़ाइल डिस्क्रिप्टर 1) को संदर्भित करता है।

निम्नलिखित विवरणों में पुनर्निर्देशन ऑपरेटर के बाद वाला शब्द, जब तक कि अन्यथा ध्यान न दिया जाए, ब्रेस विस्तार, टिल्ड विस्तार, पैरामीटर विस्तार, कमांड प्रतिस्थापन, अंकगणितीय विस्तार, उद्धरण हटाने, पथनाम विस्तार और शब्द विभाजन के अधीन है। यदि यह एक से अधिक शब्द तक फैलता है, तो बैश एक त्रुटि रिपोर्ट करता है।

ध्यान दें कि पुनर्निर्देशन का आदेश महत्वपूर्ण है। उदाहरण के लिए, आदेश

एलएस > डर्लिस्ट 2 > और 1

कमांड के दौरान फ़ाइल डर्लिस्ट को मानक आउटपुट और मानक त्रुटि दोनों को निर्देशित करता है

एलएस 2 > और 1 > डर्लिस्ट

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

बैश विशेष रूप से कई फ़ाइल नामों को संभालता है जब उन्हें पुनर्निर्देशन में उपयोग किया जाता है, जैसा कि निम्न तालिका में वर्णित है:

/ dev / fd / fd

अगर एफडी एक वैध पूर्णांक है, तो फाइल डिस्क्रिप्टर एफडी डुप्लीकेट है।

/ dev / stdin

फाइल डिस्क्रिप्टर 0 डुप्लिकेट है।

/ dev / stdout

फाइल डिस्क्रिप्टर 1 डुप्लिकेट है।

/ dev / stderr

फाइल डिस्क्रिप्टर 2 डुप्लिकेट है।

/ dev / tcp / होस्ट / पोर्ट

यदि मेजबान एक वैध होस्टनाम या इंटरनेट पता है, और पोर्ट एक पूर्णांक पोर्ट नंबर या सेवा नाम है, तो बैश संबंधित सॉकेट में एक टीसीपी कनेक्शन खोलने का प्रयास करता है।

/ dev / udp / होस्ट / पोर्ट

यदि होस्ट वैध होस्टनाम या इंटरनेट पता है, और पोर्ट एक पूर्णांक पोर्ट नंबर या सेवा नाम है, तो बैश संबंधित सॉकेट में यूडीपी कनेक्शन खोलने का प्रयास करता है।

फ़ाइल खोलने या बनाने में विफलता पुनर्निर्देशन विफल होने का कारण बनती है।

इनपुट रीडायरेक्टिंग

इनपुट का पुनर्निर्देशन फ़ाइल का वर्णन करता है जिसका नाम फ़ाइल डिस्क्रिप्टर एन पर पढ़ने के लिए शब्द के विस्तार से खोला जाता है, या मानक इनपुट (फ़ाइल डिस्क्रिप्टर 0) यदि n निर्दिष्ट नहीं है।

इनपुट रीडायरेक्ट करने के लिए सामान्य प्रारूप है:

[ एन ] < शब्द

आउटपुट रीडायरेक्टिंग

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

आउटपुट रीडायरेक्ट करने के लिए सामान्य प्रारूप है:

[ एन ] > शब्द

अगर पुनर्निर्देशन ऑपरेटर है > , और सेट बिल्टिन के लिए noclobber विकल्प सक्षम किया गया है, तो पुनर्निर्देशन विफल हो जाएगा यदि फ़ाइल जिसका नाम शब्द के विस्तार से परिणाम मौजूद है और एक नियमित फ़ाइल है। अगर पुनर्निर्देशन ऑपरेटर है > | , या पुनर्निर्देशन ऑपरेटर है > और सेट बिल्टिन कमांड के लिए noclobber विकल्प सक्षम नहीं है, रीडायरेक्शन का प्रयास किया जाता है भले ही शब्द द्वारा नामित फ़ाइल मौजूद है।

पुनर्निर्देशित आउटपुट संलग्न करना

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

आउटपुट जोड़ने के लिए सामान्य प्रारूप है:

[ एन ] >> शब्द

मानक आउटपुट और मानक त्रुटि को पुनर्निर्देशित करना

बैश मानक आउटपुट (फ़ाइल डिस्क्रिप्टर 1) और मानक त्रुटि आउटपुट (फ़ाइल डिस्क्रिप्टर 2) दोनों को उस फ़ाइल पर रीडायरेक्ट करने की अनुमति देता है जिसका नाम इस निर्माण के साथ शब्द का विस्तार है।

मानक आउटपुट और मानक त्रुटि को पुनर्निर्देशित करने के लिए दो प्रारूप हैं:

और> शब्द

तथा

> और शब्द

दो रूपों में से पहला को प्राथमिकता दी जाती है। यह अर्थात् समकक्ष है

> शब्द 2 > और 1

यहां दस्तावेज़

इस प्रकार का पुनर्निर्देशन वर्तमान स्रोत से इनपुट पढ़ने के लिए खोल को निर्देशित करता है जब तक कि केवल एक शब्द वाली रेखा (बिना पीछे वाले रिक्त स्थान के) दिखाई दे। उस बिंदु तक पढ़ने वाली सभी पंक्तियों को तब कमांड के लिए मानक इनपुट के रूप में उपयोग किया जाता है।

यहां दस्तावेज़ों का प्रारूप है:

<< [ - ] यहाँ शब्द -दस्तावेज़ delimiter

कोई पैरामीटर विस्तार, कमांड प्रतिस्थापन, अंकगणितीय विस्तार, या पथनाम विस्तार शब्द पर किया जाता है । यदि शब्द में किसी भी वर्ण को उद्धृत किया गया है, तो डिलीमीटर शब्द पर उद्धरण हटाने का परिणाम है, और यहां-दस्तावेज़ में रेखाएं विस्तारित नहीं हैं। यदि शब्द निर्विवाद है, तो यहां-दस्तावेज़ की सभी पंक्तियां पैरामीटर विस्तार, कमांड प्रतिस्थापन, और अंकगणितीय विस्तार के अधीन हैं। बाद के मामले में, वर्ण अनुक्रम \ को अनदेखा किया जाता है, और \ \ $ $ , और ` वर्णों को उद्धृत करने के लिए \ n का उपयोग किया जाना चाहिए।

अगर पुनर्निर्देशन ऑपरेटर << - है , तो सभी प्रमुख टैब वर्ण इनपुट लाइनों और रेखाबद्ध रेखा से छीन लिया जाता है । यह यहां शैल स्क्रिप्ट के भीतर दस्तावेज़ों को प्राकृतिक फैशन में इंडेंट करने की अनुमति देता है।

यहाँ स्ट्रिंग्स

यहां दस्तावेजों का एक संस्करण, प्रारूप है:

<<< शब्द

शब्द का विस्तार किया गया है और इसके मानक इनपुट पर कमांड को आपूर्ति की जाती है।

फ़ाइल डिस्क्रिप्टर डुप्लिकेटिंग

पुनर्निर्देशन ऑपरेटर

[ एन ] <और शब्द

इनपुट फ़ाइल डिस्क्रिप्टर डुप्लिकेट करने के लिए प्रयोग किया जाता है। यदि शब्द एक या अधिक अंकों तक फैलता है, तो फ़ाइल द्वारा वर्णित फ़ाइल डिस्क्रिप्टर को उस फ़ाइल डिस्क्रिप्टर की एक प्रति बना दिया जाता है। यदि शब्द में अंक इनपुट के लिए फ़ाइल डिस्क्रिप्टर को निर्दिष्ट नहीं करते हैं, तो एक पुनर्निर्देशन त्रुटि होती है। यदि शब्द का मूल्यांकन करता है - फ़ाइल डिस्क्रिप्टर एन बंद है। यदि n निर्दिष्ट नहीं है, तो मानक इनपुट (फ़ाइल डिस्क्रिप्टर 0) का उपयोग किया जाता है।

परिचालक

[ एन ] > और शब्द

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

फ़ाइल डिस्क्रिप्टर चल रहा है

पुनर्निर्देशन ऑपरेटर

[ एन ] <और अंक -

फाइल डिस्क्रिप्टर अंक को डिस्क्रिप्टर एन , या मानक इनपुट (फ़ाइल डिस्क्रिप्टर 0) फ़ाइल करने के लिए चलाता है यदि n निर्दिष्ट नहीं है। एन को डुप्लीकेट होने के बाद अंक बंद कर दिया गया है।

इसी प्रकार, पुनर्निर्देशन ऑपरेटर

[ एन ] > और अंक -

फाइल डिस्क्रिप्टर अंक को डिस्क्रिप्टर एन , या मानक आउटपुट (फ़ाइल डिस्क्रिप्टर 1) फ़ाइल में ले जाता है यदि n निर्दिष्ट नहीं है।

पढ़ने और लिखने के लिए फ़ाइल डिस्क्रिप्टर खोलना

पुनर्निर्देशन ऑपरेटर

[ एन ] <> शब्द

फ़ाइल का वर्णन करता है जिसका नाम फ़ाइल वर्णनकर्ता एन पर पढ़ने और लिखने के लिए खोला जाने वाला शब्द का विस्तार है, या फ़ाइल डिस्क्रिप्टर 0 पर यदि n निर्दिष्ट नहीं है। अगर फ़ाइल मौजूद नहीं है, तो यह बनाया गया है।

उपनाम

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

उपनामों को उपनाम आदेश के साथ बनाया और सूचीबद्ध किया गया है, और unalias कमांड के साथ हटा दिया गया है।

प्रतिस्थापन पाठ में तर्कों का उपयोग करने के लिए कोई तंत्र नहीं है। यदि तर्क की आवश्यकता है, तो एक शैल फ़ंक्शन का उपयोग किया जाना चाहिए (नीचे दिए गए फ़ंक्शन देखें)।

जब शेल इंटरैक्टिव नहीं होता है तब तक एलियंस का विस्तार नहीं किया जाता है, जब तक कि export_aliases खोल विकल्प दुकान का उपयोग करके सेट नहीं किया जाता है (नीचे शेल बिल्टिन कमांड के तहत दुकान का विवरण देखें)।

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

लगभग हर उद्देश्य के लिए, उपनामों को खोल कार्यों द्वारा हटा दिया जाता है।

कार्य

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

फ़ंक्शन के लिए स्थानीय वैरिएबल स्थानीय बिल्टिन कमांड के साथ घोषित किया जा सकता है। आमतौर पर, चर और उनके मान फ़ंक्शन और उसके कॉलर के बीच साझा किए जाते हैं।

यदि बिल्टिन कमांड रिटर्न किसी फ़ंक्शन में निष्पादित किया जाता है, तो फंक्शन कॉल के बाद फ़ंक्शन पूर्ण हो जाता है और निष्पादन अगले कमांड के साथ फिर से शुरू होता है। जब कोई फ़ंक्शन पूरा होता है, तो स्थितित्मक पैरामीटर और विशेष पैरामीटर # के मान फ़ंक्शन के निष्पादन से पहले के मानों पर पुनर्स्थापित किए जाते हैं।

फंक्शन नाम और परिभाषाओं को घोषित या टाइपसेट अंतर्निहित आदेशों के लिए -f विकल्प के साथ सूचीबद्ध किया जा सकता है। घोषित करने के लिए -एफ विकल्प या टाइपसेट केवल फ़ंक्शन नाम सूचीबद्ध करेगा। फ़ंक्शंस को निर्यात किया जा सकता है ताकि उपशीर्षक स्वचालित रूप से उन्हें निर्यात किए गए निर्यात के लिए -f विकल्प के साथ परिभाषित कर सकें।

कार्य रिकर्सिव हो सकता है। रिकर्सिव कॉल की संख्या पर कोई सीमा नहीं लगाई गई है।

एरिथमेटिक मूल्यांकन

खोल कुछ गणित के तहत अंकगणितीय अभिव्यक्तियों का मूल्यांकन करने की अनुमति देता है ( चलिए बिल्टिन कमांड और अंकगणितीय विस्तार देखें )। मूल्यांकन फिक्स्ड-चौड़ाई पूर्णांक में किया जाता है जिसमें अतिप्रवाह के लिए कोई जांच नहीं होती है, हालांकि 0 से विभाजन फंस गया है और एक त्रुटि के रूप में चिह्नित किया गया है। ऑपरेटरों और उनकी प्राथमिकता और सहयोगीता सी भाषा में समान हैं। ऑपरेटरों की निम्नलिखित सूची बराबर-प्राथमिकता ऑपरेटरों के स्तर में समूहीकृत है। घटती हुई कमी के क्रम में स्तर सूचीबद्ध हैं।

आईडी ++ आईडी -

परिवर्तनीय पोस्ट-वृद्धि और पोस्ट-कमीशन

++ आईडी - आईडी

परिवर्तनीय पूर्व वृद्धि और पूर्व-कमी

- +

यूनरी माइनस और प्लस

! ~

तार्किक और bitwise नकारात्मकता

**

घातांक

* /%

गुणा, विभाजन, शेष

+ -

अतिरिक्त, घटाव

<< >>

बाएं और दाएं bitwise बदलाव

<=> = <>

तुलना

==! =

समानता और असमानता

और

bitwise और

^

bitwise अनन्य या

|

थोड़ा सा या

&&

तार्किक और

||

तार्किक या

expr ? expr : expr

सशर्त मूल्यांकन

= * = / =% = + = - = << = >> = और = ^ = | =

असाइनमेंट

expr1 , expr2

अल्पविराम

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

एक अग्रणी 0 के साथ स्थिरांक को ऑक्टल संख्या के रूप में व्याख्या किया जाता है। एक अग्रणी 0x या 0 एक्स हेक्साडेसिमल इंगित करता है। अन्यथा, संख्याएं [ आधार # ] एन लेती हैं, जहां आधार अंकगणितीय आधार का प्रतिनिधित्व करने वाले 2 और 64 के बीच एक दशमलव संख्या है, और n उस आधार में एक संख्या है। यदि आधार # छोड़ा गया है, तो आधार 10 का उपयोग किया जाता है। 9 से अधिक अंकों को उस क्रम में लोअरकेस अक्षरों, अपरकेस अक्षरों, @, और _ द्वारा दर्शाया जाता है। यदि आधार 36 से कम या उसके बराबर है, तो लोअरकेस और अपरकेस अक्षरों का उपयोग 10 से 35 के बीच संख्याओं का प्रतिनिधित्व करने के लिए एक दूसरे के लिए किया जा सकता है।

प्राथमिकता के क्रम में ऑपरेटरों का मूल्यांकन किया जाता है। कोष्ठक में उप-अभिव्यक्तियों का मूल्यांकन पहले किया जाता है और उपरोक्त प्राथमिकता नियमों को ओवरराइड कर सकता है।

कंडीशनियल अभिव्यक्तियां

सशर्त अभिव्यक्तियों का उपयोग [[ कंपाउंड कमांड और परीक्षण और [ अंतर्निहित आदेश फ़ाइल गुणों का परीक्षण करने और स्ट्रिंग और अंकगणितीय तुलना करने के लिए किया जाता है। अभिव्यक्तियां निम्नलिखित यूनरी या बाइनरी प्राइमरी से बनाई गई हैं। यदि प्राइमरी में से किसी एक के लिए कोई फ़ाइल तर्क फॉर्म / dev / fd / n का है , तो फ़ाइल डिस्क्रिप्टर एन की जांच की जाती है। यदि प्राइमरी में से किसी एक के लिए फ़ाइल तर्क क्रमशः / dev / stdin , / dev / stdout , या / dev / stderr , फ़ाइल वर्णनकर्ता 0, 1, या 2 क्रमशः चेक किया गया है।

एक फाइल

सही है अगर फ़ाइल मौजूद है।

-बी फाइल

सही है अगर फ़ाइल मौजूद है और एक ब्लॉक विशेष फ़ाइल है।

-सी फ़ाइल

सही है अगर फ़ाइल मौजूद है और एक चरित्र विशेष फ़ाइल है।

-डी फाइल

सही है अगर फ़ाइल मौजूद है और एक निर्देशिका है।

-ई फाइल

सही है अगर फ़ाइल मौजूद है।

-फ फाइल

सही है अगर फ़ाइल मौजूद है और एक नियमित फाइल है।

-जी फाइल

सही है अगर फ़ाइल मौजूद है और सेट-समूह-आईडी है।

-एच फाइल

सही है अगर फ़ाइल मौजूद है और एक प्रतीकात्मक लिंक है।

-के फ़ाइल

सही है अगर फ़ाइल मौजूद है और इसकी 'चिपचिपा' बिट सेट है।

-पी फाइल

सही है अगर फ़ाइल मौजूद है और नामित पाइप (फीफो) है।

-आर फाइल

सही है अगर फ़ाइल मौजूद है और पठनीय है।

फाइलें

सही है अगर फ़ाइल मौजूद है और शून्य से बड़ा आकार है।

-टीडी

यह सही है कि फ़ाइल डिस्क्रिप्टर एफडी खुला है और टर्मिनल को संदर्भित करता है।

-यू फ़ाइल

सही है अगर फ़ाइल मौजूद है और इसकी सेट-उपयोगकर्ता-आईडी बिट सेट है।

-w फ़ाइल

सही है अगर फ़ाइल मौजूद है और लिखने योग्य है।

-x फ़ाइल

सही है अगर फ़ाइल मौजूद है और निष्पादन योग्य है।

-ओ फ़ाइल

सही है अगर फ़ाइल मौजूद है और प्रभावी उपयोगकर्ता आईडी के स्वामित्व में है।

-जी फ़ाइल

सही है अगर फ़ाइल मौजूद है और प्रभावी समूह आईडी के स्वामित्व में है।

-एल फाइल

सही है अगर फ़ाइल मौजूद है और एक प्रतीकात्मक लिंक है।

-एस फ़ाइल

सही है अगर फ़ाइल मौजूद है और एक सॉकेट है।

-एन फाइल

यह सही है कि फ़ाइल मौजूद है और इसे अंतिम बार पढ़ने के बाद से संशोधित किया गया है।

फ़ाइल 1 - एनटी फाइल 2

यह सही है कि फ़ाइल 1 की तुलना में फ़ाइल 1 नया है (संशोधन दिनांक के अनुसार), या यदि फ़ाइल 1 मौजूद है और file2 नहीं है।

फ़ाइल 1 - ओटी फाइल 2

यह सही है कि फ़ाइल 1 फ़ाइल 2 से पुराना है, या यदि फ़ाइल 2 मौजूद है और file1 नहीं है।

file1 -ef file2

यह सही है कि फ़ाइल 1 और file2 एक ही डिवाइस और इनोड संख्याओं को संदर्भित करता है।

-o optname

सही है कि खोल विकल्प ऑप्टनाम सक्षम है। नीचे दिए गए सेट में -o विकल्प के विवरण के तहत विकल्पों की सूची देखें।

-z स्ट्रिंग

सही है कि स्ट्रिंग की लंबाई शून्य है।

-एन स्ट्रिंग

तार

सही है कि स्ट्रिंग की लंबाई शून्य है।

स्ट्रिंग 1 == स्ट्रिंग 2

सच है अगर तार बराबर हैं। = सख्त POSIX अनुपालन के लिए == के स्थान पर उपयोग किया जा सकता है।

स्ट्रिंग 1 ! = स्ट्रिंग 2

सच है अगर तार बराबर नहीं हैं।

स्ट्रिंग 1 < स्ट्रिंग 2

यह सही है कि स्ट्रिंग 1 मौजूदा लोकेल में स्ट्रिंग 2 लेक्सिकोग्राफिक से पहले टाइप करता है

स्ट्रिंग 1 > स्ट्रिंग 2

यह सही है कि मौजूदा लोकेल में स्ट्रिंग 2 लेक्सिकोोग्राफिक के बाद स्ट्रिंग 1 प्रकार।

arg1 ओपी arg2

ओपी एक, एक , -lt , -le , -gt , या -ge में से एक है । ये अंकगणितीय बाइनरी ऑपरेटर सत्य लौटते हैं यदि arg1 बराबर है, बराबर, उससे कम, उससे कम या बराबर, क्रमशः, या 2 से अधिक या बराबर के बराबर नहीं है। Arg1 और arg2 सकारात्मक या नकारात्मक पूर्णांक हो सकते हैं।

सरल कमांड विस्तार

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

1।

शब्द जो पार्सर ने परिवर्तनीय असाइनमेंट के रूप में चिह्नित किया है (कमांड नाम से पहले) और पुनर्निर्देशन बाद में प्रसंस्करण के लिए सहेजे गए हैं।

2।

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

3।

पुनर्निर्देशन के तहत ऊपर वर्णित अनुसार पुनर्निर्देशन किया जाता है।

4।

प्रत्येक वैरिएबल असाइनमेंट में = के बाद पाठ को परिवर्तनीय को आवंटित करने से पहले टिल्ड विस्तार, पैरामीटर विस्तार, कमांड प्रतिस्थापन, अंकगणितीय विस्तार, और उद्धरण हटाने से गुजरना पड़ता है।

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

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

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

कमांड निष्पादन

कमांड को शब्दों में विभाजित करने के बाद, यदि यह एक साधारण कमांड और तर्कों की एक वैकल्पिक सूची में परिणाम देता है, तो निम्न कार्यवाही की जाती है।

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

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

यदि खोज सफल होती है, या यदि कमांड नाम में एक या अधिक स्लेश होते हैं, तो शेल नामित प्रोग्राम को एक अलग निष्पादन वातावरण में निष्पादित करता है। तर्क 0 दिए गए नाम पर सेट है, और कमांड के शेष तर्क दिए गए तर्कों पर सेट हैं, यदि कोई हो।

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

यदि कार्यक्रम # से शुरू होने वाली फ़ाइल है ! , पहली पंक्ति का शेष कार्यक्रम के लिए एक दुभाषिया निर्दिष्ट करता है। खोल ऑपरेटिंग सिस्टम पर निर्दिष्ट दुभाषिया निष्पादित करता है जो इस निष्पादन योग्य प्रारूप को स्वयं संभाल नहीं करता है। दुभाषिया के तर्कों में प्रोग्राम की पहली पंक्ति पर दुभाषिया नाम के बाद एक वैकल्पिक तर्क होता है, उसके बाद प्रोग्राम के नाम के बाद, कमांड तर्कों के बाद, यदि कोई हो।

कमांड निष्पादन पर्यावरण

खोल में निष्पादन वातावरण होता है , जिसमें निम्न शामिल होते हैं:

*

निष्पादन पर खोल द्वारा विरासत में खुली फाइलें, जैसा कि निष्पादित निष्पादित किए गए पुनर्निर्देशन द्वारा संशोधित किया गया है

*

सीडी , पुश , या पॉपड द्वारा सेट की गई वर्तमान कार्यशील निर्देशिका, या आमंत्रण पर खोल द्वारा विरासत में प्राप्त

*

फ़ाइल निर्माण मोड मास्क को उमास्क द्वारा सेट किया गया है या शैल के माता-पिता से विरासत में मिला है

*

जाल द्वारा सेट वर्तमान जाल

*

शैल पैरामीटर जो वेरिएबल असाइनमेंट द्वारा सेट किए गए हैं या सेट के साथ या पर्यावरण में शैल के माता-पिता से विरासत में हैं

*

खोल कार्यों को निष्पादन के दौरान परिभाषित किया गया है या पर्यावरण में शैल के माता-पिता से विरासत में मिला है

*

विकल्पों को आमंत्रण में सक्षम किया गया है (या तो डिफ़ॉल्ट रूप से या कमांड लाइन तर्क के साथ) या सेट द्वारा

*

दुकान द्वारा सक्षम विकल्प

*

उपनाम के साथ परिभाषित शैल उपनाम

*

पृष्ठभूमि प्रक्रियाओं, $$ का मूल्य, और $ पीपीआईडी के मूल्य सहित विभिन्न प्रक्रिया आईडी

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

*

खोल की खुली फाइलें, साथ ही आदेश में पुनर्निर्देशन द्वारा निर्दिष्ट कोई भी संशोधन और जोड़

*

वर्तमान कामकाजी निर्देशिका

*

फ़ाइल निर्माण मोड मुखौटा

*

खोल के लिए निर्यात किए गए चर के साथ निर्यात के लिए चिह्नित शैल चर, पर्यावरण में पारित

*

खोल द्वारा पकड़े गए जाल को शैल के माता-पिता से विरासत में प्राप्त मूल्यों पर रीसेट कर दिया जाता है, और खोल द्वारा अनदेखा जाल को अनदेखा किया जाता है

इस अलग वातावरण में शामिल एक आदेश शैल के निष्पादन पर्यावरण को प्रभावित नहीं कर सकता है।

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

यदि एक कमांड का पालन किया जाता है और नौकरी नियंत्रण सक्रिय नहीं होता है, तो कमांड के लिए डिफ़ॉल्ट मानक इनपुट खाली फ़ाइल / dev / null है । अन्यथा, आवंटित आदेश को कॉलिंग शैल के फ़ाइल वर्णनकर्ताओं को पुनर्निर्देशन द्वारा संशोधित किया जाता है।

यह भी देखें

बैश संदर्भ मैनुअल , ब्रायन फॉक्स और चेत रैमी

जीएनयू रीडलाइन लाइब्रेरी , ब्रायन फॉक्स और चेत रैमी

जीएनयू इतिहास पुस्तकालय , ब्रायन फॉक्स और चेत रैमी

पोर्टेबल ऑपरेटिंग सिस्टम इंटरफेस (पीओएसआईक्स) भाग 2: शैल और उपयोगिताएं , आईईईई

sh (1), ksh (1), csh (1)

emacs (1), vi (1)

रीडलाइन (3)