Bash - लिनक्स कमांड - युनिक्स कमांड

NAME

bash - GNU Bourne- पुन्हा शेल

सुप्रसिद्ध

बाश [पर्याय] [फाइल]

DESCRIPTION

Bash हे sh -compatible आज्ञा भाषा इंटरप्रेटर आहे जे मानक इनपुट किंवा फाइलमधून वाचलेल्या आज्ञा कार्यान्वित करते. Bash मध्ये कॉर्न आणि सी शेल्स् ( के.एस.एस. आणि सीएसएस ) मधील उपयुक्त वैशिष्ट्ये देखील समाविष्ट आहेत.

Bash हे IEEE POSIX Shell आणि Tools Specification (IEEE वर्किंग ग्रुप 1003.2) चे सुसंगत अंमलबजावणी करण्याच्या उद्देशाने आहे.

पर्याय

सेट बिल्डिन कमांडच्या वर्णन केलेल्या एकल-वर्ण शेल पर्यायांच्या व्यतिरिक्त, बाश खालील पर्यायांचा विचार करतेवेळी व्याख्या करतो:

-c स्ट्रिंग

जर -c पर्याय उपस्थित असेल तर, आज्ञा स्ट्रिंगवरून वाचली जाते. स्ट्रिंग नंतर काही आर्ग्यूमेंट असल्यास, त्यांना $ 0 सह सुरू होणारी स्थितीय पॅरामीटर्सला नियुक्त केले जाते.

-i

-i पर्याय आढळल्यास, शेल परस्पररित्या आहे .

-एल

लाँच करण्याच्या शेलच्या रूपात (खाली INVOCATION पहा) अशी बाश कृती करा.

-आर

-r पर्याय अस्तित्वात असल्यास, शेल प्रतिबंधित होते (खाली प्रतिबंधित शिल्लक पहा).

-स्

-s पर्याय अस्तित्वात असल्यास, किंवा पर्याय प्रक्रिया केल्यानंतर कोणतेही आर्ग्युमेंट्स राहिल्या नाहीत, तर मग मानक इनपुटवरून कमांडस् वाचली जातात. परस्पर शेल चालविताना हा पर्याय तुम्हास स्थितीय पॅरामीटर्स सेट करण्यास परवानगी देतो.

-डी

$ आधीच्या सर्व डबल कोट केलेल्या स्ट्रिंगची सूची मानक आउटपुटवर छापली जाते. सध्याची लोकॅल C किंवा POSIX नसताना हे भाषेच्या भाषेच्या अधीन असतात. याचा अर्थ -n पर्याय; कुठल्याही आज्ञा कार्यान्वित होणार नाहीत.

[- +] ओ [ shopt_option ]

shopt_option shopt builtin द्वारे स्वीकारलेले शेल पर्याय आहे (खालील SHELL BUILTIN कमांड्स पहा). Shopt_option अस्तित्वात असल्यास, -O त्या पर्यायाचे मूल्य सेट करते; + ओ हे संकलित करते Shopt_option पुरविले जात नसल्यास, शॉपटद्वारे स्वीकारलेल्या शेल पर्यायांची नावे आणि मूल्ये मानक आउटपुटवर छापली जातात. जर अविवाचन पर्याय + O असेल तर , आऊटपुट एका स्वरूपात दाखवले जाते जे इनपुट म्हणून पुन्हा वापरले जाऊ शकते.

-

- पर्यायांचा अंत संकेत आणि पुढे पर्याय प्रक्रिया अकार्यान्वित. नंतरचे कोणतेही आर्ग्युमेंट्स - फाइलनाव आणि आर्ग्युमेंट म्हणून समजले जातात. याचे तर्क - समतुल्य आहे - .

बश अनेक मल्टि-वर्ण पर्यायांचे भाषांतर देखील करतो. एकमेव-वर्ण पर्याय ओळखले जाण्यापूर्वी या पर्याय आदेश ओळीवर दिसणे आवश्यक आहे.

--dump-po-strings

टू टू-टू सममूल्य, परंतु आउटपुट GNU gettext po (पोर्टेबल ऑब्जेक्ट) फाइल स्वरूपात आहे.

--डप-स्ट्रिंग

टू- डी समांतर

- मदत

मानक आउटपुटवर वापर संदेश प्रदर्शित करा आणि यशस्वीरित्या निर्गमन करा.

--init-file फाइल

--rcfile फाइल

शेल इंटरअॅक्टिव्ह असल्यास (खालील INVOCATION पहा) मानक व्यक्तिगत प्रारंभ फाइल ~ / .bashrc ऐवजी फाइलमधून कमांड कार्यान्वित करा.

--ब्लॉगन

-ला समांतर

--अनुदान

शेल इंटरअॅक्टिव्ह असताना आदेश ओळी वाचण्यासाठी GNU readline लायब्ररीचा वापर करू नका.

--noprofile

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

--norc

शेल इंटरअॅक्टिव्ह असल्यास व्यक्तिगत प्रारंभिक फाइल ~ / .bashrc वाचू नका व कार्यान्वित करू नका. शेलला sh म्हणून लागू केले असल्यास हे पर्याय डीफॉल्टनुसार चालू असतात.

--पोझिक्स

Bash चे वर्तन बदला जेथे मुलभूत ऑपरेशन मानक ( पोझीक्स मोड ) शी जुळण्यासाठी POSIX 1003.2 मानक पासून वेगळे आहे.

--ब्रेक्षित

शेल प्रतिबंधित होते (खाली प्रतिबंधित शिल्लक पहा).

--rpm- आवश्यक

शेल स्क्रिप्टसाठी आवश्यक असलेल्या फाइल्सची यादी तयार करा. ह्यामध्ये '-n' हा शब्दप्रयोग आहे आणि त्याच त्रुटींच्या अधीन आहे ज्यामुळे वेळ त्रुटी तपासणी तपासणी केली जाते; बॅकटिक्स, [] चाचण्या, आणि इव्हल्स वाचलेले नाहीत त्यामुळे काही अवलंबित्वाची गहाळ होऊ शकते. --verbose समांतर- v

- विरुद्ध

मानक आऊटपुटवरील bash च्या या उदाहरणासाठी आवृत्ती माहिती दर्शवा आणि यशस्वीरित्या निर्गमन करा

वितर्क

पर्याय प्रक्रिया केल्यानंतर आर्ग्युमेंट्स अस्तित्वात असल्यास, आणि -c किंवा -s पर्याय पुरवले गेले नसल्यास, पहिले घटक शेल आदेश असलेल्या फाइलचे नाव असे गृहीत धरले जाते. याप्रकारे bash लागू केले असल्यास, $ 0 फाइलच्या नावावर सेट केले आहे, आणि स्थितीय पॅरामीटर उर्वरित अर्ग्युमेंट्सवर सेट केले आहेत. Bash या फाईलमधून आदेश वाचते आणि कार्यान्वित करते, नंतर बाहेर पडते Bash च्या बाहेर पडण्याची स्थिती स्क्रिप्टमध्ये चालवलेल्या शेवटच्या आज्ञाची बाहेरची स्थिती आहे. जर कोणतीही कमांडस् चालत नाही, तर एक्झिट स्टेटस 0 असेल. वर्तमान डाइरेक्टरीमध्ये फाइल उघडण्यासाठी प्रथम प्रयत्न केला जातो, आणि, जर कोणतीही फाइल सापडली नाही तर शेल स्क्रिप्टसाठी PATH मधील डिरेक्टरी शोधते.

INVOCATION

लॉगिन शेल असा आहे ज्याचे प्रथम अक्षरांचे आर्ग्युमेंट शून्य अ - किंवा --login पर्यायाने सुरू होते.

एक इंटरैक्टिव शेल नॉन-ऑप्शन आर्ग्यूमेंटशिवाय सुरु आहे आणि -सी ऑप्शनशिवाय मानक इनपुट आणि आऊटपुट दोन्ही टर्मिनलशी जोडलेले आहेत ( asatty (3) द्वारे निर्धारित केल्याप्रमाणे), किंवा -i ऑप्षनने सुरू केलेल्यापैकी एक. PS1 सेट केले आहे आणि $ - यात समाविष्ट आहे जर bash इंटरैक्टिव आहे तर, या स्क्रिप्टची तपासणी करण्यासाठी एक शेल स्क्रिप्ट किंवा स्टार्टअप फाइलला परवानगी दिली जाते.

खालील परिच्छेद वर्णन करतात की Bash त्याच्या स्टार्टअप फाइल्स कशा चालवते. जर यापैकी कुठल्याही फाईल्स अस्तित्वात आहेत पण वाचता येत नाहीत, तर बाशने त्रुटी दर्शविली. विस्तार क्रमांक विभागात टिल्ड विस्ताराच्या खाली वर्णन केल्यानुसार Tildes फाइल नावांमध्ये विस्तृत केले गेले आहेत.

जेव्हा परस्पर लॉग इन शेल म्हणून बाश लावले जाते, किंवा --login पर्यायसह नॉन-इंटरैक्टिव्ह शेल म्हणून वापरतात , तेव्हा ती प्रथम फाइल / etc / profile मधील आदेश वाचते आणि कार्यान्वीत करते, जर ती फाइल अस्तित्वात असेल. ती फाईल वाचल्यानंतर ती ~ / .bash_profile , ~ / .bash_login , आणि ~ / .profile साठी त्या क्रमाने दिसते आणि प्रथम अस्तित्वात असलेली आणि वाचनीय वाचन आणि आज्ञा कार्यान्वित करते. --noprofile पर्याय वापरला जाऊ शकतो जेव्हा हे वर्तन मनाविणे सुरू केले जाते.

लॉगिन शेल बाहेर पडतो तेव्हा, ~~ / .bash_logout फाइलमधील आज्ञा वाचून आणि कार्यान्वित करतो , जर अस्तित्वात असेल तर.

जेव्हा इंटरैक्टिव शेल लॉगिन शेल नसेल तेव्हा, bash वाचतो आणि ~ / .bashrc पासून कमांड कार्यान्वित करतो, जर ती फाइल अस्तित्वात असेल तर. हे --norc पर्यायचा वापर करून अडथळा येईल. --rcfile फाइल पर्याय ~ / .bashrc ऐवजी फाइलमधून आदेश वाचण्याकरिता व कार्यान्वीत करण्याकरीता bash सक्ती करेल.

शॅश स्क्रिप्ट चालविण्यासाठी जेव्हा बाश सुरु होते, उदाहरणार्थ, एन्टरटेन्मेंटमध्ये वेरिएबल BASH_ENV चा शोध घेते , तिथे त्याचे मूल्य वाढते, आणि फाईलचे नाव वाचण्यासाठी आणि कार्यान्वित करण्यासाठी विस्तारित मूल्याचा वापर करते. . खालील आज्ञा लावल्याप्रमाणे बश वर्तन करते:

जर [-n "$ BASH_ENV"]; नंतर. "$ BASH_ENV"; फाई

परंतु पीएटीएच व्हेरिएबलचे मूल्य फाइल नावासाठी शोधण्यासाठी वापरले जात नाही.

नाव sh सह bash ला जोडले असल्यास, ते शक्य तितक्या लवकर sh च्या ऐतिहासिक आवृत्त्यांच्या स्टार्टअप वर्तनचे अनुकरण करण्याचा प्रयत्न करते, तसेच POSIX मानकांशी जुळत असताना देखील. जेव्हा परस्पर लॉगिन लॉक म्हणून विनंती केली जाते, किंवा --login पर्यायसह नॉन-इंटरैक्टिव्ह शेल, तेव्हा त्यास प्रथम / etc / profile~ / .profile पासून आदेश वाचण्याचा व कार्यान्वीत करण्याचा प्रयत्न केला जातो. हे वर्तन रोखण्यासाठी --noprofile पर्याय वापरला जाऊ शकतो. जेव्हा नाव sh सह परस्पर शेल म्हणून लागू केले जाते, तेव्हा बास EN एएनआर व्हेरिएबलचा शोध घेते , त्याची व्याख्या केली जाते त्याप्रमाणे त्याचे मूल्य वाढते आणि फाईलचे नाव वाचण्यासाठी व कार्यान्वित करण्यासाठी विस्तारित मूल्याचा वापर करते. Sh म्हणून शेल लागू केल्यामुळे कोणत्याही इतर स्टार्टअप फाइलमधून आदेश वाचण्याचा व कार्यान्वित करण्याचा प्रयत्न होत नसल्यामुळे --rcfile पर्यायचा प्रभाव पडत नाही. Sh नावाचे विना-परस्पर शेल दुसऱ्या स्टार्टअप फायली वाचण्याचा प्रयत्न करत नाही. Sh म्हणून विनंती करताना, स्टार्टअप फायली वाचल्यानंतर बॅश मोडमध्ये प्रवेश करते.

जेव्हा पोझिक्स मोडमध्ये प्रारंभ होते, तेव्हा --posix command line पर्यायासह, हे स्टार्टअप फाइल्ससाठी POSIX मानक खालीलप्रमाणे आहे. या मोडमध्ये, परस्परसंवादी शेल ENV व्हेरिएबल विस्तृत करतात आणि फाईल वाचलेल्या आणि फाईलद्वारे कार्यान्वित केल्या जातात ज्यांचे नाव विस्तारित मूल्य असते. कोणत्याही इतर स्टार्टअप फायली वाचल्या जात नाहीत.

बॅट रिमोट शेल डिमन द्वारे चालवित असताना , सामान्यतः rshd द्वारे निश्चित करते . जर bash निर्धारित करतो की ते rshd द्वारे चालवले जात आहे, तर ते ~ / .bashrc वरून कमांड कार्यान्वित करते आणि कार्यान्वित करते, जर ती फाइल अस्तित्वात असेल आणि वाचनीय असेल Sh म्हणून लागू केले तर ते तसे करणार नाही --norc पर्यायचा वापर या वर्तनास बाधासाठी केला जाऊ शकतो, आणि दुसरी फाइल वाचण्यासाठी सक्ती करण्यासाठी --rcfile पर्यायचा वापर होऊ शकतो, परंतु rshd सहसा त्या पर्यायसह शेल वापरत नाही किंवा त्यांना स्पष्ट करण्यास परवानगी देतो

शेल प्रभावी वापरकर्ता (गट) आयडी वास्तविक वापरकर्त्या (गट) आयडीच्या बरोबरीने सुरू झाला असेल तर आणि -p पर्याय पुरविला जाणार नाही, कोणत्याही स्टार्टअप फायली वाचल्या जाणार नाहीत, शेल फंक्शन्स पर्यावरण पासून वंचित राहणार नाहीत, SHELLOPTS वेरियेबल, हे पर्यावरणात दिसल्यास, दुर्लक्ष केले जाते आणि प्रभावी वापरकर्ता आयडी वास्तविक वापरकर्ता आयडीवर सेट आहे. जर -p पर्याय नवचैतन्याने देण्यात आल्यास, स्टार्टअप वर्तन सारखेच आहे, परंतु प्रभावी वापरकर्ता आयडी रीसेट नाही.

परिभाषा

यातील उर्वरित दस्तऐवजामध्ये खालील व्याख्या वापरल्या जातात.

रिक्त

एक जागा किंवा टॅब

शब्द

शेलद्वारे एकच एकक म्हणून गणले गेलेल्या वर्णांचा क्रम. टोकन म्हणूनही ओळखले जाते

नाव

केवळ अल्फान्यूमरिक वर्ण आणि अंडरस्कोर्स असणारी एक शब्द , आणि एखाद्या अक्षराने किंवा अंडरस्कोरसह सुरू होणारा शब्द. तसेच अभिज्ञापक म्हणून संदर्भित.

मेटाचॅरॅक्टर

एक वर्ण जे, जेव्हा न ऐकलेला असतो, शब्द वेगळे करतात. खालीलपैकी एक:

| &; () <> अवकाश टॅब

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

एक टोकन जे नियंत्रण कार्य करते तो खालील चिन्हे एक आहे:

|| &&; ;; () |

आरक्षित शब्द

आरक्षित शब्द म्हणजे शब्द जे शेलसाठी विशेष अर्थ आहेत. खालील शब्द अचूक असतांना आरक्षित म्हणून ओळखले जातात आणि एकतर साध्या आदेशाचे पहिले शब्द (खाली SHELL GRAMMAR पहा) किंवा प्रकरणाचे तिसरे शब्द किंवा कमांडसाठी:

! निवडलेल्या वेळेस फंक्शन कार्यान्वित असेल तर {} वेळ [[]] पर्यंत

शेल ग्रामर

साध्या आदेश

एक सोपा आदेश पर्यायी वेरियेबल असाइनमेंटचा क्रम आहे, त्यानंतर रिक्त- अपूर्ण शब्द आणि पुनर्निर्देशन आणि नियंत्रण ऑपरेटरद्वारे समाप्त केले जाते. पहिला शब्द कार्यान्वित होण्याआधी आदेश निर्दिष्ट करतो, आणि argument zero म्हणून पास केला जातो. उर्वरित शब्द लागू आदेशास वितरित केले जातात

सोप्या कमांडचे रिटर्न व्हॅल्यू त्याच्या एक्झिट स्टॅटिक, किंवा 128+ एन असल्यास जर कमांड सिग्नल एन

पाईपलाईन

एक पाइपलाइन वर्णाने विभक्त केलेल्या एक किंवा अधिक कमांड्सचा क्रम आहे | . एक पाइपलाइन साठी स्वरूप आहे:

[ वेळ [ -पी ]] [! ] आज्ञा [ | कमांड 2 ...]

कमांडचे मानक आउटपुट पाईप द्वारे कमांड 2 च्या मानक इनपुटवर जोडलेले आहे . हे कनेक्शन आदेशाद्वारे निर्दिष्ट केलेल्या कोणत्याही पुनर्निर्देशनापूर्वी (खाली REDIRECTION पहा) आधी केले जाते.

आरक्षित शब्द तर ! पाइपलाइनच्या आधी, पाईपलाईनची बाहेर जाण्याची स्थिती म्हणजे शेवटच्या कमांडच्या बाहेर पडण्याच्या स्थितीची तार्किक नाही. अन्यथा, पाईपलाईनची स्थिती ही शेवटच्या कमांडची बाहेर पडायला स्थिती आहे. व्हॅल्यू परत करण्यापूर्वी पाइललाईनमधील सर्व कमांड्सची शट पूर्ण होण्याची प्रतीक्षा करते.

जर आरक्षित शब्द पाईपलाईनच्या आधी असेल, तर विलंबित आणि उपयोजक आणि त्याच्या अंमलबजावणीमुळे वापरल्या जाणार्या प्रणालीचा वेळेस पाइपलाइन बंद होताना कळविण्यात येईल. -p पर्याय POSIX द्वारे निर्देशीत आउटपुट स्वरूपात बदल करतो. TIMEFORMAT वेरियेबल एक स्वरूप स्ट्रिंगवर सेट केला जाऊ शकतो जो वेळ माहिती कशी प्रदर्शित करायची हे निर्दिष्ट करते; खालील SHELL व्हेरिएबल अंतर्गत TIMEFORMAT चे वर्णन पहा.

एका पाइपलाइनमध्ये प्रत्येक आदेश वेगळ्या प्रक्रिया (उदाहरणार्थ, एक सबशेल्ड मध्ये) म्हणून अंमलात येतो.

सूची

यादी एका ऑपरेटर्सद्वारे विभाजीत केलेल्या एक किंवा अधिक पाईपलाईनचा क्रम आहे ; , & , && , किंवा || , आणि वैकल्पिकरित्या त्यापैकी एक द्वारे समाप्त ; , & , किंवा

या सूची ऑपरेटरच्या, && आणि || त्यानंतर समानता असणे आवश्यक आहे ; आणि &, ज्याला समान प्राधान्य आहे.

एक किंवा अधिक नवीन ओळी क्रमवार मांडणी करण्यासाठी अर्धविरामांऐवजी एका सूचीमध्ये दिसू शकतात.

जर कमांड कंट्रोल ऑपरेटरने बंद केला आणि शेल शेलमध्ये पार्श्वभूमीमधे कमांड कार्यान्वित करतो. आदेश समाप्त होण्याची शेल प्रतीक्षा करत नाही आणि रिटर्न स्थिती 0 आहे . क्रमशः अंमलात जातात; शेल प्रतिक्षा करण्यासाठी प्रत्येक आदेशासाठी प्रतीक्षा करतो. परतीच्या स्थितीत अंमलात असलेल्या अंतिम आदेशाची बाहेरची स्थिती आहे.

नियंत्रण ऑपरेटर && आणि || निर्देश आणि सूची आणि OR सूची अनुक्रमे एका सूचीत फॉर्म आहे

कमांड 1 आणि कमांड 2

कमांड 2 कार्यान्वित आहे, आणि केवळ जर, कमांड 1 शून्याची एक्झिट स्टेट परत करेल.

एक किंवा सूचीमध्ये फॉर्म आहे

कमांड 1 || कमांड 2

कमांड 2 कार्यान्वित आहे जर आणि जर कमांड 1 नॉन-झिरो एक्झीट स्टेटस परत करेल. सूचीमध्ये अंमलात आणलेल्या शेवटच्या आज्ञाची बाहेरची स्थिती म्हणजे AND आणि OR सूटची परत स्थिती आहे.

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

एक कंपाउंड कमांड खालीलपैकी एक आहे:

( यादी )

list subshell मध्ये कार्यान्वित होईल. वेरिएबल असाइनमेंट आणि आतील आज्ञा जे शेलच्या पर्यावरणावर परिणाम करतात ते आदेश पूर्ण झाल्यानंतर प्रभावी राहणार नाही. परतीच्या स्थितीची सूचीची निर्गमन स्थिती आहे.

{ यादी ; }

सूची फक्त चालू शेल वातावरणात चालवली जाते. सूचीला नवीन ओळ किंवा अर्धविरामाने समाप्त करणे आवश्यक आहे. याला group कमांड म्हणतात . परतीच्या स्थितीची सूचीची निर्गमन स्थिती आहे. लक्षात ठेवा metacharacters ( आणि ) विपरीत, { आणि } राखीव शब्द आहेत आणि जेथे आरक्षित शब्द ओळखले जाऊ परवानगी उद्भवू पाहिजे. कारण ते शब्द मोडत नाहीत म्हणून, ते व्हाइसस्पेसच्या सूचीमधून वेगळे केले गेले पाहिजे.

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

एर्थिथमचे मूल्यांकन खाली नमूद केलेल्या नियमांनुसार अभिव्यक्तीचे मूल्यांकन केले जाते . जर अभिव्यक्तीचे मूल्य शून्य आहे, तर रिटर्न स्थिती 0 आहे; अन्यथा रिटर्नची स्थिती 1 आहे. हे " एक्सप्रेशन " म्हणून समांतर आहे.

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

सशर्त अभिव्यक्ती अभिव्यक्तीचे मूल्यांकन केल्यावर 0 किंवा 1 ची स्थिती परत आणा . अभिव्यक्तीचे अंतर्गत शारिरीक अभिव्यक्ती अंतर्गत खाली वर्णन primaries बनलेला आहेत . शब्द विभाजन आणि पथनाव विस्तार [[ आणि ]] दरम्यानच्या शब्दांवर केला जात नाही; टिल्ड विस्तार, मापदंड आणि परिवर्तनशील विस्तार, अंकगणित विस्तार, आदेश प्रतिस्थापक, प्रक्रिया प्रतिस्थापन आणि कोट काढून टाकणे.

जेव्हा == आणि ! = ऑपरेटर वापरतात, तेव्हा ऑपरेटरच्या उजवीकडे असलेल्या स्ट्रिंगची एक नमुना मानली जाते आणि पॅटर्न मिलिंगच्या खाली वर्णन केलेल्या नियमांनुसार जुळविली जाते. रिटर्न मूल्य 0 असल्यास स्ट्रिंग जुळते किंवा नमुनाशी अनुक्रमे जुळत नाही आणि 1 अन्यथा. एक स्ट्रिंग म्हणून जुळणी करण्यासाठी तो लागू करण्यासाठी प्रतिमानाचा कोणताही भाग उद्धृत केला जाऊ शकतो.

प्राधान्य क्रम कमी मध्ये सूचीबद्ध खालील ऑपरेटर वापरून एक्सप्रेशन एकत्र केली जाऊ शकते:

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

अभिव्यक्तीचे मूल्य मिळवते हे ऑपरेटरच्या सामान्य प्राधान्य अधिलिखित करण्यासाठी वापरले जाऊ शकते.

! अभिव्यक्ती

अभिव्यक्ती चुकीची आहे तर खरे.

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

खरे असल्यास अभिव्यक्ती 1 आणि अभिव्यक्ति 2 हे खरे आहेत.

अभिव्यक्ति 1 || expression2 सत्य असल्यास एकतर अभिव्यक्ति 1 किंवा अभिव्यक्ति 2 सत्य आहे.

&& आणि || अभिव्यक्ती 1 चे मूल्य संपूर्ण सशर्त अभिव्यक्तीचे रिटर्न मूल्य निर्धारित करण्यासाठी पुरेसे असल्यास ऑपरेटर्स अभिव्यक्ति 2 चे मूल्यांकन करत नाहीत.

[ नाव ]; यादी करा ; केले

खालील गोष्टींची यादी विस्तारीत करण्यात आली आहे, आयटमची सूची व्युत्पन्न करणे. व्हेरिएबलचे नाव ह्या सूचीमधील प्रत्येक घटका वर सेट आहे, आणि प्रत्येक वेळी सूची कार्यान्वित केली जाते. शब्दामध्ये वगळल्यास, for command प्रत्येक स्थितीय पॅरामीटरसाठी सेट केले आहे जे सेट आहे (खाली पॅरामेटर्स पहा). रिटर्नची स्थिती कार्यान्वित असलेल्या शेवटच्या कमांडची एक्झिट स्टॅटिटी आहे. रिक्त सूचीमध्ये परिणामांमध्ये दिलेल्या आयटमचा विस्तार असल्यास, कोणतीही आज्ञा अंमलात आणली जात नाही आणि परत स्थिती 0 असते

साठी (( expr1 ; expr2 ; expr3 )); यादी करा ; केले

प्रथम, अंकगणितीय अभिव्यक्ती expr1 चे मूल्यांकन खाली नमूद केलेल्या नियमांनुसार केले जाते ARITHMETIC मुल्यांकन . अंकगणितीय अभिव्यक्तीचे एक्सप्रोड 2 नंतर वारंवार मूल्यमापन केले जाते जोपर्यंत ती शून्य नाही. प्रत्येक वेळी expr2 नॉन-झीरो व्हॅल्यूचे मूल्यमापन करते, सूची कार्यान्वित होते आणि अंकगणितीय अभिव्यक्ती expr3 चे मूल्यमापन केले जाते. कोणतीही अभिव्यक्ती वगळली गेल्यास, ती 1 चे मूल्यांकन करते असे वर्तन करते. रिटर्न व्हॅल्यू ही शेवटच्या कमांडची एक्झिट स्टॅटिकट आहे जी अंमलात आहे, किंवा कोणत्याही स्वरूपाचे हे अवैध असल्यास अवैध आहे.

नाव [ निवडा ]; यादी करा ; केले

खालील गोष्टींची यादी विस्तारीत करण्यात आली आहे, आयटमची सूची व्युत्पन्न करणे. विस्तारित शब्दांचा संच मानक त्रुटीवर मुद्रित केला आहे, प्रत्येक संख्येपूर्वी येणारे. शब्दामध्ये वगळल्यास, स्थितीय पॅरामिटर्स छापील (खाली पॅरामेटर्स पहा). पीएस 3 प्रॉम्प्ट नंतर प्रदर्शित केला जातो आणि मानक इनपुटमधून एक ओळी वाचली जाते. जर एखाद्या ओळीवर एक प्रदर्शित शब्दांशी संबंधित संख्या असेल तर त्या नावावर केलेले मूल्य त्या शब्दावर सेट आहे. रेखा रिक्त असल्यास, शब्द आणि प्रॉम्प्ट पुन्हा दर्शविला जातो. EOF वाचले असल्यास, आदेश पूर्ण होईल. अन्य कोणत्याही मूल्य वाचनमुळे नालांना सेट केले जाऊ शकते. वाचलेली ओळ REPLY मध्ये जतन केलेली आहे. ब्रेक कमांड कार्यान्वित होईपर्यंत प्रत्येक निवडानंतर सूची तयार केली जाते. सिलेक्ट केल्याप्रमाणे बाहेर जाण्याची स्थिती ही यादीतील अंमलात असलेल्या शेवटच्या आदेशाची बाहेरची स्थिती किंवा शून्य जर कार्यान्वित नसेल तर शून्य आहे.

[[]] [ शब्द ] [ शब्द |

केस कमांड प्रथम शब्द विस्तारित करते आणि त्यास प्रत्येक नमुन्याविरूद्ध जुळवण्याचा प्रयत्न करते, पाथनेमचे विस्तार (खालील पाथनाव विस्तार ) साठी समान जुळणारे नियम वापरून. जुळणी आढळल्यास, संबंधित यादी अंमलात येते. पहिला सामना केल्यानंतर, पुढील सामने नाहीत. पॅटर्न जुळत नसल्यास निर्गमन स्थिती शून्य आहे. अन्यथा, ही यादीमध्ये चालवलेल्या शेवटच्या आज्ञाची बाहेरची स्थिती आहे.

सूची असल्यास ; नंतर यादी; [ एलीफ यादी ; नंतर यादी ; ] ... [ दुसरी यादी ; ] fi

सूची अंमलात आणली तर. जर त्याची निर्गमन स्थिती शून्य असेल तर ती यादी अंमलात येईल. अन्यथा प्रत्येक एलिफची यादी अंमलात आणली जाईल आणि जर त्याची निर्गमन स्थिती शून्य असेल तर संबंधित नंतरची यादी कार्यान्वित होईल आणि कमांड पूर्ण होईल. नाहीतर, दुसरी यादी जर कार्यान्वित असेल तर ती कार्यान्वित होईल. बाहेर पडण्याच्या स्थितीची अंमलबजावणी केलेली शेवटची आज्ञा आहे, किंवा शून्य जर सत्यतेची सत्य चाचणी झाली नाही.

यादी करताना ; यादी करा ; केले

सूची पर्यंत ; यादी करा ; केले

तर ही कमांड सतत सूची ला कार्यान्वीत करते जोपर्यंत यादीतील शेवटची आज्ञा शून्याची बाहेर पडण्याची स्थिती परत करते. अपर्चेची आज्ञा तर केवळ कमांड प्रमाणेच आहे, शिवाय त्याला नकार देण्यात येत नाही; जेव्हा सूचीतील शेवटची आज्ञा नॉन-शून्य निर्गमन स्थिती परत करते तोपर्यंत do list कार्यान्वित होईल. दरम्यानच्या आणि बंद होण्याच्या स्थितीची शेवटची आज्ञा यादीची एक्झिट स्थिती आहे, किंवा शून्य कार्यान्वित केल्याशिवाय शून्य आहे.

[ फंक्शन ] नाव () { यादी ; }

हे नावाचे फंक्शन परिभाषित करते. फंक्शनची body म्हणजे {and} मधील कमांडची यादी . ही सूची एका सोप्या कमांडच्या नावाप्रमाणेच निर्दिष्ट केली जाते. फंक्शनची बाहेर जाण्याची स्थिती म्हणजे शरीरात चालवलेल्या शेवटच्या आदेशाची बाहेरची स्थिती. (खाली फंक्शन्स पहा.)

टिप्पण्या

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

कोटेशन

शेलवर विशिष्ट वर्ण किंवा शब्दांचा विशेष अर्थ काढण्यासाठी काढणे वापरले जाते. विशेष वर्णांसाठी विशेष उपचार अक्षम करण्यासाठी, आरक्षित शब्दांना ओळखले जाण्यापासून प्रतिबंध करण्यासाठी आणि पॅरामीटर विस्तार टाळण्यासाठी उद्धरण वापरले जाऊ शकते.

परिभाषातील उपरोक्त प्रत्येक मेटाचलक्टर्सचा आकार शेलसाठी विशेष अर्थ आहे आणि तो स्वतःच प्रतिनिधित्व करत असल्यास तो उद्धृत करणे आवश्यक आहे.

आदेश इतिहास विस्तार सुविधा वापरले जात असताना, इतिहास विस्तार वर्ण, सहसा ! , इतिहास विस्तार टाळण्यासाठी उद्धृत करणे आवश्यक आहे.

तीन उद्धरण पद्धती आहेत: सुटलेला वर्ण , एकल अवतरण चिन्हे आणि दुहेरी अवतरण.

नॉन-कोट केलेले बॅकस्लॅश ( \ ) एस्केप वर्ण आहे अपवाद वगळता, पुढील किरकोळ अक्षरशः मूल्य जपते जर \ जोडी आढळते, आणि बॅकस्लॅश स्वतःच उद्धृत नसते, तर \ लाईन सुरू ठेवली जाते (म्हणजेच, इनपुट प्रवाहातून तो काढून टाकला जातो आणि प्रभावीपणे दुर्लक्ष केले जाते).

सिंगल अवतरण चिन्हे एकामध्ये ठेवून कोट्समध्ये प्रत्येक वर्णाचे शब्दशः मूल्य जतन केले जाते. सिंगल अवतरण एकल कोट्स दरम्यान येऊ शकत नाही, अगदी पूर्वीच्या बॅकस्लॅशच्या आधी तरी.

दुहेरी अवतरण चिन्हे संगत करणे $ , ` , आणि \ च्या अपवादासह, अवतरण चिन्हात सर्व वर्णांचे मूळ मूल्य जतन करते. अक्षरे $ आणि ` डबल कोट्समध्ये त्यांचे विशेष अर्थ ठेवतात. बॅकस्लॅश त्याच्या विशेष अर्थ राखून ठेवतो तेव्हा खालीलपैकी एक अक्षर अनुसरण करते: $ , ` , ' , \ , किंवा . एक दुहेरी अवतरण दुहेरी अवतरण चिन्हात बॅकस्लॅशसह पुढीलप्रमाणे उद्धृत केले जाऊ शकते.

विशेष पॅरामिटर्स * आणि @ चा विशेष अर्थ असतो जेव्हा डबल कोट्समध्ये (खाली पॅरामेटर्स पहा).

$ ' स्ट्रिंग ' फॉर्मचे शब्द विशेषत: हाताळले जातात. हा शब्द एन्सिएस सी मानकानुसार निर्दिष्ट केलेल्या बॅकस्लॅश-एस्केप्टेड वर्णांच्या बदल्यात स्ट्रिंगला विस्तारतो. बॅकस्लॅश एस्केप क्रम, जर उपलब्ध असेल, तर खालीलप्रमाणे डीकोड केले आहेत:

\ a

सतर्क (बेल)

\ b

बॅकस्पेस

\ e

एक सुटलेला वर्ण

\ f

फॉर्म फीड

\ n

नवीन ओळ

\ r

कॅरेज रिटर्न

\ t

क्षैतिज टॅब

\ v

अनुलंब टॅब

\\

बॅकस्लॅश

\ '

एकल कोट

\ n nn

आठ बिट वर्ण ज्यांचे मूल्य अष्टक मूल्य nnn आहे (एक ते तीन अंक)

\ x HH

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

\ c x

एक नियंत्रण- x वर्ण

विस्तारित परिणाम सिंगल-उद्धृत केला आहे, जसे की डॉलर चिन्ह उपस्थित नव्हते.

डॉलर चिन्ह ( $ ) ने पुढे डबल कोट केलेल्या स्ट्रिंगमुळे सध्याच्या लोकॅलनुसार स्ट्रिंग भाषांतर केले जाईल. वर्तमान लोकेल C किंवा POSIX असल्यास , डॉलर चिन्ह दुर्लक्षित केले आहे. जर स्ट्रिंग भाषांतरीत आणि बदलली असेल तर, पुनर्स्थित डबल उद्धृत आहे.

पॅरामेटर्स

पॅरामीटर ही अशी एक अशी संस्था आहे जी व्हॅल्यूज संचयित करते. विशेष नावअंतर्गत खाली सूचीबद्ध केलेले हे एक नाव , एक संख्या किंवा विशेष वर्ण असू शकतात. शेलच्या उद्देशासाठी, व्हेरिएबल म्हणजे पॅरामीटर नावाने दर्शविले जाते. व्हेरिएबलमध्ये व्हॅल्यू आणि शून्य किंवा अधिक अॅट्रिब्यूट्स आहेत . डिक्लेअर बिल्टिन कमांडचा वापर करुन विशेषतांना नियुक्त केले जाते ( शेल बुल्टिन कमांड्समध्ये खाली घोषित करा ).

पॅरामीटर सेट आहे जर त्याला व्हॅल्यू असावा. शून्य स्ट्रिंग एक वैध मूल्य आहे. एकदा व्हेरिएबल सेट झाल्यानंतर, हे केवळ सेट न केलेल्या बांधणी आदेशाद्वारे (खालील SHELL BUILTIN कमांड्स पहा) वापरून सेट न केले जाऊ शकते.

एक वेरियेबल फॉर्मच्या निवेदनाद्वारे नियुक्त केला जाऊ शकतो

नाव = [ मूल्य ]

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

स्थिती परिमाणे

स्थितीत्मक पॅरामीटर एक पॅरामीटर आहे जो एक अंकापेक्षा एक किंवा त्यापेक्षा जास्त अंकांनी दर्शविलेला असतो. जेव्हा ते लागू केले जाते तेव्हा शेलच्या आर्ग्युमेंट्सवरून स्थानिय मापदंड लागू केले जातात आणि सेट बिल्टिन कमांडचा वापर करून पुनर्निर्देशित केले जाऊ शकतात. असाइनमेंट स्टेटमेंटसह स्थानिय मापदंड निर्दिष्ट केले जाऊ शकत नाहीत. शेल फंक्शन कार्यान्वित केल्यावर स्थितीय पॅरामीटर्स तात्पुरते बदलले जातात (खालील कार्य पहा)

जेव्हा एक स्वतंत्र पॅकेज एक एकापेक्षा जास्त अंकांचा विस्तार करतो, तेव्हा तो चौकटीत बसलेला असणे आवश्यक आहे (खाली विस्तार पहा)

विशेष परिमाणे

शेल विशेषत: बर्याच पॅरामिटर्स हाताळतो. हे मापदंड केवळ संदर्भित केले जाऊ शकतात; त्यांना नियुक्त करण्याची परवानगी नाही.

*

एक पासून सुरू, स्थितीत्मक घटके वाढवा. जेव्हा विस्तार हा दुहेरी अवतरण चिन्हात होतो, तेव्हा ते आयएफएस स्पेशल व्हेरिएबलच्या पहिल्या वर्णाद्वारे विभाजीत प्रत्येक पॅरामीटरच्या व्हॅल्यूने एकच शब्दाचा विस्तार करतो. म्हणजेच, " $ * " हे " $ 1 c $ 2 c ... " शी समानार्थी आहे, जिथे IFS व्हेरिएबलच्या मूल्याचे पहिले अक्षर आहे. IFS सेट नसल्यास, पॅरामिटर्स स्पेसद्वारे विभक्त केले जातात. जर आय.एस.एस.एस. शून्य असेल, तर पॅरॅमिटर्स इंटरएव्हिंग सेपरेटर्सशिवाय सामील होतील.

@

एक पासून सुरू, स्थितीत्मक घटके वाढवा. जेव्हा विस्तार हा दुहेरी अवतरण चिन्हात होतो, तेव्हा प्रत्येक पॅरामीटर वेगळ्या शब्दासाठी विस्तृत करतो. म्हणजेच " $ @ " " $ 1 " " $ 2 " च्या समतुल्य आहे ... जेव्हा कोणतेही पॅसेट पॅरॅमीटर्स नसतात, तेव्हा " $ @ " आणि $ @ काहीही वाढतात (म्हणजे ते काढले जातात).

#

दशांश मध्ये स्थितीत्मक मापदंडाच्या संख्येपर्यंत विस्तृत करा

?

सर्वात अलीकडील अंमलात आलेली फोरग्राउंड पाइपलाइनची स्थिती विस्तृत करा

-

विद्यमान पर्याय ध्वजांकरीता विस्तारित केले आहे जसे की स्क्वाड्रलवर निर्दिष्ट केल्याप्रमाणे, सेट बिल्डिन कमांडद्वारे किंवा शेलद्वारे सेट केलेल्या (जसे -i पर्याय).

$

शेलची प्रक्रिया ID विस्तृत करते. () Subshell मध्ये, तो वर्तमान शेलची प्रक्रिया ID विस्तृत करते, परंतु सबहिहेल नाही.

!

सर्वात अलीकडे अंमलात आणलेल्या पार्श्वभूमी (एसिंक्रोनस) कमांडच्या प्रोसेस आयडीमध्ये विस्तृत करा.

0

शेल किंवा शेल स्क्रिप्टचे नाव विस्तृत करा हे शेल आरंभीकरण वर सेट आहे आज्ञांच्या फाइलसह bash ला जोडले असल्यास, $ 0 त्या फाइलच्या नावावर सेट आहे जर -c ऑप्शनसह bash सुरु होत असेल तर $ 0 ला स्ट्रिंगच्या कार्यान्वित केल्यानंतर पहिल्या आर्ग्युमेंटवर सेट आहे, जर एखादा उपस्थित असेल तर. अन्यथा, आर्ग्युमेंट झीरोने दिलेल्या फाइल नाववर ते सेट केले आहे.

_

शेल स्टार्टअपवर, आर्ग्युमेंट यादीमध्ये दिलेली शेल किंवा शेल स्क्रिप्टची संपूर्ण फाइल नाव म्हणून सेट केली जाते. नंतर, विस्तारानंतर, मागील आदेशावर अंतिम वितर्क वाढते. तसेच प्रत्येक कमांडने संपूर्ण फाईल नेमवर क्लिक करून त्या कमांडमध्ये निर्यात केलेल्या वातावरणात ठेवले. मेल तपासताना, हे पॅरामीटर्स सध्या तपासले गेलेल्या मेल फाइलचे नाव धारण करते.

शेल व्हेरिएबल्स

खालील व्हेरिएबल्स शेल द्वारे सेट आहेत:

बाश

Bash च्या या प्रसंगी सुरू करण्यासाठी वापरण्यात येणारे संपूर्ण फाइल नाव विस्तृत करा.

BASH_VERSINFO

केवळ वाचनीय अरे व्हेरिएबल्स ज्यांचे सभासद बशच्या या घटनेसाठी आवृत्ती माहिती धारण करतात. ऍरे सदस्यास नियुक्त केलेली मूल्ये अशी आहेत:

BASH_VERSINFO [ 0]

मुख्य आवृत्ती क्रमांक ( रिलीझ )

BASH_VERSINFO [ 1]

किरकोळ आवृत्ती क्रमांक ( आवृत्ती ).

BASH_VERSINFO [ 2]

पॅच पातळी

BASH_VERSINFO [ 3]

बिल्ड आवृत्ती

BASH_VERSINFO [ 4]

रिलीझ स्थिती (उदा., बीटा 1 ).

BASH_VERSINFO [ 5]

MACHTYPE चे मूल्य

BASH_VERSION

Bash च्या या उदाहरणाच्या आवृत्तीचे वर्णन करणार्या स्ट्रिंगमध्ये विस्तृत करा.

COMP_CWORD

COMP_LINE

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

COMP_POINT

COMP_WORDS

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

DIRSTACK

डायरेक्टरी स्टॅकची वर्तमान सामुग्री असलेल्या अॅरे वेरीएबल (खाली अॅरे पहा). डायरेक्टरीज स्टॅकमध्ये त्या क्रमाने दिसतात जे डीआरएस द्वारा निर्मित आहेत. या ऍरे वेरियेबिलच्या सदस्यांकडे आधीपासूनच स्टॅकमध्ये निर्देशिका संशोधित करण्यासाठी वापरले जाऊ शकते, परंतु पुशड आणि पॉपड बिल्टिन्स डिरेक्टरीज जोडण्यासाठी आणि काढण्यासाठी वापरली जाणे आवश्यक आहे. या व्हेरिएबलला असाइनमेंट वर्तमान डिरेक्टरी बदलणार नाही. DIRSTACK सेट नसल्यास, तो त्याच्या विशेष संपत्ती गमावतो, जरी तो नंतर रीसेट केला तरीही

ईयूआयडी

शेल प्रारंभाच्या सुरुवातीस चालू वापरकर्त्याचे प्रभावी वापरकर्ता आयडी विस्तृत करते. हे चल वाचनीय आहे.

FUNCNAME

कोणत्याही सध्या-चालणार्या शेल फंक्शनचे नाव. हे वेरियबल अस्तित्वात होते जेव्हा शेल फंक्शन कार्यान्वित होते. FUNCNAME ना नियुक्त्यांकडे कोणतेही परिणाम नाहीत आणि त्रुटी स्थिती परत मिळते. जर FUNCNAME सेट नसल्यास, तो त्याच्या विशेष प्रॉपर्टी गमावतो, जरी तो नंतर रीसेट केला असेल तरी देखील

गट

एक ऍरे वेरियेबल जो वर्तमान सदस्याचे सदस्य आहे अशा गटांची सूची असते. GROUPS मधील असाइनमेंटचा प्रभाव पडत नाही आणि त्रुटी स्थिती परत मिळते. GROUPS सेट न केल्यास, ते त्याच्या विशेष प्रॉपर्टी गमावतात, जरी ते नंतर रीसेट केले असले तरी

HISTCMD

वर्तमान कमांडचा इतिहास क्रमांक किंवा इतिहासातील सूची. HISTCMD सेट न केल्यास, त्याची विशेष गुणधर्म हरली जातील, जरी ती नंतर रीसेट केली असली तरी.

HOSTNAME

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

HOSTTYPE

आपोआप एका स्ट्रिंगवर सेट जो अद्वितीयपणे कोणत्या प्रकारचा मशीन कार्यान्वित करतो ज्यावर bash चालू आहे. डीफॉल्ट सिस्टम-आधारित आहे

लिनेनो

प्रत्येक वेळी हा पॅरामीटर संदर्भ दिला जातो, तेव्हा शेल एक दशांश क्रमांकाचा वापर करतो जो स्क्रिप्ट किंवा फंक्शनच्या अंतर्गत चालू क्रमवार ओळ क्रमांक (1 सह प्रारंभ) दर्शवितो. जेव्हा स्क्रिप्ट किंवा फंक्शनमध्ये नाही, तेव्हा बदली केलेले मूल्य अर्थपूर्ण असण्याची गारंची नसते. जर लिनेनओ सेट केलेले नसल्यास, तो त्याच्या विशेष प्रॉपर्टी गमावतो, जरी तो त्यानंतर रीसेट झाला तरीही.

MACHTYPE

मानक GNU cpu-company-system स्वरुपनात, ज्यावर bash चालू आहे त्यावरील प्रणाली प्रकारचे पूर्णपणे वर्णन करणार्या स्ट्रिंगवर स्वयंचलितपणे सेट केले जाते. डीफॉल्ट सिस्टम-आधारित आहे

OLDPWD

Cd कमांड द्वारे सेट केलेली मागील चालू डिरेक्टरी.

OPTARG

Getopts builtin कमांडद्वारे प्रक्रिया केलेल्या शेवटच्या पर्यायाच्या वितरणाचे मूल्य (खाली शेल बुलिनेट कमांड्स पहा).

OPTIND

Getopts builtin कमांड द्वारे प्रक्रिया केलेल्या पुढील वितर्क निर्देशांक (खाली SHELL BUILTIN कमांड्स पहा).

OSTYPE

आपोआप स्ट्रिंगवर सेट करणे जे ऑपरेटिंग सिस्टम ज्यावर बॅट चालू आहे त्याचे वर्णन करते. डीफॉल्ट सिस्टम-आधारित आहे

PIPESTATUS

सर्वात अलीकडील-अंमलात केलेल्या अग्रभूमीतील पाईपलाइन (ज्यामधे फक्त एकच कमांड असू शकते) मधील प्रक्रियांमधून अॅरे वेरियेबल (खाली एआरये पहा) ज्यात प्रक्रियेमधून बाहेर पडण्याच्या स्थान मूल्यांची सूची आहे.

PPID

शेलच्या पालकांची प्रक्रिया आयडी. हे चल वाचनीय आहे.

पीडब्ल्यूडी

Cd कमांड द्वारे सेट केल्यानुसार चालू डिरेक्टरी.

रँडोम

प्रत्येक वेळी हा पॅरामीटर संदर्भ दिला जातो, तेव्हा 0 आणि 32767 मधील अविशिष्ट संख्या निर्माण होते. यादृच्छिक संख्यांचा क्रम यादृच्छिक करण्यासाठी एक मूल्य दर्शवून आरंभ केला जाऊ शकतो. अनिवार्य रीन्ड्रोम सेट न केल्यास, त्याची विशेष गुणधर्म हरली आहेत, जरी ती नंतर रीसेट केली असली तरी

उत्तर द्या

कोणतेही आर्ग्यूमेंट पुरवले नसल्यास वाचलेले अंतर्विभरीत आदेश वाचलेल्या इनपुटच्या ओळीवर सेट करा.

SECONDS

प्रत्येक वेळी हा पॅरामीटर संदर्भ दिला जातो, शेल इनवॉलेशन परत केल्यापासून सेकंदांची संख्या. जर एक मूल्य SECONDS ला लागू केले असेल तर, त्यानंतरच्या संदर्भांवर मिळालेले मूल्य ही असाइनमेंट तसेच नियुक्त मूल्य असल्यामुळे सेकंदांची संख्या आहे. जर SECONDS सेट केलेले नसल्यास, तो त्याच्या विशेष प्रॉपर्टी गमावतो, जरी तो नंतर रीसेट केला असला तरीही

शेलॉट्स

सक्षम केलेल्या शेल पर्यायांची एक कोलन-विभाजित सूची. सूचीमधील प्रत्येक शब्द हा सेट बिल्डिन कमांडला ( -सच SHELL BUILTIN कमांडस पहा) मधील -o पर्यायासाठी वैध वितर्क आहे. शेलॉप्टर्समध्ये दिसणारे पर्याय ते सेट-ओ द्वारा म्हणून नोंदवले जातात जर ही वेरियेबिल वातावरणात असेल जेव्हा bash सुरू होईल, तेव्हा यादीतील प्रत्येक शेल पर्याय कोणत्याही स्टार्टअप फाइल्स वाचण्यापूर्वी सक्षम होईल. हे चल वाचनीय आहे.

SHLVL

प्रत्येक वेळी बॅशची सुरुवात झाली आहे.

यूआयडी

शेल स्टार्टअपवर आरंभीच्या वर्तमान वापरकर्त्याच्या यूझर आयडीपर्यंत वाढवा. हे चल वाचनीय आहे.

शेलने खालील व्हेरिएबल्स वापरली आहेत. काही प्रकरणांमध्ये, bash वेरियेबलमध्ये डीफॉल्ट मूल्य देतो; हे प्रकरण खाली नमूद केले आहेत.

BASH_ENV

जर हे पॅरामीटर सेट केले असेल जेव्हा bash शेल स्क्रिप्ट कार्यान्वित करीत असेल, तर त्याची व्हॅल्यू फाइल नावाच्या रूपात दर्शविली जाते ज्यामधे शेल प्रारंभ करण्यासाठी, ~ / .bashrc प्रमाणे . BASH_ENV चे मूल्य पॅरामीटर विस्तार, आदेश प्रतिस्थापना आणि फाइल नाव म्हणून अर्थ लावण्यापूर्वी अंकगणित विस्तारास अधीन आहे. पॅथचे परिणामी फाईलचे नाव शोधण्याकरिता वापरले जात नाही.

CDPATH

Cd कमांडसाठी शोध मार्ग. ही संचिका-विभाजीत डिरेक्टरीची यादी आहे ज्यामध्ये शेल cd कमांडद्वारे निर्धारीत केलेल्या गंतव्य निर्देशिका दर्शवतो . नमुना मूल्य आहे ".: ~: / Usr".

COLUMNS

निवड सूची मुद्रित करताना टर्मिनल रूंदी निश्चित करण्यासाठी निवडलेल्या बांधलेल्या आदेशद्वारे वापरला जातो एक SIGWINCH प्राप्त झाल्यानंतर स्वयंचलितपणे सेट केले

COMPREPLY

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

FCEDIT

Fc builtin आदेशसाठी मुलभूत संपादक.

छेडछाड

फाइलनाव पूर्ण करताना दुर्लक्ष करण्यासाठी अपूर्णांक-विभाजित सूचीची सूची (खाली READLINE पहा). एक फाइलनाव, ज्याचे प्रत्यय FIGNORE मधील नोंदींपैकी एकाशी जुळते, त्याच्याशी जुळलेल्या फाइलनांच्या यादीतून वगळले गेले आहे. नमुना मूल्य ".o: ~" आहे.

ग्लोबिनेअर

पाथनाव विस्ताराद्वारे फाईलनामेचे संच दुर्लक्ष करणार्या नमुन्यांची एक अपूर्णविराम-विभक्त सूची. पथनाव विस्तार पॅटर्नने जुळल्यास जर एखाद्या फाईलचे नाव ग्लॉइनबोर्डमधील एका नमुन्यात जुळत असेल , तर तो सामन्याच्या यादीत काढले जाईल.

हिस्टॉन्स्टॉल

Ignorespace ची व्हॅल्यू सेट केल्यास, स्पेस वर्णाने सुरू होणाऱ्या ओळी इतिहासाच्या सूचीवर लिहिल्या नसतात. दुलर्क्षित करण्याच्या मूल्यावर सेट केल्यास, अंतिम इतिहास ओळी जुळणार्या ओळी प्रविष्ट केल्या जात नाहीत. दुर्लक्षण्यामुळे दोन पर्यायांचा मेळ आहे. सेट न केल्यास, किंवा वरील कोणत्याही अन्य मूल्यावर सेट केल्यास, HISTIGNORE च्या मूल्यानुसार, संपूर्ण सूची वाचकाने वाचलेले सर्व इतिहास सूचीवर जतन केले जातात. हा व्हेरिएबल चे कार्य HISTIGNORE द्वारे अधिग्रहित आहे मल्टि-लाइन कंपाऊंड कमांडची दुसरी आणि नंतरच्या ओळी परीक्षित नसल्या जातात आणि इतिहासामध्ये इतिहासात जोडल्या जातात की हिस्टाकंटरलच्या मूल्याची पर्वा न करता.

हिस्टीईल

ज्या फाइलमध्ये आज्ञा इतिहास जतन केला जातो त्याचे नाव (खाली इतिहासास पहा). मुलभूत मूल्य ~ / .bash_history आहे सेट न केल्यास, जेव्हा संवाद परस्पर शेल निघतो तेव्हा आदेश इतिहास जतन केला जात नाही.

HISTFILESIZE

इतिहासाच्या फाईलमध्ये असलेल्या कमाल ओळींची संख्या. जेव्हा हे वेरियेबल एक व्हॅल्यू असाइन केले जाते, तेव्हा इतिहासाची फाईल कापली जाते, आवश्यक असल्यास, ओळींच्या संख्येपेक्षा अधिक असणे. डीफॉल्ट मूल्य 500 आहे. इतिहासाची फाइल ही अक्षरांमधेही कापली जाते जेव्हा ती परस्पर शेल बाहेर पडते.

हिस्टिन्टर

इतिहासाच्या सूचीवर कोणती आदेश ओळी जतन करायला हवी हे नमुन्यांची एक कोलन-विभाजित सूची. प्रत्येक नमुना ओळीच्या सुरूवातीस अँकर केला जातो आणि पूर्ण ओळशी जुळला पाहिजे (कोणताही अन्त्य ' * ' जोडला गेला नाही) HISTCONTROL द्वारे निर्दिष्ट केलेल्या चेकवर लागू झाल्यानंतर प्रत्येक नमुन्याची चाचणी घेतली जाते. सामान्य शेल रचने जुळणार्या वर्णांव्यतिरिक्त, ` आणि 'मागील इतिहास रेखाशी जुळत आहे बॅकस्लॅश वापरून ` आणि 'पळून जाऊ शकतात; जुळवणी करण्याचा प्रयत्न करण्यापूर्वी बॅकस्लॅश काढला जातो. बहु-लाइन कंपाऊंड कमांडची दुसरी आणि नंतरच्या ओळी परीक्षित नाहीत आणि इतिहासामध्ये हिस्टाइनअरच्या मूल्याची पर्वा न करता जोडली जातात.

HISTSIZE

आदेश इतिहासामध्ये लक्षात ठेवण्यासाठी आदेशांची संख्या (खाली इतिहास पहा). मुलभूत मूल्य 500 आहे.

घर

वर्तमान वापरकर्त्याची होम डिरेक्टरी; cd builtin कमांडसाठी डिफॉल्ट वितर्क. टिल्ड विस्तार चालू असताना या व्हेरिएबलची किंमत देखील वापरली जाते.

HOSTFILE

त्यात फाईलचे नाव / etc / hosts असे स्वरूपण असते ज्यात शेलने यजमाननाम पूर्ण करण्याची आवश्यकता आहे. शेल चालत असताना संभाव्य होस्टनाव पूर्ण करण्याची सूची बदलली जाऊ शकते; पुढील वेळी यजमाननाम पूर्ण झाल्यावर होस्टनाव पूर्ण करण्याचा प्रयत्न असेल तर, बाश नवीन फाइलची सामग्री विद्यमान यादीमध्ये जोडते. HOSTFILE सेट असल्यास, परंतु मूल्य नसल्यास, संभाव्य होस्टनाव पूर्णता सूची प्राप्त करण्यासाठी / etc / hosts वाचण्याचे bash प्रयत्न करतो. जेव्हा HOSTFILE सेट केलेले नसते, तेव्हा होस्टनाव सूची साफ केली जाते.

IFS

आंतरिक विभाजित विभाजक जो विस्तारानंतर विस्तारित शब्दांकरिता वापरला जातो आणि वाचन अंगभूत आदेशासह शब्दांमध्ये ओळी विभक्त करतो. डीफॉल्ट मूल्य `` '' आहे.

IGNOREEOF

एकमेव इनपुट म्हणून EOF वर्ण प्राप्त झाल्यानंतर संवादात्मक शेलची क्रिया नियंत्रित करते. सेट केल्यास, मूल्य हे सलग EOF वर्णांची संख्या आहे जे बीशच्या बाहेर पडण्यापूर्वी एका इनपुट लाईनवरील प्रथम वर्ण म्हणून टाईप केले जाणे आवश्यक आहे. जर व्हेरिएबल अस्तित्वात असेल परंतु येथे अंकीय मूल्य नसेल किंवा मूल्य नसेल तर डीफॉल्ट मूल्य 10 असेल. जर ते अस्तित्वात नसेल, तर EOF शेलमध्ये इनपुटचा शेवट दर्शवेल .

INPUTRC

रीडलाइन स्टार्टअप फाइलसाठी फाइलनाव, ~ / .inputrc चे डीफॉल्ट ओव्हररायड करते (खालील रीडलाइन पहा).

LANG

LC_ ने सुरू होणार्या व्हेरिएबलसह विशेषतः कोणत्याही श्रेणीसाठी लोकॅल श्रेणी निर्धारित करण्यासाठी वापरले जाते

LC_ALL

हे वेरियेबल LANG ची वॅल्यू आणि लोकेल श्रेणी निर्दिष्ट करणारे अन्य कोणत्याही LC_ वेरियेबल अधिलिखित करते.

LC_COLLATE

हे वेरियेबल्स pathname विस्ताराचे परिणाम सॉर्ट करतेवेळी वापरलेले कोलेशन क्रम निश्चित करते आणि रेषेचे अभिव्यक्तिंचे वर्तन, समानार्थी वर्ग आणि पथनाव विस्तार आणि नमुना जुळणी यांच्यातील कोलांटींग अनुक्रमांचे निर्धारण करते.

LC_CTYPE

हे वेरियेबल्स अक्षरे आणि पथनाव विस्तार आणि नमुना जुळणीत असलेल्या वर्ण वर्गांचे वर्तन ठरवते.

LC_MESSAGES

हे चलन डॉलरच्या आधी दुहेरी-उद्धृत केलेल्या स्ट्रिंगचे अनुवाद करण्यासाठी वापरलेले लोकेल निर्धारित करते.

LC_NUMERIC

हे वेरियेबल नंबर स्वरूपणासाठी वापरल्या जाणार्या लोकेल श्रेणीला निर्धारित करते.

LINES

मुद्रण निवड सूचींकरिता स्तंभांची लांबी निर्धारित करण्यासाठी निवडलेल्या बांधलेल्या आदेशद्वारे वापरल्या जातात. एक SIGWINCH प्राप्त झाल्यानंतर स्वयंचलितपणे सेट केले

मेल

जर हे पॅरामीटर संचिकाचे नाव सेट केले असेल आणि MAILPATH वेरियेबल सेट नसेल, तर बाशने विशिष्ट फाइलमध्ये मेलच्या येणा-या व्यक्तीला कळविले आहे.

मेलकॅक्च

मेलसाठी किती वेळा तपासले जाते (सेकंदांमध्ये) ते निर्दिष्ट करते. डीफॉल्ट 60 सेकंद आहे जेव्हा मेलची तपासणी करण्याची वेळ असेल तेव्हा शेल प्राथमिक प्रॉमप्ट दाखविण्यापूर्वी ही वेरियबल सेट नसल्यास, किंवा व्हॅल्यूवर सेट केलेली असेल जी शून्यपेक्षा मोठी किंवा त्याहूनही अधिक असेल, तर शेल मेल तपासणी अकार्यान्वित करतो.

MAILPATH

मेलसाठी तपासली जाणार्या फाइल नावांची कोलन-विभाजित सूची. एखाद्या विशिष्ट फाईलमध्ये मेल पोहोचल्यावर संदेश मुद्रित करायचा असेल तर `? 'ने संदेशामधून फाइलचे नाव विभक्त करून निर्दिष्ट केले जाऊ शकते. संदेशाच्या मजकूरात वापरल्यास, $ _ वर्तमान मेलफाइलच्या नावावर विस्तृत करतो. उदाहरण:

MAILPATH = '/ var / mail / bfox?' आपल्याकडे मेल आहे: ~ / shell-mail? "$ _ च्या मेल आहे!" '

Bash या वेरियेबलसाठी डीफॉल्ट मूल्य प्रदान करते, परंतु वापरत असलेल्या वापरकर्ता मेल फाइल्सचे स्थान सिस्टम अवलंबून आहे (उदा., / Var / mail / $ USER ).

OPTERR

जर मूल्य 1 वर सेट केल्यास, बाप getopts builtin कमांड द्वारे व्युत्पन्न त्रुटी संदेश दाखवतो (खाली शेल बुलिनेट कमांड्स पहा). प्रत्येकवेळी शेल चालविली जाते किंवा शेल स्क्रिप्ट कार्यान्वित होते तेव्हा प्रत्येक वेळी OPTERR आरंभ केला जातो.

पाथ

आदेशांकरिता शोध मार्ग ही संचिका-विभाजीत डिरेक्टरीजची सूची आहे ज्यात शेल आदेश पहातो (खाली COMMAND लागूकरण ) डीफॉल्ट पथ सिस्टम-आधारित आहे, आणि प्रशासकाद्वारे सेट केले आहे जो bash स्थापित करतो. एक सामान्य मूल्य `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin: ''.

POSIXLY_CORRECT

जर ही वेरियेबिल वातावरणात असेल जेव्हा bash सुरू होईल, तेव्हा स्टार्टअप फाइल्स वाचण्यापूर्वी शेल पायिक्स मोडमध्ये प्रवेश करेल , जसे की --स्पॉस्क्स इनव्हॉलेशन पर्याय दिला गेला आहे. शेल चालू असताना सेट झाल्यास, bash posx mode सक्षम करते, जसे की set -o posix आदेश कार्यान्वित केला होता.

PROMPT_COMMAND

प्रत्येक प्राथमिक प्रॉम्प्ट जारी करण्यापुर्वी, मूल्य निश्चित केले जाते.

PS1

या पॅरामीटरचे मूल्य विस्तृत केले आहे (खाली प्रॉफिटिंग पहा) आणि प्राथमिक प्रॉमप्ट स्ट्रिंग म्हणून वापरला जातो. डीफॉल्ट मूल्य `` \ s- \ v \ $ '' आहे.

PS2

या पॅरामीटरचे मूल्य PS1 सह वाढले आहे आणि दुय्यम प्रॉमप्ट स्ट्रिंग म्हणून वापरले आहे. डीफॉल्ट `` > '' आहे.

PS3

या पॅरामीटरचे मूल्य निवडण्यासाठी कमांड म्हणून वापरले जाते (वरील SHELL GRAMMAR पहा).

PS4

या पॅरामीटरचे मूल्य PS1 प्रमाणे वाढविले जाते आणि प्रत्येक कमांडआधी अंमलबजावणी ट्रेस दरम्यान बेस प्रदर्शित होण्यापूर्वी मूल्य मुद्रित होते. PS4 चे पहिले पात्र अनिश्चितता एकापेक्षा जास्त स्तर दर्शविण्यासाठी, आवश्यकतेनुसार, अनेक वेळा प्रतिलिपीत केले जाते. डीफॉल्ट `` + '' आहे.

TIMEFORMAT

या पॅरामीटरचे मूल्य एक स्वरूप स्ट्रिंग म्हणून वापरले जाते, जे निर्दिष्ट करते की वेळेची आरक्षित शब्द दर्शविलेल्या पिपलाइन्ससाठी वेळ माहिती कशी प्रदर्शित केली जाऊ शकते. % वर्ण एक एस्केप अनुक्रम सादर करतो जे टाइम व्हॅल्यू किंवा इतर माहितीमध्ये वाढविले जाते. एस्केप क्रम आणि त्यांचे अर्थ खालीलप्रमाणे आहेत; चौकटी कडा पर्यायी भाग सूचित.

%%

अक्षरशः %

% [ पी ] [एल] आर

सेकंदांत निघून गेलेला वेळ

% [ पी ] [एल] यू

वापरकर्ता मोडमध्ये खर्च केलेल्या CPU सेकंदांची संख्या.

% [ पी ] [एल] एस

सिस्टीम मोडमध्ये खर्च केलेल्या CPU सेकंदांची संख्या.

% पी

CPU टक्केवारी, (% U +% S) /% R म्हणून गणना केली.

पर्यायी पृष्ठ म्हणजे अचूकता निर्दिष्ट करणारा अंक, दशांश चिन्हानंतर अपूर्णांक संख्येची संख्या. 0 चे मूल्य दशांश चिन्ह किंवा अपूर्णांक नसतात. दशांश चिन्हानंतर सर्वात जास्त तीन ठिकाणी निर्दिष्ट केले जाऊ शकते; 3 पेक्षा जास्त पी ची मूल्ये 3 वर बदलली आहेत. जर पी निर्दिष्ट नाही, तर मूल्य 3 वापरली जाते.

वैकल्पिक एम एम एम एम एसएसचा फॉर्म, मिनिटांसह अधिक मोठा फॉर्मेट निर्दिष्ट करते. एफ् एफ पी चे मूल्य ठरवते की अपूर्णांकचा समावेश केला आहे किंवा नाही.

हा व्हेरिएबल सेट नसल्यास, bash ने कार्य केले आहे जसे की त्याची किंमत $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' आहे . मूल्य शून्य असल्यास, वेळ माहिती दर्शविली जात नाही. जेव्हा स्वरूपन स्ट्रिंग प्रदर्शित होईल तेव्हा ट्रेलिंग न्यूलाईन जोडली जाते.

TMOUT

शून्यापेक्षा मोठ्या मूल्यावर सेट केल्यास, वाचन बिल्टिनसाठी TMOUT ला डिफॉल्ट टाइमआउट मानले जाते. टर्मिनलपासून इनपुट येत असेल तेव्हा TMOUT सेकंदांनंतर इनपुट न मिळाल्यास निवडलेल्या कमांडस संपतात . संवादात्मक शेलमध्ये, प्राथमिक प्रॉमप्ट जारी केल्यानंतर इनपुटची प्रतीक्षा करण्यासाठी सेकंदांची संख्या म्हणून मूल्य परिभाषित केले जाते. जर इनपुट न आल्यास त्या सेकंदाच्या संख्येच्या प्रतीक्षेत Bash नंतर बंद होते

स्वयं_रम्यूम

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

हिस्टर्स

दोन किंवा तीन वर्ण जे इतिहासाचा विस्तार आणि टोकन करणे नियंत्रित करतात (खाली इतिहासाचे प्रवर्तन पहा) पहिले अक्षर हा इतिहासाचा विस्तार वर्ण आहे, जो वर्णाने इतिहास विस्ताराची सुरुवात करतो, सामान्यतः ` ! '. दुसरा वर्ण हा द्रुत प्रतियोजन वर्ण आहे, जो आधीच्या आदेशास पुन्हा चालविण्याकरता लघुलिपीत म्हणून वापरला जातो, दुसर्या कमांडमध्ये एक स्ट्रिंग बदली करते. डीफॉल्ट ` ^ 'आहे पर्यायी तिसरा वर्ण अक्षर आहे जो इंगित करतो की ओळीच्या उर्वरित शब्द एक टिप्पणी आहे जेव्हा एखाद्या शब्दाचे पहिले अक्षर म्हणून आढळले, साधारणपणे ` # ' इतिहास टिप्पणी वर्णमुळे ओळीतील उर्वरीत शब्दांसाठी इतिहास प्रतिस्थापना वगळली जाऊ शकते. हे अपरिहार्यपणे शेल पार्सर ला उर्वरीत भागांप्रमाणे टिप्पणी म्हणून नाही.

अॅरे

Bash एक-मितीय अॅरे वेरिएबल्स प्रदान करते. कोणत्याही वेरियेबलचा अॅरे म्हणून वापर केला जाऊ शकतो; जाहीर केलेली घोषणा एक अॅरे घोषित करेल. अॅरेच्या आकारावर कोणतीही कमाल मर्यादा नाही, किंवा सदस्यांना अनुक्रमित किंवा अनुषंगिकरित्या नियुक्त केलेल्या कोणत्याही आवश्यकता नाही ऍरे पूर्णांकाद्वारे अनुक्रमित आहेत आणि शून्य-आधारित आहेत.

सिंटॅक्स नाव [ सबस्क्रिप्ट ] = व्हॅल्यू वापरण्यासाठी कोणतेही व्हॅरीएबल नियुक्त केले असल्यास अॅरे स्वयंचलितपणे तयार होते. सबस्क्रिप्टला अंकगणितीय अभिव्यक्ति म्हणून मानले जाते ज्यातून शून्य किंवा त्यापेक्षा अधिक असलेल्या समस्येचे मूल्यमापन करणे आवश्यक आहे. अॅरे घोषित करण्यासाठी, declare -a नावाचा वापर करा (खाली SHELL BUILTIN कमांड्स पहा). घोषित करा -a नाव [ सबस्क्रिप्ट ] देखील स्वीकारले आहे; सबस्क्रिप्ट दुर्लक्षीत केले आहे. घोषणा आणि वाचनीय बांधणी वापरून अॅरे वेरियेबलसाठी विशेषता निर्दिष्ट केल्या जाऊ शकतात. प्रत्येक विशेषता एक अॅरे सर्व सदस्यांस लागू होते.

ऍरेला फॉर्म नाव = ( व्हॅल्यू 1 ... व्हॅल्यू n ) च्या कंपाउंड असाइनमेंटचा उपयोग करण्यासाठी नेमले जाते, जेथे प्रत्येक मूल्य फॉर्म [ सबस्क्रिप्ट ] = स्ट्रिंग आहे . केवळ स्ट्रिंग आवश्यक आहे. पर्यायी कंस आणि सबस्क्रिप्ट तर पुरवल्या जातात, ते इंडेक्स नियुक्त केले जातात; अन्यथा नियुक्त केलेल्या घटकाचा निर्देशांक ही शेवटच्या इंडेक्समध्ये स्टेटमेंट प्लस वन असे आहे. निर्देशांक शून्य वर सुरू होतो. घोषणे घोषित केल्याने हे वाक्यरचना स्वीकारली जाते. व्यक्तिगत अॅरे घटक हे नाव वापरुन नेमले जाऊ शकतात [ सबस्क्रिप्ट ] = मूल्य वाक्यरचनेची सुरूवात.

अनसेट केलेले एंटिन अॅरेस नष्ट करण्यासाठी वापरले जाते. नाव सेट करणे [ सबस्क्रिप्ट ] इंडेक्स सबस्क्रिप्टमध्ये अॅरे घटक नष्ट करते. नाव अनसेट करा , जिथे नाव एक अॅरे असेल किंवा नाव [ सबस्क्रिप्ट ] नसेल तर जिथे सबस्क्रिप्ट * किंवा @ असेल तिथे संपूर्ण अॅरे काढले जाईल.

घोषित , स्थानिक आणि वाचनीय बांधणी प्रत्येक ऍरे निर्धारीत करण्यासाठी -a पर्याय स्वीकारतात. वाचलेल्या अंतर्भागात मानक इनपुट पासून एका अॅरेपर्यंत वाचलेल्या शब्दांची सूची निश्चित करण्यासाठी a -a पर्याय स्वीकारतो. सेट आणि घोषित केलेल्या बांधणी एआरए मूल्यांना अशा प्रकारे घोषित करा जे त्यांना असाइनमेंट म्हणून पुन्हा वापरण्याची परवानगी देते.

विस्तार

विस्तारीत शब्दात विभाजित झाल्यानंतर आदेश ओळीवर केले जाते. प्रदर्शन सात प्रकारच्या आहेत: कंस विस्तार , क्षुल्लक विस्तार , मापदंड आणि परिवर्तनशील विस्तार , आदेश प्रतिस्थापन , अंकगणित विस्तार , शब्द विभाजन , आणि पथनाव विस्तार .

विस्तारांचा क्रम म्हणजे: ब्रेस विस्तार, क्षारीय विस्तार, पॅरामीटर, वेरियेबल व अंकगणित विस्तार आणि आदेश प्रतिस्थापना (डावीकडून उजवीकडे असलेल्या फॅशनमध्ये), शब्द विभाजन, आणि पथनाव विस्तार.

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

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

ब्रेस विस्तार हा एक यंत्रणा आहे ज्याद्वारे स्ट्रिंग तयार होऊ शकते. ही पद्धत pathname विस्तारासारखीच आहे , परंतु व्युत्पन्न फाइलनाव अस्तित्वात नसण्याची आवश्यकता आहे. ब्रश विस्तारीत होण्याइतके पध्दत ऐच्छिक विभक्त स्ट्रिंगची एक श्रृंखला जो नंतर वैकल्पिक चौकटीद्वारे पाठविली जाते त्यानुसार एक पर्यायी प्रस्तावनाचे स्वरूप घेतले जाते. प्रस्तावना हे चौकटीत असलेल्या प्रत्येक स्ट्रिंगसाठी प्रीफिक्स केले जाते आणि त्यानंतर पोस्टस्क्रिप्ट प्रत्येक परिणामी स्ट्रिंगशी जोडली जाते, जो डावीकडून उजवीकडे विस्तारत आहे.

ब्रेस विस्तारांना नेस्टेड केले जाऊ शकते. प्रत्येक विस्तार केलेल्या स्ट्रिंगचे परिणाम सॉर्ट केले जात नाहीत; डावीकडून उजवीकडे क्रमबद्ध आहे. उदाहरणार्थ, एक { d, c, b } ई 'एडे एस एबीई' मध्ये वाढतो.

ब्रेस विस्तार इतर विस्तारांपूर्वी केला जातो, आणि अन्य विस्तारांसाठी विशेष असलेली कोणतीही अक्षरे संरक्षित केली जातात. तो काटेकोरपणे शाब्दिक आहे. बास विस्तार संदर्भास किंवा चौकटी कंसातील मजकूरावर कोणतीही वाक्यरचना परिभाषित करत नाही.

हे बांधकाम विशेषत: लघुलिपी म्हणून वापरले जाते जेव्हा स्ट्रिंगचे सामान्य उपसर्ग तयार करणे वरील उदाहरणाच्या तुलनेत जास्त असते:

mkdir / usr / local / src / bash / {जुन्या, नवीन, दुर्ग, बग}

किंवा

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

ब्रेस विस्तार श च्या ऐतिहासिक आवृत्त्यांसह थोडी विसंगती सादर करते. sh उद्गार किंवा बंद कंस आणत नाही विशेषतः जेव्हा ते एखाद्या शब्दाचा भाग म्हणून दिसतात आणि त्यास आउटपुटमध्ये ठेवतात. ताकदीचा विस्तार म्हणून बाश शब्दांपासून बाक काढून टाकतात. उदाहणार्थ, {1,2} फाईलमध्ये शेल केलेला शब्द आऊटपुटमध्ये सारखेच दिसतो. Bash द्वारे विस्तारित झाल्यानंतर हाच शब्द आउटपुट file1 file2 आहे . जर sh सह कठोर सुसंगतता हवी असेल तर + B ऑप्षनसह प्रारंभ करा किंवा सेट कमांडमध्ये B पर्यायासह ब्रेस विस्तार अक्षम करा (खाली SHELL BUILTIN कमांडस पहा).

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

एक शब्द न वाचलेले टिल्ड वर्ण (` ~ ') ने सुरू होत असल्यास, प्रथम न जोडलेले स्लॅशच्या मागील सर्व वर्ण (किंवा सर्व अक्षरे, जर न वटलेले स्लॅश नसेल तर) टिल्ड-प्रिफिक्स मानले जाते. टिल्ड-प्रिफिक्समधील कोणतेही वर्ण उद्धृत केलेले नसल्यास, टिल्डच्या नंतर टिल्ड-प्रिफिक्समधील वर्ण संभाव्य लॉग इन नावाप्रमाणे हाताळले जातात. जर हे लॉगइन नाव शून्य स्ट्रिंग असेल तर, तिरक्या शेल पॅरामीटर HOME च्या मूल्याने बदलले आहे. HOME सेट न केल्यास, शेल चालवणार्या वापरकर्त्याची होम डिरेक्टरी त्याऐवजी बदली केली आहे. अन्यथा, टिल्ड-प्रिफिक्स दर्शविलेल्या लॉगीन नावाशी संबंधित होम डिरेक्टरीशी पुनर्स्थित केली जाईल.

टिल्ड-प्रिफिक्स हे `~ + 'असल्यास, शेल परिवर्तनीय PWD चे मूल्य टिल्ड-प्रिफिक्सला पुनर्स्थित करते जर टिल्ड-प्रिफिक्स एक `~ 'असेल तर शेल परिवर्तनीय OLDPWD चे मूल्य, जर ते सेट केले असेल तर ते बदलले आहे. टिल्ड-प्रिफिक्समधील टिल्ड-प्रीफिक्समधील वर्ण असणारी अक्षरे, '+' किंवा '-' द्वारे पूर्वनिर्धारित एक संख्या N ची बनलेली असल्यास, टिल्ड-प्रिफिक्स संबंधित स्टॅंडशी संबंधित घटकाने बदलली आहे, कारण ती प्रदर्शित केली जाईल टिल्ट -प्रिफिक्ससह वितर्क म्हणून वापरलेल्या डर्सची रचना टिल्ड-प्रिफिक्समधील टिल्डच्या वर्णाने वर्ण अग्रगण्य `+ 'किंवा` -' शिवाय नंबर असला तर `+ 'असे गृहित धरले जाते.

लॉगिन नाव अवैध आहे, किंवा टिल्ड विस्तार अयशस्वी झाल्यास, शब्द अपरिवर्तनीय आहे.

प्रत्येक व्हेरिएबलची बेरीज न जोडलेली टिल्ड-प्रिफिक्ससाठी खालील तपासली जाते : किंवा = या प्रकरणांमध्ये, टिल्डचे विस्तार देखील केले जाते. यामुळे, पीएचएच , मेलपाथ , आणि सीडीपीएटीएच मध्ये नियुक्त केलेल्या फाइलमध्ये तिळ्यांची नावे वापरली जातात , आणि शेल विस्तारित मूल्याचे वाटप करतो.

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

` $ 'वर्ण पॅरामीटर विस्तार, आदेश प्रतिस्थापक किंवा अंकगणित विस्तार समाविष्ट करते. पॅरामीटरचे नाव किंवा चिन्हाचा विस्तार केला जाणे हे बाक्रेस मध्ये संलग्न केले जाऊ शकते, जे पर्यायी आहेत परंतु त्यास खालीलप्रमाणे वर्णांची विस्तृत करण्याकरिता वेरियेबलचे संरक्षण करण्यासाठी सर्व्ह करावे जे नावाचा भाग म्हणून समजले जाऊ शकते.

जेव्हा ब्रेसेसचा वापर केला जातो, तेव्हा जुळणारे एंडिंग ब्रेस प्रथम बॅकस्लॅश किंवा उद्धृत केलेल्या स्ट्रिंगमध्ये नव्हे तर एम्बेडेड अंकगणित विस्तारास, कमांड प्रतिस्थापना किंवा पॅरामीटर विस्तारानुसार नाही.

पॅरामीटरचे मूल्य बदलले आहे. पॅरामीटर एकापेक्षा अधिक अंकांसह एक पॅसिअल पॅरामीटर असल्यास किंवा त्यास नमूद केल्याप्रमाणे पॅरामीटरने अनुसरण केलेले नसल्यास गुणधर्म आवश्यक असतात.

खालील प्रत्येक प्रकरणात, शब्द टिल्ड विस्तार, पॅरामीटर विस्तार, आदेश प्रतिस्थापना आणि अंकगणित विस्ताराच्या अधीन आहे. उपस्ट्रिंग विस्तार करत नसताना, अनसेट किंवा नलच्या पॅरामीटरसाठी टेस्टची चाचणी घ्या; अपूर्णांक नसलेल्या पॅरामीटरसाठी केवळ कोलनमधून बाहेर पडणे.

डीफॉल्ट मूल्ये वापरा पॅरामीटर सेट न केल्यास किंवा शून्य असल्यास, शब्दाचा विस्तार भरलेला आहे. अन्यथा, पॅरामीटरचे मूल्य बदली केले जाईल.

मुलभूत मूल्ये नियुक्त करा . पॅरामीटर सेट न केल्यास किंवा नल असल्यास, शब्दांचा विस्तार पॅरामीटरसाठी नियुक्त केला जातो. पॅरामीटरचे मूल्य नंतर प्रतिलिखित केले जाते. या पद्धतीने मौखिक पॅरामीटर्स आणि विशेष पॅरामीटर निर्दिष्ट केले जाऊ शकत नाहीत.

नल किंवा अनसेट करताना प्रदर्शित त्रुटी पॅरामीटर निरर्थक किंवा अनसेट असल्यास, शब्दांचा विस्तार (किंवा शब्द अस्तित्वात नसल्यास त्या संदेशाचा संदेश) मानक त्रुटी आणि शेलवर लिहिला जातो, जर तो परस्परसंवादी नसतो तर बाहेर पडतो. अन्यथा, पॅरामीटरचे मूल्य बदली केले जाईल.

वैकल्पिक मूल्य वापरा . जर पॅरामीटर निरर्थक किंवा अनसेट होत असेल तर, काहीही बदली केलेले नाही, अन्यथा शब्दाचा विस्तार बदलला जातो.

ज्या व्हेरिएबल्सच्या नावांचा विस्तार आयएफएस स्पेशल व्हेरिएबलच्या पहिल्या वर्गाद्वारे वेगळे करून उपसर्ग सह सुरू होतो.

पॅरामीटरच्या मूल्याच्या वर्णांची लांबी बदलली आहे. जर पॅरामीटर * किंवा @ असेल तर बदललेला मूल्य म्हणजे स्थानीक पॅरामीटर्सची संख्या. जर पॅरामीटर एक ऍरे नाम * किंवा @ द्वारे सबस्क्रिप्टेड असेल तर, बदली केलेले मूल्य अर्रेमधील घटकांची संख्या आहे.

पाथनाम विस्ताराप्रमाणेच पॅटर्न तयार करण्यासाठी शब्द विस्तृत केला आहे. जर नमुना पॅरामीटरच्या मूल्याच्या आरंभाशी जुळत असेल तर विस्ताराचा परिणाम म्हणजे सर्वात कमी जुळणार्या नमुन्यासह (`` # '' केस) किंवा सर्वात लांब जुळणारा नमुना (`` ## ' 'केस) हटवले. जर पॅरामीटर @ वा * आहे , तर प्रत्येक स्थानीक पॅरामिटरीत बदलीत नमुना काढून टाकण्याची प्रक्रिया लागू केली जाते, आणि विस्तार परिणाम सूची आहे जर पॅरामीटर एक ऍरे वेरिएबल @ किंवा * सह सबस्क्रिप्टेड असेल तर पॅटर्न काढणे ऑपरेशन त्या ओळीतील प्रत्येक सदस्याला लागू केले जाते, आणि विस्तार परिणाम सूची आहे.

पाथनाम विस्ताराप्रमाणेच पॅटर्न तयार करण्यासाठी शब्द विस्तृत केला आहे. जर नमुना पॅरामीटरच्या विस्ताराच्या मूल्याच्या शेवटच्या भागाशी जुळत असेल तर, विस्ताराचा परिणाम हा सर्वात कमी जुळणार्या नमुन्यासह (`` % '' केस) किंवा सर्वात लांब जुळणारा नमुना (`` % % '' केस) हटवले. जर पॅरामीटर @ वा * आहे , तर प्रत्येक स्थानीक पॅरामिटरीत बदलीत नमुना काढून टाकण्याची प्रक्रिया लागू केली जाते, आणि विस्तार परिणाम सूची आहे जर पॅरामीटर एक ऍरे वेरिएबल @ किंवा * सह सबस्क्रिप्टेड असेल तर पॅटर्न काढणे ऑपरेशन त्या ओळीतील प्रत्येक सदस्याला लागू केले जाते, आणि विस्तार परिणाम सूची आहे.

पाथनाम विस्ताराप्रमाणे आकृतिबंध तयार करण्यासाठी नमुना विस्तारीत केला आहे. पॅरामीटर विस्तारीत केला आहे आणि स्ट्रिंगसह त्याच्या मूल्यांवरील नमुन्याचे सर्वात जास्त जुळत आहे. पहिल्या स्वरूपात, फक्त पहिला सामना पुनर्स्थित केला जातो. दुसरा फॉर्म स्ट्रिंगमुळे बदललेल्या नमुन्याशी जुळणारा सर्व जुळणी कारणीभूत ठरतो. जर पॅटर्न # ने सुरू होत असेल तर ते पॅरामीटरच्या विस्तारित मूल्याच्या सुरुवातीशी जुळले पाहिजे. जर नमुना % ने प्रारंभ होत असेल तर तो पॅरामीटरच्या विस्तारित मूल्याच्या शेवटी जुळला पाहिजे. स्ट्रिंग रिक्त असल्यास, नमुन्यांची जुळवणी हटविली जातात आणि / खालील नमुन्या वगळल्या जाऊ शकतात. जर पॅरामीटर @ किंवा * असेल तर प्रतिस्थापन ऑपरेशन प्रत्येक स्थितीत्मक पॅरामीटर मध्ये बदलेल लागू केले जाते, आणि विस्तार परिणाम सूची आहे. जर पॅरामीटर एक ऍरे वेरिएबल @ किंवा * सह सबस्क्रिप्टेड असेल तर प्रतिवस्तू ऑपरेशन बदलेत अॅरेच्या प्रत्येक सदस्याला लागू केले जाते, आणि विस्तार परिणाम सूची आहे.

आदेश प्रतिस्थापन

कमांड प्रतिस्थापना आदेशाचे आऊटपुट बदलू शकते. दोन प्रकार आहेत:

$ ( कमांड )

किंवा

` कमांड '

Bash कमांड कार्यान्वित करून आणि कमांड प्रतिस्थापनास आदेशाच्या मानक आऊटपुटाने बदलून विस्तारित करते, कोणत्याही पिछाडीवरील न्यूलांस हटवून. एम्बेडेड न्यूलाइन हटविल्या जात नाहीत, परंतु शब्द विभाजन दरम्यान ते काढले जाऊ शकतात. आदेश प्रतिस्थापन $ (cat file ) समांतर परंतु जलद $ (< file ) द्वारे बदलले जाऊ शकते.

जुन्या-शैलीतील बॅकक्वायटीचा पर्याय वापरल्यास, बॅकस्लॅश $ , ` , किंवा \ ' नंतर वगळता त्याचे प्रत्यक्ष अर्थ कायम राखतो. बॅकस्लॅशने पहिले बॅकक्लॉट पूर्वीच्या प्रतिस्थापनास संपुष्टात आणते $ ( आदेश ) फॉर्म वापरताना, कंस (parentheses) मधील सर्व वर्ण कमांड अप करते; काहीही विशेष उपचार नाहीत.

आदेश प्रतिस्थांची मांडणी केली जाऊ शकते. बॅकक्वेॉट केलेला फॉर्म वापरताना घरटे करण्यासाठी, बॅकस्कॅससह आतील बॅकक्वॉप्स मधून बाहेर पडा

प्रतिव्यक्ती दुहेरी अवतरण चिन्हात दिल्यास, शब्द विभाजन आणि पथनाव विस्तार परिणामांवर केले जात नाही.

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

अंकगणित वाढ अंकगणित अभिव्यक्तीचे मूल्यांकन आणि परिणामी प्रतिस्थापन करण्यास परवानगी देते. अंकगणित विस्ताराचे स्वरूप हे आहे:

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

अभिव्यक्तीचे मूल्य दोनदा अवतरणांप्रमाणे होते, परंतु कंस आत दुहेरी अवतरण विशेषतः हाताळले जात नाही. अभिव्यक्तीमधील सर्व टोकन पॅरामीटर विस्तार, स्ट्रिंग विस्तार, आदेश प्रतिस्थापक आणि कोट काढून टाकणे यासह. अंकगणित बदली करणे शक्य आहे.

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

प्रोसेस सबस्टेशन

नामित पाईप्स ( FIFO ) किंवा खुल्या फाईल्सचे नामांकन करण्याच्या / dev / fd पद्धतीचे समर्थन करणाऱ्या प्रणालींवर प्रक्रिया प्रतिस्थापन समर्थित आहे. हे <( list ) किंवा > ( सूची ) चे स्वरूप घेते प्रक्रिया सूची त्याच्या इनपुट किंवा फिफाशी जोडलेली आउटपुट किंवा / dev / fd मधील काही फाइलसह चालविली जाते . या फाईलचे नाव सध्याच्या कमांडमध्ये वितरणाच्या रूपात उत्तीर्ण झाले आहे. > ( यादी ) फॉर्म वापरले असल्यास, फाईलवर लिहून सूचीसाठी इनपुट प्रदान करेल. जर <( list ) पध्दती वापरली असेल, तर यादीचे आऊटपुट प्राप्त करण्यासाठी अर्ग्युमेंट म्हणून पुरवलेली फाइल वाचली पाहिजे.

उपलब्ध असताना, प्रक्रिया प्रतिरूपण एकाचवेळी पॅरामीटर आणि व्हेरिएबल विस्तार, आदेश प्रतिस्थापक आणि अंकगणित विस्तारासह केले जाते.

शब्द विभाजन

शेल पॅरामीटर विस्तार, आज्ञा प्रतिस्थापक आणि अंकगणित विस्ताराचे परिणाम स्कॅन करतो जे शब्द विभाजनसाठी दुहेरी अवतरण चिन्हात होत नाही.

शेल IFFS चे प्रत्येक अक्षर डीलीमीटर म्हणून हाताळते आणि इतर विस्तारांच्या परिणामांना या वर्णांच्या शब्दांमध्ये विभाजित करते. IFS सेट नसल्यास, किंवा त्याचे मूल्य नक्की , मुलभूत असल्यास, नंतर कोणत्याही आयएफएस अक्षरे शब्द शब्द विभाजित करते. जर आयएफएस मुलभूत पेक्षा अन्य मूल्य असेल तर, व्हाटस्पेस वर्ण स्पेस आणि टॅबचे अनुक्रम शब्दच्या सुरूवातीस आणि अखेरीस दुर्लक्ष केले जातात, जोपर्यंत गोलाकार अक्षर IFS ( आयएफएस व्हाइस स्पेस वर्ण) च्या मूल्यामध्ये आहे. आयएफएस व्हायरस्पेस नसलेल्या कोणत्याही आलेले आयएफएस व्हायरसपेस अक्षरासह कोणताही अक्षर, एक फील्ड मर्यादित करते. आयएफएस व्हायरसपेस अक्षराचा क्रम देखील डेलीमीटर म्हणून मानला जातो. IFS चे मूल्य शून्य असल्यास, शब्द स्प्लिटिंग उद्भवत नाही.

स्पष्ट निरर्थक वितर्क ( "" किंवा "" ) कायम राहतात ज्या नमुद नसलेल्या पॅरामीटर्सच्या विस्तारामुळे परिणामी निष्फळ अप्रत्यक्ष निरर्थक वितर्क काढले जातात. शून्य मूल्यासह पॅरामीटर जरी दोन कोट्समध्ये विस्तारित झाला असेल, तर एक निरर्थक बाब परिणाम आणि कायम राहतील.

लक्षात घ्या की जर कोणतेही विस्तार होत नाही, तर विभाजन होत नाही.

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

शब्द विभाजित केल्यानंतर, जर -f पर्याय सेट केले नसल्यास, आकृत्या * साठी प्रत्येक शब्द स्कॅन करेल ? , आणि [ जर यापैकी एखादा अक्षरे दिसली तर शब्द एक नमुना म्हणून ओळखला जातो आणि पॅटर्नशी जुळणार्या फाइल नावांची वर्णक्रमानुसार क्रमवारी लावलेल्या यादीसह बदलले जाते. कोणतीही जुळणारी फाइल नाव सापडत नसल्यास, आणि शेल पर्याय nullglob अक्षम केला आहे, शब्द बदलत नाही. जर nullglob पर्याय सेट केला असेल आणि जुळण्या आढळल्या नाहीत तर शब्द काढून टाकले जाईल. जर शेल पर्याय nocaseglob सक्षम केला असेल तर, वर्ण अल्फाबेटिक वर्णांबाबत विचारात न घेता केले जाते. जेव्हा पाथनाम विस्तारासाठी एक नमुना वापरला जातो, तेव्हा नावाची सुरूवात किंवा लगेचच स्लॅश खालील अक्षर ``. '' हे शेल ऑप्शन dotglob सेट केले नसल्यास स्पष्टपणे जुळले पाहिजे. पथनाव जुळताना, स्लॅश वर्ण नेहमी स्पष्टपणे जुळले पाहिजे. इतर बाबतीत, ``. '' चे अक्षर विशेषत: हाताळले जात नाही. Nocaseglob , nullglob , आणि dotglob shell पर्यायांच्या वर्णनासाठी शेल बिल्टिन कमांड अंतर्गत खालील दुकानदारचे वर्णन पहा.

ग्लोबिनियर शेल परिवर्तनशील वापरले जाऊ शकते नमुना जुळलेल्या फाइल नावांच्या संचला मर्यादित करण्यासाठी. जर GLOBIGNORE सेट केले असेल, तर GLOBIGNOU मधील प्रत्येक नमुन्यातील जुळलेल्या सर्व फाइलचे नाव जुळ्यांच्या सूचीमधून काढले जाते. फाइल नावे `` .`` आणि `` .. '' नेहमी दुर्लक्षित केल्या जातात, जरी ग्लोबिनियर सेट केले असले तरीही. तथापि, GLOBIGNOU सेटिंग मध्ये डॉटग्ग शेल पर्याय सक्षम करण्याचा प्रभाव आहे, म्हणून ``. सह सुरू होणारी सर्व अन्य फाइल नावे जुळतील. `` सह सुरू होणाऱ्या फाइल नावांचा विचार न करण्याच्या जुन्या वर्तनासाठी ' `. *' ' ग्लोबिनियरमध्ये नमुन्यात एक करा . GLOBIGNORE सेट न केल्यास dotglob पर्याय अक्षम केला जातो.

नमुना जुळवणी

खाली नमूद केलेल्या विशेष पॅटर्न वर्णांव्यतिरिक्त, कोणत्याही पॅटर्नमध्ये दिसणारा कोणताही वर्ण स्वत: ला जुळतो. NUL चे वर्ण एका नमुन्यात होऊ शकत नाहीत. विशेष नमुना वर्ण शब्दशः जुळल्यास त्यांचे शब्द उद्धृत करणे आवश्यक आहे

विशेष पॅटर्न वर्णांमध्ये खालील अर्थ आहेत:

*

शून्य स्ट्रिंगसह कोणतीही स्ट्रिंग जुळते.

?

कोणत्याही एका वर्णाशी जुळते.

[...]

संलग्न वर्णांपैकी कोणत्याही एकशी जुळते हायफेनने विभक्त केलेले वर्णांची जोडी एक श्रेणी अभिव्यक्ती दर्शविते; सध्याच्या लोकॅलच्या कॉलेटिंग क्रम व कॅरेक्टर सेटचा वापर करून त्या दोन वर्णांमध्ये समावेश असलेले कोणतेही अक्षर जुळवले जाते. खालील प्रथम वर्ण असेल तर ! किंवा ^ असे जोडलेले नाही. श्रेणी अभिव्यक्तीमधील वर्णांचे वर्गीकरण क्रम वर्तमान लोकॅलनुसार आणि सेट केले असल्यास, LC_COLLATE शेल व्हॅल्यूला मूल्य निश्चित करते. अ - संच मध्ये प्रथम किंवा अंतिम वर्ण म्हणून हे समाविष्ट करून जुळविली जाऊ शकते. A ] ची बेरीज सेटमध्ये प्रथम वर्ण म्हणून समाविष्ट करून केली जाऊ शकते.

[ आणि ] मध्ये , अक्षरांच्या वर्गीकरणास अक्षरशः [[ class :]] वापरून स्पष्ट करता येते, जेथे वर्ग हा POSIX.2 मानक परिभाषित केलेल्या खालील वर्गांपैकी एक आहे:

alnum alpha ascii रिक्त cntrl अंक आलेख कमी प्रिंट पंक्ती जागा उच्च शब्द xdigit
एक वर्ण वर्ग त्या वर्गाशी संबंधित कोणत्याही वर्णाशी जुळतो. वर्ण वर्ण शब्द अक्षरे, अंक, आणि वर्ण जुळते _.

[ आणि ] मध्ये , सिंटॅक्स [= c =] च्या सहाय्याने एक समानालता वर्ग निर्दिष्ट केला जाऊ शकतो, जो समान कोलन वजन असलेल्या सर्व वर्णांशी जुळतो (वर्तमान लोकेलद्वारे परिभाषित केल्याप्रमाणे) अक्षर सी म्हणून .

[ आणि ] मध्ये, सिंटॅक्स [. चिन्ह .] कोटिंग चिन्हाचे प्रतीक जुळवते.

Shopgl builtin वापरून extglob शेल पर्याय सक्षम असल्यास, अनेक विस्तारित नमुना जुळणारे ऑपरेटर ओळखले जातात. खालील वर्णनामध्ये, एक नमुना-सूची एक किंवा | . खालील नमुन्यामध्ये एक किंवा अधिक वापरुन संमिश्र नमुन्यांची रचना केली जाऊ शकते:

? ( नमुना-यादी )

शून्य केलेल्या किंवा नमूद केलेल्या नमुन्यांची एक घटना

* ( नमुना-यादी )

दिलेल्या नमुन्यांची शून्य किंवा अधिक घटना जुळवते

+ ( नमुना-यादी )

दिलेल्या नमुन्यांच्या एक किंवा अधिक घटनांची जुळणी करते

@ ( नमुना-यादी )

दिलेल्या नमुन्यांची एक जुळते

! ( नमुना-यादी )

दिलेल्या नमुन्यांपैकी एक वगळता काहीही जुळते

कोट काढणे

मागील विस्तारानंतर, उपरोक्त विस्तारांपैकी एकाचे परिणाम न झालेल्या वर्णांच्या \ , ' , आणि ' च्या सर्व न सुटलेले आवृत्त्या काढल्या जातात.

रीडायरेक्शन

आदेश कार्यान्वित करण्यापूर्वी शेल द्वारे विश्लेषित केलेले विशेष नोटेशन वापरून त्याचे इनपुट आणि आउटपुट पुनर्निर्देशित केले जाऊ शकते. शेल एक्झिक्यूशन पर्यावरण चालू करण्यासाठी फाइल्स उघडण्यासाठी आणि बंद करण्यासाठी रीडायरेक्शनचा देखील वापर केला जाऊ शकतो. खालील रीडायरेक्शन ऑपरेटर आधी किंवा अगदी सोप्या आदेशात कोठेही दिसू शकतात किंवा आदेशाचे पालन ​​करू शकतात. रीडायरेक्शन ते क्रमाने दिसतात त्यानुसार प्रक्रिया केल्या जातात, डावीकडून उजवीकडे

खालील वर्णनामध्ये, जर फाइल डिस्क्रीटर क्रमांक वगळला गेला आणि पुनर्निर्देशन ऑपरेटरचे प्रथम अक्षर < , रिडायरेक्शन म्हणजे मानक इनपुट (फाइल वर्णनकार 0) होय. पुनर्निर्देशन ऑपरेटरचे प्रथम वर्ण असल्यास, रीडायरेक्शन म्हणजे मानक आउटपुट (फाइल वर्णन 1).

खालील वर्णनामध्ये पुनर्निर्देशन ऑपरेटर खालील शब्द, अन्यथा नोंद नसेल तर, ब्रेस विस्तार, टिल्ड विस्तार, पॅरामीटर विस्तार, आदेश प्रतिस्थापन, अंकगणित विस्तार, कोट काढणे, पथनाव विस्तार आणि शब्द विभाजन करण्याच्या अधीन आहे. जर तो एकापेक्षा अधिक शब्दाचा विस्तार करतो, तर बॅशने त्रुटी दर्शविली .

लक्षात घ्या की पुनर्निर्देशनचा क्रम महत्वाचा आहे. उदाहरणार्थ, आदेश

ls > डर्टीलालिस्ट 2 > & 1

मानक डॉक्युमेंट आणि स्टँडर्ड एरर दोन्ही फाइल ड्रिलिस्टकडे निर्देश करते, तर कमांड

ls 2 > & 1 > डर्टीलिस्ट

ड्रिल्डिस्ट फाइल करण्यासाठी फक्त मानक आउटपुट निर्देशित करते कारण मानक दोष ड्रिमलाल्याकडे पाठवण्याआधी मानक आऊटपुटला मानक आउटपुट म्हणून डुप्लिकेट करण्यात आले होते.

बश विशेषत: जेव्हा ते पुनर्निर्देशनामध्ये वापरल्या जातात तेंव्हा पुढील फाइलचे नाव हाताळते:

/ dev / fd / fd

जर एफडी एक वैध पूर्णांक आहे, तर फाईल डिस्क्रीटर एफडी डुप्लिकेट आहे.

/ dev / stdin

फाइल वर्णनकर्ता 0 डुप्लिकेट आहे.

/ dev / stdout

फाइल वर्णन 1 हे डुप्लिकेट केले आहे.

/ dev / stderr

फाईल डिस्किफॉर्म 2 डुप्लिकेट केलेले आहे.

/ dev / tcp / host / port

जर होस्ट एक यजमाननाम किंवा इंटरनेट पत्ता असेल आणि पोर्ट एक पूर्णांक पोर्ट क्रमांक किंवा सेवा नाव असेल तर, संबंधित सॉकेटसह एक TCP कनेक्शन उघडण्याचा प्रयत्न असेल.

/ dev / udp / host / port

जर होस्ट वैध होस्टनाव किंवा इंटरनेट पत्ता असेल आणि पोर्ट म्हणजे पूर्णांक पोर्ट क्रमांक किंवा सेवा नाव, संबंधित सॉफ्टवेअरला UDP कनेक्शन उघडण्याचा प्रयत्न असेल.

फाईल उघडणे किंवा तयार करणे असफल झाल्यास पुनर्निर्देशन अयशस्वी होण्याची शक्यता आहे.

पुनर्निर्देशित इनपुट

इनपुटचा पुनर्निर्देशन फाइल ज्यास त्याचे नाव फाइल डिस्क्रिप्टर n वर वाचण्यासाठी उघडले जाईल किंवा मानक इनपुट (फाइल डिस्क्रिप्टर 0) असेल तर n च्या नमूद केल्याप्रमाणे शब्द निर्दिष्ट करेल.

इनपुट पुनर्निर्देशित करण्यासाठी सामान्य स्वरूप आहे:

[ n ] < शब्द

पुनर्निर्देशित आउटपुट

आउटपुटचे रीडायरेक्शन म्हणजे फाइल डिस्क्रिप्टर n वर लिखित स्वरूपातील शब्दांच्या विस्तारापासून किंवा नं निर्दिष्ट नसल्यास मानक आउटपुट (फाइल डिस्क्रिप्टर 1) नावाचा फाईल. फाईल अस्तित्वात नसल्यास ती तयार केली आहे; जर ती अस्तित्वात नसेल तर ती शून्य आकारात काटली जात आहे.

आउटपुट पुनर्निर्देशित करण्यासाठी सामान्य स्वरूप आहे:

[ एन ] > शब्द

जर रीडायरेक्शन ऑपरेटर असेल तर, आणि सेट बिल्टिनवरील noclobber पर्याय सक्षम केला असेल, तर फाईल ज्याचे नाव शब्द विस्तारित होण्यापासून होईल आणि एक नियमित फाइल असल्यास पुनर्निर्देशन अपयशी ठरेल. जर रीडायरेक्शन ऑपरेटर असेल तर | , किंवा पुनर्निर्देशन ऑपरेटर आहे > आणि सेट बिल्टिन आदेशासाठी noclobber पर्याय सक्षम केलेला नाही, तर शब्दाद्वारे नामित फाइल अस्तित्वात असल्यास देखील पुनर्निर्देशन करण्याचा प्रयत्न केला जातो.

पुनर्निर्देशित आउटपुट जोडणे

या पद्धतीने आउटपुटचे रीडायरेक्शन म्हणजे फाइल डिस्क्रिप्टर n वर जोडण्यासाठी उघडलेल्या शब्दांच्या विस्तारापासून किंवा मानक आउटपुट (फाइल डिस्क्रिप्टर 1), जर एन नमूद केलेले नसेल तर त्यास फाईल बनते. फाईल अस्तित्वात नसल्यास ती तयार केली जाते.

संलग्न आउट जोडण्यासाठीचे सामान्य स्वरूप आहे:

[ एन ] >> शब्द

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

Bash ने मानक आऊटपुट (फाइल डिस्क्रिप्टर 1) आणि स्टँडर्ड एरर आऊटपुट (फाइल डिस्क्रिप्टर 2) यांना फाइलचे पुनर्निर्देशित करण्यासाठी परवानगी दिली आहे ज्याचे नाव या बांधकामासह शब्दाचा विस्तार आहे.

मानक आउटपुट आणि मानक त्रुटी पुनर्निर्देशित करण्यासाठी दोन स्वरूप आहेत:

&> शब्द

आणि

> शब्द

दोन फॉर्म, प्रथम पसंत आहे हे समानार्थी शब्द समतुल्य आहे

> शब्द 2 > & 1

येथे कागदपत्रे

या प्रकारची पुनर्निर्देशन शेलला वर्तमान स्त्रोतापासून इंपुट वाचण्यासाठी निर्देशित करते, जोपर्यंत केवळ शब्द (एकही पिछाडीत नसलेली) असलेली एक ओळ दिसत नाही. त्या पॉईंटपर्यंत वाचलेल्या सर्व ओळी नंतर एक कमांडसाठी मानक इनपुट म्हणून वापरली जातात.

येथे-दस्तऐवजांचे स्वरूप आहे:

<< [ - ] येथे शब्द -दस्तऐवज डीलिमिटर

शब्दांवर पॅरामीटर विस्तार, आदेश प्रतिस्थापक, अंकगणित विस्तार, किंवा पाथनाव विस्तारित नाही. शब्दातील कोणत्याही वर्ण उद्धृत झाल्यास, डिलिमिटर हा शब्द वर कोट काढण्याचे परिणाम आहे, आणि येथे-दस्तऐवजमधील ओळी वाढविण्यात येणार नाहीत. शब्द न जोडलेला असल्यास, येथे-दस्तऐवजाच्या सर्व ओळी पॅरामीटर विस्तार, आदेश प्रतिस्थापना आणि अंकगणित विस्ताराच्या अधीन आहेत. नंतरच्या प्रकरणात, अक्षर अनुक्रम \ दुर्लक्षित केला जातो, आणि \ वर्ण, $ , आणि ` कोट करण्यासाठी वापरला जाणे आवश्यक आहे.

जर रीडायरेक्शन ऑपरेटर << - असेल , तर सर्व अग्रगण्य टॅब कॅरेक्टर इनपुट लाइन्स आणि सीलीमिटर असलेल्या ओळीमधून काढून टाकले आहेत. यामुळे येथे दस्ताऐवज शेल स्क्रिप्टमधील एका नैसर्गिक फॅशनमध्ये इंडेंटेड करण्यास परवानगी देते.

येथे स्ट्रिंग्स

येथे एक प्रकारचे कागदपत्र आहेत, स्वरूप आहे:

<<< शब्द

शब्द त्याच्या मानक इनपुट वर आदेश विस्तारित आणि पुरवले जाते.

फाइल वर्णनकर्ते डुप्लिकेट करणे

रीडायरेक्शन ऑपरेटर

[ n ] < शब्द आणि

इनपुट फाइल डिस्क्रिप्टर्सची नक्कल करण्यासाठी वापरले जाते. शब्द एक किंवा अधिक अंकांपर्यंत विस्तृत असेल तर, n द्वारे दर्शविलेला फाइल वर्णनकर्ता त्या फाइल डिस्क्रिप्टरची कॉपी बनतो. शब्दातील अंक इनपुटसाठी उघडण्यासाठी फाइल वर्णनकर्ता निर्दिष्ट करत नसल्यास, पुनर्निर्देशन त्रुटी उद्भवते. जर शब्द मूल्यांकनासाठी - , फाइल वर्णनकर्ता n बंद आहे. जर n निर्दिष्ट नसेल, तर मानक इनपुट (फाइल वर्णनकार 0) वापरला जातो.

ऑपरेटर

[ n ] > & शब्द

त्याचप्रमाणे आउटपुट फाइल डिस्क्रिप्टर्सची डुप्लीकेट वापरली जाते. जर एन नमूद नसेल, तर मानक आउटपुट (फाइल वर्णन 1) वापरला जातो. शब्दातील अंक आउटपुटसाठी फाईल वर्णनक उघडत नसल्यास, पुनर्निर्देशन त्रुटी उद्भवते. विशेष बाब म्हणून, जर n वगळले असेल आणि शब्द एक किंवा अधिक अंकांवर विस्तार होत नसेल, तर आधीचे वर्णन केल्याप्रमाणे मानक आउटपुट आणि मानक त्रुटी पुनर्निर्देशित केली जातात.

फाइल डिसिप्टर्स हलवित आहे

रीडायरेक्शन ऑपरेटर

[ n ] <आणि अंक -

जर एन नमूद केलेले नसेल तर फाइल डिस्क्रिप्टर एन फाइलला स्क्रीप्टर n , किंवा मानक इनपुट (फाइल वर्णनक 0) मध्ये हलवेल. n नक्कल केल्या नंतर अंक बंद आहे

त्याचप्रमाणे, रीडायरेक्शन ऑपरेटर

[ n ] > आणि अंक -

जर एन नमूद केलेले नसेल तर फाइल डिस्क्रिप्टर n मध्ये फाईल डिस्क्रिप्टर अंक हलवेल किंवा मानक आउटपुट (फाइल वर्णन 1) येईल.

वाचन आणि लेखनसाठी फाइल विवरणकर्ते उघडणे

रीडायरेक्शन ऑपरेटर

[ n ] <> शब्द

ज्याचे नाव फाइल डिस्क्रिप्टर n वर वाचन आणि लेखन दोन्ही वाचण्यासाठी किंवा फाईल डिस्क्रिप्टर 0 असल्यास n निर्दिष्ट नसलेले फाइलचे विस्तार आहे. जर फाईल अस्तित्वात नसेल, तर ती तयार होईल.

अळीस

साध्या आदेशाच्या पहिल्या शब्दाच्या रूपात ते वापरले जातात तेव्हा उपाख्य एका शब्दासाठी एक स्ट्रिंग पुनर्स्थित करण्यास परवानगी देतात. शेल उपनावांची सूची कायम ठेवते जे उपनाव आणि अनियास निर्मित आज्ञांसह सेट व सेट न करता (खाली SHELL BUILTIN कमांड्स पहा). प्रत्येक आदेशाचा पहिला शब्द, जर न ऐकलेला असल्यास तो एखादा उपनाव आहे किंवा नाही याची तपासणी केली आहे. तसे असल्यास, हा शब्द उपनाव च्या मजकूराद्वारे पुनर्स्थित केला आहे उपनागी नाव आणि प्रतिस्थापन मजकूराला उपरोक्त सूचीबद्ध मेटाकर्सर्ससह कोणतेही वैध शेल इनपुट असू शकते, अपवाद ज्यामध्ये उपनाव नावामध्ये असू शकत नाही = पुनर्निर्देशन मजकूराचा पहिला शब्द उपनामांकरिता तपासला जातो, परंतु उपनाव जो विस्तारित केला जात आहे तो एक शब्द दुसऱ्या वेळी विस्तारित केला जात नाही. याचा अर्थ असा की एखादे एलआयएस एलएस-एलएफ , उदाहरणार्थ, आणि बाश पुन्हा पाठोपाठ मजकूर विस्तारित करण्याचा प्रयत्न करत नाहीत. जर उपनाव मूल्याचे शेवटचे अक्षर रिक्त असेल तर उपनाधकाच्या खालील पुढचे कमांड शब्द देखील तपासले जातात.

उपाख्य तयार केले आणि उपनायक आदेशासह सूचीबद्ध केले आहेत, आणि अल्लाह आदेशासह काढले आहेत.

प्रतिस्थापन मजकूरात आर्ग्युमेंट्स वापरण्यासाठी कोणतीही पद्धत नाही जर आर्ग्युमेंट्स आवश्यक असतील तर शेल फंक्शन वापरला जावा (खालील फंक्शन्स पहा).

शेल इंटरअॅक्टिव्ह नसताना उपनाव विस्तारित केले जात नाही, जोपर्यंत विस्तृत_अभ्यास शेल पर्याय shopt वापरत नाही (खाली SHELL BUILTIN कमांडस् अंतर्गत shopt चे वर्णन पहा).

परिभाषे आणि उपनामांचा वापर करण्यासंबंधी नियम काहीसे गोंधळात टाकणारे आहेत. Bash त्या ओळीतील कोणत्याही आज्ञा अंमलात आणण्यापूर्वी किमान एक पूर्ण ओळीत इनपुट वाचते. आदेश वाचले गेल्यावर उपनाव वाढविले जाते, कार्यान्वीत केल्यावर नाही. म्हणूनच, एक ओळी परिभाषा त्याच ओळीवर दिसत आहे कारण दुसरी आज्ञा इनपुटची पुढची ओळ वाचली जात नाही तोपर्यंत ती प्रभावी होत नाही. त्या ओळीवरील उपनाम परिभाषणाचे अनुसरण करणारे आदेश नवीन उपनावाने प्रभावित नाहीत. हे वर्तन फंक्शन्स कार्यान्वित केल्यावर देखील होते. कार्यपद्धती कार्यान्वित केल्यावर फंक्शनची व्याख्या वाचली गेल्यावर उपनामे वाढविण्यात येतात, कारण फंक्शनची व्याख्या ही एक कंपाउंड कमांड आहे. परिणामी, एखाद्या फंक्शनमध्ये परिभाषित केलेल्या उपनावे त्या फंक्शनच्या अंमलबजावणी पर्यंत उपलब्ध नसतात. सुरक्षित राहण्यासाठी, वेगळ्या ओळीवर नेहमी एरिया व्याख्या ठेवा, आणि अनाव्यांचा वापर कंपाउंड आज्ञांमध्ये करू नका.

जवळजवळ प्रत्येक उद्देशासाठी, उपनावे शेल फंक्शन्सने अधिग्रहित केली जातात.

कार्ये

SHELL GRAMMAR वरील वर्णनीय शेल फंक्शन, नंतरच्या अंमलबजावणीसाठी अनेक आदेश ठेवते. जेव्हा शेल फंक्शनचे नाव सोप्या कमांड नावाने वापरले जाते तेव्हा त्या फंक्शन नावाशी संबंधित कमांडची यादी कार्यान्वित होते. वर्तमान शेलच्या संदर्भात फंक्शन्स कार्यान्वित केल्या जातात; त्यांना स्पष्टीकरण देण्यासाठी कोणतीही नवीन प्रक्रिया तयार केलेली नाही (शेल स्क्रिप्टच्या अंमलबजावणीसह याचा विपरीत परिणाम). फंक्शन कार्यान्वित झाल्यावर, फंक्शनची आर्ग्युमेंट्स त्याच्या एक्जीक्यूशनमध्ये स्थितीय पॅरामीटर्स बनतात. विशेष पॅरामीटर # बदल दर्शविण्याकरीता अद्ययावत केला आहे. स्थिती मापदंड 0 बदलत नाही. फंक्शन कार्यान्वित करताना FUNCNAME व्हेरिएबल फंक्शनच्या नावावर सेट आहे. शेल एक्झिक्यूशन एन्वायरनमेंटच्या इतर सर्व बाबी फंक्शन आणि त्याच्या कॉलरमध्ये अपवाद आहेत जे DEBUG ट्रॅप (खाली शेल बुल्टिन कमांडस् अंतर्गत सापळे बांधण्याचे वर्णन पहातात ) यांच्याशी समानच आढळत नाही तोपर्यंत कार्य ट्रेस विशेषता देण्यात आले नाही ( खाली दिलेल्या घोषणेचे वर्णन पहा).

फंक्शनच्या स्थानिकांची बदली स्थानिक बिल्टिन कमांड द्वारे घोषित केली जाऊ शकते. साधारणपणे, चलने आणि त्यांचे मूल्य फंक्शन आणि कॉलर यांच्या दरम्यान सामायिक केले जाते.

बिल्टिन कमांड रिटर्न फ़ंक्शनमध्ये कार्यान्वित झाल्यास, फंक्शन पूर्ण झाल्यानंतर आणि फंक्शन कॉलनंतर पुढील आज्ञा देऊन कार्यान्वित करणे पुन्हा सुरू होईल. फंक्शन पूर्ण झाल्यावर, पॅरॅशनल पॅरामीटर्सचे मुल्ये आणि विशेष पॅरामीटर्स # फंक्शन्स एक्झिक्यूशनच्या आधी केलेल्या मूल्यांना पुनर्संचयित केले जातात.

फंक्शन नावे आणि परिभाषा डीफर्ड किंवा टाइपॅट्सच्या अंगभूत आदेशांमध्ये -f ऑप्शनसह सूचीबद्ध केल्या जाऊ शकतात. -फ ऑप्शन्स घोषित करा किंवा टाइपसेट फंक्शनचे नाव केवळ सूचीबद्ध करेल. फंक्शन्स एक्सपोर्ट केले जाऊ शकतात जेणेकरून सबसिल्सने आपोआपच त्यांना 'build-builtin' -f ऑप्शन्समध्ये परिभाषित केले असेल.

कार्य पुनरावर्ती असू शकते. रिकर्सिव्ह कॉलच्या संख्येवर कोणतीही मर्यादा लागू केलेली नाही.

एथिदमिक मूल्यमापन

शेल काही विशिष्ट परिस्थितींत गणिताच्या अभिव्यक्तीचे मूल्यमापन करण्याची परवानगी देते (बॅटिन कमांड आणि अंकगणित विस्तार द्या ). मुल्यांकन फिक्स्ड-रूंदी पूर्णांकांमध्ये केले जाते आणि ओव्हरफ्लोचा कोणताही चेक नाही, तरीही 0 ने विभाजन अडकले आहे आणि त्रुटी म्हणून फ्लॅग केले आहे. ऑपरेटर आणि त्यांची प्राधान्ये आणि सहकारिता सी भाषेप्रमाणेच असते. ऑपरेटर खालील यादी समान-प्राधान्य ऑपरेटर पातळी मध्ये गटामध्ये समाविष्ट केले आहे. पातळी कमी होणे प्राधान्य क्रम म्हणून सूचीबद्ध आहेत

id ++ id -

वेरियेबल पोस्ट-इंरर्टिमेंट आणि पोस्ट-डिग्रिमेंटल

++ id - id

परिवर्तनशील पूर्व-वाढ आणि पूर्व-घट

- +

वेशिष्ट्य ऋण आणि प्लस

! ~

तार्किक आणि बिटwise नकार

**

exponentiation

* /%

गुणाकार, भागाकार, उर्वरित

+ -

बेरीज, वजाबाकी

<< >>

डावे आणि उजवे बिडwise बदल

<=> = <>

तुलनेत

==! =

समता आणि असमानता

&

बिटwise आणि

^

बिटwise विशेष किंवा

|

बिटwise किंवा

&&

तार्किक आणि

||

तार्किक OR

एक्स्प ? expr : expr

सशर्त मूल्यमापन

= * = / =% = + = - = << = >> = & = = = = =

अभिहस्तांकन

expr1 , expr2

कॉमा

शेल परिवर्तनांना ऑपरेटर म्हणून परवानगी आहे; अभिव्यक्तीचे मूल्यमापन करण्यापूर्वी पॅरामीटर विस्तार केला जातो. एका अभिव्यक्तीमध्ये, पॅरामीटर विस्तार सिंटॅक्स वापरल्याशिवाय शेल परिवर्तनांचा देखील नावाने संदर्भ दिले जाऊ शकतो. एखाद्या वेरिअबलचे मूल्य संदर्भित असताना गणिताची अभिव्यक्ती म्हणून मूल्यमापन केले जाते. शेल परिवर्तनास एक अभिव्यक्तीमध्ये त्याच्या पूर्णांक गुणधर्म चालू असणे आवश्यक नाही.

अग्रगण्य 0 असलेल्या स्थिरांकांना ऑक्टील क्रमांक असे म्हणतात. अग्रगण्य 0x किंवा 0x हेक्झाडेसीमल दर्शवितो अन्यथा, संख्या [ बेस # ] n हा फॉर्म घेईल, जिथे बेस संख्या 2 आणि 64 मधील अंकगणित बेस दर्शित करेल, आणि n त्या बेसमधील संख्या आहे. बेस # वगळल्यास बेस 10 वापरला जातो. 9 पेक्षा जास्त अंक लोअरकेस अक्षरे द्वारे दर्शविले जातात, अपरकेस अक्षरे, @, आणि _, त्या क्रमाने. जर बेस 36 पेक्षा कमी किंवा त्याहून कमी आहे, तर लोअरकेस आणि अप्परकेस अक्षरे एकापाठोपाठ वापरतात जेणेकरून 10 आणि 35 च्या दरम्यानच्या संख्या दर्शविल्या जाऊ शकतात.

ऑपरेटर प्राधान्य क्रमाने मूल्यांकन केले जाते कंसात प्रथम उपपरिवर्तन केले जाते आणि वरील प्राधान्य नियम अधिलिखित होऊ शकतात.

शारिरीक अभिव्यक्ती

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

-ए फाइल

फाइल अस्तित्वात असल्यास खरे.

-b फाईल

फाईल अस्तित्वात असल्यास खरे आणि एक ब्लॉक विशेष फाइल आहे.

-c फाईल

फाइल अस्तित्वात असल्यास खरे आणि एक वर्ण विशेष फाइल आहे.

-d संचिका

फाईल अस्तित्वात असल्यास खरे आणि एक निर्देशिका आहे.

-e फाईल

फाइल अस्तित्वात असल्यास खरे.

-f फाईल

फाईल अस्तित्वात असल्यास खरे आणि एक नियमित फाइल आहे.

-g संचिका

खरे असल्यास फाइल अस्तित्वात असल्यास आणि set-group-id

-h फाईल

फाईल अस्तित्वात असल्यास खरे आणि प्रतिकात्मक दुवा आहे.

-k फाईल

फाइल अस्तित्वात असल्यास खरे आणि त्याचे `स्टिकी 'बिट सेट आहे.

-p फाईल

फाईल अस्तित्वात असल्यास खरे आणि एक नावाचे पाइप (FIFO) आहे.

-r फाईल

खरे असल्यास फाइल अस्तित्वात आहे आणि वाचनीय आहे.

-s फाईल

फाईल अस्तित्वात असल्यास खरे आणि शून्यापेक्षा मोठे आकार.

-टी एफडी

खरे असल्यास फाइल डिस्क्रिप्टर एफडी उघडलेले आहे आणि टर्मिनल संदर्भात आहे.

-u फाइल

खरे असल्यास फाइल अस्तित्वात असल्यास आणि set-user-id बिट सेट आहे.

-w फाईल

खरे असल्यास फाइल अस्तित्वात असल्यास आणि लिहिण्यायोग्य आहे.

-x फाइल

खरे असल्यास फाइल अस्तित्वात आहे आणि कार्यान्वीत आहे.

-O फाईल

खरे असल्यास फाइल अस्तित्वात असल्यास आणि ती प्रभावी यूजर आयडीच्या मालकीची आहे.

-जी फाईल

खरे असल्यास फाइल अस्तित्वात असेल आणि ती प्रभावी गट आयडीच्या मालकीची असेल तर.

-एल फाइल

फाईल अस्तित्वात असल्यास खरे आणि प्रतिकात्मक दुवा आहे.

-S फाईल

फाईल अस्तित्वात असल्यास खरे आणि एक सॉकेट आहे.

-N फाईल

फाईल अस्तित्वात असल्यास खरे आणि ती शेवटची वाचलेली असल्याने ती सुधारित केली गेली आहे.

file1 - nt file2

फाइल 1 नवीन आहे (बदलत्या तारखेनुसार) file2 पेक्षा, किंवा file1 अस्तित्वात असल्यास आणि file2 न केल्यास ते खरे आहे.

file1 - ot file2

खरे तर file1 फाइल 2 पेक्षा जुने आहे, किंवा file2 अस्तित्वात असल्यास आणि file1 नाही.

file1 -ef file2

खरे असल्यास file1file2 एकाच साधनाचे व आयनोड क्रमांक पहा.

-o optname

शेल पर्याय optname सक्षम असल्यास हे खरे आहे. खालील set builtin -o या पर्यायाच्या खालील पर्यायांच्या सूची पहा.

-z स्ट्रिंग

खरे असल्यास स्ट्रिंगची लांबी शून्य असते.

-n स्ट्रिंग

स्ट्रिंग

खरे असल्यास स्ट्रिंगची लांबी शून्य नसलेली आहे.

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

स्ट्रिंग समान असल्यास खरे. = मजबूत POSIX अनुपालनासाठी == च्या जागी वापरले जाऊ शकते.

string1 ! = string2

स्ट्रिंग समान नसल्यास खरे.

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

वास्तविक लोकॅलमध्ये string1 ला स्ट्रिंग 2 च्या आधी चित्रात्मकदृष्ट्या आधी सत्य असल्यास.

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

वास्तविक लोकॅलमध्ये स्ट्रिंग 2 नंतर चित्रात्मकदृष्ट्या string1 प्रकार बदलत असल्यास खरे.

arg1 OP arg2

ओ.पी. -इसी , -ए , -एलटी , -एल , -जीटी , किंवा -जी पैकी एक आहे . जर arg1 समान, समान, कमी, किंवा समान, जास्त, किंवा arg2 च्या समान किंवा त्यापेक्षा जास्त असेल तर हे अंकगितीय बायनरी ऑपरेटर खरे ठरतील . Arg1 आणि arg2 सकारात्मक किंवा नकारात्मक पूर्णांक असू शकतात.

साधा कमांड एक्सप्रेशन

जेव्हा एक साधी कमांड कार्यान्वित होतो तेव्हा शेल खालील विस्तार, अभिहस्तांकने, आणि पुनर्निर्देशन करते, डावीकडून उजवीकडे

1. शब्दलेखकाने वेरियेबल असाइनमेंट (कमांड नावानुसार पूर्वी) आणि पुनर्निर्देशन म्हणून चिन्हांकित केलेले शब्द नंतरच्या प्रोसेसिंगसाठी जतन केले जातात.

2. असे शब्द जे वेरियेबल असाइनमेंट किंवा रीडायरेक्टर्स नसतात. जर विस्तारानंतर काही शब्द राहतील, तर पहिला शब्द आज्ञेचे नाव घेईल आणि बाकीचे शब्द हे आर्ग्यूमेंट आहेत.

3. रेडिरेक्शन जसे रीडायरेक्शन अंतर्गत वर वर्णन केल्याप्रमाणे केले जातात.

4. प्रत्येक व्हेरिएबलमध्ये = नंतर मजकूर पाठशाळा विस्तार, पॅरामीटर विस्तार, आदेश प्रतिस्थापना, अंकगणित विस्तार, आणि व्हेरिएबलमध्ये नियुक्त होण्यापूर्वी कोट काढून टाकणे.

जर कमांडचे नाव परिणाम होत नाहीत, तर व्हेरिएबल असाइनमेंट सध्याच्या शेल पर्यावरणास प्रभावित करेल. अन्यथा, चलने कार्यान्वित आदेशाच्या पर्यावरणात जोडले जातात आणि सध्याच्या शेल वातावरणांवर परिणाम होत नाही. कोणतीही असाइनमेंट वाचनली वेरियेबलमध्ये एक मूल्य प्रदान करण्याचा प्रयत्न करत असल्यास, त्रुटी उद्भवते आणि आज्ञा शून्य-शून्य स्थितीसह बाहेर पडते.

जर कोणतीही कमांडचे नाव परिणाम, रीडायरेक्ट्स केले नाहीत, परंतु सध्याच्या शेल वातावरणांवर परिणाम होत नाही. रीडायरेक्शन त्रुटीमुळे गैर-शून्य स्थितीसह बाहेर पडण्यास कमांड येते.

विस्तारा नंतर डावीकडे एक कमांड नाव असल्यास, खाली वर्णन केल्याप्रमाणे अंमलबजावणी रक्कम. अन्यथा, आदेश बाहेर पडतो जर एखाद्या विस्तारामध्ये आदेश प्रतिस्थापना असेल, तर आदेशाची बाहेरची स्थिती म्हणजे अंतिम आदेश प्रतिस्थापनाची निर्गमन स्थिती. एकही आदेश बदली नसल्यास, शून्याची स्थिती असलेला आदेश बाहेर पडतो.

COMMAND अंमलबजावणी

आदेश शब्दांच्या मध्ये विभाजित झाल्यानंतर, जर एखाद्या साध्या आदेशात आणि आर्ग्यूमेंटची एक वैकल्पिक सूची उद्भवली तर खालील क्रिया केल्या जातात.

जर कमांडचे नाव स्लॅश नसेल, तर शेल त्याला शोधण्याचा प्रयत्न करेल. जर त्या शेजारी शेल फंक्शन असेल तर, त्या फंक्शनला FunctionS मधील वर वर्णन केल्याप्रमाणे लागू केले जाते. नाव एखाद्या कार्याशी जुळत नसल्यास, शेल शेल बिल्टिनच्या सूचीमध्ये शोधते. जर एखादा सामना सापडला, तर तो बांधला गेला आहे.

जर नाव हे शेल फंक्शन किंवा न बांधलेले आहे आणि त्यात कोणतेही स्लॅश नसल्यास, त्या नावाने एक्झिक्युटेबल फाईल असलेली एखाद्या डिरेक्टरीसाठी पॅथचे प्रत्येक घटक शोधले जाते. बॅश एक्झिक्युटेबल फाइल्सच्या पूर्ण पाथनामांना लक्षात ठेवण्यासाठी एक हॅश टेबल वापरते (खाली SHELL BUILTIN कमांड्स अंतर्गत हॅश पहा). PATH मधील निर्देशिकांची पूर्ण शोध फक्त जर हॅश टेबलमध्ये आढळली नाही तरच ती केली जाते. शोध अयशस्वी झाल्यास, शेल त्रुटी संदेश प्रिंट करेल आणि 127 ची निर्गमन स्थिती परत करेल.

शोध यशस्वी झाल्यास, किंवा जर कमांडच्या नावामध्ये एक किंवा अधिक स्लॅश असेल तर शेल वेगळ्या एक्झिक्यूशन एन्वार्यनमेंटमध्ये नामांकित प्रोग्राम कार्यान्वित करतो. दिलेले नाव 0 निश्चित केले आहे, व आदेशासाठी उर्वरित अर्ग्युमेंटस जर वितरित केले असल्यास वितरित केले जातील.

फाईल कार्यान्वीत करण्यायोग्य स्वरूपात नसल्यामुळे ही अंमलबजावणी अपयशी ठरल्यास, फाईल निर्देशिकेत नाही, ती शेल स्क्रिप्ट म्हणून गृहीत धरली जाते, शेल आज्ञा असलेल्या फाइल. एक सबहेल्ड तयार करण्यासाठी ते तयार केले आहे. हे सबहेल स्वतः पुन्हा नव्याने सुरू होते, जेणेकरून परिणाम असा होता की स्क्रिप्ट हाताळण्यासाठी एक नवीन शेल लागू केले गेले, अपवादाने की पालकांनी लक्षात ठेवलेल्या आदेशांची स्थाने ( मुलाखालील शेल बुलिनेट कमांड्स अंतर्गत) ( हेल खाली दिसेल) मुलाकडून ठेवली जातील.

कार्यक्रम फाइल # सह सुरू असल्यास ! , पहिल्या ओळीच्या उर्वरित कार्यक्रमासाठी इंटरप्रिटर निर्देशित करते. शेल ऑपरेटिंग सिस्टीमवर निर्दिष्ट इंटरप्रीटर कार्यान्वित करते जे या ऍक्सेब्युट करण्यायोग्य स्वरूपात स्वतःच हाताळत नाहीत. इंटरप्रेटरच्या आर्ग्युमेंट्समध्ये प्रोग्रॅमच्या पहिल्या ओळीवरील इंटरप्रिटरचे नाव असलेल्या एका पर्यायी आर्ग्यूमेंटचा समावेश असतो, प्रोग्रॅमचे नाव त्यानंतर, आर्ग्युमेंट्स असल्यास, जर असेल तर.

COMMAND अंमलबजावणी पर्यावरण

शेलमध्ये निष्पादन वातावरण आहे , ज्यात खालील बाबींचा समावेश आहे:

* शेलने सुपूर्द केलेल्या फाइल्सला एन्क बिल्टिनमध्ये पुरविलेल्या पुनर्निर्देशनांद्वारे सुधारित केले गेले

* cd , pushd , किंवा popd द्वारे सेट केलेल्या किंवा चालू केलेल्या शेलद्वारे वारसाद्वारे प्राप्त केलेली वर्तमान चालू निर्देशिका

umask द्वारे सेट किंवा शेल च्या पालकांकडून वारसा म्हणून फाइल निर्मिती मोड मास्क

* सापळा द्वारे सेट वर्तमान सापळे

* शेल पॅरामिटर्स जे वेरियबल असाईनमेंट द्वारे सेट केलेले आहेत किंवा वातावरणात शेल च्या पालकांपासून सेट किंवा वारसाद्वारे प्राप्त केले आहेत

* शेल फंक्शन्स एक्झिक्यूशनमध्ये परिभाषित किंवा वातावरणात शेलच्या पालकांकडून वारशाने

* पर्याय (पूर्वनिर्धारितपणे किंवा आदेश-ओळ आर्ग्युमेंटसह) किंवा सेट द्वारे सक्षम केले जाऊ शकतात

Shopt द्वारे सक्षम * पर्याय

* अल्लसह परिभाषित शेल उपनावा

* बॅकग्राउंड जॉबच्या समावेशासह विविध प्रोसेस आयडी, $ $ चे मूल्य आणि $ PPID चे मूल्य

जेव्हा एखादी अंतर्निर्मित किंवा शेल फंक्शन कार्यान्वित करण्याअगोदरची एखादी साधी आदेश कार्यान्वित करायची असते तेव्हा त्यास खालील कार्यान्वित केले जाते: अन्यथा नोंद नसल्यास, मूल्ये शेल मधून प्राप्त केली जातात.

* शेलची फाईल, तसेच कमांडद्वारे पुनर्निर्देशनाने निर्दिष्ट केलेले कोणतेही बदल आणि जोडण्या

* वर्तमान चालू निर्देशिका

* फाइल निर्मिती मोड मुखवटा

* वातावरणात उत्तीर्ण केलेल्या आदेशासाठी निर्यात केलेल्या व्हेरिएबल्ससह निर्यातीसाठी निरस्त करण्यात आलेल्या शेलच्या व्हेरिएबल्स

* शेलद्वारे पकडलेल्या सापळे शेल च्या पालकांकडून वारसाच्या मूल्यांवर रीसेट केले जातात आणि शेलद्वारे दुर्लक्षित केलेल्या सापळे दुर्लक्षित केले जातात

या वेगळ्या पर्यावरणात वापरली जाणारी आज्ञावली शेलच्या एक्झिक्यूशन एन्वार्यनमेंटवर परिणाम करू शकत नाही.

कमांड प्रतिस्थापना आणि असिंक्रोनस कमांड शेल वातावरणाची डुप्लिकेट असणारी सबशेल्ड पर्यावरणात लागू केली जातात, शिवाय शेलद्वारे पकडलेल्या सापळे त्या रीसेटमध्ये रीसेट केले जातात जे शेल आपल्या पालकाने वारशाने मिळाल्या आहेत. पाईपलाईनच्या भाग म्हणून लागू केलेले अंतर्निर्मित आदेश देखील सबशेलीन पर्यावरणात अंमलात आणतात. सबशेल्ड पर्यावरणात केलेले बदल शेल च्या एक्झिक्यूशन एन्वार्यनमेंटवर परिणाम करू शकत नाहीत.

जर आज्ञा व अॅबयर कंट्रोल कार्यान्वित नसेल तर कमांडसाठीचे डिफॉल्ट स्टँडर्ड इंपल रिक्त फाइल / dev / null आहे . अन्यथा, विनंतीकृत आदेश पुनर्निर्देशन द्वारे सुधारीत केल्यानुसार कॉलिंग शेलच्या फाइल डिस्क्रिप्टर्सची वारसा देते.