बैश (यूनिक्स शेल)
File:ग्नू-बैश-लोगो.एसवीजी | |
File:बैश स्क्रीनशॉट.png | |
Original author(s) | ब्रायन फॉक्स |
---|---|
Developer(s) | Chet Ramey[1][2] |
Stable release | Script error: The module returned a nil value. It is supposed to return an export table.
/ Script error: The module returned a nil value. It is supposed to return an export table. |
Preview release | Script error: The module returned a nil value. It is supposed to return an export table.
/ Script error: The module returned a nil value. It is supposed to return an export table. |
Written in | सी |
Operating system |
|
Platform | जीएनयू |
Available in | बहुभाषी (गेटटेक्स्ट) |
Type | यूनिक्स शेल, कमांड भाषा |
License | Since 4.0: GPL-3.0-or-later[6] 1.11? to 3.2: GPL-2.0-or-later[7] 0.99? to 1.05?: GPL-1.0-or-later[8][9][10] |
Website | gnu.org/software/bash |
बैश एक यूनिक्स खोल और कमांड भाषा है जिसे ब्रायन फॉक्स (कंप्यूटर प्रोग्रामर) द्वारा जीएनयू परियोजना के लिए बॉर्न शेल के लिए मुफ्त सॉफ्टवेयर प्रतिस्थापन के रूप में लिखा गया है।[11][12] पहली बार 1989 में रिलीज़ हुई,[13] इसे अधिकांश Linux वितरणों के लिए डिफ़ॉल्ट लॉग इन करें शेल के रूप में उपयोग किया गया है।[14]बैश जीएनयू संकलक संग्रह के साथ लिनस टोरवाल्ड्स को लिनक्स में पोर्ट किए गए पहले कार्यक्रमों में से एक था।[15] लिनक्स के लिए विंडोज सबसिस्टम के माध्यम से विंडोज 10 और विंडोज़ 11 के लिए एक संस्करण भी उपलब्ध है।[16][17] यह Solaris (ऑपरेटिंग सिस्टम) 11 में डिफ़ॉल्ट उपयोगकर्ता शेल भी है।[18] बैश MacOS के 10.3 संस्करणों में डिफ़ॉल्ट शेल भी था (मूल रूप से, डिफ़ॉल्ट शेल tcsh था) macOS Catalina की 2019 रिलीज़ के लिए, जिसने डिफ़ॉल्ट शेल को zsh में बदल दिया, हालाँकि बैश एक वैकल्पिक शेल के रूप में उपलब्ध है।[19] बैश एक कमांड-लाइन दुभाषिया है जो आमतौर पर एक टर्मिनल एमुलेटर में चलता है जहां उपयोगकर्ता टाइप कमांड करता है जो कार्रवाई का कारण बनता है। बैश फ़ाइल से कमांड को पढ़ और निष्पादित भी कर सकता है, जिसे खोल स्क्रिप्ट कहा जाता है। अधिकांश यूनिक्स शैलों की तरह, यह फ़ाइल नाम ग्लोब (प्रोग्रामिंग) (वाइल्डकार्ड मिलान), पाइपलाइन (यूनिक्स) का समर्थन करता है, यहाँ दस्तावेज़, कमांड प्रतिस्थापन, चर (प्रोग्रामिंग), और सशर्त (प्रोग्रामिंग) के लिए नियंत्रण प्रवाह | स्थिति-परीक्षण और यहाँ तक कीरावृत्ति। कीवर्ड (कंप्यूटर प्रोग्रामिंग), सिंटेक्स (प्रोग्रामिंग भाषाएं), स्कोप (कंप्यूटर साइंस) # डायनेमिक स्कोपिंग वेरिएबल्स और भाषा की अन्य बुनियादी विशेषताएं (कंप्यूटर साइंस) सभी बॉर्न शेल से कॉपी की गई हैं। अन्य विशेषताएं, उदाहरण के लिए, C शेल#इतिहास, C शेल और के शेल से कॉपी किए गए हैं। बैश एक POSIX- संगत शेल है, लेकिन कई एक्सटेंशन के साथ।
शेल का नाम बॉर्न अगेन शेल के लिए एक परिवर्णी शब्द है, बॉर्न शेल के नाम पर एक श्लोक है जिसे यह प्रतिस्थापित करता है[20] और फिर से जन्म लेने की धारणा।[21][22] संस्करण 1.03 (अगस्त 1989) से बैश में एक सुरक्षा बग,[23] डब्ड शेलशॉक (सॉफ्टवेयर बग), सितंबर 2014 की शुरुआत में खोजा गया था और जल्दी से इंटरनेट पर हमले (कंप्यूटिंग) की एक श्रृंखला का नेतृत्व किया।[24][25][26] बग की पहचान होने के तुरंत बाद बग को ठीक करने के लिए पैच उपलब्ध करा दिए गए थे।
इतिहास
ब्रायन फॉक्स (कंप्यूटर प्रोग्रामर) ने 10 जनवरी 1988 को कंप्यूटर प्रोग्रामिंग बैश शुरू किया,[27] रिचर्ड स्टालमैन के एक पूर्व डेवलपर द्वारा की जा रही प्रगति की कमी से असंतुष्ट होने के बाद।[11]स्टॉलमैन और फ्री सॉफ्टवेयर फाउंडेशन (FSF) ने एक फ्री शेल पर विचार किया जो मौजूदा शेल स्क्रिप्ट को BSD और GNU कोड से निर्मित पूरी तरह से मुक्त सिस्टम के लिए रणनीतिक रूप से चला सकता है कि यह उन कुछ परियोजनाओं में से एक था जिसे उन्होंने खुद वित्त पोषित किया था, जिसमें फॉक्स ने काम किया था। एफएसएफ का एक कर्मचारी।[11][28] फ़ॉक्स ने बैश को बीटा संस्करण .99 के रूप में 8 जून 1989 को रिलीज़ किया,[13]और 1992 के मध्य तक कुछ समय तक प्राथमिक अनुरक्षक बने रहे[29] और 1994 के मध्य में,[30] जब उन्हें एफएसएफ से हटा दिया गया[31] और उनकी जिम्मेदारी दूसरे शुरुआती योगदानकर्ता चेत रमी को दी गई।[32][33][34] तब से, बैश लिनक्स के उपयोगकर्ताओं के बीच अब तक का सबसे लोकप्रिय शेल बन गया है, जो उस ऑपरेटिंग सिस्टम के विभिन्न वितरणों पर डिफ़ॉल्ट इंटरैक्टिव शेल बन गया है।[35][36] (हालाँकि Almquist शेल डिफ़ॉल्ट स्क्रिप्टिंग शेल हो सकता है) और Apple के macOS पर अक्टूबर 2019 में MacOS Catalina से पहले रिलीज़ हुआ।[37][38][14] बैश को माइक्रोसॉफ़्ट विंडोज़ में भी पोर्ट किया गया है और साइगविन और मिनजीडब्ल्यू के साथ वितरित किया गया है, डीजेजीपीपी प्रोजेक्ट द्वारा डीओएस को, नोवेल नेटवेयर को, जीएनवी प्रोजेक्ट द्वारा ओपन VMS को,[39] ArcaOS को,[40] और Android (ऑपरेटिंग सिस्टम) के लिए विभिन्न टर्मिनल अनुकरण अनुप्रयोगों के माध्यम से।
सितंबर 2014 में, एक यूनिक्स/लिनक्स विशेषज्ञ स्टीफ़न चेज़लस ने,[41] कार्यक्रम में एक सुरक्षा बग की खोज की। बग, जिसे पहली बार 24 सितंबर को प्रकट किया गया था, को शेलशॉक (सॉफ्टवेयर बग) नाम दिया गया था और संख्याओं को निर्दिष्ट किया गया था CVE-2014-6271, CVE-2014-6277 and CVE-2014-7169. बग को गंभीर माना गया था, क्योंकि बैश का उपयोग करने वाली कॉमन गेटवे इंटरफ़ेस स्क्रिप्ट्स असुरक्षित हो सकती हैं, जिससे मनमाने कोड निष्पादन को सक्षम किया जा सकता है। बग इस बात से संबंधित था कि कैसे बैश पर्यावरण चर के माध्यम से सबशेल्स में फ़ंक्शन परिभाषाओं को पास करता है।[42]
विशेषताएं
बैश कमांड (कंप्यूटिंग) सिंटैक्स बॉर्न शेल कमांड सिंटैक्स का सुपरसेट है। बैश ब्रेस विस्तार, कमांड लाइन पूर्णता (प्रोग्रामयोग्य पूर्णता) का समर्थन करता है,[43] बुनियादी डिबगिंग[44] और सिग्नल (आईपीसी) (का उपयोग कर trap
) बैश 2.05a के बाद से[45] अन्य सुविधाओं के बीच। बैश, बॉर्न शेल स्क्रिप्ट के विशाल बहुमत को बिना संशोधन के निष्पादित कर सकता है, बॉर्न शेल स्क्रिप्ट के अपवाद के साथ फ्रिंज सिंटैक्स व्यवहार में ठोकर खाई जाती है, जिसे बैश में अलग तरीके से व्याख्या की जाती है या एक नए बैश बिल्टिन से मेल खाते सिस्टम कमांड को चलाने का प्रयास किया जाता है, आदि। बैश कमांड सिंटैक्स में तैयार किए गए विचार शामिल हैं। KornShell (ksh) और C शेल (csh) से जैसे कमांड लाइन एडिटिंग, कमांड इतिहास (history
आज्ञा),[46] निर्देशिका ढेर, $RANDOM
तथा $PPID
चर, और POSIX कमांड प्रतिस्थापन सिंटैक्स $(…)
.
जब कोई उपयोगकर्ता इंटरएक्टिव कमांड-शेल के भीतर टैब कुंजी दबाता है, तो बैश स्वचालित रूप से कमांड लाइन पूर्णता का उपयोग करता है, क्योंकि बीटा संस्करण 2.04,[47] आंशिक रूप से टाइप किए गए प्रोग्राम नामों, फ़ाइलनामों और चर नामों से मिलान करने के लिए। बैश कमांड-लाइन पूर्णता प्रणाली बहुत लचीली और अनुकूलन योग्य है, और अक्सर ऐसे कार्यों के साथ पैक की जाती है जो विशिष्ट कार्यक्रमों और कार्यों के लिए तर्कों और फ़ाइलनामों को पूरा करते हैं।
बैश के सिंटैक्स में बॉर्न शेल में कई एक्सटेंशन की कमी है। बैश बाहरी प्रक्रियाओं को पैदा किए बिना पूर्णांक गणना (अंकगणितीय मूल्यांकन) कर सकता है। यह उपयोग करता है ((…))
कमान और $((…))
इस उद्देश्य के लिए चर सिंटैक्स। इसका वाक्य-विन्यास पुनर्निर्देशन (कंप्यूटिंग)|I/O पुनर्निर्देशन को सरल करता है। उदाहरण के लिए, यह एक ही समय में मानक आउटपुट (stdout) और मानक त्रुटि स्ट्रीम (stderr) को पुनर्निर्देशित कर सकता है &>
ऑपरेटर। यह बॉर्न शेल समकक्ष 'की तुलना में टाइप करना आसान है'command > file 2>&1
'। बैश का उपयोग करके प्रक्रिया प्रतिस्थापन का समर्थन करता है <(command)
तथा >(command)
सिंटैक्स, जो एक कमांड के आउटपुट (या इनपुट) को प्रतिस्थापित करता है जहां आमतौर पर फ़ाइल नाम का उपयोग किया जाता है। (यह उन प्रणालियों पर / proc / fd / अनाम पाइपों के माध्यम से कार्यान्वित किया जाता है जो इसका समर्थन करते हैं, या जहां आवश्यक हो अस्थायी नामित पाइपों के माध्यम से)।
'फ़ंक्शन' कीवर्ड का उपयोग करते समय, बैश फ़ंक्शन घोषणाएँ बॉर्न/कोर्न/पॉज़िक्स स्क्रिप्ट के साथ संगत नहीं होती हैं ('फ़ंक्शन' का उपयोग करते समय कोर्नशेल में वही समस्या होती है), लेकिन बैश उसी फ़ंक्शन डिक्लेरेशन सिंटैक्स को बॉर्न और कोर्न शेल के रूप में स्वीकार करता है, और पॉज़िक्स-अनुरूप है। इन और अन्य अंतरों के कारण, बॉर्न या कोर्न शेल दुभाषियों के तहत बैश शेल स्क्रिप्ट शायद ही कभी चलाने योग्य होते हैं, जब तक कि जानबूझकर उस अनुकूलता को ध्यान में रखकर नहीं लिखा जाता है, जो लिनक्स के अधिक व्यापक होने के कारण कम आम होता जा रहा है। लेकिन पॉज़िक्स मोड में, बैश पॉज़िक्स के साथ अधिक बारीकी से अनुरूप है।[48]
बैश यहां दस्तावेजों का समर्थन करता है। चूंकि संस्करण 2.05b बैश का उपयोग करके यहां स्ट्रिंग से स्टडिन (stdin) को पुनर्निर्देशित कर सकता है <<<
ऑपरेटर।
बैश 3.0 पर्ल की याद दिलाने वाले सिंटैक्स का उपयोग करके इन-प्रोसेस नियमित अभिव्यक्ति का समर्थन करता है।[49] फरवरी 2009 में,[50] बैश 4.0 ने साहचर्य सरणियों के लिए समर्थन पेश किया।[9]AWK या Tcl के समान एक तरह से साहचर्य सरणी सूचकांक तार हैं।[51] उनका उपयोग बहुआयामी सरणियों का अनुकरण करने के लिए किया जा सकता है। बैश 4 भी अपने लाइसेंस को GNU जनरल पब्लिक लाइसेंस#संस्करण 3|GPL-3.0-या-बाद में बदल देता है; कुछ उपयोगकर्ताओं को इस लाइसेंस परिवर्तन पर संदेह है कि क्यों MacOS पुराने संस्करणों का उपयोग करना जारी रखता है।[52] Apple ने अंततः 2019 में MacOS Catalina की रिलीज़ के साथ डिफ़ॉल्ट शेल के रूप में अपने ऑपरेटिंग सिस्टम में बैश का उपयोग करना बंद कर दिया।[19]
ब्रेस विस्तार
ब्रेस एक्सपेंशन, जिसे अल्टरनेशन भी कहा जाता है, C शेल से कॉपी किया गया फीचर है। यह वैकल्पिक संयोजनों का एक सेट उत्पन्न करता है। जेनरेट किए गए परिणामों को फाइलों के रूप में मौजूद नहीं होना चाहिए। प्रत्येक विस्तारित स्ट्रिंग के परिणाम क्रमबद्ध नहीं होते हैं और बाएं से दाएं क्रम को संरक्षित किया जाता है:
<वाक्यविन्यास लैंग = कंसोल> $ इको ए {पी, सी, डी, बी} ई एप इक्का अडे अबे $ इको {ए, बी, सी} {डी, ई, एफ} विज्ञापन एई एएफ बीडी बीएफ सीडी सीई सीएफ </वाक्यविन्यास हाइलाइट> उपयोगकर्ताओं को पोर्टेबल शेल स्क्रिप्ट में ब्रेस एक्सपेंशन का उपयोग नहीं करना चाहिए, क्योंकि बॉर्न शेल समान आउटपुट नहीं देता है।
<वाक्यविन्यास लैंग = कंसोल> $ # एक पारंपरिक खोल एक ही आउटपुट का उत्पादन नहीं करता है $ /bin/sh -c 'echo a{p,c,d,b}e' ए {पी, सी, डी, बी} ई </वाक्यविन्यास हाइलाइट>
जब ब्रेस विस्तार को वाइल्डकार्ड के साथ जोड़ दिया जाता है, तो पहले ब्रेसिज़ का विस्तार किया जाता है, और फिर परिणामी वाइल्डकार्ड को सामान्य रूप से प्रतिस्थापित किया जाता है। इसलिए, वर्तमान निर्देशिका में जेपीईजी और पीएनजी छवियों की एक सूची निम्नलिखित का उपयोग करके प्राप्त की जा सकती है:
<वाक्यविन्यास लैंग = बैश> एलएस *। {जेपीजी, जेपीईजी, पीएनजी} # expands to *.jpg *.jpeg *.png जिसके बाद,
# वाइल्डकार्ड संसाधित किए जाते हैं
इको *। {पीएनजी, जेपी {ई,} जी} # इको केवल विस्तार दिखाएं -
# और ब्रेसिज़ में ब्रेसिज़ संभव हैं।
</वाक्यविन्यास हाइलाइट>
प्रत्यावर्तन के अलावा, ब्रेस विस्तार का उपयोग दो पूर्णांकों या डबल डॉट्स द्वारा अलग किए गए वर्णों के बीच अनुक्रमिक श्रेणियों के लिए किया जा सकता है। बैश के नए संस्करण तीसरे पूर्णांक को वृद्धि निर्दिष्ट करने की अनुमति देते हैं।
<वाक्यविन्यास लैंग = कंसोल> $ प्रतिध्वनि {1..10} 1 2 3 4 5 6 7 8 9 10 $ इको {01..10} 01 02 03 04 05 06 07 08 09 10 $ गूंज फ़ाइल {1..4}.txt file1.txt file2.txt file3.txt file4.txt $ इको {ए..ई} ए बी सी डी ई $ प्रतिध्वनि {1..10..3} 1 4 7 10 $ प्रतिध्वनि {a..j..3} ए डी जी जे </वाक्यविन्यास हाइलाइट>
जब ब्रेस विस्तार को चर विस्तार (ए.के.ए. पैरामीटर विस्तार और पैरामीटर प्रतिस्थापन) के साथ जोड़ा जाता है, तो ब्रेस विस्तार के बाद चर विस्तार किया जाता है, जो कुछ मामलों में उपयोग की आवश्यकता हो सकती है eval
अंतर्निहित, इस प्रकार:
<वाक्यविन्यास लैंग = कंसोल> $ प्रारंभ = 1; अंत = 10 $ गूंज {$शुरू..$अंत} # मूल्यांकन आदेश के कारण विस्तार करने में विफल रहता है {1..10} $ eval प्रतिध्वनि {$शुरू..$अंत} # चर विस्तार तब होता है जिसके परिणामस्वरूप स्ट्रिंग का मूल्यांकन किया जाता है 1 2 3 4 5 6 7 8 9 10 </वाक्यविन्यास हाइलाइट>
स्टार्टअप स्क्रिप्ट
Template:Section howto
जब बैश शुरू होता है, तो यह विभिन्न प्रकार की हिडन फाइल और हिडन डायरेक्टरी # यूनिक्स और यूनिक्स जैसे वातावरण में कमांड निष्पादित करता है। बैश शेल स्क्रिप्ट के विपरीत, डॉट फ़ाइलों में आमतौर पर निष्पादन अनुमति सक्षम नहीं होती है और न ही दुभाषिया निर्देश #!/bin/bash
.
विरासत-संगत बैश स्टार्टअप उदाहरण
कंकाल ~/.bash_profile
नीचे बॉर्न शेल के साथ संगत है और इसके लिए csh के समान शब्दार्थ देता है ~/.bashrc
तथा ~/.bash_login
. [ -r filename ] && cmd
e> एक शॉर्ट सर्किट मूल्यांकन है जो परीक्षण करता है कि क्या फ़ाइल नाम मौजूद है और पढ़ने योग्य है, इसके बाद के भाग को छोड़ दें &&
अगर यह नही तो।
<वाक्यविन्यास लैंग = बैश> [-r ~/.प्रोफाइल] &&। ~/.profile # सेट अप पर्यावरण, एक बार, केवल बॉर्न-श सिंटैक्स अगर [-एन $ पीएस 1]; तो #क्या हम इंटरएक्टिव हैं?
[-r ~/.bashrc] &&। इंटरएक्टिव शेल के लिए ~/.bashrc # tty/prompt/function सेटअप [-r ~/.bash_login] &&। ~/.bash_login # केवल लॉगिन शेल के लिए कोई भी लॉगिन कार्य
fi # if ब्लॉक का अंत </वाक्यविन्यास हाइलाइट>
बैश स्टार्टअप में ऑपरेटिंग सिस्टम की समस्या
यूनिक्स और लिनक्स के कुछ संस्करणों में आमतौर पर बैश सिस्टम स्टार्टअप स्क्रिप्ट होती है /etc
निर्देशिका। बैश इन्हें अपने मानक आरंभीकरण के हिस्से के रूप में कहता है, लेकिन अन्य स्टार्टअप फ़ाइलें उन्हें प्रलेखित बैश स्टार्टअप अनुक्रम की तुलना में एक अलग क्रम में पढ़ सकती हैं। रूट उपयोक्ता की फ़ाइलों की डिफ़ॉल्ट सामग्री में भी समस्याएँ हो सकती हैं, साथ ही कंकाल फ़ाइलें जो सिस्टम सेटअप पर नए उपयोगकर्ता खातों को प्रदान करता है। एक्स विंडो सिस्टम को लॉन्च करने वाली स्टार्टअप स्क्रिप्ट विंडो प्रबंधक को लॉन्च करने से पहले उपयोगकर्ता-पर्यावरण चर सेट करने के प्रयास में उपयोगकर्ता की बैश स्टार्टअप स्क्रिप्ट के साथ आश्चर्यजनक चीजें भी कर सकती हैं। इन मुद्दों को अक्सर एक का उपयोग करके संबोधित किया जा सकता है ~/.xsession
या ~/.xprofile
पढ़ने के लिए फ़ाइल ~/.profile
- जो पर्यावरण चर प्रदान करता है जो बैश शेल विंडो को विंडो मैनेजर की जरूरत से पैदा करता है, जैसे कि xterm या Gnome Terminal।
पोर्टेबिलिटी
के साथ बैश का आह्वान करना --posix
विकल्प या कथन set -o posix
एक स्क्रिप्ट में बैश को Posix#POSIX.2|POSIX 1003.2 मानक के बहुत करीब से अनुरूप बनाने का कारण बनता है।[53] पोर्टेबिलिटी (कंप्यूटर साइंस) के लिए बनाई गई बैश शेल स्क्रिप्ट को कम से कम POSIX शेल मानक को ध्यान में रखना चाहिए। POSIX में नहीं मिली कुछ बैश विशेषताएँ हैं:[53][54]
- कुछ विस्तारित मंगलाचरण विकल्प
- ब्रेस विस्तार
- सरणियाँ और साहचर्य सरणियाँ
- डबल ब्रैकेट
[[ ... ]]
विस्तारित परीक्षण निर्माण और इसका रेगेक्स मिलान - दोहरे कोष्ठक अंकगणित-मूल्यांकन निर्माण (केवल
(( ... ))
;$(( ... ))
पॉज़िक्स है) - पैरामीटर विस्तार में कुछ स्ट्रिंग-हेरफेर ऑपरेशन
local
दायरे वाले चर के लिए- प्रक्रिया प्रतिस्थापन
- बैश-विशिष्ट बिल्टिन
- कोप्रोसेसेस
- $EPOCHSECONDS और $EPOCHREALTIME चर [55]
यदि कोड का एक टुकड़ा ऐसी सुविधा का उपयोग करता है, तो इसे बैशिज़्म कहा जाता है - पोर्टेबल उपयोग के लिए एक समस्या। डेबियन का checkbashisms
और विदर होलेन के shellcheck
इसका उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी स्क्रिप्ट में ये भाग नहीं हैं।[56][57] सूची वास्तविक लक्ष्य शेल के आधार पर भिन्न होती है: डेबियन की नीति उनकी लिपियों में कुछ विस्तार की अनुमति देती है (जैसा कि वे अल्मक्विस्ट शेल#डैश शेल में हैं),[54]जबकि एक स्क्रिप्ट पूर्व POSIX बॉर्न शेल का समर्थन करने का इरादा रखती है, जैसे कि autoconf़ configure
, उन सुविधाओं में और भी अधिक सीमित हैं जिनका वे उपयोग कर सकते हैं।[58]
कीबोर्ड शॉर्टकट
बैश डिफ़ॉल्ट (Emacs) कुंजी बाइंडिंग का उपयोग करके कमांड लाइन संपादन के लिए कीबोर्ड शॉर्टकट प्रदान करने के लिए रीडलाइन का उपयोग करता है। हम बांधते हैं को चलाकर सक्षम किया जा सकता है set -o vi
.[59]
प्रक्रिया प्रबंधन
बैश शेल में कमांड के निष्पादन के दो तरीके हैं: बैच (यूनिक्स), और समवर्ती मोड।
बैच में कमांड निष्पादित करने के लिए (अर्थात, क्रम में) उन्हें वर्ण द्वारा अलग किया जाना चाहिए; , या अलग लाइनों पर:
<वाक्यविन्यास लैंग = बैश> कमांड 1; कमांड2 </वाक्यविन्यास हाइलाइट>
इस उदाहरण में, जब कमांड 1 समाप्त हो जाता है, तो कमांड 2 निष्पादित हो जाता है।
कमांड 1 की एक पृष्ठभूमि प्रक्रिया निष्पादन कमांड के अंत में (प्रतीक और) का उपयोग करके हो सकती है, और प्रक्रिया को पृष्ठभूमि में निष्पादित किया जाएगा जो शेल पर तुरंत नियंत्रण लौटाएगा और कमांड के निरंतर निष्पादन की अनुमति देगा।
command1 &
या दो कमांड 1 और कमांड 2 का समवर्ती निष्पादन करने के लिए, उन्हें निम्नलिखित तरीके से बैश शेल में निष्पादित किया जाना चाहिए:
<वाक्यविन्यास लैंग = बैश> कमांड 1 और कमांड 2 </वाक्यविन्यास हाइलाइट>
इस मामले में कमांड 1 को पृष्ठभूमि और प्रतीक में निष्पादित किया जाता है, तुरंत उस शेल पर नियंत्रण लौटाता है जो अग्रभूमि में कमांड 2 को निष्पादित करता है।
एक प्रक्रिया को रोका जा सकता है और टाइप करके बैश पर नियंत्रण लौटाया जा सकता है Ctrl+z जबकि प्रक्रिया अग्रभूमि में चल रही है।[60]
सभी प्रक्रियाओं की एक सूची, दोनों पृष्ठभूमि में और रुकी हुई, चलकर प्राप्त की जा सकती है jobs
:
<वाक्यविन्यास लैंग = कंसोल>
$ नौकरियां
[1] - रनिंग कमांड 1 और
[2] + रुका हुआ कमांड 2
</वाक्यविन्यास हाइलाइट>
आउटपुट में, कोष्ठक में संख्या जॉब आईडी को संदर्भित करती है। धन चिह्न के लिए डिफ़ॉल्ट प्रक्रिया को दर्शाता है bg
तथा fg
. टेक्स्ट रनिंग और स्टॉप्ड प्रक्रिया अवस्था को संदर्भित करता है। अंतिम स्ट्रिंग वह कमांड है जिसने प्रक्रिया शुरू की।
विभिन्न आदेशों का उपयोग करके एक प्रक्रिया की स्थिति को बदला जा सकता है। fg
e> कमांड एक प्रक्रिया को अग्रभूमि में लाता है, जबकि bg
पृष्ठभूमि में चल रही एक रुकी हुई प्रक्रिया को सेट करता है। bg
तथा fg
कार्य करने की प्रक्रिया को निर्दिष्ट करने के लिए अपने पहले तर्क के रूप में कार्य आईडी ले सकते हैं। एक के बिना, वे डिफ़ॉल्ट प्रक्रिया का उपयोग करते हैं, जिसे आउटपुट में प्लस चिह्न द्वारा पहचाना जाता है jobs
. kill
ई> कमांड का उपयोग समय से पहले एक प्रक्रिया को सिग्नल (आईपीसी) भेजकर समाप्त करने के लिए किया जा सकता है। जॉब आईडी को प्रतिशत चिह्न के बाद निर्दिष्ट किया जाना चाहिए:
<वाक्यविन्यास लैंग = बैश> मार % 1 </वाक्यविन्यास हाइलाइट>
सशर्त निष्पादन
बैश सशर्त निष्पादन कमांड विभाजक की आपूर्ति करता है जो पूर्ववर्ती कमांड द्वारा निर्धारित निकास स्थिति पर आकस्मिक कमांड का निष्पादन करता है। उदाहरण के लिए:
<वाक्यविन्यास लैंग = बैश> सीडी $ कहीं और && ./do_something || प्रतिध्वनि एक त्रुटि हुई >&2 </वाक्यविन्यास हाइलाइट>
जहां ./do_something केवल तभी निष्पादित होता है जब सीडी (निर्देशिका बदलें) कमांड सफल होता है (शून्य की निकास स्थिति लौटाता है) और इको कमांड केवल तभी निष्पादित किया जाएगा जब सीडी या ./do_something कमांड एक त्रुटि लौटाता है (गैर-शून्य) बाहर निकलने की स्थिति)।
सभी आदेशों के लिए निकास स्थिति को विशेष चर में संग्रहीत किया जाता है $?
. बैश भी समर्थन करता है if ...;then ...;else ...;fi
तथा case $VARIABLE in $pattern)...;;$other_pattern)...;; esac
सशर्त कमांड मूल्यांकन के रूप।
बग रिपोर्टिंग
बैशबग नामक एक बाहरी कमांड बैश शेल बग की रिपोर्ट करता है। जब कमांड का आह्वान किया जाता है, तो यह उपयोगकर्ता के डिफ़ॉल्ट संपादक को भरने के लिए एक फॉर्म के साथ लाता है। फॉर्म को बैश अनुरक्षकों (या वैकल्पिक रूप से अन्य ईमेल पतों पर) भेज दिया जाता है।[61][62]
प्रोग्राम करने योग्य पूर्णता
बैश बिल्ट-इन के माध्यम से प्रोग्रामेबल कमांड-लाइन पूर्णता का समर्थन करता है complete
, compopt
, तथा compgen
आदेश।[63] यह सुविधा 2000 में जारी 2.04 के बीटा संस्करण के बाद से उपलब्ध है।[64][65] ये कमांड कमांड्स (अर्थात इंस्टॉल किए गए प्रोग्राम), फ़ंक्शंस, वेरिएबल्स और फाइलनामों के लिए जटिल और बुद्धिमान पूर्णता विनिर्देश को सक्षम करते हैं।[66]
complete
ई> औरcompopt
दो आदेश निर्दिष्ट करते हैं कि कैसे कुछ उपलब्ध आदेशों या विकल्पों के तर्क पढ़ने के लिए लाइन इनपुट में सूचीबद्ध होने जा रहे हैं। संस्करण 5.1 के रूप में कमांड या विकल्प को पूरा करना आमतौर पर इसके द्वारा सक्रिय किया जाता है Tab ↹ इसका नाम टाइप करने के बाद कीस्ट्रोक।[66]
रिलीज इतिहास
Version | Release date | Release notes |
---|---|---|
bash-5.2 | 2022-09-26 | NEWS |
bash-5.1 | 2020-12-07 | github version history NEWS [9] |
bash-5.0 | 2019-01-07 | [67][68][69] |
bash-5.0-rc1 | 2018-12-20 | |
bash-5.0-beta2 | 2018-11-28 | |
bash-5.0-beta | 2018-09-17 | |
bash-5.0-alpha | 2018-05-22 | |
bash-4.4 | 2016-09-15 | github version history NEWS v4.4 |
bash-4.4-rc2 | 2016-08-22 | |
bash-4.4-rc1 | 2016-02-24 | |
bash-4.4-beta2 | 2016-07-11 | |
bash-4.4-beta | 2015-10-12 | |
bash-4.3 | 2014-02-26 | |
bash-4.2 | 2011-02-13 | |
bash-4.1 | 2009-12-31 | |
bash-4.0 | 2009-02-20 | |
bash-4.0-rc1 | 2009-01-12 | |
bash-3.2 | 2006-10-11 | |
bash-3.1 | 2005-12-08 | |
bash-3.0 | 2004-08-03 | |
bash-2.05b | 2002-07-17 | |
bash-2.05a | 2001-11-16 | |
bash-2.05 | 2001-04-09 | |
bash-2.04 | 2000-03-21 | |
bash-2.03 | 1999-02-19 | |
bash-2.02 | 1998-04-18 | |
bash-2.01 | 1997-06-05 | |
bash-2.0 | 1996-12-31 |
यह भी देखें
संदर्भ
- ↑ Hamilton, Naomi (May 30, 2008). "The A-Z of Programming Languages: BASH/Bourne-Again Shell". Computerworld. Archived from the original on November 8, 2016. Retrieved March 1, 2022.
- ↑ Ramey, Chet (April 20, 2021). "The GNU Bourne-Again Shell". Technology Infrastructure Services. Case Western Reserve University. Retrieved March 1, 2022.
- ↑ "Bash FAQ, version 4.14". Archived from the original on September 1, 2018. Retrieved April 9, 2016.
- ↑ "Missing source code - GPL compliance? · Issue #107 · Microsoft/WSL". GitHub. Archived from the original on September 24, 2019. Retrieved July 8, 2016.
- ↑ "GNU Bash". Softpedia. SoftNews. January 23, 2010. Archived from the original on October 21, 2017. Retrieved April 9, 2016.
- ↑ GNU Project. "README file". Archived from the original on April 26, 2019. Retrieved April 16, 2014.
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).
- ↑ "bash-1.11". oldlinux.org.
See test.c for GPL-2.0-or-later
- ↑ "bash-1.05.tar". oldlinux.org.
- ↑ 9.0 9.1 9.2 "BashFAQ/061 - Greg's Wiki". mywiki.wooledge.org. Archived from the original on March 2, 2021. Retrieved March 1, 2021.
- ↑ "Is there a way to download the presumably initial bash source bash-0.99?". unix.stackexchange.com.
- ↑ 11.0 11.1 11.2 Richard Stallman (forwarded with comments by Chet Ramey) (February 10, 1988). "जीएनयू + बीएसडी = ?". Newsgroup: comp.unix.questions. Usenet: 2362@mandrill.CWRU.Edu. Archived from the original on December 28, 2021. Retrieved December 28, 2021.
डेढ़ साल के लिए, जीएनयू खोल "बस पूरा हो गया" था। लेखक ने जो किया था उसे पूरा करने के लिए बार-बार वादे किए, और उन्हें कभी नहीं रखा। अंत में मुझे विश्वास नहीं हो रहा था कि वह कभी भी कुछ भी प्रदान करेगा। इसलिए फाउंडेशन के स्टाफ सदस्य ब्रायन फॉक्स अब बॉर्न शेल की नकल लागू कर रहे हैं।
- ↑ 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.
- ↑ 13.0 13.1 Brian Fox (forwarded by Leonard H. Tower Jr.) (June 8, 1989). "बैश बीटा रिलीज़ में है!". Newsgroup: gnu.announce. Archived from the original on May 4, 2013. Retrieved October 28, 2010.
- ↑ 14.0 14.1 Warren, Tom (June 4, 2019). "Apple macOS Catalina में डिफ़ॉल्ट शेल के रूप में बैश को zsh से बदल देता है". The Verge. Archived from the original on June 10, 2019. Retrieved June 13, 2019.
- ↑ Torvalds, Linus Benedict (August 1991). "like.the.minis". Retrieved September 6, 2009.
मैंने वर्तमान में बैश (1.08) और जीसीसी (1.40) को पोर्ट किया है, और चीजें काम करने लगती हैं।
- ↑ "विंडोज 10 पर बैश शेल कमांड-लाइन टूल कैसे इंस्टॉल करें". September 28, 2016. Archived from the original on November 20, 2016. Retrieved November 20, 2016.
- ↑ Hoffman, Chris. "विंडोज 11 पर लिनक्स के लिए विंडोज सबसिस्टम कैसे स्थापित करें". How-To Geek (in English). Retrieved October 12, 2022.
- ↑ "उपयोगकर्ता पर्यावरण सुविधा परिवर्तन". Oracle. Archived from the original on June 12, 2018. Retrieved June 8, 2018.
- ↑ 19.0 19.1 Hughes, Matthew (June 4, 2019). "MacOS कैटालिना बैश के बजाय Zsh का उपयोग क्यों करती है? लाइसेंसिंग". The Next Web (in English). Archived from the original on December 31, 2020. Retrieved January 12, 2021.
- ↑ "मुझे लगभग एक Linux संपादक और कंपाइलर मिल गया है". Dr. Dobb's. Archived from the original on March 2, 2021. Retrieved September 12, 2020.
- ↑
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.
- ↑
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".
- ↑ Chazelas, Stephane (October 4, 2014). "oss-sec मेलिंग सूची संग्रह". Seclists.org. Archived from the original on October 6, 2014. Retrieved October 4, 2014.
- ↑ Leyden, John (September 24, 2014). "पैच बैश नाउ: 'शेलशॉक' बग ब्लास्ट OS X, Linux सिस्टम वाइड ओपन". The Register. Archived from the original on October 16, 2014. Retrieved September 25, 2014.
- ↑ Perlroth, Nicole (September 25, 2014). "सुरक्षा विशेषज्ञ बैश में 'शेलशॉक' सॉफ्टवेयर बग के महत्वपूर्ण होने की अपेक्षा करते हैं". The New York Times. Archived from the original on April 5, 2019. Retrieved September 25, 2014.
- ↑ Seltzer, Larry (September 29, 2014). "शेलशॉक हार्टब्लीड को महत्वहीन बना देता है". ZDNet. Archived from the original on May 14, 2016.
- ↑ 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
- ↑
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.
- ↑ len (g...@prep.ai.mit.edu) (April 20, 1993). "जनवरी 1993 जीएनयू का बुलेटिन". Newsgroup: gnu.announce. Usenet: gnusenet930421bulletin@prep.ai.mit.edu. Archived from the original on March 2, 2021. Retrieved October 28, 2010.
- ↑ Ramey, Chet (August 1, 1994). "बैश - GNU शेल (प्रतिबिंब और सीखे गए सबक)". Linux Journal. Archived from the original on December 5, 2008. Retrieved November 13, 2008.
- ↑ Chet Ramey (October 31, 2010), Dates in your Computerworld interview, archived from the original on July 20, 2012, retrieved October 31, 2010
- ↑ Chet Ramey (June 12, 1989). "बैश 0.99 फिक्स और सुधार". Newsgroup: gnu.bash.bug. Archived from the original on November 10, 2012. Retrieved November 1, 2010.
- ↑ Chet Ramey (July 24, 1989). "कुछ बैश-1.02 फिक्स". Newsgroup: gnu.bash.bug. Archived from the original on November 10, 2012. Retrieved October 30, 2010.
- ↑ Brian Fox (March 2, 1990). "बैश 1.05 की उपलब्धता". Newsgroup: gnu.bash.bug. Archived from the original on November 10, 2012. Retrieved October 30, 2010.
- ↑ 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.
लिनक्स में, अधिकांश उपयोगकर्ता बैश चलाते हैं क्योंकि यह सबसे लोकप्रिय शेल है।
- ↑ 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.
बॉर्न अगेन शेल (बैश) लिनक्स वितरण के साथ स्थापित सबसे आम शेल है।
- ↑ 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 सिस्टम पर डिफ़ॉल्ट शेल बनाता है।
- ↑ "अपने Mac पर zsh को डिफ़ॉल्ट शेल के रूप में उपयोग करें - Apple सहायता". Archived from the original on December 2, 2019. Retrieved July 1, 2019.
- ↑ "नए जीएनवी पैकेजों को स्थापित करना". Archived from the original on October 3, 2020. Retrieved September 4, 2020.
- ↑ "संगतता सबसिस्टम". Archived from the original on September 23, 2020. Retrieved September 4, 2020.
- ↑ Juliana, Cino (June 10, 2017). "Linux बैश निकास स्थिति और बैश में निकास स्थिति कैसे सेट करें - Techolac". Archived from the original on June 21, 2019. Retrieved June 21, 2019.
- ↑ Huzaifa Sidhpurwala (September 24, 2014). "बैश विशेष रूप से तैयार किए गए पर्यावरण चर कोड इंजेक्शन हमले". Red Hat. Archived from the original on September 25, 2014. Retrieved September 25, 2014.
- ↑ "बैश संदर्भ मैनुअल". www.gnu.org. Archived from the original on March 15, 2018. Retrieved March 27, 2018.
- ↑ "डिबगिंग बैश स्क्रिप्ट". tldp.org. Archived from the original on November 4, 2018. Retrieved November 20, 2018.
- ↑ "बैश परिवर्तन [बैश हैकर्स विकी (DEV 20200708T2203)]". wiki-dev.bash-hackers.org. Archived from the original on September 23, 2019. Retrieved September 23, 2019.
- ↑ "बैश संदर्भ मैनुअल". www.gnu.org. Archived from the original on September 15, 2019. Retrieved September 15, 2019.
- ↑ "बैश 2.x/3.x के साथ अधिक उत्पादक रूप से कार्य करना". www.caliban.org. Archived from the original on June 29, 2018. Retrieved June 21, 2018.
- ↑ "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
- ↑ "उन्नत बैश-स्क्रिप्टिंग गाइड". www.tldp.org. Section 37.2 (Bash, version 3). Archived from the original on May 5, 2017. Retrieved March 5, 2017.
- ↑ "बैश, संस्करण 4". tldp.org. Archived from the original on July 1, 2018. Retrieved June 25, 2018.
- ↑ "Arrays (बैश संदर्भ मैनुअल)". www.gnu.org. Archived from the original on July 11, 2018. Retrieved July 4, 2018.
- ↑ "macos - OSX पर बैश को संस्करण 4.0 में अपडेट करें". Ask Different. Archived from the original on June 25, 2018. Retrieved June 25, 2018.
- ↑ 53.0 53.1 Mendel Cooper. "पोर्टेबिलिटी मुद्दे". The Linux Documentation Project. ibiblio.org. Archived from the original on January 27, 2012. Retrieved January 26, 2012.
- ↑ 54.0 54.1 "10. फाइलें". Debian Policy Manual v4.5.0.2. Archived from the original on May 12, 2020. Retrieved May 11, 2020.
- ↑ "लिनक्स, मैकओएस और बैश में दिनांक और समय को कैसे प्रारूपित करें?". Shell Tips!. Archived from the original on June 3, 2020. Retrieved June 3, 2020.
- ↑ Linux General Commands Manual –
- ↑ Linux General Commands Manual –
- ↑ "पोर्टेबल खोल". Autoconf. Archived from the original on March 2, 2021. Retrieved January 20, 2020.
- ↑ "बैश सहायता - एक बैश ट्यूटोरियल". Hypexr.org. October 5, 2012. Archived from the original on March 2, 2021. Retrieved July 21, 2013.
- ↑ "बैश संदर्भ मैनुअल". www.gnu.org. Archived from the original on March 15, 2018. Retrieved March 27, 2018.
- ↑ bashbug(1) Archived October 2, 2018, at the Wayback Machine, die.net
- ↑ "Linux / Unix Command: bashbug" Archived October 6, 2014, at the Wayback Machine, apple.com
- ↑ "बैश संदर्भ मैनुअल". tiswww.case.edu.
- ↑ "बैश 2.x/3.x के साथ अधिक उत्पादक रूप से कार्य करना". www.caliban.org. Archived from the original on June 29, 2018. Retrieved June 21, 2018.
- ↑ "/gnu/bash का अनुक्रमणिका". ftp.swin.edu.au. Archived from the original on March 8, 2020. Retrieved September 15, 2019.
- ↑ 66.0 66.1 "प्रोग्राम करने योग्य पूर्णता का परिचय". tldp.org. Retrieved January 21, 2022.
- ↑ "github version history NEWS v5.0". GitHub (in English). Archived from the original on May 4, 2022. Retrieved March 1, 2021.
- ↑ "Bash changes [Bash Hackers Wiki]". Archived from the original on March 18, 2020. Retrieved November 25, 2019.
- ↑ "Bash-5.0 release available". lists.gnu.org. Archived from the original on November 8, 2020. Retrieved March 1, 2021.
इस पेज में लापता आंतरिक लिंक की सूची
- सोलारिस (ऑपरेटिंग सिस्टम)
- यात्रा
- भाषा (कंप्यूटर विज्ञान)
- सी खोल
- बहाव को काबू करें
- पुनर्जन्म
- हमला (कंप्यूटिंग)
- अल्मक्विस्ट खोल
- से
- cygwin
- मनमाना कोड निष्पादन
- पर्यावरणपरिवर्ती तारक
- चाबी दबाएं
- मानक त्रुटि धारा
- मानक बाहर
- साहचर्य सरणियाँ
- खिड़की प्रबंधक
- पोर्टेबिलिटी (कंप्यूटर विज्ञान)
बाहरी संबंध
- Official website
- Hamilton, Naomi (May 30, 2008). "The A-Z of Programming Languages: BASH/Bourne-Again Shell". Computerworld. Archived from the original on November 8, 2016. (interview with GNU Bash's maintainer, Chet Ramey)