बैश (यूनिक्स शेल): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(39 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Short description|GNU replacement for the Bourne shell}}
{{Short description|GNU replacement for the Bourne shell}}'''बैश (यूनिक्स शेल)''' और कमांड भाषा है जिसे [[ब्रायन फॉक्स (कंप्यूटर प्रोग्रामर)]] द्वारा [[जीएनयू परियोजना]] के लिए [[बॉर्न शेल]] के लिए [[मुफ्त सॉफ्टवेयर]] प्रतिस्थापन के रूप में लिखा गया है।<ref name="GNUBSD">{{Cite newsgroup
 
{{Infobox software
| name = बैश
| logo = ग्नू-बैश-लोगो.एसवीजी
| screenshot = बैश स्क्रीनशॉट.png
| caption = बैश सत्र का स्क्रीनशॉट
| author = [[ब्रायन फॉक्स (कंप्यूटर प्रोग्रामर)|ब्रायन फॉक्स]]
| developer = चेत रमी<ref name="कंप्यूटरवर्ल्ड-हैमिल्टन-रेमी">{{समाचार उद्धृत करें |last1=Hamilton |first1=Naomi |title=प्रोग्रामिंग भाषाओं का A-Z: बैश/बॉर्न-अगेन आवरण |website=[[कंप्यूटर की दुनिया]] |url=http://www.computerworld.com.au/article/222764/ |archive-url=https://web.archive.org/web/20161108230747/http://www.computerworld.com.au/article/222764/ |archive-date=8 November 2016 |access-date=1 March 2022 |date=2008-05-30 <!-- https://web.archive.org/web/20081205093826/http://www.computerworld.com.au/index.php/id;1591223321;pp;2;fp;16;fpid;1
-->}}</ref><ref name="tiswww.case.edu-Ramey-बैश ">{{cite web |last1=रमी |first1=Chet |title=जीएनयू बॉर्न-अगेन शेल
|url=https://tiswww.case.edu/php/chet/bash/bashtop.html |website=प्रौद्योगिकी अवसंरचना सेवाएँ
|publisher=[[Case Western Reserve University]] |access-date=1 March 2022 |date=2021-04-20}}</ref>
| released = {{प्रारंभ तिथि और आयु|1989|06|08}}
| latest release version = {{wikidata|property|preferred|references|edit|Q189248|P348|P548=Q2804309}}
| latest release date = {{wikidata|qualifier|preferred|single|Q189248|P348|P548=Q2804309|P577}}
| latest preview version = {{wikidata|property|preferred|references|edit|Q189248|P348|P548=Q51930650}}
| latest preview date = {{wikidata|qualifier|preferred|single|Q189248|P348|P548=Q51930650|P577}}
| programming language = [[सी (प्रोग्रामिंग भाषा)|सी]]
| operating system = {{Plainlist|
* [[Unix-like]]<ref>{{cite web|url=ftp://ftp.cwru.edu/pub/bash/FAQ|archive-url=https://web.archive.org/web/20180901171316/ftp://ftp.cwru.edu/pub/bash/FAQ|archive-date=September 1, 2018|url-status=dead|title=Bash FAQ, version 4.14|access-date=April 9, 2016|df=mdy-all}}</ref>
* [[macOS]] ([[GNU General Public License#Version 2|GPL-2.0-or-later]]; GPL-3.0-or-later available through third parties)
* [[Windows]] ([[GNU General Public License#Version 3|GPL-3.0-or-later]])<ref>{{cite web|url=https://github.com/Microsoft/BashOnWindows/issues/107|title=Missing source code - GPL compliance? · Issue #107 · Microsoft/WSL|website=GitHub|access-date=July 8, 2016|archive-date=September 24, 2019|archive-url=https://web.archive.org/web/20190924163108/https://github.com/microsoft/WSL/issues/107|url-status=live}}</ref><ref>{{cite web|title=GNU Bash|url=http://www.softpedia.com/get/System/System-Miscellaneous/GNU-Bash.shtml|website=[[Softpedia]]|date=January 23, 2010|publisher=SoftNews|access-date=9 April 2016|archive-date=October 21, 2017|archive-url=https://web.archive.org/web/20171021004857/http://www.softpedia.com/get/System/System-Miscellaneous/GNU-Bash.shtml|url-status=live}}</ref>
}}
| platform = [[जीएनयू]]
| language = बहुभाषी ([[गेटटेक्स्ट]])
| genre = [[यूनिक्स शेल]], [[कमांड भाषा]]
| license = Since 4.0: [[GNU General Public License#Version 3|GPL-3.0-or-later]]<ref name="license">{{cite web | author = GNU Project | author-link = GNU Project | title = README file | url = https://www.gnu.org/software/bash/ | quote = Bash is free software, distributed under the terms of the [GNU] General Public License as published by the Free Software Foundation, version 3 of the License (or any later version). | access-date = April 16, 2014 | archive-date = April 26, 2019 | archive-url = https://web.archive.org/web/20190426210620/http://www.gnu.org/software/bash/ | url-status = live }}</ref><br />1.11? to 3.2: [[GNU General Public License#Version 2|GPL-2.0-or-later]]<ref>{{cite web|url=http://www.oldlinux.org/Linux.old/bin/old/bash-1.11/ |title=bash-1.11|website=oldlinux.org|quote=See test.c for GPL-2.0-or-later}}</ref><br />0.99? to 1.05?: [[GNU General Public License#Version 1|GPL-1.0-or-later]]<ref>{{cite web|url=http://www.oldlinux.org/Linux.old/bin/old/bash-1.05.tar |title=bash-1.05.tar|website=oldlinux.org}}</ref><ref name="bashfaq061">{{Cite web|title=BashFAQ/061 - Greg's Wiki|url=https://mywiki.wooledge.org/BashFAQ/061|access-date=2021-03-01|website=mywiki.wooledge.org|archive-date=March 2, 2021|archive-url=https://web.archive.org/web/20210302212811/https://mywiki.wooledge.org/BashFAQ/061|url-status=live}}</ref><ref>{{cite web|url=https://unix.stackexchange.com/questions/243375/is-there-a-way-to-download-the-presumably-initial-bash-source-bash-0-99 |title=Is there a way to download the presumably initial bash source bash-0.99?|website=unix.stackexchange.com}}</ref>
| website = {{URL|https://www.gnu.org/software/bash/|gnu.org/software/bash}}
}}
बैश  [[यूनिक्स खोल|यूनिक्स]] [[बॉर्न शेल|आवरण]] और [[कमांड भाषा]] है जिसे [[ब्रायन फॉक्स (कंप्यूटर प्रोग्रामर)]] द्वारा [[जीएनयू परियोजना]] के लिए [[बॉर्न शेल|बॉर्न आवरण]] के लिए [[मुफ्त सॉफ्टवेयर]] प्रतिस्थापन के रूप में लिखा गया है।<ref name="GNUBSD">{{Cite newsgroup
   | title = जीएनयू + बीएसडी = ?| author = [[Richard Stallman]] (forwarded with comments by Chet Ramey)
   | title = जीएनयू + बीएसडी = ?| author = [[Richard Stallman]] (forwarded with comments by Chet Ramey)
   | date = February 10, 1988
   | date = February 10, 1988
Line 51: Line 22:
   | archive-url = https://web.archive.org/web/20110706103704/http://www.computerworld.com.au/article/222764/a-z_programming_languages_bash_bourne-again_shell/?pp=2&fp=16&fpid=1
   | archive-url = https://web.archive.org/web/20110706103704/http://www.computerworld.com.au/article/222764/a-z_programming_languages_bash_bourne-again_shell/?pp=2&fp=16&fpid=1
   | url-status = dead
   | url-status = dead
   }}</ref>  यह 1989 में पहली बार प्रस्तावित हुआ,<ref name=BashBeta>{{Cite newsgroup
   }}</ref>  यह 1989 में पहली बार प्रस्तावित हुआ,<ref name="BashBeta">{{Cite newsgroup
   | title = बैश बीटा रिलीज़ में है!| author = Brian Fox (forwarded by Leonard H. Tower Jr.)
   | title = बैश बीटा रिलीज़ में है!| author = Brian Fox (forwarded by Leonard H. Tower Jr.)
   | date = June 8, 1989
   | date = June 8, 1989
Line 60: Line 31:
   | archive-url = https://web.archive.org/web/20130504075535/http://groups.google.com/group/gnu.announce/msg/a509f48ffb298c35?hl=en
   | archive-url = https://web.archive.org/web/20130504075535/http://groups.google.com/group/gnu.announce/msg/a509f48ffb298c35?hl=en
   | url-status = live
   | url-status = live
   }}</ref> इसे अधिकांश [[Linux|लिनक्स]] वितरणों के लिए डिफ़ॉल्ट [[लॉग इन करें|लॉगिन]] आवरण के रूप में उपयोग किया गया है।<ref name="zsh2" />बैश उन पहले कार्यक्रमों में से था जिसे [[लिनक्स के लिए विंडोज सबसिस्टम|लिनक्स]] [[लिनस टोरवाल्ड्स|टोरवाल्ड्स]] ने [[जीएनयू संकलक संग्रह|जीसीसी]] के साथ लिनक्स में परिवर्तन किया था।<ref name="groups.google.com">{{cite web|url = https://groups.google.com/group/like.the.minis/msg/b813d52cbc5a044b|title = like.the.minis|access-date = 2009-09-06|last = Torvalds|first = Linus Benedict|date=August 1991 | quote=मैंने वर्तमान में बैश (1.08) और जीसीसी (1.40) को पोर्ट किया है, और चीजें काम करने लगती हैं।}}</ref> [[लिनक्स के लिए विंडोज सबसिस्टम|लिनक्स के लिए विंडोज उप-प्रणाली]] के माध्यम से [[विंडोज 10]] और [[विंडोज़ 11]] के लिए संस्करण भी उपलब्ध है।<ref>{{cite web|url=http://www.windowscentral.com/how-install-bash-shell-command-line-windows-10|title=विंडोज 10 पर बैश शेल कमांड-लाइन टूल कैसे इंस्टॉल करें|date=September 28, 2016|access-date=November 20, 2016|archive-date=November 20, 2016|archive-url=https://web.archive.org/web/20161120213017/http://www.windowscentral.com/how-install-bash-shell-command-line-windows-10|url-status=live}}</ref><ref>{{Cite web |last=Hoffman |first=Chris |title=विंडोज 11 पर लिनक्स के लिए विंडोज सबसिस्टम कैसे स्थापित करें|url=https://www.howtogeek.com/744328/how-to-install-the-windows-subsystem-for-linux-on-windows-11/ |access-date=2022-10-12 |website=How-To Geek |language=en-US}}</ref> यह सोलारिस (ऑपरेटिंग सिस्टम) 11 में डिफ़ॉल्ट उपयोगकर्ता आवरण भी है।<ref>{{cite web|url=https://docs.oracle.com/cd/E23824_01/html/E24456/userenv-1.html|title=उपयोगकर्ता पर्यावरण सुविधा परिवर्तन|publisher=Oracle|access-date=June 8, 2018|archive-date=June 12, 2018|archive-url=https://web.archive.org/web/20180612144748/https://docs.oracle.com/cd/E23824_01/html/E24456/userenv-1.html|url-status=live}}</ref> बैश एप्पल [[MacOS]] के संस्करणों में 10.3 (मूल रूप से, डिफ़ॉल्ट आवरण [[tcsh]] था) [[Index.php?title=मैक ओ एस Catalina|macOS कैटालिना]] के 2019 प्रस्तावित के लिए, डिफ़ॉल्ट आवरण को [[zsh]] में बदल दिया, चूँकि बैश वैकल्पिक आवरण के रूप में उपलब्ध है।<ref name=":0">{{Cite web|last=Hughes|first=Matthew|date=2019-06-04|title=MacOS कैटालिना बैश के बजाय Zsh का उपयोग क्यों करती है? लाइसेंसिंग|url=https://thenextweb.com/dd/2019/06/04/why-does-macos-catalina-use-zsh-instead-of-bash-licensing/|access-date=2021-01-12|website=The Next Web|language=en-us|archive-date=December 31, 2020|archive-url=https://web.archive.org/web/20201231231721/https://thenextweb.com/dd/2019/06/04/why-does-macos-catalina-use-zsh-instead-of-bash-licensing/|url-status=live}}</ref>
   }}</ref> इसे अधिकांश [[Linux|लिनक्स]] वितरणों के लिए डिफ़ॉल्ट [[लॉग इन करें|लॉगिन]] शेल के रूप में उपयोग किया गया है।<ref name="zsh2" />बैश उन पहले कार्यक्रमों में से था जिसे [[लिनक्स के लिए विंडोज सबसिस्टम|लिनक्स]] [[लिनस टोरवाल्ड्स|टोरवाल्ड्स]] ने [[जीएनयू संकलक संग्रह|जीसीसी]] के साथ लिनक्स में परिवर्तन किया था।<ref name="groups.google.com">{{cite web|url = https://groups.google.com/group/like.the.minis/msg/b813d52cbc5a044b|title = like.the.minis|access-date = 2009-09-06|last = Torvalds|first = Linus Benedict|date=August 1991 | quote=मैंने वर्तमान में बैश (1.08) और जीसीसी (1.40) को पोर्ट किया है, और चीजें काम करने लगती हैं।}}</ref> [[लिनक्स के लिए विंडोज सबसिस्टम|लिनक्स के लिए विंडोज उप-प्रणाली]] के माध्यम से [[विंडोज 10]] और [[विंडोज़ 11]] के लिए संस्करण भी उपलब्ध है।<ref>{{cite web|url=http://www.windowscentral.com/how-install-bash-shell-command-line-windows-10|title=विंडोज 10 पर बैश शेल कमांड-लाइन टूल कैसे इंस्टॉल करें|date=September 28, 2016|access-date=November 20, 2016|archive-date=November 20, 2016|archive-url=https://web.archive.org/web/20161120213017/http://www.windowscentral.com/how-install-bash-shell-command-line-windows-10|url-status=live}}</ref><ref>{{Cite web |last=Hoffman |first=Chris |title=विंडोज 11 पर लिनक्स के लिए विंडोज सबसिस्टम कैसे स्थापित करें|url=https://www.howtogeek.com/744328/how-to-install-the-windows-subsystem-for-linux-on-windows-11/ |access-date=2022-10-12 |website=How-To Geek |language=en-US}}</ref> यह सोलारिस (ऑपरेटिंग सिस्टम) 11 में डिफ़ॉल्ट उपयोगकर्ता शेल भी है।<ref>{{cite web|url=https://docs.oracle.com/cd/E23824_01/html/E24456/userenv-1.html|title=उपयोगकर्ता पर्यावरण सुविधा परिवर्तन|publisher=Oracle|access-date=June 8, 2018|archive-date=June 12, 2018|archive-url=https://web.archive.org/web/20180612144748/https://docs.oracle.com/cd/E23824_01/html/E24456/userenv-1.html|url-status=live}}</ref> बैश एप्पल मैक ओ एस (MacOS) के संस्करणों में 10.3 (मूल रूप से, डिफ़ॉल्ट शेल [[tcsh]] था) [[Index.php?title=मैक ओ एस Catalina|मैक ओ एस कैटालिना]] के 2019 प्रस्तावित के लिए, डिफ़ॉल्ट शेल को [[zsh]] में परिवर्तन कर दिया, चूँकि बैश वैकल्पिक शेल के रूप में उपलब्ध है।<ref name=":0">{{Cite web|last=Hughes|first=Matthew|date=2019-06-04|title=MacOS कैटालिना बैश के बजाय Zsh का उपयोग क्यों करती है? लाइसेंसिंग|url=https://thenextweb.com/dd/2019/06/04/why-does-macos-catalina-use-zsh-instead-of-bash-licensing/|access-date=2021-01-12|website=The Next Web|language=en-us|archive-date=December 31, 2020|archive-url=https://web.archive.org/web/20201231231721/https://thenextweb.com/dd/2019/06/04/why-does-macos-catalina-use-zsh-instead-of-bash-licensing/|url-status=live}}</ref>


बैश [[कमांड-लाइन दुभाषिया|कमांड प्रोसेसर]] है जो सामान्यतः [[टर्मिनल एमुलेटर|मूलपाठ विंडो]] में चलता है जहां उपयोगकर्ता कमांड लिखता है जो कार्रवाई का कारण बनता है। बैश फ़ाइल कमांड को पढ़ और निष्पादित भी कर सकता है, जिसे [[खोल स्क्रिप्ट|आवरण]] [[खोल स्क्रिप्ट|स्क्रिप्ट]] कहा जाता है। अधिकांश यूनिक्स, फ़ाइल नाम [[ग्लोब (प्रोग्रामिंग)|ग्लोबिंग]], (वाइल्डकार्ड मिलान), [[पाइपलाइन (यूनिक्स)|पाइपलाइन]], [[यहाँ दस्तावेज़|दस्तावेज़]], [[कमांड प्रतिस्थापन]], [[चर (प्रोग्रामिंग)|चर]], स्थिति-परीक्षण और पुनरावृत्ति के लिए नियंत्रण संरचनाओं का समर्थन करता है। [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)|कीवर्ड]], [[सिंटेक्स (प्रोग्रामिंग भाषाएं)|वाक्य - विन्यास]], गतिशील घेरा, चर और भाषा की अन्य बुनियादी विशेषताएं सभी बॉर्न आवरण से कॉपी की गई हैं। अन्य विशेषताएं, उदाहरण के लिए, इतिहास csh और [[के शेल|ksh आवरण]] से कॉपी की जाती हैं। बैश [[POSIX]]- संगत आवरण है, लेकिन कई वृद्धि के साथ।
बैश [[कमांड-लाइन दुभाषिया|कमांड प्रोसेसर]] है जो सामान्यतः [[टर्मिनल एमुलेटर|टेस्टेड विंडो]] में चलता है जहां उपयोगकर्ता कमांड लिखता है जो कार्रवाई का कारण बनता है। बैश फ़ाइल कमांड को पढ़ सकता है और निष्पादित भी कर सकता है, जिसे [[खोल स्क्रिप्ट|शेल]] [[खोल स्क्रिप्ट|स्क्रिप्ट]] कहा जाता है। अधिकांश यूनिक्स, फ़ाइल नाम [[ग्लोब (प्रोग्रामिंग)|ग्लोबिंग]], (वाइल्डकार्ड संघ), [[पाइपलाइन (यूनिक्स)|पाइपिंग]], [[यहाँ दस्तावेज़|प्रपत्र]], [[कमांड प्रतिस्थापन]], [[चर (प्रोग्रामिंग)|चर]], स्थिति-परीक्षण और पुनरावृत्ति के लिए नियंत्रण संरचनाओं का समर्थन करता है। [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)|कीवर्ड]], [[सिंटेक्स (प्रोग्रामिंग भाषाएं)|प्रारूप]], डायनामिक स्कोप्ड, चर और भाषा की अन्य बुनियादी विशेषताएं सभी बॉर्न शेल से कॉपी की गई हैं। अन्य विशेषताएं, उदाहरण के लिए, इतिहास csh और [[के शेल|ksh शेल]] से कॉपी की जाती हैं। बैश[[POSIX|पॉज़िक(POSIX)]]- संगत शेल है, लेकिन कई एक्सटेंशन के साथ।


आवरण का नाम बॉर्न अगेन आवरण के लिए परिवर्णी शब्द है, बॉर्न आवरण के नाम पर वाक्य को यह प्रतिस्थापित करता हैi<ref>{{Cite web|title=मुझे लगभग एक Linux संपादक और कंपाइलर मिल गया है|url=http://www.drdobbs.com/i-almost-get-a-linux-editor-and-compiler/184404693|access-date=2020-09-12|website=Dr. Dobb's|archive-date=March 2, 2021|archive-url=https://web.archive.org/web/20210302212410/https://www.drdobbs.com/i-almost-get-a-linux-editor-and-compiler/184404693|url-status=live}}</ref> तत्पश्चात जन्म लेने की धारणा उत्पन्न करता है।<ref>
शेल का नाम बॉर्न अगेन शेल के लिए परिवर्णी शब्द है, बॉर्न शेल के नाम पर वाक्य को यह प्रतिस्थापित करता हैi<ref>{{Cite web|title=मुझे लगभग एक Linux संपादक और कंपाइलर मिल गया है|url=http://www.drdobbs.com/i-almost-get-a-linux-editor-and-compiler/184404693|access-date=2020-09-12|website=Dr. Dobb's|archive-date=March 2, 2021|archive-url=https://web.archive.org/web/20210302212410/https://www.drdobbs.com/i-almost-get-a-linux-editor-and-compiler/184404693|url-status=live}}</ref> तत्पश्चात जन्म लेने की धारणा उत्पन्न करता है।<ref>
{{cite web
{{cite web
   | author = [[Richard Stallman]]
   | author = [[Richard Stallman]]
Line 104: Line 75:
   | archive-url = https://web.archive.org/web/20180928193215/http://ftp.gnu.org/gnu/bash/bash-1.14.7.tar.gz
   | archive-url = https://web.archive.org/web/20180928193215/http://ftp.gnu.org/gnu/bash/bash-1.14.7.tar.gz
   | url-status = live
   | url-status = live
   }}</ref> स्टॉलमैन और [[फ्री सॉफ्टवेयर फाउंडेशन|नि: शुल्क सॉफ्टवेयर बुनियाद]] ने नि: शुल्क आवरण पर विचार किया जो सम्मलित आवरण स्क्रिप्ट को बीएसडी और जीएनयू कोड से निर्मित पूर्णतया मुक्त प्रणाली के लिए रणनीतिक रूप से चला सकता है कि यह उन कुछ परियोजनाओं में से था जिसमें फॉक्स ने काम किया था और उन्होंने स्वयं वित्त पोषित किया था। फॉक्स के साथ एफएसएफ के कर्मचारी के रूप में काम करना।<ref name=GNUBSD/><ref>
   }}</ref> स्टॉलमैन और [[फ्री सॉफ्टवेयर फाउंडेशन]] ने फ्री शेल पर विचार किया जो सम्मलित शेल स्क्रिप्ट को बीएसडी और जीएनयू कोड से निर्मित पूर्णतया मुक्त प्रणाली के लिए रणनीतिक रूप से चला सकता है यह उन कुछ परियोजनाओं में से था जिसमें फॉक्स ने काम किया था और उन्होंने स्वयं वित्त पोषित किया था। फॉक्स के साथ एफएसएफ के कर्मचारी के रूप में काम करते थे।<ref name=GNUBSD/><ref>
{{cite web
{{cite web
   | author = [[Richard Stallman]]
   | author = [[Richard Stallman]]
Line 133: Line 104:
   | archive-url = https://web.archive.org/web/20120720124341/http://www.scribd.com/doc/40556434/2010-10-31-Chet-Ramey-Early-Bash-Dates
   | archive-url = https://web.archive.org/web/20120720124341/http://www.scribd.com/doc/40556434/2010-10-31-Chet-Ramey-Early-Bash-Dates
   | url-status = live
   | url-status = live
   }}</ref> तब उनका उत्तरदायित्व दूसरे शुरुआती योगदानकर्ता चेत रमी को दी गई।<ref>{{Cite newsgroup
   }}</ref> तब उनका उत्तरदायित्व दूसरे शुरुआती योगदानकर्ता चेत रमी को दी गई।<ref>{{Cite newsgroup
   | title = बैश 0.99 फिक्स और सुधार| author = Chet Ramey
   | title = बैश 0.99 फिक्स और सुधार| author = Chet Ramey
   | date = June 12, 1989
   | date = June 12, 1989
Line 162: Line 133:
}}</ref>
}}</ref>


उस समय से, बैश लिनक्स के उपयोगकर्ताओं के बीच अब तक का सबसे लोकप्रिय आवरण बन गया है, जो ऑपरेटिंग प्रणाली के विभिन्न वितरणों पर डिफ़ॉल्ट अंतर सक्रिय आवरण बन गया है।<ref>{{cite book
उस समय से, बैश लिनक्स के उपयोगकर्ताओं के बीच अब तक का सबसे लोकप्रिय शेल बन गया है, जो ऑपरेटिंग प्रणाली के विभिन्न वितरणों पर डिफ़ॉल्ट इंटरैक्टिव शेल बन गया है।<ref>{{cite book
| title = CompTIA Linux+ Linux प्रोफेशनल इंस्टीट्यूट स्टडी गाइड द्वारा संचालित: परीक्षा LX0-103 और परीक्षा LX0-104| edition = 3rd
| title = CompTIA Linux+ Linux प्रोफेशनल इंस्टीट्यूट स्टडी गाइड द्वारा संचालित: परीक्षा LX0-103 और परीक्षा LX0-104| edition = 3rd
| publisher = John Wiley & Sons, Inc.
| publisher = John Wiley & Sons, Inc.
Line 191: Line 162:
| archive-url = https://web.archive.org/web/20210302212410/https://books.google.com/books?id=tIjrVYbZmUAC&q=bash+most+popular+unix+shell&pg=PA363
| archive-url = https://web.archive.org/web/20210302212410/https://books.google.com/books?id=tIjrVYbZmUAC&q=bash+most+popular+unix+shell&pg=PA363
| url-status = live
| url-status = live
}}</ref> (चूँकि अल्मक्विस्ट आवरण डिफ़ॉल्ट स्क्रिप्टिंग आवरण हो सकता है) और एप्पल के मैकओएस पर अक्टूबर 2019 में मैकओएस कैटालिना से पहले प्रस्तावित हुआ।<ref>{{Cite book
}}</ref> (चूँकि अल्मक्विस्ट शेल डिफ़ॉल्ट स्क्रिप्टिंग शेल हो सकता है) और एप्पल के मैकओएस पर अक्टूबर 2019 में मैकओएस कैटालिना से पहले प्रस्तावित हुआ।<ref>{{Cite book
| title = शेल स्क्रिप्टिंग की शुरुआत| publisher = John Wiley & Sons, Inc.
| title = शेल स्क्रिप्टिंग की शुरुआत| publisher = John Wiley & Sons, Inc.
| date = April 2005
| date = April 2005
Line 207: Line 178:
| archive-url = https://web.archive.org/web/20210302212410/https://books.google.com/books?id=dwIRERUpQPEC&q=bash+most+popular+unix+shell&pg=PA6
| archive-url = https://web.archive.org/web/20210302212410/https://books.google.com/books?id=dwIRERUpQPEC&q=bash+most+popular+unix+shell&pg=PA6
| url-status = live
| url-status = live
}}</ref><ref name="zsh1">{{cite web|url=https://support.apple.com/en-us/HT208050|title=अपने Mac पर zsh को डिफ़ॉल्ट शेल के रूप में उपयोग करें - Apple सहायता|access-date=1 July 2019|archive-date=December 2, 2019|archive-url=https://web.archive.org/web/20191202143802/https://support.apple.com/en-us/HT208050|url-status=live}}</ref><ref name="zsh2">{{Cite web|url=https://www.theverge.com/2019/6/4/18651872/apple-macos-catalina-zsh-bash-shell-replacement-features|title=Apple macOS Catalina में डिफ़ॉल्ट शेल के रूप में बैश को zsh से बदल देता है|last=Warren|first=Tom|date=June 4, 2019|website=The Verge|access-date=June 13, 2019|archive-date=June 10, 2019|archive-url=https://web.archive.org/web/20190610051842/https://www.theverge.com/2019/6/4/18651872/apple-macos-catalina-zsh-bash-shell-replacement-features|url-status=live}}</ref> बैश को [[माइक्रोसॉफ़्ट विंडोज़]] में भी परिवर्तन किया गया है और साइगविन और [[मिनजीडब्ल्यू]] के साथ वितरित किया गया है, [[डीजेजीपीपी]] परियोजना द्वारा डीओएस को, [[नोवेल नेटवेयर]] को, जीएनवी परियोजना द्वारा [[ओपन VMS|खुला वीएमएस]] को,<ref>{{cite web|url=https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/|access-date=2020-09-04|title=नए जीएनवी पैकेजों को स्थापित करना|archive-date=October 3, 2020|archive-url=https://web.archive.org/web/20201003182204/https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/|url-status=live}}</ref> [[ArcaOS|आर्काओएस]] को,<ref>{{cite web|url=https://www.arcanoae.com/wiki/arcaos/compatibility-subsystems/|title=संगतता सबसिस्टम|access-date=2020-09-04|archive-date=September 23, 2020|archive-url=https://web.archive.org/web/20200923001119/https://www.arcanoae.com/wiki/arcaos/compatibility-subsystems/|url-status=live}}</ref> और [[Android (ऑपरेटिंग सिस्टम)|एंड्रॉइड]] को विभिन्न टर्मिनल अनुकरण अनुप्रयोगों के माध्यम से वितरित किया गया है।
}}</ref><ref name="zsh1">{{cite web|url=https://support.apple.com/en-us/HT208050|title=अपने Mac पर zsh को डिफ़ॉल्ट शेल के रूप में उपयोग करें - Apple सहायता|access-date=1 July 2019|archive-date=December 2, 2019|archive-url=https://web.archive.org/web/20191202143802/https://support.apple.com/en-us/HT208050|url-status=live}}</ref><ref name="zsh2">{{Cite web|url=https://www.theverge.com/2019/6/4/18651872/apple-macos-catalina-zsh-bash-shell-replacement-features|title=Apple macOS Catalina में डिफ़ॉल्ट शेल के रूप में बैश को zsh से बदल देता है|last=Warren|first=Tom|date=June 4, 2019|website=The Verge|access-date=June 13, 2019|archive-date=June 10, 2019|archive-url=https://web.archive.org/web/20190610051842/https://www.theverge.com/2019/6/4/18651872/apple-macos-catalina-zsh-bash-shell-replacement-features|url-status=live}}</ref> बैश को [[माइक्रोसॉफ़्ट विंडोज़]] में भी पोर्ट किया गया है और साइगविन और [[मिनजीडब्ल्यू|मिनजीडब्ल्यू (MinGW]]) के साथ वितरित किया गया है, [[डीजेजीपीपी|डीजेजेपीपी]] परियोजना द्वारा डीओएस को, [[नोवेल नेटवेयर]] को, जीएनवी परियोजना द्वारा [[ओपन VMS|ओपन वीएमएस]] को,<ref>{{cite web|url=https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/|access-date=2020-09-04|title=नए जीएनवी पैकेजों को स्थापित करना|archive-date=October 3, 2020|archive-url=https://web.archive.org/web/20201003182204/https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/|url-status=live}}</ref> [[ArcaOS|अर्काओएस (ArcaOS)]] को,<ref>{{cite web|url=https://www.arcanoae.com/wiki/arcaos/compatibility-subsystems/|title=संगतता सबसिस्टम|access-date=2020-09-04|archive-date=September 23, 2020|archive-url=https://web.archive.org/web/20200923001119/https://www.arcanoae.com/wiki/arcaos/compatibility-subsystems/|url-status=live}}</ref> और [[Android (ऑपरेटिंग सिस्टम)|एंड्रॉइड]] को विभिन्न टर्मिनल अनुकरण अनुप्रयोगों के माध्यम से वितरित किया गया है।


सितंबर 2014 में,  यूनिक्स/लिनक्स विशेषज्ञ स्टीफ़न चेज़लस ने,<ref>{{cite news |last1=Juliana |first1=Cino |title=Linux बैश निकास स्थिति और बैश में निकास स्थिति कैसे सेट करें - Techolac|url=https://www.techolac.com/linux/linux-bash-exit-status-and-how-to-set-exit-status-in-bash/ |access-date=21 June 2019 |date=10 June 2017 |archive-date=June 21, 2019 |archive-url=https://web.archive.org/web/20190621183753/https://www.techolac.com/linux/linux-bash-exit-status-and-how-to-set-exit-status-in-bash/ |url-status=live }}</ref> कार्यक्रम में सुरक्षा बग का शोध किया। बग, जिसे पहली बार 24 सितंबर को प्रकट किया गया था, जिसका नाम आवरणशॉक दिया गया था और {{CVE|2014-6271|2014-6277|2014-7169|leadout=और}} संख्याओं को निर्दिष्ट किया गया था I बग को गंभीर माना गया था, क्योंकि बैश का उपयोग करने वाली [[कॉमन गेटवे इंटरफ़ेस]] स्क्रिप्ट्स असुरक्षित हो सकती हैं, जिससे मनमाने कोड निष्पादन को सक्षम किया जा सकता है। बग इस बात से संबंधित था कि कैसे बैश पर्यावरण चर के माध्यम से उप-आवरणों में परिभाषाओं को पास कार्य करता है।<ref>{{Cite web
सितंबर 2014 में,  यूनिक्स/लिनक्स विशेषज्ञ स्टीफ़न चेज़लस ने,<ref>{{cite news |last1=Juliana |first1=Cino |title=Linux बैश निकास स्थिति और बैश में निकास स्थिति कैसे सेट करें - Techolac|url=https://www.techolac.com/linux/linux-bash-exit-status-and-how-to-set-exit-status-in-bash/ |access-date=21 June 2019 |date=10 June 2017 |archive-date=June 21, 2019 |archive-url=https://web.archive.org/web/20190621183753/https://www.techolac.com/linux/linux-bash-exit-status-and-how-to-set-exit-status-in-bash/ |url-status=live }}</ref> कार्यक्रम में सुरक्षा बग का शोध किया। बग, जिसे पहली बार 24 सितंबर को प्रकट किया गया था, जिसका नाम शेलशॉक दिया गया था और इसे CVE-2014-6271, CVE-2014-6277 और CVE-2014-7169 संख्याओं को निर्दिष्ट किया गया था I बग को गंभीर माना गया था, क्योंकि बैश का उपयोग करने वाली [[कॉमन गेटवे इंटरफ़ेस]] स्क्रिप्ट्स असुरक्षित हो सकती हैं, जिससे मनमाने कोड निष्पादन को सक्षम किया जा सकता है। बग इस बात से संबंधित था कि कैसे बैश पर्यावरण चर के माध्यम से उप-शैल फ़ंक्शन में परिभाषाओं को को पास करता है।<ref>{{Cite web
| author = Huzaifa Sidhpurwala
| author = Huzaifa Sidhpurwala
| title = बैश विशेष रूप से तैयार किए गए पर्यावरण चर कोड इंजेक्शन हमले| publisher = [[Red Hat]]
| title = बैश विशेष रूप से तैयार किए गए पर्यावरण चर कोड इंजेक्शन हमले| publisher = [[Red Hat]]
Line 222: Line 193:


== विशेषताएं ==
== विशेषताएं ==
बैश [[कमांड (कंप्यूटिंग)|कमांड]] वाक्य-विन्यास बॉर्न आवरण [[सुपरसेट|उत्तम समुच्चय]] है। बैश 2.05a के बाद से [[ब्रेस विस्तार]], [[कमांड लाइन पूर्णता|कमांड रेखा पूर्णता]] (प्रोग्रामयोग्य पूर्णता), बेसिक डिबगिंग और [[सिग्नल (आईपीसी)|संकेत]] हैंडलिंग का उपयोग करके समर्थन करता हैI<ref>{{Cite web|url=https://www.gnu.org/software/bash/manual/bash.html#Programmable-Completion|title=बैश संदर्भ मैनुअल|website=www.gnu.org|access-date=March 27, 2018|archive-date=March 15, 2018|archive-url=https://web.archive.org/web/20180315115230/http://www.gnu.org/software/bash/manual/bash.html#Programmable-Completion|url-status=live}}</ref> <ref>{{Cite web|url=https://wiki-dev.bash-hackers.org/scripting/bashchanges|title=बैश परिवर्तन [बैश हैकर्स विकी (DEV 20200708T2203)]|website=wiki-dev.bash-hackers.org|access-date=September 23, 2019|archive-date=September 23, 2019|archive-url=https://web.archive.org/web/20190923203509/https://wiki-dev.bash-hackers.org/scripting/bashchanges|url-status=live}}</ref><ref>{{cite web|url=http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html|title=डिबगिंग बैश स्क्रिप्ट|website=tldp.org|access-date=November 20, 2018|archive-date=November 4, 2018|archive-url=https://web.archive.org/web/20181104185300/http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html|url-status=live}}</ref> बैश बिना संशोधन के बॉर्न आवरण स्क्रिप्ट के विशाल बहुमत को निष्पादित कर सकता है, बॉर्न आवरण स्क्रिप्ट के अपवाद के साथ फ्रिंज वाक्य - विन्यास व्यवहार में भिन्न-भिन्न व्याख्या की गई है,या नए बैश बिल्टिन से मेल खाते प्रणाली कमांड को चलाने का प्रयास किया जाता है, आदि। बैश कमांड वाक्य - विन्यास में तत्पर किए गए विचार सम्मलित हैं। k आवरण (ksh) और C आवरण (csh) से जैसे कि कमांड रेखा संपादन, [[कमांड इतिहास]] (<code>इतिहास</code>आज्ञा),<ref>{{Cite web|url=https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Bash-History-Builtins|title=बैश संदर्भ मैनुअल|website=www.gnu.org|access-date=September 15, 2019|archive-date=September 15, 2019|archive-url=https://web.archive.org/web/20190915123105/http://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Bash-History-Builtins|url-status=live}}</ref> निर्देशिका ढेर, <code>$रैंडम</code> तथा <code>$ पीपीआईडी</code> चर, और पॉज़िक्स कमांड प्रतिस्थापन वाक्य - विन्यास <code>$(…)है</code>
बैश [[कमांड (कंप्यूटिंग)|कमांड]] प्रारूप बॉर्न शेल [[सुपरसेट|उत्तम समुच्चय]] है। बैश 2.05a के बाद से [[ब्रेस विस्तार]], [[कमांड लाइन पूर्णता|कमांड रेखा पूर्णता]] (प्रोग्रामयोग्य पूर्णता), बेसिक डिबगिंग और [[सिग्नल (आईपीसी)|संकेत]] हैंडलिंग का उपयोग करके समर्थन करता हैI<ref>{{Cite web|url=https://www.gnu.org/software/bash/manual/bash.html#Programmable-Completion|title=बैश संदर्भ मैनुअल|website=www.gnu.org|access-date=March 27, 2018|archive-date=March 15, 2018|archive-url=https://web.archive.org/web/20180315115230/http://www.gnu.org/software/bash/manual/bash.html#Programmable-Completion|url-status=live}}</ref> <ref>{{Cite web|url=https://wiki-dev.bash-hackers.org/scripting/bashchanges|title=बैश परिवर्तन [बैश हैकर्स विकी (DEV 20200708T2203)]|website=wiki-dev.bash-hackers.org|access-date=September 23, 2019|archive-date=September 23, 2019|archive-url=https://web.archive.org/web/20190923203509/https://wiki-dev.bash-hackers.org/scripting/bashchanges|url-status=live}}</ref><ref>{{cite web|url=http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html|title=डिबगिंग बैश स्क्रिप्ट|website=tldp.org|access-date=November 20, 2018|archive-date=November 4, 2018|archive-url=https://web.archive.org/web/20181104185300/http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html|url-status=live}}</ref> बैश बिना संशोधन के बॉर्न शेल स्क्रिप्ट के विशाल बहुमत को निष्पादित कर सकता है, बॉर्न शेल स्क्रिप्ट के अपवाद के साथ फ्रिंज प्रारूप व्यवहार में भिन्न-भिन्न व्याख्या की गई है, या नए बैश बिल्टिन से मेल खाते प्रणाली कमांड को चलाने का प्रयास किया जाता है, आदि। बैश कमांड प्रारूप में तत्पर किए गए विचार सम्मलित हैं। k शेल (ksh) और C शेल (csh) से जैसे कि कमांड रेखा संपादन, [[कमांड इतिहास]] (<code>इतिहास</code>आज्ञा),<ref>{{Cite web|url=https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Bash-History-Builtins|title=बैश संदर्भ मैनुअल|website=www.gnu.org|access-date=September 15, 2019|archive-date=September 15, 2019|archive-url=https://web.archive.org/web/20190915123105/http://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Bash-History-Builtins|url-status=live}}</ref> निर्देशिका ढेर, <code>$RANDOM</code>तथा <code>$ PPID</code> चर, और पॉज़िक्स कमांड प्रतिस्थापन प्रारूप <code>$(…)है</code>


जब कोई उपयोगकर्ता अंतर सक्रिय कमांड-आवरण के भीतर टैब कुंजी दबाता है, तो बैश स्वचालित रूप से कमांड रेखा पूर्णता का उपयोग करता है, बीटा संस्करण 2.04,<ref>{{cite web|url=http://www.caliban.org/bash/index.shtml|title=बैश 2.x/3.x के साथ अधिक उत्पादक रूप से कार्य करना|website=www.caliban.org|access-date=June 21, 2018|archive-date=June 29, 2018|archive-url=https://web.archive.org/web/20180629230903/http://www.caliban.org/bash/index.shtml|url-status=live}}</ref> आंशिक रूप से टाइप किए गए प्रोग्राम नाम, फ़ाइल नाम और चर नाम से मिलान करने के लिए किया जाता है। बैश कमांड-रेखा पूर्णता प्रणाली बहुत लचीली और अनुकूलन योग्य है, और प्रायः ऐसे कार्यों के साथ पैक की जाती है जो विशिष्ट कार्यक्रमों और कार्यों के लिए तर्कों और फ़ाइलनाम को पूरा करते हैं।
जब कोई उपयोगकर्ता अंतर सक्रिय कमांड-शेल के भीतर टैब कुंजी दबाता है, तो बैश स्वचालित रूप से कमांड रेखा पूर्णता का उपयोग करता है, बीटा संस्करण 2.04,<ref>{{cite web|url=http://www.caliban.org/bash/index.shtml|title=बैश 2.x/3.x के साथ अधिक उत्पादक रूप से कार्य करना|website=www.caliban.org|access-date=June 21, 2018|archive-date=June 29, 2018|archive-url=https://web.archive.org/web/20180629230903/http://www.caliban.org/bash/index.shtml|url-status=live}}</ref> आंशिक रूप से टाइप किए गए प्रोग्राम नाम, फ़ाइल नाम और चर नाम से मिलान करने के लिए किया जाता है। बैश कमांड-रेखा पूर्णता प्रणाली बहुत लचीली और अनुकूलन योग्य है, और प्रायः ऐसे कार्यों के साथ पैक की जाती है जो विशिष्ट कार्यक्रमों और कार्यों के लिए तर्कों और फ़ाइलनाम को पूरा करते हैं।


बैश के वाक्य - विन्यास में बॉर्न आवरण में कई एक्सटेंशन की कमी है। बैश बाहरी प्रक्रियाओं को उत्पन्न किए बिना पूर्णांक गणना (अंकगणितीय मूल्यांकन) कर सकता है। इस उद्देश्य के लिए यह <code>((…))</code> कमांड और  <code>$((…))</code> चर वाक्य-विन्यास उपयोग करता है I इसका वाक्य-विन्यास इनपुट/आउटपुट पुनर्निर्देशन को सरल करता है। उदाहरण के लिए, यह <code>&></code> संचालक का उपयोग करके एक ही समय में मानक आउटपुट और मानक त्रुटि धारा को पुनर्निर्देशित कर सकता है। यह बॉर्न आवरण समकक्ष <code>कमांड > फ़ाइल 2>&1</code> <nowiki>''की तुलना में लिखना सरल है''</nowiki>। बैश <code><(कमांड)</code> तथा <code>>(कमांड)</code> वाक्य - विन्यास का उपयोग करके [[प्रक्रिया प्रतिस्थापन]] का समर्थन करता है I जो कमांड के आउटपुट (या इनपुट) को प्रतिस्थापित करता है जहां सामान्यतः फ़ाइल नाम का उपयोग किया जाता है। (यह उन प्रणालियों पर / proc / fd / अनाम पाइपों के माध्यम से कार्यान्वित किया जाता है जो इसका समर्थन करते हैं, या जहां आवश्यक हो अस्थायी [[नामित पाइप|नामित पाइपों]] के माध्यम से)।
बैश के प्रारूप में बॉर्न शेल में कई एक्सटेंशन की कमी है। बैश बाहरी प्रक्रियाओं को उत्पन्न किए बिना पूर्णांक गणना (अंकगणितीय मूल्यांकन) कर सकता है। इस उद्देश्य के लिए यह <code>((…))</code> कमांड और  <code>$((…))</code> चर प्रारूप उपयोग करता है I इसका प्रारूप इनपुट/आउटपुट पुनर्निर्देशन को सरल करता है। उदाहरण के लिए, यह <code>&></code> संचालक का उपयोग करके एक ही समय में मानक आउटपुट और मानक त्रुटि को पुनर्निर्देशित कर सकता है। यह बॉर्न शेल समकक्ष <code>कमांड > फ़ाइल 2>&1</code> <nowiki>''की तुलना में लिखना सरल है''</nowiki>। बैश <code><(command)</code> तथा <code>>(command)</code> प्रारूप का उपयोग करके [[प्रक्रिया प्रतिस्थापन]] का समर्थन करता है I जो कमांड के आउटपुट (या इनपुट) को प्रतिस्थापित करता है जहां सामान्यतः फ़ाइल नाम का उपयोग किया जाता है। (यह उन प्रणालियों पर / proc / fd / अनाम पाइपों के माध्यम से कार्यान्वित किया जाता है जो इसका समर्थन करते हैं, या जहां आवश्यक हो अस्थायी [[नामित पाइप|नामित पाइपों]] के माध्यम से)।


'फ़ंक्शन' कीवर्ड का उपयोग करते समय, बैश फ़ंक्शन घोषणाएँ बॉर्न/कोर्न/पॉज़िक्स आलेख के साथ संगत नहीं होती हैं ('फ़ंक्शन' का उपयोग करते समय कोर्न आवरण में वही समस्या होती है), लेकिन बैश उसी फ़ंक्शन घोषणा वाक्य-विन्यास को बॉर्न और कोर्न आवरण के रूप में स्वीकार करता है, और पॉज़िक्स-अनुरूप है। इन अन्य अंतरों के कारण, बॉर्न या कोर्न आवरण दुभाषियों के अंतर्गत बैश आवरण आलेख शायद ही कभी चलाने योग्य होते हैं, जब तक कि निश्चयपूर्वक उस अनुकूलता को ध्यान में रखकर नहीं लिखा जाता है, जो लिनक्स के अधिक व्यापक होने के कारण कम उपयोग होता जा रहा है। लेकिन पॉज़िक्स मोड में, बैश पॉज़िक्स के साथ अधिक साधारण दृष्टि से अनुरूप है।<ref name="GNUBASHREF">
'फ़ंक्शन' कीवर्ड का उपयोग करते समय, बैश फ़ंक्शन घोषणाएँ बॉर्न/कोर्न/पॉज़िक्स स्क्रिप्ट के साथ संगत नहीं होती हैं ('फ़ंक्शन' का उपयोग करते समय कोर्न शेल में वही समस्या होती है), लेकिन बैश उसी फ़ंक्शन घोषणा प्रारूप को बॉर्न और कोर्न शेल के रूप में स्वीकार करता है, और पॉज़िक्स-अनुरूप है। इन अन्य अंतरों के कारण, बॉर्न या कोर्न शेल दुभाषियों के अंतर्गत बैश शेल स्क्रिप्ट शायद ही कभी चलाने योग्य होते हैं, जब तक कि निश्चयपूर्वक उस अनुकूलता को ध्यान में रखकर नहीं लिखा जाता है, जो लिनक्स के अधिक व्यापक होने के कारण कम उपयोग होता जा रहा है। लेकिन पॉज़िक्स मोड में, बैश पॉज़िक्स के साथ अधिक साधारण दृष्टि से अनुरूप है।<ref name="GNUBASHREF">
{{Citation
{{Citation
   | title = The GNU Bash Reference Manual, for Bash, Version 4.1
   | title = The GNU Bash Reference Manual, for Bash, Version 4.1
Line 241: Line 212:
बैश दस्तावेजों का समर्थन करता है। चूंकि संस्करण 2.05b बैश <code><<<</code> ऑपरेटर का उपयोग करके यहां स्ट्रिंग से [[स्टडिन|मानक]] इनपुट को पुनर्निर्देशित कर सकता है ।
बैश दस्तावेजों का समर्थन करता है। चूंकि संस्करण 2.05b बैश <code><<<</code> ऑपरेटर का उपयोग करके यहां स्ट्रिंग से [[स्टडिन|मानक]] इनपुट को पुनर्निर्देशित कर सकता है ।


बैश 3.0 [[पर्ल]] की याद दिलाने वाले वाक्य-विन्यास का उपयोग करके इस प्रक्रिया में [[नियमित अभिव्यक्ति]] संघ का समर्थन करता है।<ref>{{Cite web|url=http://www.tldp.org/LDP/abs/html/bashver3.html#BASH3REF|title=उन्नत बैश-स्क्रिप्टिंग गाइड|website=www.tldp.org|at=Section 37.2 (Bash, version 3)|access-date=2017-03-05|archive-date=May 5, 2017|archive-url=https://web.archive.org/web/20170505161903/http://tldp.org/LDP/abs/html/bashver3.html#BASH3REF|url-status=live}}</ref>
बैश 3.0 [[पर्ल]] के स्मरण प्रारूप का उपयोग करके इस प्रक्रिया में [[नियमित अभिव्यक्ति]] संघ का समर्थन करता है।<ref>{{Cite web|url=http://www.tldp.org/LDP/abs/html/bashver3.html#BASH3REF|title=उन्नत बैश-स्क्रिप्टिंग गाइड|website=www.tldp.org|at=Section 37.2 (Bash, version 3)|access-date=2017-03-05|archive-date=May 5, 2017|archive-url=https://web.archive.org/web/20170505161903/http://tldp.org/LDP/abs/html/bashver3.html#BASH3REF|url-status=live}}</ref>
 
फरवरी 2009 में,<ref>{{cite web|url=http://tldp.org/LDP/abs/html/bashver4.html|title=बैश, संस्करण 4|website=tldp.org|access-date=June 25, 2018|archive-date=July 1, 2018|archive-url=https://web.archive.org/web/20180701001653/http://www.tldp.org/LDP/abs/html/bashver4.html|url-status=live}}</ref> बैश 4.0 ने साहचर्य सरणियों के लिए समर्थन दर्शाया।<ref name="bashfaq061" />[[AWK|एडब्लूके]] या [[Tcl|टीसीएल]] के समान प्रकार से साहचर्य सरणी सूचकांक हैं।<ref>{{cite web|url=https://www.gnu.org/software/bash/manual/html_node/Arrays.html|title=Arrays (बैश संदर्भ मैनुअल)|website=www.gnu.org|access-date=July 4, 2018|archive-date=July 11, 2018|archive-url=https://web.archive.org/web/20180711142941/http://www.gnu.org/software/bash/manual/html_node/Arrays.html|url-status=live}}</ref> इनका उपयोग बहुआयामी सरणियों का अनुकरण करने के लिए किया जा सकता है। बैश 4 भी अपने लाइसेंस को जीपीएल -3.0-या-बाद में बदल देता है; कुछ उपयोगकर्ताओं को इस लाइसेंस परिवर्तन पर संदेह है कि क्यों मैक ओ एस पुराने संस्करणों का उपयोग करना जारी रखता है।<ref>{{cite web|url=https://apple.stackexchange.com/questions/193411/update-bash-to-version-4-0-on-osx|title=macos - OSX पर बैश को संस्करण 4.0 में अपडेट करें|website=Ask Different|access-date=June 25, 2018|archive-date=June 25, 2018|archive-url=https://web.archive.org/web/20180625213216/https://apple.stackexchange.com/questions/193411/update-bash-to-version-4-0-on-osx|url-status=live}}</ref> एप्पल ने अंततः 2019 में मैक ओ एस कैटालिना प्रस्तावित के साथ डिफ़ॉल्ट शेल के रूप में अपने ऑपरेटिंग प्रणाली में बैश का उपयोग करना बंद कर दिया।<ref name=":0" />
=== ब्रेस विस्तार ===
ब्रेस विस्तार, जिसे अल्टरनेशन भी कहा जाता है, C शेल से कॉपी की गयी विशेषता है। यह वैकल्पिक संयोजनों का समुच्चय उत्पन्न करता है। उत्पन्न किए गए परिणामों को फाइलों के रूप में उपस्तिथ नहीं होना चाहिए। प्रत्येक विस्तारित स्ट्रिंग के परिणाम क्रमबद्ध नहीं होते हैं और बाएं से दाएं क्रम को संरक्षित किया जाता है:


फरवरी 2009 में,<ref>{{cite web|url=http://tldp.org/LDP/abs/html/bashver4.html|title=बैश, संस्करण 4|website=tldp.org|access-date=June 25, 2018|archive-date=July 1, 2018|archive-url=https://web.archive.org/web/20180701001653/http://www.tldp.org/LDP/abs/html/bashver4.html|url-status=live}}</ref> बैश 4.0 ने साहचर्य सरणियों के लिए समर्थन दर्शाया।<ref name="bashfaq061" />[[AWK|एडब्लूके]] या [[Tcl|टीसीएल]] के समान प्रकार से साहचर्य सरणी सूचकांक तार हैं।<ref>{{cite web|url=https://www.gnu.org/software/bash/manual/html_node/Arrays.html|title=Arrays (बैश संदर्भ मैनुअल)|website=www.gnu.org|access-date=July 4, 2018|archive-date=July 11, 2018|archive-url=https://web.archive.org/web/20180711142941/http://www.gnu.org/software/bash/manual/html_node/Arrays.html|url-status=live}}</ref> इनका उपयोग बहुआयामी सरणियों का अनुकरण करने के लिए किया जा सकता है। बैश 4 भी अपने लाइसेंस को जीपीएल -3.0-या-बाद में बदल देता है; कुछ उपयोगकर्ताओं को इस लाइसेंस परिवर्तन पर संदेह है कि क्यों मैक ओ एस पुराने संस्करणों का उपयोग करना जारी रखता है।<ref>{{cite web|url=https://apple.stackexchange.com/questions/193411/update-bash-to-version-4-0-on-osx|title=macos - OSX पर बैश को संस्करण 4.0 में अपडेट करें|website=Ask Different|access-date=June 25, 2018|archive-date=June 25, 2018|archive-url=https://web.archive.org/web/20180625213216/https://apple.stackexchange.com/questions/193411/update-bash-to-version-4-0-on-osx|url-status=live}}</ref> एप्पल ने अंततः 2019 में मैक ओ एस कैटालिना प्रस्तावित के साथ डिफ़ॉल्ट आवरण के रूप में अपने ऑपरेटिंग प्रणाली में बैश का उपयोग करना बंद कर दिया।<ref name=":0" />
<syntaxhighlight lang="console">
$ echo a{p,c,d,b}e
ape ace ade abe
$ echo {a,b,c}{d,e,f}
ad ae af bd be bf cd ce cf
</syntaxhighlight>


उपयोगकर्ताओं को पोर्टेबल शेल स्क्रिप्ट में ब्रेस विस्तार का उपयोग नहीं करना चाहिए, क्योंकि बॉर्न शेल समान आउटपुट नहीं देता है।


<syntaxhighlight lang="console">
$ # A traditional shell does not produce the same output
$ /bin/sh -c 'echo a{p,c,d,b}e'
a{p,c,d,b}e
</syntaxhighlight>


जब ब्रेस विस्तार को वाइल्डकार्ड के साथ जोड़ दिया जाता है, तो पहले ब्रेसिज़ का विस्तार किया जाता है, और फिर परिणामी वाइल्डकार्ड को सामान्य रूप से प्रतिस्थापित किया जाता है। इसलिए, वर्तमान निर्देशिका में JPEG और PNG छवियों की सूची निम्नलिखित का उपयोग करके प्राप्त की जा सकती है:


=== ब्रेस विस्तार ===
ls *.{jpg,jpeg,png}    # expands to *.jpg *.jpeg *.png - after which,
ब्रेस विस्तार, जिसे अल्टरनेशन भी कहा जाता है, C आवरण से कॉपी की गयी विशेषता है। यह वैकल्पिक संयोजनों का समुच्चय उत्पन्न करता है। उत्पन्न किए गए परिणामों को फाइलों के रूप में उपस्तिथ नहीं होना चाहिए। प्रत्येक विस्तारित स्ट्रिंग के परिणाम क्रमबद्ध नहीं होते हैं और बाएं से दाएं क्रम को संरक्षित किया जाता है:
                      # the wildcards are processed
echo *.{png,jp{e,}g}  # echo just show the expansions -
                    # and braces in braces are possible.


<वाक्यविन्यास लैंग = कंसोल>
$ इको ए {पी, सी, डी, बी} ई
एप इक्का अडे अबे
$ इको {ए, बी, सी} {डी, ई, एफ}
विज्ञापन एई एएफ बीडी बीएफ सीडी सीई सीएफ
</वाक्यविन्यास हाइलाइट>
उपयोगकर्ताओं को पोर्टेबल आवरण आलेख में ब्रेस एक्सपेंशन का उपयोग नहीं करना चाहिए, क्योंकि बॉर्न आवरण समान आउटपुट नहीं देता है।


<वाक्यविन्यास लैंग = कंसोल> $ पारंपरिक खोल एक ही आउटपुट का उत्पादन नहीं करता है $ /bin/sh -c 'echo a{p,c,d,b}e'
ए {पी, सी, डी, बी} ई</वाक्यविन्यास हाइलाइट>


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


<वाक्यविन्यास लैंग = बैश>
<syntaxhighlight lang="bash">
एलएस *{जेपीजी, जेपीईजी, पीएनजी} तक विस्तृत होता है*.jpg *.jpeg *.png जिसके बाद,
ls *.{jpg,jpeg,png}   # expands to *.jpg *.jpeg *.png - after which,
                       वाइल्डकार्ड संसाधित किए जाते हैं
                       # the wildcards are processed
इको *{पीएनजी, जेपी {,} जी} इको ​​केवल विस्तार दिखाएं -
echo *.{png,jp{e,}g}   # echo just show the expansions -
                       और ब्रेसिज़ में ब्रेसिज़ संभव हैं।
                       # and braces in braces are possible.
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


प्रत्यावर्तन के अतिरिक्त लावा, ब्रेस विस्तार का उपयोग दो पूर्णांकों या डबल डॉट्स द्वारा अलग किए गए वर्णों के बीच अनुक्रमिक श्रेणियों के लिए किया जा सकता है। बैश के नए संस्करण तीसरे पूर्णांक को वृद्धि निर्दिष्ट करने की अनुमति देते हैं।
जब ब्रेस विस्तार को चर विस्तार (A.K.A.  पैरामीटर विस्तार और पैरामीटर प्रतिस्थापन) के साथ जोड़ा जाता है, तो चर विस्तार ब्रेस विस्तार के बाद किया जाता है, जो कुछ विषयो में  eval बनाने में निर्मित उपयोग की आवश्यकता हो सकती है जो, इस प्रकार:


<वाक्यविन्यास लैंग = कंसोल>$ प्रतिध्वनि {1..10}1 2 3 4 5 6 7 8 9 10$ इको {01..10}
<syntaxhighlight lang="console">
01 02 03 04 05 06 07 08 09 10$ गूंज फ़ाइल {1..4}.txt फ़ाइल 1.txt फ़ाइल 2.txt फ़ाइल 3.txt फ़ाइल 4.txt $ इको {..}ए बी सी डी ई $ प्रतिध्वनि {1..10..3}1 4 7 10
$ echo {1..10}
$ प्रतिध्वनि {a..j..3} ए डी जी जे</वाक्यविन्यास हाइलाइट>
1 2 3 4 5 6 7 8 9 10
$ echo {01..10}
01 02 03 04 05 06 07 08 09 10
$ echo file{1..4}.txt
file1.txt file2.txt file3.txt file4.txt
$ echo {a..e}
a b c d e
$ echo {1..10..3}
1 4 7 10
$ echo {a..j..3}
a d g j
</syntaxhighlight>


जब ब्रेस विस्तार को चर विस्तार (.के.ए. पैरामीटर विस्तार और पैरामीटर प्रतिस्थापन) के साथ जोड़ा जाता है, तो ब्रेस विस्तार के बाद चर विस्तार किया जाता है, जो कुछ विषयो में उपयोग की आवश्यकता हो सकती है <code>eval</code> अंतर्निहित, इस प्रकार:
जब ब्रेस विस्तार को चर विस्तार (A.K.A  ''पैरामीटर एक्सपेंशन'' और ''पैरामीटर सब्स्टिटूशन'') के साथ जोड़ दिया जाता है, तो चर विस्तार '' ब्रेस एक्सपेंशन'' के बाद किया जाता है, जो कुछ मामलों में <code>eval</code> built-in, thus:,


<वाक्यविन्यास लैंग = कंसोल> $ प्रारंभ = 1; अंत = 10 $ गूंज {$शुरू..$अंत} मूल्यांकन आदेश के कारण विस्तार करने में विफल रहता है {1..10} $ eval प्रतिध्वनि {$शुरू..$अंत} चर विस्तार तब होता है जिसके परिणामस्वरूप स्ट्रिंग का मूल्यांकन किया जाता है 1 2 3 4 5 6 7 8 9 10 </वाक्यविन्यास हाइलाइट>
<syntaxhighlight lang="console">
$ start=1; end=10
$ echo {$start..$end} # fails to expand due to the evaluation order
{1..10}
$ eval echo {$start..$end} # variable expansion occurs then resulting string is evaluated
1 2 3 4 5 6 7 8 9 10
</syntaxhighlight>


=== स्टार्टअप स्क्रिप्ट ===
=== स्टार्टअप स्क्रिप्ट ===


{{Section howto|date=January 2019}} जब बैश शुरू होता है, तो यह विभिन्न प्रकार की हिडन फाइल और हिडन डायरेक्टरी यूनिक्स और यूनिक्स जैसे वातावरण में कमांड निष्पादित करता है। बैश आवरण आलेख के विपरीत, डॉट फ़ाइलों में सामान्यतः निष्पादन अनुमति सक्षम नहीं होती है और न ही [[दुभाषिया निर्देश]] <code>!/bin/bash</code>.
जब बैश प्रारम्भ होता है, तो विभिन्न प्रकार की डॉट फाइलों में कमांड निष्पादित करता है। शेल स्क्रिप्ट के विपरीत, डॉट फ़ाइलों में सामान्यतः निष्पादन अनुमति सक्षम नहीं होती है और न ही [[दुभाषिया निर्देश]] जैसे <code>!/bin/bash</code>.


==== विरासत-संगत बैश स्टार्टअप उदाहरण ====
==== परंपरा-संगत बैश स्टार्टअप उदाहरण ====
कंकाल <code>~/.बैश_रूपरेखा</code> नीचे बॉर्न आवरण के साथ संगत है और इसके लिए csh के समान शब्दार्थ देता है <code>~/.bashrc</code> तथा <code>~/.bash_login</code>. <code>[ -r ''filename'' ] &&  cmd</code> e> एक [[शॉर्ट सर्किट मूल्यांकन]] है जो परीक्षण करता है कि क्या फ़ाइल नाम मौजूद है और पढ़ने योग्य है, अगर यह नही तो इसके बाद के भाग को छोड़ दें <code>&&</code>
नीचे दिया गया स्केलेटन<code>~/.bash_profile</code> बॉर्न शेल के साथ संगत है और <code>~/.bashrc</code> , <code>~/.bash_login</code>के लिए csh के समान शब्दार्थ देता है  तथा <code>[ -r ''filename'' ] &&  cmd</code> e> एक [[शॉर्ट सर्किट मूल्यांकन]] है जो परीक्षण करता है कि क्या फ़ाइल नाम सम्मलित है और पढ़ने योग्य है,<code>&&</code> यदि यह नही तो इसके बाद के भाग को छोड़ दें


<वाक्यविन्यास लैंग = बैश>
<syntaxhighlight lang="bash">
[-r ~/.रूपरेखा] &&~/.रूपरेखा सेट अप पर्यावरण, एक बार, केवल बॉर्न-श वाक्यविन्यास अगर [-एन $ पीएस 1]; तो क्या हम इंटरएक्टिव हैं?
[ -r ~/.profile ] && . ~/.profile            # set up environment, once, Bourne-sh syntax only
   [-r ~/.bashrc] &&। इंटरएक्टिव आवरण के लिए ~/.bashrc # tty/prompt/function सेटअप
if [ -n "$PS1" ] ; then                      # are we interactive?
   [-r ~/.bash_login] &&~/.bash_login केवल लॉगिन आवरण के लिए कोई भी लॉगिन कार्य
   [ -r ~/.bashrc     ] && . ~/.bashrc       # tty/prompt/function setup for interactive shells
अगर ब्लॉक का अंत </वाक्यविन्यास हाइलाइट>
   [ -r ~/.bash_login ] && . ~/.bash_login   # any at-login tasks for login shell only
fi                                            # End of "if" block
</syntaxhighlight>


==== बैश चालू होने में ऑपरेटिंग प्रणाली की समस्या ====
==== बैश स्टार्टअप में ऑपरेटिंग सिस्टम की समस्याएँ ====
[[यूनिक्स]] और लिनक्स के कुछ संस्करणों में बैश सिस्टम स्टार्टअप आलेख होती है सामान्यतः <code>/etc</code> निर्देशिका के अंतर्गत। बैश इन्हें अपने मानक आरंभीकरण के भाग के रूप में कहता है, लेकिन अन्य स्टार्टअप फ़ाइलें उन्हें प्रलेखित बैश स्टार्टअप अनुक्रम की तुलना में एक अलग क्रम में पढ़ सकती हैं। रूट उपयोक्ता की फ़ाइलों की डिफ़ॉल्ट सामग्री में भी समस्याएँ हो सकती हैं, साथ ही कंकाल फ़ाइलें जो सिस्टम सेटअप पर नए उपयोगकर्ता खातों को प्रदान करता है। [[एक्स विंडो सिस्टम]] को लॉन्च करने वाली स्टार्टअप आलेख विंडो प्रबंधक को लॉन्च करने से पहले उपयोगकर्ता-पर्यावरण चर सेट करने के प्रयास में उपयोगकर्ता की बैश स्टार्टअप आलेख के साथ आश्चर्यजनक चीजें भी कर सकती हैं। इन मुद्दों को प्रायः उपयोग करके संबोधित किया जा सकता है <code>~/.xsession</code> या <code>~/.xprofile</code> पढ़ने के लिए फ़ाइल <code>~/.profile</code> - जो पर्यावरण चर प्रदान करता है जो बैश शेल विंडो को विंडो मैनेजर की जरूरत से पैदा करता है, जैसे कि [[xterm]] या [[Gnome Terminal|गनोम टर्मिनल]] I
[[यूनिक्स]] और लिनक्स के कुछ संस्करणों में बैश प्रणाली स्टार्टअप स्क्रिप्ट होती है सामान्यतः <code>/etc</code> निर्देशिका के अंतर्गत। बैश इन्हें अपने मानक आरंभीकरण के भाग के रूप में रखता है, लेकिन अन्य स्टार्टअप फ़ाइलें उन्हें प्रलेखित बैश स्टार्टअप अनुक्रम की तुलना में भिन्न पढ़ा जा सकता है। रूट उपयोक्ता की फ़ाइलों में डिफ़ॉल्ट सामग्री में भी समस्याएँ हो सकती हैं, साथ ही स्केलेटन फ़ाइलें जो सिस्टम सेटअप पर नए उपयोगकर्ता खातों को प्रदान करता है। X विंडो प्रणाली को प्रक्षेपण करने वाली स्टार्टअप स्क्रिप्ट्स विंडो प्रबंधक को प्रक्षेपण करने से पहले उपयोगकर्ता-पर्यावरण चर स्थापित करने के प्रयास में उपयोगकर्ता बैश स्टार्टअप स्क्रिप्ट के साथ आश्चर्यजनक चीजें भी कर सकते हैं। इन विषयों को प्रायः <code>~/.xsession</code> या <code>~/.xprofile</code> फ़ाइल का उपयोग करके <code>~/.profile</code> पढ़ने के लिए संबोधित किया जा सकता है - जो पर्यावरण चर प्रदान करता है जो बैश शेल विंडो को विंडो मैनेजर की अपेक्षा से उत्पन्न करता है, जैसे कि[[xterm|एक्सटर्म(xterm]]) या [[Index.php?title=गनोम टर्मिनल|गनोम टर्मिनल]] I


=== पोर्टेबिलिटी ===
=== पोर्टेबिलिटी ===
<code>--posix</code> के साथ बैश का आह्वान करना विकल्प या कथन <code>set -o posix</code> एक स्क्रिप्ट में बैश को Posix POSIX.2|POSIX 1003.2 मानक के बहुत करीब से अनुरूप बनाने का कारण बनता है।<ref name=tldp>{{cite web|author=Mendel Cooper|title=पोर्टेबिलिटी मुद्दे|url=http://tldp.org/LDP/abs/html/portabilityissues.html|work=The Linux Documentation Project|publisher=ibiblio.org|access-date=January 26, 2012|archive-date=January 27, 2012|archive-url=https://web.archive.org/web/20120127105451/http://tldp.org/LDP/abs/html/portabilityissues.html|url-status=live}}</ref> पोर्टेबिलिटी (कंप्यूटर साइंस) के लिए बनाई गई बैश आवरण स्क्रिप्ट को कम से कम POSIX आवरण मानक को ध्यान में रखना चाहिए। POSIX में नहीं मिली कुछ बैश विशेषताएँ हैं:<ref name=tldp /><ref name=deb>{{cite web |title=10. फाइलें|url=https://www.debian.org/doc/debian-policy/ch-files.html#scripts |website=Debian Policy Manual v4.5.0.2 |access-date=May 11, 2020 |archive-date=May 12, 2020 |archive-url=https://web.archive.org/web/20200512050159/https://www.debian.org/doc/debian-policy/ch-files.html#scripts |url-status=live }}</ref>
<code>--posix</code> विकल्प के साथ आमंत्रित करना या किसी स्क्रिप्ट में <code>set -o posix</code> बताते हुए बैश को POSIX 1003.2 मानक के अति निकट के अनुरूप है।<ref name=tldp>{{cite web|author=Mendel Cooper|title=पोर्टेबिलिटी मुद्दे|url=http://tldp.org/LDP/abs/html/portabilityissues.html|work=The Linux Documentation Project|publisher=ibiblio.org|access-date=January 26, 2012|archive-date=January 27, 2012|archive-url=https://web.archive.org/web/20120127105451/http://tldp.org/LDP/abs/html/portabilityissues.html|url-status=live}}</ref> पोर्टेबिलिटी के लिए बनाई गई बैश शेल स्क्रिप्ट को कम से कम पॉज़िक्स शेल मानक को ध्यान में रखना चाहिए। पॉज़िक्स में नहीं मिली कुछ बैश विशेषताएँ हैं:<ref name=tldp /><ref name=deb>{{cite web |title=10. फाइलें|url=https://www.debian.org/doc/debian-policy/ch-files.html#scripts |website=Debian Policy Manual v4.5.0.2 |access-date=May 11, 2020 |archive-date=May 12, 2020 |archive-url=https://web.archive.org/web/20200512050159/https://www.debian.org/doc/debian-policy/ch-files.html#scripts |url-status=live }}</ref>


{{div col start}}
{{div col start}}
* कुछ विस्तारित मंगलाचरण विकल्प
* कुछ विस्तारित इनवोकेशन विकल्प
* ब्रेस विस्तार
* ब्रेस विस्तार
* सरणियाँ और साहचर्य सरणियाँ
* सरणियाँ और साहचर्य सरणियाँ
* डबल ब्रैकेट {{code|[[ ... ]]}} विस्तारित परीक्षण निर्माण और इसका रेगेक्स मिलान
* डबल कोष्ठक{{code|[[ ... ]]}} विस्तारित परीक्षण निर्माण और इसका रेगेक्स संघ
* दोहरे कोष्ठक अंकगणित-मूल्यांकन निर्माण (केवल {{code|(( ... ))}}; {{code|$(( ... ))}} पॉज़िक्स है)
* डबल कोष्ठक अंकगणित-मूल्यांकन निर्माण (केवल {{code|(( ... ))}}; {{code|$(( ... ))}} पॉज़िक्स है)
* पैरामीटर विस्तार में कुछ स्ट्रिंग-हेरफेर ऑपरेशन
* पैरामीटर विस्तार में कुछ स्ट्रिंग-परिवर्तन ऑपरेशन
* {{code|local}} दायरे वाले चर के लिए
* {{code|स्थानीय}} सीमा वाले चर के लिए
* प्रक्रिया प्रतिस्थापन
* प्रक्रिया प्रतिस्थापन
* बैश-विशिष्ट बिल्टिन
* बैश-विशिष्ट बिल्टिन
* [[कोप्रोसेस]]ेस
* [[कोप्रोसेस]]
* $युगसेकंड और $एपोक्रिअलटाइम चर <ref>{{cite web|title=लिनक्स, मैकओएस और बैश में दिनांक और समय को कैसे प्रारूपित करें?|url=https://www.shell-tips.com/linux/how-to-format-date-and-time-in-linux-macos-and-bash/#using-the-gnu-date-command-line|website=Shell Tips!|access-date=June 3, 2020|archive-date=June 3, 2020|archive-url=https://web.archive.org/web/20200603230615/https://www.shell-tips.com/linux/how-to-format-date-and-time-in-linux-macos-and-bash/#using-the-gnu-date-command-line|url-status=live}}</ref>
* $EPOCHSECONDS and $EPOCHREALTIME चर <ref>{{cite web|title=लिनक्स, मैकओएस और बैश में दिनांक और समय को कैसे प्रारूपित करें?|url=https://www.shell-tips.com/linux/how-to-format-date-and-time-in-linux-macos-and-bash/#using-the-gnu-date-command-line|website=Shell Tips!|access-date=June 3, 2020|archive-date=June 3, 2020|archive-url=https://web.archive.org/web/20200603230615/https://www.shell-tips.com/linux/how-to-format-date-and-time-in-linux-macos-and-bash/#using-the-gnu-date-command-line|url-status=live}}</ref>
{{div col end}}
{{div col end}}
यदि कोड का एक टुकड़ा ऐसी सुविधा का उपयोग करता है, तो इसे बैशिज़्म कहा जाता है - पोर्टेबल उपयोग के लिए एक समस्या। डेबियन का {{code|checkbashisms}} और विदर होलेन के {{code|shellcheck}} इसका उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी स्क्रिप्ट में ये भाग नहीं हैं।<ref>{{man|1|checkbashisms|ManKier}}</ref><ref>{{man|1|shellcheck|ManKier}}</ref> सूची वास्तविक लक्ष्य आवरण के आधार पर भिन्न होती है: डेबियन की नीति उनकी लिपियों में कुछ विस्तार की अनुमति देती है (जैसा कि वे अल्मक्विस्ट आवरण डैश आवरण में हैं),<ref name=deb/>जबकि एक स्क्रिप्ट पूर्व POSIX बॉर्न शेल का समर्थन करने का इरादा रखती है, जैसे कि [[autoconf]]़ {{code|configure}}, उन सुविधाओं में और भी अधिक सीमित हैं जिनका वे उपयोग कर सकते हैं।<ref>{{cite web |title=पोर्टेबल खोल|url=https://www.gnu.org/software/autoconf/manual/html_node/Portable-Shell.html |website=Autoconf |access-date=20 January 2020 |archive-date=March 2, 2021 |archive-url=https://web.archive.org/web/20210302212413/https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.70/html_node/Portable-Shell.html |url-status=live }}</ref>


यदि कोड का टुकड़ा ऐसी सुविधा का उपयोग करता है, तो इसे बैशिज़्म कहा जाता है - पोर्टेबल उपयोग के लिए समस्या। डेबियन का {{code|checkbashisms}} और विदर होलेन के {{code|shellcheck}} इसका उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी स्क्रिप्ट में यह भाग सम्मलित नहीं हैं।<ref>{{man|1|checkbashisms|ManKier}}</ref><ref>{{man|1|shellcheck|ManKier}}</ref> सूची वास्तविक लक्ष्य शेल के आधार पर भिन्न होती है: डेबियन की नीति उनकी लिपियों में कुछ एक्सटेंशन की अनुमति देती है (जैसा कि वे अल्मक्विस्ट शेल डैश शेल में हैं),<ref name=deb/>जबकि पूर्व पॉज़िक्स बॉर्न शेल का समर्थन करने का निश्चय रखने वाले स्क्रिप्ट है, जैसे कि [[autoconf]] की {{code|configure}}, और भी अधिक हैं उन सुविधाओं में सीमित  है जिनका वे उपयोग कर सकते हैं।<ref>{{cite web |title=पोर्टेबल खोल|url=https://www.gnu.org/software/autoconf/manual/html_node/Portable-Shell.html |website=Autoconf |access-date=20 January 2020 |archive-date=March 2, 2021 |archive-url=https://web.archive.org/web/20210302212413/https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.70/html_node/Portable-Shell.html |url-status=live }}</ref>
=== कीबोर्ड शॉर्टकट ===
=== कीबोर्ड शॉर्टकट ===
{{Main article|जीएनयू रीडलाइन}}
{{Main article|जीएनयू रीडलाइन}}
बैश डिफ़ॉल्ट ([[Emacs]]) कुंजी बाइंडिंग का उपयोग करके कमांड लाइन संपादन के लिए कीबोर्ड शॉर्टकट प्रदान करने के लिए रीडलाइन का उपयोग करता है। [[हम बांधते हैं]] को चलाकर सक्षम किया जा सकता है <code>set -o vi</code>.<ref>{{cite web |url=http://www.hypexr.org/bash_tutorial.php#emacs |title=बैश सहायता - एक बैश ट्यूटोरियल|publisher=Hypexr.org |date=October 5, 2012 |access-date=July 21, 2013 |archive-date=March 2, 2021 |archive-url=https://web.archive.org/web/20210302213519/http://www.hypexr.org/bash_tutorial.php#emacs |url-status=live }}</ref>
बैश डिफ़ॉल्ट इमैक([[Emacs]]) कुंजी बाइंडिंग का उपयोग करके कमांड लाइन संपादन के लिए कीबोर्ड शॉर्टकट प्रदान करने के लिए रीडलाइन का उपयोग करता है। vi बाइंडिंग को <code>set -o vi</code> को चलाकर सक्षम किया जा सकता है .<ref>{{cite web |url=http://www.hypexr.org/bash_tutorial.php#emacs |title=बैश सहायता - एक बैश ट्यूटोरियल|publisher=Hypexr.org |date=October 5, 2012 |access-date=July 21, 2013 |archive-date=March 2, 2021 |archive-url=https://web.archive.org/web/20210302213519/http://www.hypexr.org/bash_tutorial.php#emacs |url-status=live }}</ref>
 


===प्रक्रिया प्रबंधन===
===प्रक्रिया प्रबंधन===
बैश आवरण  में कमांड के निष्पादन के दो तरीके हैं: [[बैच (यूनिक्स)]], और समवर्ती मोड।
बैश शेल में कमांड के निष्पादन के दो उपाय हैं: [[बैच (यूनिक्स)|बैच]], और समवर्ती मोड।


बैच में कमांड निष्पादित करने के लिए (अर्थात, क्रम में) उन्हें वर्ण द्वारा अलग किया जाना चाहिए; , या अलग लाइनों पर:
बैच में कमांड निष्पादित करने के लिए (अर्थात, अनुक्रम में) उन्हें वर्ण ";", या भिन्न-भिन्न पंक्तियों से भिन्न किया जाना चाहिए;  
command1; command2
इस उदाहरण में, जब command1 समाप्त हो जाता है, तो command2 निष्पादित हो जाता है।


<वाक्यविन्यास लैंग = बैश>
निष्पादन कमांड के अंत में (प्रतीक) का उपयोग करके command1 की [[पृष्ठभूमि प्रक्रिया|पृष्ठभूमि]]  का  निष्पादन हो सकता है, और प्रक्रिया को पृष्ठभूमि में निष्पादित किया जाएगा जो शेल पर तुरंत नियंत्रण लौटाता है और कमांड के निरंतर निष्पादन की अनुमति देता है।
कमांड 1; कमांड2
</वाक्यविन्यास हाइलाइट>
 
इस उदाहरण में, जब कमांड 1 समाप्त हो जाता है, तो कमांड 2 निष्पादित हो जाता है।
 
कमांड 1 की एक [[पृष्ठभूमि प्रक्रिया]] निष्पादन कमांड के अंत में (प्रतीक और) का उपयोग करके हो सकती है, और प्रक्रिया को पृष्ठभूमि में निष्पादित किया जाएगा जो आवरण पर तुरंत नियंत्रण लौटाएगा और कमांड के निरंतर निष्पादन की अनुमति देगा।
<syntaxhighlight lang= bash>command1 &</syntaxhighlight>
<syntaxhighlight lang= bash>command1 &</syntaxhighlight>


या दो कमांड 1 और कमांड 2 का समवर्ती निष्पादन करने के लिए, उन्हें निम्नलिखित तरीके से बैश आवरण  में निष्पादित किया जाना चाहिए:
या दो command1  और command2 का समवर्ती निष्पादन करने के लिए, उन्हें निम्नलिखित उपाय से बैश शेल में निष्पादित किया जाना चाहिए:
command1 & command2
इस विषय में command1 को पृष्ठभूमि और प्रतीक में निष्पादित किया जाता है, तथा उस शेल पर नियंत्रण लौटाता है जो अग्रभूमि में command2 को निष्पादित करता है।


<वाक्यविन्यास लैंग = बैश>
इस प्रक्रिया को रोका जा सकता है और जब प्रक्रिया अग्रभूमि में चल रही हो तो {{Key press|Ctrl|z}}  लिख करके बैश पर नियंत्रण लौटाया जा सकता है। <ref>{{cite web|url=https://www.gnu.org/software/bash/manual/bash.html#index-background|title=बैश संदर्भ मैनुअल|website=www.gnu.org|access-date=March 27, 2018|archive-date=March 15, 2018|archive-url=https://web.archive.org/web/20180315115230/http://www.gnu.org/software/bash/manual/bash.html#index-background|url-status=live}}</ref>
कमांड 1 और कमांड 2
</वाक्यविन्यास हाइलाइट>


इस विषय में कमांड 1 को पृष्ठभूमि और प्रतीक में निष्पादित किया जाता है, तुरंत उस आवरण पर नियंत्रण लौटाता है जो अग्रभूमि में कमांड 2 को निष्पादित करता है।
सभी प्रक्रियाओं की सूची, दोनों पृष्ठभूमि में रुकी हुई, <code>jobs</code>को चलाकर प्राप्त की जा सकती है :


एक प्रक्रिया को रोका जा सकता है और टाइप करके बैश पर नियंत्रण लौटाया जा सकता है {{Key press|Ctrl|z}} जबकि प्रक्रिया अग्रभूमि में चल रही है।<ref>{{cite web|url=https://www.gnu.org/software/bash/manual/bash.html#index-background|title=बैश संदर्भ मैनुअल|website=www.gnu.org|access-date=March 27, 2018|archive-date=March 15, 2018|archive-url=https://web.archive.org/web/20180315115230/http://www.gnu.org/software/bash/manual/bash.html#index-background|url-status=live}}</ref>
$ jobs
सभी प्रक्रियाओं की एक सूची, दोनों पृष्ठभूमि में और रुकी हुई, चलकर प्राप्त की जा सकती है <code>jobs</code>:
[1]- Running                  command1 &
<वाक्यविन्यास लैंग = कंसोल>
[2]+ Stopped                  command2
$ नौकरियां
</syntaxhighlight>
[1] - रनिंग कमांड 1 और
[2] + रुका हुआ कमांड 2
</वाक्यविन्यास हाइलाइट>


आउटपुट में, कोष्ठक में संख्या जॉब आईडी को संदर्भित करती है। धन चिह्न के लिए डिफ़ॉल्ट प्रक्रिया को दर्शाता है <code>bg</code> तथा <code>fg</code>. टेक्स्ट रनिंग और स्टॉप्ड [[प्रक्रिया अवस्था]] को संदर्भित करता है। अंतिम स्ट्रिंग वह कमांड है जिसने प्रक्रिया शुरू की।
आउटपुट में, कोष्ठक में संख्या जॉब आईडी को संदर्भित करती है। धन चिह्न <code>bg</code> तथा <code>fg</code>के लिए डिफ़ॉल्ट प्रक्रिया को दर्शाता हैI टेक्स्ट रनिंग और स्टॉप्ड [[प्रक्रिया अवस्था]] को संदर्भित करता है। अंतिम स्ट्रिंग वह कमांड है जिसने प्रक्रिया शुरू की।


विभिन्न आदेशों का उपयोग करके एक प्रक्रिया की स्थिति को बदला जा सकता है। <code>fg</code> e> कमांड एक प्रक्रिया को अग्रभूमि में लाता है, जबकि <code>bg</code> पृष्ठभूमि में चल रही एक रुकी हुई प्रक्रिया को सेट करता है। <code>bg</code> तथा <code>fg</code> कार्य करने की प्रक्रिया को निर्दिष्ट करने के लिए अपने पहले तर्क के रूप में कार्य आईडी ले सकते हैं। एक के बिना, वे डिफ़ॉल्ट प्रक्रिया का उपयोग करते हैं, जिसे आउटपुट में प्लस चिह्न द्वारा पहचाना जाता है <code>jobs</code>. <code>[[Kill_(command)|kill]]</code> ई> कमांड का उपयोग समय से पहले एक प्रक्रिया को सिग्नल (आईपीसी) भेजकर समाप्त करने के लिए किया जा सकता है। जॉब आईडी को प्रतिशत चिह्न के बाद निर्दिष्ट किया जाना चाहिए:
विभिन्न आदेशों का उपयोग करके प्रक्रिया की स्थिति को परिवर्तित किया जा सकता हैI <code>fg</code> कमांड प्रक्रिया को अग्रभूमि में लाता है, जबकि <code>bg</code> पृष्ठभूमि में चल रही रुकी हुई प्रक्रिया को सेट करता है।कार्य करने की प्रक्रिया को निर्दिष्ट करने के लिए <code>bg</code> तथा<code>fg</code> अपने पहले तर्क के रूप में जॉब आईडी ले सकते हैं।<code>jobs</code>आउटपुट में प्लस चिह्न द्वारा पहचाने जाने वाली डिफ़ॉल्ट प्रक्रिया का उपयोग करते हैं। <code>[[Kill_(command)|kill]]</code> कमांड का उपयोग किसी प्रक्रिया को समय से पहले संकेत भेजकर समाप्त करने के लिए किया जा सकता है I  जॉब आईडी को प्रतिशत चिह्न के बाद निर्दिष्ट किया जाना चाहिए:


<वाक्यविन्यास लैंग = बैश>
<syntaxhighlight lang="bash">
मार % 1
kill %1
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


=== सशर्त निष्पादन ===
=== सशर्त निष्पादन ===
बैश सशर्त निष्पादन कमांड विभाजक की आपूर्ति करता है जो पूर्ववर्ती कमांड द्वारा निर्धारित निकास स्थिति पर आकस्मिक कमांड का निष्पादन करता है। उदाहरण के लिए:
बैश सशर्त निष्पादन कमांड विभाजक की आपूर्ति करता है जो पूर्ववर्ती कमांड द्वारा निर्धारित एग्जिट कोड पर आकस्मिक कमांड का निष्पादन करता है। उदाहरण के लिए:


<वाक्यविन्यास लैंग = बैश> सीडी $ कहीं और && ./do_something || प्रतिध्वनि एक त्रुटि हुई >&2
cd "$SOMEWHERE" && ./do_something || echo "An error occurred" >&2
</वाक्यविन्यास हाइलाइट>


जहां ./do_something केवल तभी निष्पादित होता है जब सीडी (निर्देशिका बदलें) कमांड सफल होता है (शून्य की निकास स्थिति लौटाता है) और इको कमांड केवल तभी निष्पादित किया जाएगा जब सीडी या ./do_something कमांड एक त्रुटि लौटाता है (गैर-शून्य) [[बाहर निकलने की स्थिति]])।
जहां ./do_something केवल तभी निष्पादित होता है जब cd (निर्देशिका बदलें) कमांड सफल होता है (शून्य की निकास स्थिति लौटाता है) और ''echo'' कमांड केवल तभी निष्पादित किया जाएगा जब cd या ./do_something कमांड त्रुटि लौटाता है (गैर-शून्य) [[बाहर निकलने की स्थिति]])।


सभी आदेशों के लिए निकास स्थिति को विशेष चर में संग्रहीत किया जाता है <code>$?</code>. बैश भी समर्थन करता है {{code|2=bash|if ...;then ...;else ...;fi}} तथा {{code|2=bash|case $VARIABLE in $pattern)...;;$other_pattern)...;; esac}} सशर्त कमांड मूल्यांकन के रूप।
सभी आदेशों के लिए निकास स्थिति को विशेष चर <code>$?</code> में संग्रहीत किया जाता हैI बैश भी समर्थन करता है {{code|2=bash|if ...;then ...;else ...;fi}} तथा {{code|2=bash|case $VARIABLE in $pattern)...;;$other_pattern)...;; esac}} सशर्त कमांड मूल्यांकन के रूप।


=== बग रिपोर्टिंग ===
=== बग रिपोर्टिंग ===
{{Redirect|बैश बग|बैश में व्यापक रूप से रिपोर्ट किया गया सितंबर 2014 बग पाया गया|आवरणशॉक (सॉफ्टवेयर बग)}}
{{Redirect|बैश बग|बैश में व्यापक रूप से रिपोर्ट किया गया सितंबर 2014 बग पाया गया|शेलशॉक (सॉफ्टवेयर बग)}}
 
बैशबग नामक एक बाहरी कमांड बैश आवरण बग की रिपोर्ट करता है। जब कमांड का आह्वान किया जाता है, तो यह उपयोगकर्ता के डिफ़ॉल्ट संपादक को भरने के लिए एक फॉर्म के साथ लाता है। फॉर्म को बैश अनुरक्षकों (या वैकल्पिक रूप से अन्य ईमेल पतों ) पर भेज दिया जाता है।<ref>[http://linux.die.net/man/1/bashbug bashbug(1)] {{Webarchive|url=https://web.archive.org/web/20181002232146/https://linux.die.net/man/1/bashbug |date=October 2, 2018 }}, die.net</ref><ref>[https://developer.apple.com/library/prerelease/mac/documentation/Darwin/Reference/ManPages/man1/bashbug.1.html "Linux / Unix Command: bashbug"] {{Webarchive|url=https://web.archive.org/web/20141006131347/https://developer.apple.com/library/prerelease/mac/documentation/Darwin/Reference/ManPages/man1/bashbug.1.html |date=October 6, 2014 }}, apple.com</ref>
 


बैशबग नामक बाहरी कमांड बैश शेल बग की रिपोर्ट करता है। जब आदेश लागू किया जाता है, तो यह उपयोगकर्ता के डिफ़ॉल्ट संपादक को भरने के लिए फॉर्म के साथ लाता हैI फॉर्म को बैश अनुरक्षकों (या वैकल्पिक रूप से अन्य ईमेल पतों ) पर भेज दिया जाता है।<ref>[http://linux.die.net/man/1/bashbug bashbug(1)] {{Webarchive|url=https://web.archive.org/web/20181002232146/https://linux.die.net/man/1/bashbug |date=October 2, 2018 }}, die.net</ref><ref>[https://developer.apple.com/library/prerelease/mac/documentation/Darwin/Reference/ManPages/man1/bashbug.1.html "Linux / Unix Command: bashbug"] {{Webarchive|url=https://web.archive.org/web/20141006131347/https://developer.apple.com/library/prerelease/mac/documentation/Darwin/Reference/ManPages/man1/bashbug.1.html |date=October 6, 2014 }}, apple.com</ref>
=== प्रोग्राम करने योग्य पूर्णता ===
=== प्रोग्राम करने योग्य पूर्णता ===
बैश बिल्ट-इन के माध्यम से प्रोग्रामेबल [[कमांड-लाइन पूर्णता]] का समर्थन करता है <code>पूर्ण</code>, {{Code|कंपोज़}}, तथा आदेश निर्दिष्ट ।<ref>{{Cite web|url=https://tiswww.case.edu/php/chet/bash/bashref.html#Programmable-Completion|title=बैश संदर्भ मैनुअल|website=tiswww.case.edu}}</ref> यह सुविधा 2000 में जारी 2.04 के बीटा संस्करण के बाद से उपलब्ध है।<ref>{{Cite web|title=बैश 2.x/3.x के साथ अधिक उत्पादक रूप से कार्य करना|url=http://www.caliban.org/bash/index.shtml|url-status=live|archive-url=https://web.archive.org/web/20180629230903/http://www.caliban.org/bash/index.shtml|archive-date=June 29, 2018|access-date=June 21, 2018|website=www.caliban.org}}</ref><ref>{{Cite web|url=https://ftp.swin.edu.au/gnu/bash/|title=/gnu/bash का अनुक्रमणिका|website=ftp.swin.edu.au|access-date=September 15, 2019|archive-date=March 8, 2020|archive-url=https://web.archive.org/web/20200308104032/http://ftp.swin.edu.au/gnu/bash/|url-status=live}}</ref> ये कमांड कमांड्स (अर्थात इंस्टॉल किए गए प्रोग्राम), फ़ंक्शंस, चरों और फाइलनामों के लिए जटिल और बुद्धिमान पूर्णता विनिर्देश को सक्षम करते हैं।<ref name=":1">{{Cite web|title=प्रोग्राम करने योग्य पूर्णता का परिचय|url=https://tldp.org/LDP/abs/html/tabexpansion.html|access-date=2022-01-21|website=tldp.org}}</ref>
बैश बिल्ट-इन <code>complete</code>, {{Code|compopt}}, तथा compgen निर्दिष्ट के माध्यम से प्रोग्रामेबल [[कमांड-लाइन पूर्णता]] का समर्थन करता है ।<ref>{{Cite web|url=https://tiswww.case.edu/php/chet/bash/bashref.html#Programmable-Completion|title=बैश संदर्भ मैनुअल|website=tiswww.case.edu}}</ref> यह सुविधा 2000 में प्रस्तावित 2.04 के बीटा संस्करण के बाद से उपलब्ध है।<ref>{{Cite web|title=बैश 2.x/3.x के साथ अधिक उत्पादक रूप से कार्य करना|url=http://www.caliban.org/bash/index.shtml|url-status=live|archive-url=https://web.archive.org/web/20180629230903/http://www.caliban.org/bash/index.shtml|archive-date=June 29, 2018|access-date=June 21, 2018|website=www.caliban.org}}</ref><ref>{{Cite web|url=https://ftp.swin.edu.au/gnu/bash/|title=/gnu/bash का अनुक्रमणिका|website=ftp.swin.edu.au|access-date=September 15, 2019|archive-date=March 8, 2020|archive-url=https://web.archive.org/web/20200308104032/http://ftp.swin.edu.au/gnu/bash/|url-status=live}}</ref> ये कमांड्स (अर्थात इंस्टॉल किए गए प्रोग्राम), फ़ंक्शंस, चरों और फाइलनामों के लिए जटिल और बुद्धिमान पूर्णता विनिर्देश को सक्षम करते हैं।<ref name=":1">{{Cite web|title=प्रोग्राम करने योग्य पूर्णता का परिचय|url=https://tldp.org/LDP/abs/html/tabexpansion.html|access-date=2022-01-21|website=tldp.org}}</ref>


  <code>पूर्ण</code> ई> और {{Code|कंपोज़}} दो आदेश निर्दिष्ट करते हैं कि कैसे कुछ उपलब्ध आदेशों या विकल्पों के तर्क [[पढ़ने के लिए लाइन]] इनपुट में सूचीबद्ध होने जा रहे हैं। संस्करण 5.1 के रूप में कमांड या विकल्प को पूरा करना सामान्यतः इसके द्वारा सक्रिय किया जाता है {{Key|tab}} इसका नाम टाइप करने के बाद कीस्ट्रोक।<ref name=":1">{{Cite web|title=प्रोग्राम करने योग्य पूर्णता का परिचय|url=https://tldp.org/LDP/abs/html/tabexpansion.html|access-date=2022-01-21|website=tldp.org}}</ref>
  <code>complete</code>और {{Code|compopt}} दो आदेश निर्दिष्ट करते हैं कि [[पढ़ने के लिए लाइन|रीडलाइन]] इनपुट में कुछ उपलब्ध कमांड या विकल्पों के तर्क कैसे सूचीबद्ध होने जा रहे हैं। संस्करण 5.1 के अनुसार, कमांड या विकल्प को पूरा करने के लिए सामान्यतः टैब ↹ कुंजी स्ट्रोक द्वारा अपना नाम लिखने के बाद सक्रिय किया जाता है


 
== प्रस्तावित इतिहास ==
== रिलीज इतिहास ==
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 500: Line 486:
|
|
|}
|}


== यह भी देखें ==
== यह भी देखें ==
{{Portal|Free and open-source software}}
{{Portal|Free and open-source software}}
* [[कमांड शेल की तुलना]]
* [[कमांड शेल की तुलना|कमांड शेल की शेल]]
 
 
==संदर्भ==
==संदर्भ==
{{Reflist}}
{{Reflist}}




==इस पेज में लापता आंतरिक लिंक की सूची==
*सोलारिस (ऑपरेटिंग सिस्टम)
*यात्रा
*भाषा (कंप्यूटर विज्ञान)
*सी खोल
*बहाव को काबू करें
*पुनर्जन्म
*हमला (कंप्यूटिंग)
*अल्मक्विस्ट खोल
*से
*cygwin
*मनमाना कोड निष्पादन
*पर्यावरणपरिवर्ती तारक
*चाबी दबाएं
*मानक त्रुटि धारा
*मानक बाहर
*साहचर्य सरणियाँ
*खिड़की प्रबंधक
*पोर्टेबिलिटी (कंप्यूटर विज्ञान)
==बाहरी संबंध==
==बाहरी संबंध==
{{Commons category|GNU Bash|Bash}}
{{Wikibooks|Bash Shell Scripting}}
* {{official website|https://www.gnu.org/software/bash/}}
* {{official website|https://www.gnu.org/software/bash/}}
* {{cite news |last1=Hamilton |first1=Naomi |title=The A-Z of Programming Languages: BASH/Bourne-Again Shell |website=[[Computerworld]] |url=http://www.computerworld.com.au/article/222764/ |archive-url=https://web.archive.org/web/20161108230747/http://www.computerworld.com.au/article/222764/ |archive-date=8 November 2016 |date=2008-05-30 <!-- https://web.archive.org/web/20081205093826/http://www.computerworld.com.au/index.php/id;1591223321;pp;2;fp;16;fpid;1  
* {{cite news |last1=Hamilton |first1=Naomi |title=The A-Z of Programming Languages: BASH/Bourne-Again Shell |website=[[Computerworld]] |url=http://www.computerworld.com.au/article/222764/ |archive-url=https://web.archive.org/web/20161108230747/http://www.computerworld.com.au/article/222764/ |archive-date=8 November 2016 |date=2008-05-30 <!-- https://web.archive.org/web/20081205093826/http://www.computerworld.com.au/index.php/id;1591223321;pp;2;fp;16;fpid;1  
  -->}}  (interview with GNU Bash's maintainer, Chet Ramey)
  -->}}  (interview with GNU Bash's maintainer, Chet Ramey)
{{DEFAULTSORT:Bash (Unix Shell)}}


 
[[Category:1989 सॉफ्टवेयर|Bash (Unix Shell)]]
{{GNU}}
[[Category:Articles with hatnote templates targeting a nonexistent page|Bash (Unix Shell)]]
{{Unix shells}}{{Programming languages}}
[[Category:CS1 English-language sources (en)]]
{{Authority control}}
[[Category:Collapse templates|Bash (Unix Shell)]]
 
[[Category:Commons category link is locally defined|Bash (Unix Shell)]]
{{DEFAULTSORT:Bash (Unix Shell)}}[[Category:1989 सॉफ्टवेयर]]
[[Category:Created On 30/11/2022|Bash (Unix Shell)]]
[[Category:क्रॉस-प्लेटफ़ॉर्म मुफ़्त सॉफ़्टवेयर]]
[[Category:Lua-based templates|Bash (Unix Shell)]]
[[Category: डोमेन-विशिष्ट प्रोग्रामिंग भाषाएं]]
[[Category:Machine Translated Page|Bash (Unix Shell)]]
[[Category: सी में मुफ्त सॉफ्टवेयर प्रोग्राम किया गया]]
[[Category:Missing redirects|Bash (Unix Shell)]]
[[Category:जीएनयू परियोजना सॉफ्टवेयर]]
[[Category:Multi-column templates|Bash (Unix Shell)]]
[[Category: स्क्रिप्टिंग भाषाएं]]
[[Category:Navigational boxes| ]]
[[Category: पाठ-उन्मुख प्रोग्रामिंग भाषाएं]]
[[Category:Navigational boxes without horizontal lists|Bash (Unix Shell)]]
[[Category: यूनिक्स शैल]]
[[Category:Official website not in Wikidata|Bash (Unix Shell)]]
 
[[Category:Pages using div col with small parameter|Bash (Unix Shell)]]
 
[[Category:Pages with broken file links|Bash (Unix Shell)]]
[[Category: Machine Translated Page]]
[[Category:Pages with empty portal template|Bash (Unix Shell)]]
[[Category:Created On 30/11/2022]]
[[Category:Pages with script errors|Bash (Unix Shell)]]
[[Category:Portal templates with redlinked portals|Bash (Unix Shell)]]
[[Category:Short description with empty Wikidata description|Bash (Unix Shell)]]
[[Category:Templates Vigyan Ready|Bash (Unix Shell)]]
[[Category:Templates that add a tracking category|Bash (Unix Shell)]]
[[Category:Templates that generate short descriptions|Bash (Unix Shell)]]
[[Category:Templates using TemplateData|Bash (Unix Shell)]]
[[Category:Templates using under-protected Lua modules|Bash (Unix Shell)]]
[[Category:Webarchive template wayback links]]
[[Category:Wikipedia fully protected templates|Div col]]

Latest revision as of 13:02, 27 October 2023

बैश (यूनिक्स शेल) और कमांड भाषा है जिसे ब्रायन फॉक्स (कंप्यूटर प्रोग्रामर) द्वारा जीएनयू परियोजना के लिए बॉर्न शेल के लिए मुफ्त सॉफ्टवेयर प्रतिस्थापन के रूप में लिखा गया है।[1][2] यह 1989 में पहली बार प्रस्तावित हुआ,[3] इसे अधिकांश लिनक्स वितरणों के लिए डिफ़ॉल्ट लॉगिन शेल के रूप में उपयोग किया गया है।[4]बैश उन पहले कार्यक्रमों में से था जिसे लिनक्स टोरवाल्ड्स ने जीसीसी के साथ लिनक्स में परिवर्तन किया था।[5] लिनक्स के लिए विंडोज उप-प्रणाली के माध्यम से विंडोज 10 और विंडोज़ 11 के लिए संस्करण भी उपलब्ध है।[6][7] यह सोलारिस (ऑपरेटिंग सिस्टम) 11 में डिफ़ॉल्ट उपयोगकर्ता शेल भी है।[8] बैश एप्पल मैक ओ एस (MacOS) के संस्करणों में 10.3 (मूल रूप से, डिफ़ॉल्ट शेल tcsh था) मैक ओ एस कैटालिना के 2019 प्रस्तावित के लिए, डिफ़ॉल्ट शेल को zsh में परिवर्तन कर दिया, चूँकि बैश वैकल्पिक शेल के रूप में उपलब्ध है।[9]

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

शेल का नाम बॉर्न अगेन शेल के लिए परिवर्णी शब्द है, बॉर्न शेल के नाम पर वाक्य को यह प्रतिस्थापित करता हैi[10] तत्पश्चात जन्म लेने की धारणा उत्पन्न करता है।[11][12]

संस्करण 1.03 (अगस्त 1989) से बैश में सुरक्षा बग,[13] अनुबंध शेलशॉक (सॉफ्टवेयर बग), सितंबर 2014 की प्रारम्भ में शोध किया गया था और जल्दी से इंटरनेट पर परिवर्तन की श्रृंखला का नेतृत्व किया।[14][15][16] बग की पहचान होने के तुरंत बाद बग को ठीक करने के लिए पैच उपलब्ध करा दिए गए थे।

इतिहास

ब्रायन फॉक्स ने 10 जनवरी 1988 को कंप्यूटर प्रोग्रामिंग में बैश को कोड करना शुरू किया, जब रिचर्ड स्टालमैन पूर्व डेवलपर द्वारा की जा रही प्रगति की कमी से असंतुष्ट हो गए।[1][17] स्टॉलमैन और फ्री सॉफ्टवेयर फाउंडेशन ने फ्री शेल पर विचार किया जो सम्मलित शेल स्क्रिप्ट को बीएसडी और जीएनयू कोड से निर्मित पूर्णतया मुक्त प्रणाली के लिए रणनीतिक रूप से चला सकता है यह उन कुछ परियोजनाओं में से था जिसमें फॉक्स ने काम किया था और उन्होंने स्वयं वित्त पोषित किया था। फॉक्स के साथ एफएसएफ के कर्मचारी के रूप में काम करते थे।[1][18] फ़ॉक्स ने 8 जून 1989 को बैश संस्करण .99 को बीटा के रूप में प्रस्तावित किया,[3]और 1992 से [19] 1994 के मध्य,[20] जब उन्हें एफएसएफ से हटा दिया गया, तब तक वे प्राथमिक अनुरक्षक बने रहे।[21] तब उनका उत्तरदायित्व दूसरे शुरुआती योगदानकर्ता चेत रमी को दी गई।[22][23][24]

उस समय से, बैश लिनक्स के उपयोगकर्ताओं के बीच अब तक का सबसे लोकप्रिय शेल बन गया है, जो ऑपरेटिंग प्रणाली के विभिन्न वितरणों पर डिफ़ॉल्ट इंटरैक्टिव शेल बन गया है।[25][26] (चूँकि अल्मक्विस्ट शेल डिफ़ॉल्ट स्क्रिप्टिंग शेल हो सकता है) और एप्पल के मैकओएस पर अक्टूबर 2019 में मैकओएस कैटालिना से पहले प्रस्तावित हुआ।[27][28][4] बैश को माइक्रोसॉफ़्ट विंडोज़ में भी पोर्ट किया गया है और साइगविन और मिनजीडब्ल्यू (MinGW) के साथ वितरित किया गया है, डीजेजेपीपी परियोजना द्वारा डीओएस को, नोवेल नेटवेयर को, जीएनवी परियोजना द्वारा ओपन वीएमएस को,[29] अर्काओएस (ArcaOS) को,[30] और एंड्रॉइड को विभिन्न टर्मिनल अनुकरण अनुप्रयोगों के माध्यम से वितरित किया गया है।

सितंबर 2014 में, यूनिक्स/लिनक्स विशेषज्ञ स्टीफ़न चेज़लस ने,[31] कार्यक्रम में सुरक्षा बग का शोध किया। बग, जिसे पहली बार 24 सितंबर को प्रकट किया गया था, जिसका नाम शेलशॉक दिया गया था और इसे CVE-2014-6271, CVE-2014-6277 और CVE-2014-7169 संख्याओं को निर्दिष्ट किया गया था I बग को गंभीर माना गया था, क्योंकि बैश का उपयोग करने वाली कॉमन गेटवे इंटरफ़ेस स्क्रिप्ट्स असुरक्षित हो सकती हैं, जिससे मनमाने कोड निष्पादन को सक्षम किया जा सकता है। बग इस बात से संबंधित था कि कैसे बैश पर्यावरण चर के माध्यम से उप-शैल फ़ंक्शन में परिभाषाओं को को पास करता है।[32]


विशेषताएं

बैश कमांड प्रारूप बॉर्न शेल उत्तम समुच्चय है। बैश 2.05a के बाद से ब्रेस विस्तार, कमांड रेखा पूर्णता (प्रोग्रामयोग्य पूर्णता), बेसिक डिबगिंग और संकेत हैंडलिंग का उपयोग करके समर्थन करता हैI[33] [34][35] बैश बिना संशोधन के बॉर्न शेल स्क्रिप्ट के विशाल बहुमत को निष्पादित कर सकता है, बॉर्न शेल स्क्रिप्ट के अपवाद के साथ फ्रिंज प्रारूप व्यवहार में भिन्न-भिन्न व्याख्या की गई है, या नए बैश बिल्टिन से मेल खाते प्रणाली कमांड को चलाने का प्रयास किया जाता है, आदि। बैश कमांड प्रारूप में तत्पर किए गए विचार सम्मलित हैं। k शेल (ksh) और C शेल (csh) से जैसे कि कमांड रेखा संपादन, कमांड इतिहास (इतिहासआज्ञा),[36] निर्देशिका ढेर, $RANDOMतथा $ PPID चर, और पॉज़िक्स कमांड प्रतिस्थापन प्रारूप $(…)है

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

बैश के प्रारूप में बॉर्न शेल में कई एक्सटेंशन की कमी है। बैश बाहरी प्रक्रियाओं को उत्पन्न किए बिना पूर्णांक गणना (अंकगणितीय मूल्यांकन) कर सकता है। इस उद्देश्य के लिए यह ((…)) कमांड और $((…)) चर प्रारूप उपयोग करता है I इसका प्रारूप इनपुट/आउटपुट पुनर्निर्देशन को सरल करता है। उदाहरण के लिए, यह &> संचालक का उपयोग करके एक ही समय में मानक आउटपुट और मानक त्रुटि को पुनर्निर्देशित कर सकता है। यह बॉर्न शेल समकक्ष कमांड > फ़ाइल 2>&1 ''की तुलना में लिखना सरल है''। बैश <(command) तथा >(command) प्रारूप का उपयोग करके प्रक्रिया प्रतिस्थापन का समर्थन करता है I जो कमांड के आउटपुट (या इनपुट) को प्रतिस्थापित करता है जहां सामान्यतः फ़ाइल नाम का उपयोग किया जाता है। (यह उन प्रणालियों पर / proc / fd / अनाम पाइपों के माध्यम से कार्यान्वित किया जाता है जो इसका समर्थन करते हैं, या जहां आवश्यक हो अस्थायी नामित पाइपों के माध्यम से)।

'फ़ंक्शन' कीवर्ड का उपयोग करते समय, बैश फ़ंक्शन घोषणाएँ बॉर्न/कोर्न/पॉज़िक्स स्क्रिप्ट के साथ संगत नहीं होती हैं ('फ़ंक्शन' का उपयोग करते समय कोर्न शेल में वही समस्या होती है), लेकिन बैश उसी फ़ंक्शन घोषणा प्रारूप को बॉर्न और कोर्न शेल के रूप में स्वीकार करता है, और पॉज़िक्स-अनुरूप है। इन अन्य अंतरों के कारण, बॉर्न या कोर्न शेल दुभाषियों के अंतर्गत बैश शेल स्क्रिप्ट शायद ही कभी चलाने योग्य होते हैं, जब तक कि निश्चयपूर्वक उस अनुकूलता को ध्यान में रखकर नहीं लिखा जाता है, जो लिनक्स के अधिक व्यापक होने के कारण कम उपयोग होता जा रहा है। लेकिन पॉज़िक्स मोड में, बैश पॉज़िक्स के साथ अधिक साधारण दृष्टि से अनुरूप है।[38]

बैश दस्तावेजों का समर्थन करता है। चूंकि संस्करण 2.05b बैश <<< ऑपरेटर का उपयोग करके यहां स्ट्रिंग से मानक इनपुट को पुनर्निर्देशित कर सकता है ।

बैश 3.0 पर्ल के स्मरण प्रारूप का उपयोग करके इस प्रक्रिया में नियमित अभिव्यक्ति संघ का समर्थन करता है।[39]

फरवरी 2009 में,[40] बैश 4.0 ने साहचर्य सरणियों के लिए समर्थन दर्शाया।[41]एडब्लूके या टीसीएल के समान प्रकार से साहचर्य सरणी सूचकांक हैं।[42] इनका उपयोग बहुआयामी सरणियों का अनुकरण करने के लिए किया जा सकता है। बैश 4 भी अपने लाइसेंस को जीपीएल -3.0-या-बाद में बदल देता है; कुछ उपयोगकर्ताओं को इस लाइसेंस परिवर्तन पर संदेह है कि क्यों मैक ओ एस पुराने संस्करणों का उपयोग करना जारी रखता है।[43] एप्पल ने अंततः 2019 में मैक ओ एस कैटालिना प्रस्तावित के साथ डिफ़ॉल्ट शेल के रूप में अपने ऑपरेटिंग प्रणाली में बैश का उपयोग करना बंद कर दिया।[9]

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

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

$ echo a{p,c,d,b}e
ape ace ade abe
$ echo {a,b,c}{d,e,f}
ad ae af bd be bf cd ce cf

उपयोगकर्ताओं को पोर्टेबल शेल स्क्रिप्ट में ब्रेस विस्तार का उपयोग नहीं करना चाहिए, क्योंकि बॉर्न शेल समान आउटपुट नहीं देता है।

$ # A traditional shell does not produce the same output
$ /bin/sh -c 'echo a{p,c,d,b}e'
a{p,c,d,b}e

जब ब्रेस विस्तार को वाइल्डकार्ड के साथ जोड़ दिया जाता है, तो पहले ब्रेसिज़ का विस्तार किया जाता है, और फिर परिणामी वाइल्डकार्ड को सामान्य रूप से प्रतिस्थापित किया जाता है। इसलिए, वर्तमान निर्देशिका में JPEG और PNG छवियों की सूची निम्नलिखित का उपयोग करके प्राप्त की जा सकती है:

ls *.{jpg,jpeg,png} # expands to *.jpg *.jpeg *.png - after which,

                     # the wildcards are processed

echo *.{png,jp{e,}g} # echo just show the expansions -

                   # and braces in braces are possible.


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

ls *.{jpg,jpeg,png}    # expands to *.jpg *.jpeg *.png - after which,
                       # the wildcards are processed
echo *.{png,jp{e,}g}   # echo just show the expansions -
                       # and braces in braces are possible.

जब ब्रेस विस्तार को चर विस्तार (A.K.A. पैरामीटर विस्तार और पैरामीटर प्रतिस्थापन) के साथ जोड़ा जाता है, तो चर विस्तार ब्रेस विस्तार के बाद किया जाता है, जो कुछ विषयो में eval बनाने में निर्मित उपयोग की आवश्यकता हो सकती है जो, इस प्रकार:

$ echo {1..10}
1 2 3 4 5 6 7 8 9 10
$ echo {01..10}
01 02 03 04 05 06 07 08 09 10
$ echo file{1..4}.txt
file1.txt file2.txt file3.txt file4.txt
$ echo {a..e}
a b c d e
$ echo {1..10..3}
1 4 7 10
$ echo {a..j..3}
a d g j

जब ब्रेस विस्तार को चर विस्तार (A.K.A पैरामीटर एक्सपेंशन और पैरामीटर सब्स्टिटूशन) के साथ जोड़ दिया जाता है, तो चर विस्तार ब्रेस एक्सपेंशन के बाद किया जाता है, जो कुछ मामलों में eval built-in, thus:,

$ start=1; end=10
$ echo {$start..$end}  # fails to expand due to the evaluation order
{1..10}
$ eval echo {$start..$end} # variable expansion occurs then resulting string is evaluated
1 2 3 4 5 6 7 8 9 10

स्टार्टअप स्क्रिप्ट

जब बैश प्रारम्भ होता है, तो विभिन्न प्रकार की डॉट फाइलों में कमांड निष्पादित करता है। शेल स्क्रिप्ट के विपरीत, डॉट फ़ाइलों में सामान्यतः निष्पादन अनुमति सक्षम नहीं होती है और न ही दुभाषिया निर्देश जैसे !/bin/bash.

परंपरा-संगत बैश स्टार्टअप उदाहरण

नीचे दिया गया स्केलेटन~/.bash_profile बॉर्न शेल के साथ संगत है और ~/.bashrc , ~/.bash_loginके लिए csh के समान शब्दार्थ देता है तथा [ -r filename ] && cmd e> एक शॉर्ट सर्किट मूल्यांकन है जो परीक्षण करता है कि क्या फ़ाइल नाम सम्मलित है और पढ़ने योग्य है,&& यदि यह नही तो इसके बाद के भाग को छोड़ दें ।

[ -r ~/.profile ] && . ~/.profile             # set up environment, once, Bourne-sh syntax only
if [ -n "$PS1" ] ; then                       # are we interactive?
   [ -r ~/.bashrc     ] && . ~/.bashrc        # tty/prompt/function setup for interactive shells
   [ -r ~/.bash_login ] && . ~/.bash_login    # any at-login tasks for login shell only
fi                                            # End of "if" block

बैश स्टार्टअप में ऑपरेटिंग सिस्टम की समस्याएँ

यूनिक्स और लिनक्स के कुछ संस्करणों में बैश प्रणाली स्टार्टअप स्क्रिप्ट होती है सामान्यतः /etc निर्देशिका के अंतर्गत। बैश इन्हें अपने मानक आरंभीकरण के भाग के रूप में रखता है, लेकिन अन्य स्टार्टअप फ़ाइलें उन्हें प्रलेखित बैश स्टार्टअप अनुक्रम की तुलना में भिन्न पढ़ा जा सकता है। रूट उपयोक्ता की फ़ाइलों में डिफ़ॉल्ट सामग्री में भी समस्याएँ हो सकती हैं, साथ ही स्केलेटन फ़ाइलें जो सिस्टम सेटअप पर नए उपयोगकर्ता खातों को प्रदान करता है। X विंडो प्रणाली को प्रक्षेपण करने वाली स्टार्टअप स्क्रिप्ट्स विंडो प्रबंधक को प्रक्षेपण करने से पहले उपयोगकर्ता-पर्यावरण चर स्थापित करने के प्रयास में उपयोगकर्ता बैश स्टार्टअप स्क्रिप्ट के साथ आश्चर्यजनक चीजें भी कर सकते हैं। इन विषयों को प्रायः ~/.xsession या ~/.xprofile फ़ाइल का उपयोग करके ~/.profile पढ़ने के लिए संबोधित किया जा सकता है - जो पर्यावरण चर प्रदान करता है जो बैश शेल विंडो को विंडो मैनेजर की अपेक्षा से उत्पन्न करता है, जैसे किएक्सटर्म(xterm) या गनोम टर्मिनल I

पोर्टेबिलिटी

--posix विकल्प के साथ आमंत्रित करना या किसी स्क्रिप्ट में set -o posix बताते हुए बैश को POSIX 1003.2 मानक के अति निकट के अनुरूप है।[44] पोर्टेबिलिटी के लिए बनाई गई बैश शेल स्क्रिप्ट को कम से कम पॉज़िक्स शेल मानक को ध्यान में रखना चाहिए। पॉज़िक्स में नहीं मिली कुछ बैश विशेषताएँ हैं:[44][45]

  • कुछ विस्तारित इनवोकेशन विकल्प
  • ब्रेस विस्तार
  • सरणियाँ और साहचर्य सरणियाँ
  • डबल कोष्ठक[[ ... ]] विस्तारित परीक्षण निर्माण और इसका रेगेक्स संघ
  • डबल कोष्ठक अंकगणित-मूल्यांकन निर्माण (केवल (( ... )); $(( ... )) पॉज़िक्स है)
  • पैरामीटर विस्तार में कुछ स्ट्रिंग-परिवर्तन ऑपरेशन
  • स्थानीय सीमा वाले चर के लिए
  • प्रक्रिया प्रतिस्थापन
  • बैश-विशिष्ट बिल्टिन
  • कोप्रोसेस
  • $EPOCHSECONDS and $EPOCHREALTIME चर [46]

यदि कोड का टुकड़ा ऐसी सुविधा का उपयोग करता है, तो इसे बैशिज़्म कहा जाता है - पोर्टेबल उपयोग के लिए समस्या। डेबियन का checkbashisms और विदर होलेन के shellcheck इसका उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी स्क्रिप्ट में यह भाग सम्मलित नहीं हैं।[47][48] सूची वास्तविक लक्ष्य शेल के आधार पर भिन्न होती है: डेबियन की नीति उनकी लिपियों में कुछ एक्सटेंशन की अनुमति देती है (जैसा कि वे अल्मक्विस्ट शेल डैश शेल में हैं),[45]जबकि पूर्व पॉज़िक्स बॉर्न शेल का समर्थन करने का निश्चय रखने वाले स्क्रिप्ट है, जैसे कि autoconf की configure, और भी अधिक हैं उन सुविधाओं में सीमित है जिनका वे उपयोग कर सकते हैं।[49]

कीबोर्ड शॉर्टकट

बैश डिफ़ॉल्ट इमैक(Emacs) कुंजी बाइंडिंग का उपयोग करके कमांड लाइन संपादन के लिए कीबोर्ड शॉर्टकट प्रदान करने के लिए रीडलाइन का उपयोग करता है। vi बाइंडिंग को set -o vi को चलाकर सक्षम किया जा सकता है .[50]

प्रक्रिया प्रबंधन

बैश शेल में कमांड के निष्पादन के दो उपाय हैं: बैच, और समवर्ती मोड।

बैच में कमांड निष्पादित करने के लिए (अर्थात, अनुक्रम में) उन्हें वर्ण ";", या भिन्न-भिन्न पंक्तियों से भिन्न किया जाना चाहिए;

command1; command2

इस उदाहरण में, जब command1 समाप्त हो जाता है, तो command2 निष्पादित हो जाता है।

निष्पादन कमांड के अंत में (प्रतीक) का उपयोग करके command1 की पृष्ठभूमि का निष्पादन हो सकता है, और प्रक्रिया को पृष्ठभूमि में निष्पादित किया जाएगा जो शेल पर तुरंत नियंत्रण लौटाता है और कमांड के निरंतर निष्पादन की अनुमति देता है।

command1 &

या दो command1 और command2 का समवर्ती निष्पादन करने के लिए, उन्हें निम्नलिखित उपाय से बैश शेल में निष्पादित किया जाना चाहिए:

command1 & command2

इस विषय में command1 को पृष्ठभूमि और प्रतीक में निष्पादित किया जाता है, तथा उस शेल पर नियंत्रण लौटाता है जो अग्रभूमि में command2 को निष्पादित करता है।

इस प्रक्रिया को रोका जा सकता है और जब प्रक्रिया अग्रभूमि में चल रही हो तो Ctrl+z लिख करके बैश पर नियंत्रण लौटाया जा सकता है। [51]

सभी प्रक्रियाओं की सूची, दोनों पृष्ठभूमि में रुकी हुई, jobsको चलाकर प्राप्त की जा सकती है :

$ jobs [1]- Running command1 & [2]+ Stopped command2 </syntaxhighlight>

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

विभिन्न आदेशों का उपयोग करके प्रक्रिया की स्थिति को परिवर्तित किया जा सकता हैI fg कमांड प्रक्रिया को अग्रभूमि में लाता है, जबकि bg पृष्ठभूमि में चल रही रुकी हुई प्रक्रिया को सेट करता है।कार्य करने की प्रक्रिया को निर्दिष्ट करने के लिए bg तथाfg अपने पहले तर्क के रूप में जॉब आईडी ले सकते हैं।jobsआउटपुट में प्लस चिह्न द्वारा पहचाने जाने वाली डिफ़ॉल्ट प्रक्रिया का उपयोग करते हैं। kill कमांड का उपयोग किसी प्रक्रिया को समय से पहले संकेत भेजकर समाप्त करने के लिए किया जा सकता है I जॉब आईडी को प्रतिशत चिह्न के बाद निर्दिष्ट किया जाना चाहिए:

kill %1

सशर्त निष्पादन

बैश सशर्त निष्पादन कमांड विभाजक की आपूर्ति करता है जो पूर्ववर्ती कमांड द्वारा निर्धारित एग्जिट कोड पर आकस्मिक कमांड का निष्पादन करता है। उदाहरण के लिए:

cd "$SOMEWHERE" && ./do_something || echo "An error occurred" >&2

जहां ./do_something केवल तभी निष्पादित होता है जब cd (निर्देशिका बदलें) कमांड सफल होता है (शून्य की निकास स्थिति लौटाता है) और echo कमांड केवल तभी निष्पादित किया जाएगा जब cd या ./do_something कमांड त्रुटि लौटाता है (गैर-शून्य) बाहर निकलने की स्थिति)।

सभी आदेशों के लिए निकास स्थिति को विशेष चर $? में संग्रहीत किया जाता हैI बैश भी समर्थन करता है if ...;then ...;else ...;fi तथा case $VARIABLE in $pattern)...;;$other_pattern)...;; esac सशर्त कमांड मूल्यांकन के रूप।

बग रिपोर्टिंग

बैशबग नामक बाहरी कमांड बैश शेल बग की रिपोर्ट करता है। जब आदेश लागू किया जाता है, तो यह उपयोगकर्ता के डिफ़ॉल्ट संपादक को भरने के लिए फॉर्म के साथ लाता हैI फॉर्म को बैश अनुरक्षकों (या वैकल्पिक रूप से अन्य ईमेल पतों ) पर भेज दिया जाता है।[52][53]

प्रोग्राम करने योग्य पूर्णता

बैश बिल्ट-इन complete, compopt, तथा compgen निर्दिष्ट के माध्यम से प्रोग्रामेबल कमांड-लाइन पूर्णता का समर्थन करता है ।[54] यह सुविधा 2000 में प्रस्तावित 2.04 के बीटा संस्करण के बाद से उपलब्ध है।[55][56] ये कमांड्स (अर्थात इंस्टॉल किए गए प्रोग्राम), फ़ंक्शंस, चरों और फाइलनामों के लिए जटिल और बुद्धिमान पूर्णता विनिर्देश को सक्षम करते हैं।[57]

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

प्रस्तावित इतिहास

संस्करण विमोचन तिथि जारी नोट्‍स
बैश-5.2 2022-09-26 समाचार
बैश-5.1 2020-12-07 जीथब संस्करण इतिहास समाचार [41]
बैश-5.0 2019-01-07 [58][59][60]
बैश-5.0-rc1 2018-12-20
बैश-5.0-बीटा2 2018-11-28
बैश-5.0-बीटा 2018-09-17
बैश-5.0-अल्फा 2018-05-22
बैश-4.4 2016-09-15 जीथब संस्करण इतिहास समाचार v4.4
बैश-4.4-rc2 2016-08-22
बैश-4.4-rc1 2016-02-24
बैश-4.4-बीटा2 2016-07-11
बैश-4.4-बीटा 2015-10-12
बैश-4.3 2014-02-26
बैश-4.2 2011-02-13
बैश-4.1 2009-12-31
बैश-4.0 2009-02-20
बैश-4.0-rc1 2009-01-12
बैश-3.2 2006-10-11
बैश-3.1 2005-12-08
बैश-3.0 2004-08-03
बैश-2.05b 2002-07-17
बैश-2.05a 2001-11-16
बैश-2.05 2001-04-09
बैश-2.04 2000-03-21
बैश-2.03 1999-02-19
बैश-2.02 1998-04-18
बैश-2.01 1997-06-05
बैश-2.0 1996-12-31

यह भी देखें

संदर्भ

  1. 1.0 1.1 1.2 Richard Stallman (forwarded with comments by Chet Ramey) (February 10, 1988). "जीएनयू + बीएसडी = ?". Newsgroupcomp.unix.questions. Usenet: 2362@mandrill.CWRU.Edu. Archived from the original on December 28, 2021. Retrieved December 28, 2021. डेढ़ साल के लिए, जीएनयू खोल "बस पूरा हो गया" था। लेखक ने जो किया था उसे पूरा करने के लिए बार-बार वादे किए, और उन्हें कभी नहीं रखा। अंत में मुझे विश्वास नहीं हो रहा था कि वह कभी भी कुछ भी प्रदान करेगा। इसलिए फाउंडेशन के स्टाफ सदस्य ब्रायन फॉक्स अब बॉर्न शेल की नकल लागू कर रहे हैं।
  2. Hamilton, Naomi (May 30, 2008), "The A-Z of Programming Languages: BASH/Bourne-Again Shell", Computerworld: 2, archived from the original on July 6, 2011, retrieved March 21, 2011, When Richard Stallman decided to create a full replacement for the then-encumbered Unix systems, he knew that he would eventually have to have replacements for all of the common utilities, especially the standard shell, and those replacements would have to have acceptable licensing.
  3. 3.0 3.1 Brian Fox (forwarded by Leonard H. Tower Jr.) (June 8, 1989). "बैश बीटा रिलीज़ में है!". Newsgroupgnu.announce. Archived from the original on May 4, 2013. Retrieved October 28, 2010.
  4. 4.0 4.1 Warren, Tom (June 4, 2019). "Apple macOS Catalina में डिफ़ॉल्ट शेल के रूप में बैश को zsh से बदल देता है". The Verge. Archived from the original on June 10, 2019. Retrieved June 13, 2019.
  5. Torvalds, Linus Benedict (August 1991). "like.the.minis". Retrieved 2009-09-06. मैंने वर्तमान में बैश (1.08) और जीसीसी (1.40) को पोर्ट किया है, और चीजें काम करने लगती हैं।
  6. "विंडोज 10 पर बैश शेल कमांड-लाइन टूल कैसे इंस्टॉल करें". September 28, 2016. Archived from the original on November 20, 2016. Retrieved November 20, 2016.
  7. Hoffman, Chris. "विंडोज 11 पर लिनक्स के लिए विंडोज सबसिस्टम कैसे स्थापित करें". How-To Geek (in English). Retrieved 2022-10-12.
  8. "उपयोगकर्ता पर्यावरण सुविधा परिवर्तन". Oracle. Archived from the original on June 12, 2018. Retrieved June 8, 2018.
  9. 9.0 9.1 Hughes, Matthew (2019-06-04). "MacOS कैटालिना बैश के बजाय Zsh का उपयोग क्यों करती है? लाइसेंसिंग". The Next Web (in English). Archived from the original on December 31, 2020. Retrieved 2021-01-12.
  10. "मुझे लगभग एक Linux संपादक और कंपाइलर मिल गया है". Dr. Dobb's. Archived from the original on March 2, 2021. Retrieved 2020-09-12.
  11. Richard Stallman (November 12, 2010). "About the GNU Project". Free Software Foundation. Archived from the original on April 24, 2011. Retrieved March 13, 2011. "Bourne Again Shell" is a play on the name Bourne Shell, which was the usual shell on Unix.
  12. Gattol, Markus (March 13, 2011), Bourne-again Shell, archived from the original on March 9, 2011, retrieved March 13, 2011, The name is a pun on the name of the Bourne shell (sh), an early and important Unix shell written by Stephen Bourne and distributed with Version 7 Unix circa 1978, and the concept of being "born again".
  13. Chazelas, Stephane (4 October 2014). "oss-sec मेलिंग सूची संग्रह". Seclists.org. Archived from the original on October 6, 2014. Retrieved 4 October 2014.
  14. Leyden, John (September 24, 2014). "पैच बैश नाउ: 'शेलशॉक' बग ब्लास्ट OS X, Linux सिस्टम वाइड ओपन". The Register. Archived from the original on October 16, 2014. Retrieved September 25, 2014.
  15. Perlroth, Nicole (September 25, 2014). "सुरक्षा विशेषज्ञ बैश में 'शेलशॉक' सॉफ्टवेयर बग के महत्वपूर्ण होने की अपेक्षा करते हैं". The New York Times. Archived from the original on April 5, 2019. Retrieved September 25, 2014.
  16. Seltzer, Larry (29 September 2014). "शेलशॉक हार्टब्लीड को महत्वहीन बना देता है". ZDNet. Archived from the original on May 14, 2016.
  17. Brian Fox (August 29, 1996), shell.c, Free Software Foundation, archived from the original on September 28, 2018, retrieved November 1, 2010, Birthdate: Sunday, January 10th, 1988. Initial author: Brian Fox
  18. Richard Stallman (October 3, 2010). "About the GNU Project". Free Software Foundation. Archived from the original on April 24, 2011. Retrieved March 21, 2011. Free Software Foundation employees have written and maintained a number of GNU software packages. Two notable ones are the C library and the shell. … We funded development of these programs because the GNU Project was not just about tools or a development environment. Our goal was a complete operating system, and these programs were needed for that goal.
  19. len (g...@prep.ai.mit.edu) (April 20, 1993). "जनवरी 1993 जीएनयू का बुलेटिन". Newsgroupgnu.announce. Usenet: gnusenet930421bulletin@prep.ai.mit.edu. Archived from the original on March 2, 2021. Retrieved October 28, 2010.
  20. Ramey, Chet (August 1, 1994). "बैश - GNU शेल (प्रतिबिंब और सीखे गए सबक)". Linux Journal. Archived from the original on December 5, 2008. Retrieved November 13, 2008.
  21. Chet Ramey (October 31, 2010), Dates in your Computerworld interview, archived from the original on July 20, 2012, retrieved October 31, 2010
  22. Chet Ramey (June 12, 1989). "बैश 0.99 फिक्स और सुधार". Newsgroupgnu.bash.bug. Archived from the original on November 10, 2012. Retrieved November 1, 2010.
  23. Chet Ramey (July 24, 1989). "कुछ बैश-1.02 फिक्स". Newsgroupgnu.bash.bug. Archived from the original on November 10, 2012. Retrieved October 30, 2010.
  24. Brian Fox (March 2, 1990). "बैश 1.05 की उपलब्धता". Newsgroupgnu.bash.bug. Archived from the original on November 10, 2012. Retrieved October 30, 2010.
  25. Bresnahan, Christine; Blum, Richard (April 2015). CompTIA Linux+ Linux प्रोफेशनल इंस्टीट्यूट स्टडी गाइड द्वारा संचालित: परीक्षा LX0-103 और परीक्षा LX0-104 (3rd ed.). John Wiley & Sons, Inc. p. 5. ISBN 978-1-119-02122-3. Archived from the original on March 2, 2021. Retrieved June 6, 2016. लिनक्स में, अधिकांश उपयोगकर्ता बैश चलाते हैं क्योंकि यह सबसे लोकप्रिय शेल है।
  26. Danesh, Arman; Jang, Michael (February 2006). मास्टरिंग लिनक्स. John Wiley & Sons, Inc. p. 363. ISBN 978-0-7821-5277-7. Archived from the original on March 2, 2021. Retrieved June 6, 2016. बॉर्न अगेन शेल (बैश) लिनक्स वितरण के साथ स्थापित सबसे आम शेल है।
  27. Foster-Johnson, Eric; Welch, John C.; Anderson, Micah (April 2005). शेल स्क्रिप्टिंग की शुरुआत. John Wiley & Sons, Inc. p. 6. ISBN 978-0-7645-9791-6. Archived from the original on March 2, 2021. Retrieved June 6, 2016. बैश अब तक का सबसे लोकप्रिय शेल है और Linux और Mac OSX सिस्टम पर डिफ़ॉल्ट शेल बनाता है।
  28. "अपने Mac पर zsh को डिफ़ॉल्ट शेल के रूप में उपयोग करें - Apple सहायता". Archived from the original on December 2, 2019. Retrieved 1 July 2019.
  29. "नए जीएनवी पैकेजों को स्थापित करना". Archived from the original on October 3, 2020. Retrieved 2020-09-04.
  30. "संगतता सबसिस्टम". Archived from the original on September 23, 2020. Retrieved 2020-09-04.
  31. Juliana, Cino (10 June 2017). "Linux बैश निकास स्थिति और बैश में निकास स्थिति कैसे सेट करें - Techolac". Archived from the original on June 21, 2019. Retrieved 21 June 2019.
  32. Huzaifa Sidhpurwala (2014-09-24). "बैश विशेष रूप से तैयार किए गए पर्यावरण चर कोड इंजेक्शन हमले". Red Hat. Archived from the original on September 25, 2014. Retrieved September 25, 2014.
  33. "बैश संदर्भ मैनुअल". www.gnu.org. Archived from the original on March 15, 2018. Retrieved March 27, 2018.
  34. "बैश परिवर्तन [बैश हैकर्स विकी (DEV 20200708T2203)]". wiki-dev.bash-hackers.org. Archived from the original on September 23, 2019. Retrieved September 23, 2019.
  35. "डिबगिंग बैश स्क्रिप्ट". tldp.org. Archived from the original on November 4, 2018. Retrieved November 20, 2018.
  36. "बैश संदर्भ मैनुअल". www.gnu.org. Archived from the original on September 15, 2019. Retrieved September 15, 2019.
  37. "बैश 2.x/3.x के साथ अधिक उत्पादक रूप से कार्य करना". www.caliban.org. Archived from the original on June 29, 2018. Retrieved June 21, 2018.
  38. "6.11 Bash POSIX Mode", The GNU Bash Reference Manual, for Bash, Version 4.1, December 23, 2009, archived from the original on December 3, 2010, retrieved October 26, 2010
  39. "उन्नत बैश-स्क्रिप्टिंग गाइड". www.tldp.org. Section 37.2 (Bash, version 3). Archived from the original on May 5, 2017. Retrieved 2017-03-05.
  40. "बैश, संस्करण 4". tldp.org. Archived from the original on July 1, 2018. Retrieved June 25, 2018.
  41. 41.0 41.1 Cite error: Invalid <ref> tag; no text was provided for refs named bashfaq061
  42. "Arrays (बैश संदर्भ मैनुअल)". www.gnu.org. Archived from the original on July 11, 2018. Retrieved July 4, 2018.
  43. "macos - OSX पर बैश को संस्करण 4.0 में अपडेट करें". Ask Different. Archived from the original on June 25, 2018. Retrieved June 25, 2018.
  44. 44.0 44.1 Mendel Cooper. "पोर्टेबिलिटी मुद्दे". The Linux Documentation Project. ibiblio.org. Archived from the original on January 27, 2012. Retrieved January 26, 2012.
  45. 45.0 45.1 "10. फाइलें". Debian Policy Manual v4.5.0.2. Archived from the original on May 12, 2020. Retrieved May 11, 2020.
  46. "लिनक्स, मैकओएस और बैश में दिनांक और समय को कैसे प्रारूपित करें?". Shell Tips!. Archived from the original on June 3, 2020. Retrieved June 3, 2020.
  47. checkbashisms(1) – Linux General Commands Manual
  48. shellcheck(1) – Linux General Commands Manual
  49. "पोर्टेबल खोल". Autoconf. Archived from the original on March 2, 2021. Retrieved 20 January 2020.
  50. "बैश सहायता - एक बैश ट्यूटोरियल". Hypexr.org. October 5, 2012. Archived from the original on March 2, 2021. Retrieved July 21, 2013.
  51. "बैश संदर्भ मैनुअल". www.gnu.org. Archived from the original on March 15, 2018. Retrieved March 27, 2018.
  52. bashbug(1) Archived October 2, 2018, at the Wayback Machine, die.net
  53. "Linux / Unix Command: bashbug" Archived October 6, 2014, at the Wayback Machine, apple.com
  54. "बैश संदर्भ मैनुअल". tiswww.case.edu.
  55. "बैश 2.x/3.x के साथ अधिक उत्पादक रूप से कार्य करना". www.caliban.org. Archived from the original on June 29, 2018. Retrieved June 21, 2018.
  56. "/gnu/bash का अनुक्रमणिका". ftp.swin.edu.au. Archived from the original on March 8, 2020. Retrieved September 15, 2019.
  57. "प्रोग्राम करने योग्य पूर्णता का परिचय". tldp.org. Retrieved 2022-01-21.
  58. "github version history NEWS v5.0". GitHub (in English). Archived from the original on May 4, 2022. Retrieved 2021-03-01.
  59. "Bash changes [Bash Hackers Wiki]". Archived from the original on March 18, 2020. Retrieved November 25, 2019.
  60. "Bash-5.0 release available". lists.gnu.org. Archived from the original on November 8, 2020. Retrieved 2021-03-01.


बाहरी संबंध