>> [संगोष्ठी - यूनिक्स के गोले, वातावरण]
[डगलस क्लाइन - हार्वर्ड विश्वविद्यालय]
[यह CS50 है. - CS50.TV]
>> आज का विषय यूनिक्स खोल रहा है.
मैं डगलस क्लाइन, विशेषज्ञ, या खोल के कम से कम यथोचित सक्षम उपयोगकर्ता, कर रहा हूँ.
एक खोल कंप्यूटर के ऑपरेटिंग सिस्टम के लिए उपयोगकर्ता के लिए इंटरफ़ेस है.
नाम, एक जानवर के खोल के विपरीत, के रूप में भ्रामक है
कठिन और रक्षात्मक है, जो कंप्यूटर खोल संचार के लिए अनुमति देता है.
तो झरझरा झिल्ली शायद एक बेहतर रूपक होगा.
>> यूनिक्स के लिए मूल खोल बॉर्न खोल रहा है.
बॉर्न बी ओ यू आर एन ई वर्तनी है.
बॉर्न, यूनिक्स के मूल लेखकों में से एक था
और तो खोल उसके नाम पर है.
एक आदेश के रूप में है कि खोल के नाम बस यूँ ही श है.
यही कारण है कि आप लागू कर सकते हैं आदेश है.
खोल लॉगिन में शुरू होता है.
आप कंप्यूटर में प्रवेश करते है, खोल बस, आप के लिए चल रहा शुरू होता है
और कि अपने आदेशों लेता है.
यह भी अन्य समय में शुरू कर सकते हैं.
आप कोई अन्य संकेत के साथ एक खिड़की को लाने के लिए, यह आप के लिए एक खोल शुरू कर देंगे.
यही कारण है कि यह आपको एक खिड़की के पास जाओ और आदेशों टाइपिंग शुरू कर सकते हैं कि कैसे है
और आगे तो वहाँ आप उस खिड़की में लॉग इन नहीं था.
इसके अलावा, आप एक दूरदराज के प्रवेश करते हैं,
तो यह दूरदराज के कंप्यूटर पर एक खोल शुरू कर देंगे.
और यह एक इंटरैक्टिव खोल बिना आदेशों को चलाने के लिए संभव है.
वह अपने मौजूदा अभियान के भीतर मतलब हो सकता है,
और यह भी एक दूरदराज के आपरेशन हो सकता है.
आप किसी अन्य कंप्यूटर के लिए एक आदेश भेज सकते हैं,
जो वहाँ एक खोल शुरू करने में शामिल हैं.
वास्तव में, यह वहाँ एक खोल को शुरू में शामिल करने के लिए है
कि अपने अंतिम उद्देश्य नहीं है, भले ही.
कुछ इस तरह शुरू होता है, यह जरूरी है कि एक नया खोल शुरू नहीं करता है.
आप एक नई विंडो लाने के लिए, यह एक संपादक को लाने के लिए यह बताने के लिए संभव है
या कुछ अन्य आदेश.
उस मामले में, संपादक खरोंच से शुरू होगा.
संपादक समाप्त होता है, खिड़की समाप्त होता है.
यह थोड़ा असामान्य है लेकिन यह किया जा सकता है.
उन मामलों में, यह एक खोल नहीं होगा.
इसलिए यह जरूरी है कि एक खिड़की या कुछ इस तरह के आवेदन एक खोल लाएगा यह मामला नहीं है.
>> शैल कमांड डेसिमल.
पारसिंग विभिन्न तत्वों की पहचान करने और उन्हें वर्गीकृत करने का मतलब है.
एक आदेश के भीतर, आप लिखते हैं कि पूरा स्ट्रिंग,
निष्पादित करने के लिए 1 या अधिक एकल आदेशों की जाएगी.
अन्य तत्वों तर्क हो सकता है.
यह भी एक आदेश के निष्पादन को प्रभावित जो विशेष वर्ण हो सकते हैं.
वे स्क्रीन की तुलना में कहीं अन्य उत्पादन भेज सकते हैं
आदेश आमतौर पर स्क्रीन पर भेज होगा.
यह इनपुट पुनर्निर्देशित कर सकते हैं, यह भी अन्य बातें कर सकते हैं.
इसके आगे विभिन्न अन्य प्रतीक, वर्ण, और कर रहे हैं.
पारसिंग उन चीजों का पता लगाने और व्याख्या शामिल है.
>> अब कोई और अधिक लोगों के बाद से वहाँ बल्कि संभावना है जो कोई और सवाल, वहाँ रहे हैं,
हम यहाँ अपने अगले पृष्ठ पर जाना होगा.
>> मैं बॉर्न खोल प्रारंभिक खोल है कि पहले कहा.
दूसरों रहे हैं.
एक सी खोल रहा है. आदेश सीएसएच है.
नाम सी खोल शब्द पर सिर्फ एक नाटक है.
इस खोल के मध्य 1970 के दशक में बर्कले यूनिक्स के साथ पेश किया गया था.
बर्कले यूनिक्स यूनिक्स के विकास में एक लाभदायक घटना थी.
यह एक बड़ी क्रांति थी और यह शंख की शुरूआत भी शामिल थे.
शब्दों पर कि खेलने के लिए कारण, सी खोल,
, सी खोल सी भाषा के समान है जो उस में कुछ विशेषताएं हैं कि है
जो बॉर्न खोल नहीं है -
या यह है कि समय पर नहीं था.
टीसी खोल भी है.
यह सी खोल के एक superset है.
यह इंटरैक्टिव उपयोग के लिए उपयोगी होते हैं, जिनमें से कई अतिरिक्त सुविधाओं है,
इस तरह, इतिहास तंत्र में आदेशों को वापस बुलाने के रूप में
मैं कुछ बाद में वर्णन करेंगे जो -
एक सरल तरीके से, एक संपादक के बाद मॉडलिंग की.
यह भी आप एक लंबे समय तक आदेश के लिए एक छोटी प्रमुख स्ट्रिंग बाध्य करने के लिए अनुमति देते हैं, जो बंधनों है.
हम आज उस में हो रही हो नहीं जा रहे हैं.
यह प्रोग्रामिंग के लिए उपयोगी होते हैं कि कुछ विशेषताएं है.
हालांकि, सी खोल अक्सर खोल प्रोग्रामिंग के लिए उपयोग नहीं किया है.
शैल कार्यक्रमों, आप पहले से ही पता नहीं था,
खोल विशेषताओं से मिलकर कार्यक्रम कर रहे हैं.
आप कार्यक्रमों के रूप में इन चला सकता है.
आप एक फाइल में खोल आदेशों का एक गुच्छा लिखने और फ़ाइल निष्पादित.
आप यह संकलन करने की जरूरत नहीं है. यह एक व्याख्यात्मक भाषा है.
यह मूल सी खोल, सीएसएच को ही उल्लेख हो सकता है के बाद से वाक्यांश सी खोल, अब अस्पष्ट है
या tcsh सहित सभी सी गोले, करने के लिए. यह थोड़ा अस्पष्ट है.
>> एक बाद में खोल प्रोग्रामर के नाम पर रखा कॉर्न खोल, KSH, कॉर्न है.
इस खोल 1 खोल में शामिल करने का प्रयास किया
इंटरैक्टिव उपयोग के लिए सी खोल के फायदे
और बॉर्न प्रोग्रामिंग के लिए खोल.
एक अल्पसंख्यक - यह कुछ लोगों द्वारा एक इंटरैक्टिव खोल के रूप में इस्तेमाल किया गया है.
बाद में हालांकि, एक और परिचय वहाँ था, पार्टी की योजना बनाई खोल, मार,
फिर शब्दों पर एक नाटक, बॉर्न फिर से खोल.
यह बॉर्न शैल का एक विस्तार है. कॉर्न खोल भी है. उन दोनों हैं.
यह मिलाकर की कॉर्न खोल का एक ही उद्देश्य है सी खोल के
1 खोल में और बॉर्न खोल के फायदे.
कॉर्न खोल के संवर्द्धन के कई लोग भी बैश में शामिल किए गए हैं.
पार्टी की योजना बनाई है, तथापि, अधिक है और इसलिए बेहतर है.
बॉर्न फिर से खोल और कॉर्न खोल बॉर्न प्रकार के गोले कहा जाता है
वे बॉर्न शैल की विशेषताओं में शामिल है क्योंकि,
सी गोले के साथ कुछ मामलों में असंगत हैं जो.
उन, कुछ प्रतिबंधित उपयोग के लिए इरादा अलावा अन्य गोले, कर रहे हैं
शायद कुछ आदेशों तक ही सीमित है, शायद विशेष उद्देश्यों, अक्सर इस्तेमाल नहीं किया.
>> ठीक है. यहाँ अगले आइटम.
पार्टी की योजना बनाई खोल लिनक्स के विभिन्न रूपों के साथ जुड़े बन गया है.
मुझे लगता है कि हर रूप का सच है, तो यकीन नहीं है.
वहाँ कई रूपों वहाँ से बाहर हैं और मैं उन सब का उपयोग नहीं किया
लेकिन मैं का इस्तेमाल किया है कि उन में यह इसके साथ जुड़े बन गया है.
अब तक मुझे पता है, बैश के बारे में कुछ भी नहीं है
लिनक्स के साथ यह किसी भी अधिक संगत जो बनाता है
खोल और ऑपरेटिंग सिस्टम के किसी भी अन्य संयोजन से.
मैं यह शायद सिर्फ प्रोग्रामर के हठ को दर्शाता है लगता है.
यह लिनक्स के साथ जुड़े बन गया है ksh को मार पसंद करते हैं के लिए एक और कारण यह है कि
बातें उस में लिखा होने की संभावना है और यह फैल जाने की संभावना है के बाद से.
मैं आप बाद में उस के लिए अन्य कारणों दे दूँगा.
बॉर्न खोल लिपियों कॉर्न खोल या बैश के अंतर्गत चलाना चाहिए.
आप बॉर्न शैल के लिए कुछ लिखते हैं,
आप शायद KSH या पार्टी की योजना बनाई तहत इसे लागू कर सकते हैं.
कॉर्न खोल स्क्रिप्ट शायद बैश के तहत चलेगा, लेकिन मुझे लगता है कि गारंटी नहीं दे सकता.
बाद में यहाँ, सी खोल स्क्रिप्ट टीसी खोल के अंतर्गत चलाना चाहिए.
सी खोल वास्तव में बड़े पैमाने पर पटकथा के लिए इस्तेमाल कभी नहीं किया गया था
बॉर्न शैल और बाद में बॉर्न प्रकार के गोले उस प्रयोजन के लिए बेहतर थे.
इसलिए कि सच है कि सभी महत्वपूर्ण नहीं है.
कुछ समय पहले लिखा गया था जो बॉर्न खोल लिपियों का काफी नहीं हैं,
कॉर्न खोल या बॉर्न फिर से खोल से पहले शुरू किए गए थे.
वे, अभी भी प्रयोग में ऑपरेटिंग सिस्टम का हिस्सा हैं,
आप ऑपरेटिंग सिस्टम पर गौर और अगर ऐसा है तो आप उन्हें मिल जाएगा
या कुछ पुराने प्रोग्रामिंग संकुल.
>> बैश ऑपरेटिंग सिस्टम के लिए सामान्य भाषा का एक प्रकार बनने के कुछ हद तक है.
यह पहले से ही विंडोज के लिए और वीएमएस के लिए बढ़ा दिया गया है.
वीएमएस, आप नहीं जानते कि मामले में, एक स्वामित्व ऑपरेटिंग सिस्टम है
मोटे तौर पर पर्दे के पीछे, अभी भी प्रयोग में है जो डिजिटल उपकरण निगम की.
और यह कई अलग ऑपरेटिंग सिस्टम पर चल रहे हो जा रहा है,
संभावना लोगों को इसके लिए शिफ्ट करने के लिए करते हैं.
लेकिन इस विकास अपेक्षाकृत हाल है.
यह सिर्फ शुरुआत है, तो यह वास्तव में लोकभाषा के उस तरह होने के लिए बाहर हो जाएगा अगर मैं भविष्यवाणी नहीं कर सकते.
इसके अलावा, फ़ाइल pathnames और पुस्तकालयों अलग है क्योंकि
इन अलग ऑपरेटिंग सिस्टम के बीच,
आप एक ऑपरेटिंग सिस्टम पर एक पार्टी की योजना बनाई स्क्रिप्ट लिखने में सक्षम नहीं हो सकता है
और फिर एक दूसरे पर चला रहे हैं.
आप अलग यूनिक्स, लिनक्स के बीच स्थानांतरित करने के लिए सक्षम होना चाहिए
मैक ओएस ऑपरेटिंग सिस्टम, लेकिन जरूरी नहीं कि विंडोज या वीएमएस के लिए.
आप फ़ाइल पथ वर्णन बदलने के लिए हो सकता है,
और कुछ पुस्तकालयों अलग हो सकता है,
कुछ कमांड का काम है कि जिस तरह से प्रभावित कर सकता है जो
या कैसे वे तर्क और तरह की प्रक्रिया.
इसके अलावा, यहां एक और सावधानी कोई गारंटी नहीं है कि है
कि मैंने उल्लेख किया है सब अलग अलग गोले - बॉर्न शैल, सी खोल,
टीसी खोल, कॉर्न खोल बॉर्न फिर से खोल - किसी भी यूनिक्स के तहत उपलब्ध होगी
या लिनक्स या मैक ओएस कंप्यूटर.
वे सिर्फ वहाँ नहीं हो सकता है.
यही कारण है कि यहां चेताते में से एक है.
आप चीजों को हर जगह काम करना चाहते हैं, क्योंकि यह यहाँ एक दुर्भाग्यपूर्ण सीमा है
लेकिन दुर्भाग्य से, आप उस पर भरोसा नहीं कर सकते.
>> ठीक है. यहाँ अगले एक.
मान लीजिए कि आप एक खोल स्क्रिप्ट लिखने के लिए चाहते हैं कि हम कहते हैं,
खोल आदेशों से मिलकर कार्यक्रम.
आप अपने लेखन के आदेश को एक फाइल में डाल दिया, और फ़ाइल निष्पादित.
क्या आप तर्क शामिल करना चाहते हैं?
खोल के संचालन के मामले में तर्क मापदंडों या स्थितीय पैरामीटर कहा जाता है
और वे एक डॉलर के हस्ताक्षर और अंक, $ 1, $ 2 से बुलाया जाएगा.
स्क्रिप्ट इस नाम है तो, अगर मेरे पहले तर्क तर्क 1 हो सकता है
और मेरा दूसरा, तर्क 2 हो सकता है
और मेरी स्क्रिप्ट के अंदर मैं इन बातों का उल्लेख करना चाहते हैं -
मैं वास्तव में इसे चलाने के लिए नहीं जा रहा हूँ के बाद के इस मिटा देना -
मेरी स्क्रिप्ट के अंदर मैं arg1 का उल्लेख करने के लिए $ 1 हो सकता है,
इस तरह, arg2 बाहर आ जाएगा जो $ 2,.
तो उन प्रतीकों तर्कों का उल्लेख करने के लिए उपलब्ध हैं,
और उन के गोले के सभी पर लागू होते हैं.
इसके अलावा, अन्य अक्षर हैं.
$ * पूरे तर्क सूची, उन सभी को दर्शाता है.
$ # तर्कों की संख्या को दर्शाता है.
फिर, यह सब गोले पर लागू होता है.
उन प्रतीकों, * और #, भी अन्य स्थानों में उन अर्थ के साथ इस्तेमाल किया जा सकता है.
हम उस में नहीं हो रही है.
>> शैल विनिर्देशक लाइन. के लिए वह क्या है?
मान लीजिए कि आप एक पटकथा लिखी है और यह एक विशेष खोल के लिए हम कहते हैं और आप इसे चलाना चाहते हैं.
कैसे आप अपने ऑपरेटिंग सिस्टम अपनी स्क्रिप्ट को चलाने के लिए इस्तेमाल करेगा खोल क्या जानते हो?
एक बिंदु पर आपको यह बॉर्न खोल में यह चला जाएगा कि मान सकता है
तुम नहीं तो नहीं कहा, तो
लेकिन लोगों को अब बॉर्न में लिपियों कि ज्यादा खोल नहीं लिख रहे हैं
और तुम भी अब उस पर भरोसा नहीं कर सकते.
यहाँ तो हम यहीं एक खोल विनिर्देशक लाइन है.
यही बैश निर्दिष्ट करता है.
यह पथ, / बिन / पार्टी की योजना बनाई में यह निर्दिष्ट करता है कि ध्यान दें.
एक कंप्यूटर मार खोल दिया है, लेकिन बिन निर्देशिका में, / बिन, यह काम नहीं करेगा नहीं.
यही कारण है कि यहां एक और पात्रता, एक और सावधानी है.
पाउंड चिह्न टिप्पणी लाइन चरित्र है.
यही सब गोले पर लागू होता है.
यहां विशेष मामले, #! एक स्क्रिप्ट की शुरुआत में, एक विशेष मामला है.
उस स्क्रिप्ट को चलाने के लिए जो में खोल निर्दिष्ट करता है.
मैं कह रहा था, यह वही जगह / बिन नहीं हो सकता है.
इसके अलावा, यहां एक और बात है.
आप अभी कोई विस्मयादिबोधक बिंदु और pathname साथ पाउंड चिह्न का उपयोग करते हैं,
कि एक सी खोल संकेत चाहिए.
मैं गारंटी करने में सक्षम नहीं हूँ क्योंकि हालांकि, मुझे लगता है कि कर की सिफारिश नहीं है
कि हमेशा काम करेंगे.
आप एक सी खोल चाहते हैं, यह तो कहना बेहतर होगा.
यहाँ तो नहीं बल्कि भ्रामक कुछ है.
आप ऐसी / बिन / मार के रूप में एक खोल विनिर्देशक लाइन का उपयोग करते हैं
और उस खोल, वहाँ उपलब्ध नहीं है
उस विशेष कंप्यूटर पर / बिन / मार के रूप में ऐसी कोई बात नहीं, वहाँ है
या तो यह एक अलग स्थान में है क्योंकि यह पार्टी की योजना बनाई है या नहीं है क्योंकि,
क्या आप भागा स्क्रिप्ट मौजूद नहीं है कि आप कह रही त्रुटि मिल जाएगा.
और हां अपनी स्क्रिप्ट मौजूद है, तो त्रुटि संदेश है कि भ्रामक है.
ऑपरेटिंग सिस्टम आप उस त्रुटि देता है कि कारण
या, और अधिक सही, आप इस चला रहे हैं, जिसमें अपने इंटरैक्टिव खोल कि त्रुटि देता है,
यह स्क्रिप्ट का नाम है जो आप कमांड, रिपोर्ट है कि है.
उस आदेश को प्रभावी ढंग से स्क्रिप्ट के नाम से खोल बुलाया.
आपको लगता है कि भ्रामक त्रुटि संदेश मिलता है कि जहां.
खोल स्क्रिप्ट कॉल करने के लिए एक और रास्ता
यहाँ के रूप में, कमांड लाइन पर खोल निर्दिष्ट द्वारा है.
यह एक आदेश है. इस बैश चलाने के लिए और फिर बैश में मेरी स्क्रिप्ट चलाने कहते हैं.
यह एक विनिर्देशक लाइन पर पूर्वता ले जाएगा,
और यह आपको अलग pathnames के लिए उपलब्ध कराने की अनुमति की सुविधा है.
आप सिर्फ एक आदेश देती है तो ऑपरेटिंग सिस्टम है कि आदेश के लिए दिखेगा
विभिन्न स्थानों में.
यह उपलब्ध है, तो यह है कि यह पता लगाना चाहिए.
कंप्यूटर यह स्थित है जहाँ भी मार पाते हैं और यह चलेगा,
तो आप यह पाता है, जहां के बारे में चिंतित होने की तो जरूरत नहीं है.
संभवतः दूसरे की चिंताओं, यहाँ कर रहे हैं
संभावना नहीं है हालांकि संभव है जो पार्टी की योजना बनाई, अधिक से अधिक 1 संस्करण है कि अगर वहाँ के रूप में.
तो यह है कि इन चीजों के साथ सौदा करने के लिए एक और तरीका है.
विनिर्देशक लाइनों किसी भी खोल कॉल कर सकते हैं.
उन्होंने यह भी गोले के अलावा अन्य चीजों कॉल कर सकते हैं.
मैं यहाँ उदाहरण धारा संपादक है, जो sed कर रहे हैं;
ऑक, जो एक पैटर्न प्रसंस्करण भाषा है;
और पर्ल, एक बहुत ही उच्च विकसित स्क्रिप्टिंग भाषा.
आप शुरुआत में उन कार्यक्रमों में से एक का संकेत विनिर्देशक लाइन डाल,
यह है कि कार्यक्रम में सीधे जाने के बजाय एक शेल आरंभ होगा.
उन कार्यक्रमों को उनकी क्षमता के लिए सीमा है.
पर्ल बहुत ही सक्षम है. Sed एक संपादक है. यह बस संपादन परे बातें कर सकते हैं.
लेकिन यह है कि कार्यक्रम के लिए मुश्किल हो सकता है.
इसके अलावा, स्क्रिप्ट के लिए तर्क और सामान गुजर असंभव या भ्रामक या तो है.
तो उन मामलों में, ऑक या sed के साथ, यह, कम से कम मेरे अनुभव में, है
एक खोल स्क्रिप्ट और कॉल ऑक लिखने के लिए बेहतर या खोल स्क्रिप्ट से sed
बल्कि ऑक बुला या स्क्रिप्ट विनिर्देशक लाइन के रूप में sed से.
जैसा कि मैंने कहा पर्ल, एक उच्च विविध भाषा है.
आप पर्ल में इंटरैक्टिव कमांड चलाने नहीं कर सकते हैं,
जो आप आप विकसित कर रहे हैं कि लिपियों के कुछ हिस्सों परीक्षण नहीं कर सकता कि इसका मतलब
अंतःक्रियात्मक उन्हें चलाकर.
हालांकि, यह एक बेहद सक्षम भाषा है
और एक बहुत ही व्यापक रूप से इस्तेमाल उपकरण के रूप में विकसित किया गया है.
वह सिर्फ विनिर्देशक लाइनों के बारे में एक प्रारंभिक टिप्पणी का एक छोटा सा है.
>> सभी या लिनक्स के अधिकांश रूपों में - फिर से, मैं वह सब है कुछ नहीं किया जा सकता है -
आप सीएसएच लिखते हैं और मैक ओएस में, आप, tcsh मिल
और आप लिखते हैं, तो आप पार्टी की योजना बनाई मिल श.
वे तुम्हें इन गोले का अधिक उन्नत संस्करण देने के लिए वहाँ की कोशिश कर रहे थे,
लेकिन यह भ्रमित किया जा सकता है.
आप tcsh उपयोग कर एक स्क्रिप्ट लिखने या बुला जबकि बैश सुविधाएँ हैं सीएसएच या श
और फिर, tcsh या मार नहीं है जो एक कंप्यूटर पर चलाने के लिए प्रयास
आदेशों वहाँ में कर रहे हैं अगर आप कुछ त्रुटियाँ हो सकती है
जो उन गोले पहचान नहीं है.
इसके अलावा, आप अपने स्थानीय कंप्यूटर पर अपने खोल फोन किया हो सकता है
श या सीएसएच के रूप में यह फोन और तो और अधिक उन्नत गोले हो रही है.
तुम भी आप और अधिक उन्नत खोल का उपयोग कर रहे हैं कि इस तथ्य के बारे में सोच नहीं सकता.
तो यह एक संभावित ख़तरा है.
कैसे यह आप श टाइप अगर आप पार्टी की योजना बनाई है कि मिल की स्थापना की है
आप सीएसएच लिखें अगर आप tsch मिलता है?
लिंक कहा जाता है कि इन कंप्यूटरों में बातें कर रहे हैं
जो एक ही बात का उल्लेख करने के नाम दर्ज करने के लिए कनेक्ट कर सकते हैं.
यह या तो एक ही फाइल या जिसका उद्देश्य एक और फाइल का उल्लेख करने के लिए है एक फ़ाइल के लिए 2 के नाम हो सकते हैं.
वे कड़ी मेहनत और प्रतीकात्मक लिंक कर रहे हैं बुलाया. हम आज लगता है कि अब में जा नहीं होगा.
1 फ़ाइल श, 1 फ़ाइल की मार - - भी अलग फ़ाइलें हो सकती हैं
लेकिन वे दोनों बैश चलाते हैं.
फिर एक और क्वालीफायर यहाँ नहीं है.
आप एक नाम से इन गोले से एक बुला रहे हैं,
यदि आप किसी अन्य नाम से यह फोन के रूप में एक ही कार्यक्षमता मिलता था सोच सकते हैं.
वैसे, यह वास्तव में जरूरी है कि सच नहीं है.
इन आदेशों में वे कहते थे जिसके द्वारा नाम की जांच कर सकते हैं
और वे उस नाम के आधार पर अलग ढंग से व्यवहार कर सकते हैं.
एक मानक के अनुरूप करने की कोशिश कर के मुद्दों हो सकता है.
आप में से कुछ POSIX मानक या किसी अन्य के बारे में सुना हो सकता है,
शायद अन्य सुविधाओं.
यह कमांड लाइन तर्क से कभी कभी चुना जा सकता है
या खोल चर सेट करके.
श या बैश के रूप में यह फोन वास्तव में एक अलग निष्पादन करने के लिए नेतृत्व कर सकते हैं
यह आप को क्रियान्वित कर रहे हैं कि एक ही फाइल है, भले ही.
विचार करने के लिए एक और बात है, एक और कंप्यूटर भी अगर tcsh या पार्टी की योजना बनाई है कि है
वे अपने स्थानीय कंप्यूटर पर कर रहे हैं के रूप में वे नहीं जुड़े हुए हैं, तो
आप एक लिनक्स या मैक ओएस स्थानीय कंप्यूटर है,
तो फिर आप आप श या सीएसएच कि कॉल के खोल, नहीं आप पसंद कर सकते हैं कि एक मिल जाएगा.
वर्तमान बॉर्न शैल कम बैश में उन लोगों की तुलना संवर्द्धन है
लेकिन मूल बॉर्न खोल में उन पिछले.
इस बात का एक परिणाम के रूप में, यहां तक ​​कि वर्तमान बॉर्न शैल, श,
यह मार नहीं है, तब भी जब सी खोल करता है सी भाषा अधिक जैसा दिखता है.
कि सी खोल पहले बनाया गया था जब सच नहीं था, लेकिन यह उस तरह से विकसित किया गया है.
आप यहाँ नोटिस सकता है कि बॉर्न खोल के लिए छोड़कर इन सभी खोल के नाम
सीएसएच, मार - - वे कर रहे हैं जो खोल इंगित करने के लिए कुछ है
लेकिन बॉर्न खोल सिर्फ श है.
क्यों? यही मूल खोल था.
यह तो खोल नहीं, एक खोल रहा था
यह खोल रहा था के बाद से और, एक और खोल से अलग करने का कोई कारण नहीं था.
यह है कि नाम है और अभी भी करता है तो इसलिए.
>> यहाँ यह शीर्ष मैं वहाँ है एक खाते के लिए एक पासवर्ड डेटाबेस से एक रेखा है
एक अन्य कंप्यूटर पर.
मैं तुम, अंत में खोल वह हिस्सा देख सकते हैं कि नाम पाने के लिए प्रयास करने के लिए जा रहा हूँ.
पासवर्ड डेटाबेस सभी उपयोगकर्ताओं के लिए लॉगिन विशेषताओं रखती है.
शुरुआत में आप अब मेरा पिछले 2 पत्र देख सकते हैं जो उपयोगकर्ता नाम, है.
यहां के खेतों कॉलन से अलग हो रहे हैं.
पिछले क्षेत्र, आप देख सकते हैं, बिन / tcsh, खोल रहा है.
यही खोल विनिर्देशक है.
यहाँ कुछ दिलचस्प नहीं है.
यूनिक्स पहले विकसित किया गया था, केवल 1 खोल नहीं थी,
तो वहाँ कोई विकल्प नहीं था.
तो क्यों वे पासवर्ड डेटाबेस में एक क्षेत्र एक खोल निर्दिष्ट करने की अनुमति क्यों किया?
मुझे नहीं पता, लेकिन यह है कि वे किया भाग्यशाली है.
यह पासवर्ड डेटाबेस प्रारूप में परिवर्तन करने के लिए नहीं बल्कि मुश्किल है
कई कार्यक्रमों के अपने स्वरूप का संदर्भ लें क्योंकि
और फिर से लिखा जाना होगा.
यह है कि वे उस क्षेत्र शामिल है कि एक परम सुखी या आकस्मिक विकास है.
एक पासवर्ड फ़ाइल रेखा के उस तरह के अब तक मुझे पता है के रूप में सभी यूनिक्स और लिनक्स कंप्यूटर पर प्रयोग किया जाता है.
मैक अपनी प्रणाली है.
यह वास्तव में उस प्रारूप में लाइनों के साथ एक पासवर्ड फ़ाइल है
उपयोगकर्ता विशेषताओं परिभाषित कर रहे हैं लेकिन वह कहाँ नहीं है.
वहाँ एक प्रारंभिक टिप्पणी.
आप एक खोल बुला रहे हैं >>, आप अपने मौजूदा गोले का एक उप खोल के रूप में फोन कर सकते हैं.
इसलिए मैं यहाँ जाना है, की इन बातों से छुटकारा मिलता है.
यहाँ मैं सी खोल में हूँ.
सही मेरे खोल पहचानती है जो कि चर,,
वास्तव में हमेशा के लिए आप चला रहे हैं खोल क्या निर्धारित करने का एक विश्वसनीय तरीका नहीं है,
लेकिन इस मामले में यह है.
क्या मैं बस प्रकार हैं -
अब मैं पार्टी की योजना बनाई में हूँ.
कुछ चीजें एक ही होने जा रहे हैं. लोकसभा मुझे मेरे आदेशों बताता है.
मैं एक वापस अपनी सी खोल, रास, उसी को निलंबित करते हैं. है ना?
FG, अग्रभूमि, वापस मेरी पार्टी की योजना बनाई खोल लिए.
वापस सी खोल करने के लिए लोक निर्माण विभाग, वर्तमान निर्देशिका,.
लोक निर्माण विभाग, अलग निर्देशिका - इस मामले में वास्तव में नहीं एक अलग निर्देशिका.
यह एक ही निर्देशिका है.
कहते हैं कि मैं यहां एक आदेश कॉल करने के लिए कहना चाहते हैं: जहां LS.
कि क्या करता है?
रास कमान जहां यह मुझसे कहता है
मुझे एक निर्देशिका लिस्टिंग देता है कि एक, रास में स्थित है.
चलो वापस बैश शेल के लिए चलते हैं. एक ही बात करने की कोशिश करते हैं.
हम्म, दिलचस्प वहाँ, जहाँ: आदेश नहीं मिला है.
ऐसा क्यों है?
जहां कमान सी खोल करने के लिए बनाया गया है.
यह कहीं और से स्मृति में पढ़ा है और निष्पादित किया जाना है कि कोई आदेश नहीं है.
सी खोल अपनी आचार संहिता के भाग को निष्पादन के हस्तांतरण से यह रन
और यह पार्टी की योजना बनाई खोल में नहीं है.
इसलिए पार्टी की योजना बनाई, इस तरह के एक अंतर्निहित आदेश नहीं होने, यह, यह पता नहीं चलता है के लिए लग रहा है,
और हम एक त्रुटि मिलती है.
इसलिए हम एक सी खोल के तहत चल रहे एक पार्टी की योजना बनाई खोल दिया है, और हम चाहते हैं कि एक उप खोल कहते हैं.
और सिर्फ आप उत्सुक हैं, के मामले में पार्टी की योजना बनाई खोल आदेशों लगाने का अपना तरीका है.
hashed, यह अधिक तेजी से क्रियान्वित किया जा सकता है कि इस तथ्य को संदर्भित करता है
और अधिक तेजी से पाया जा रहा है.
यही कारण है कि इन गोले के कुछ करने के लिए बनाया संवर्द्धन में से एक है.
>> बॉर्न प्रकार के गोले प्रोग्रामिंग के लिए पसंद कर रहे हैं.
वे, छोरों, सशर्त बयान की तरह नियंत्रण संरचनाओं
आप सी की तरह प्रोग्रामिंग भाषा में उपयोग हो सकता है कि आदेशों की तरह
या जो कुछ भी भाषा. शायद तुम जावा में प्रोग्रामिंग या जो कुछ भी कर रहे हैं.
गोले भी उन है.
बॉर्न प्रकार के गोले, विशेष रूप से पार्टी की योजना बनाई, अधिक है
और वे अधिक से अधिक लचीलेपन के साथ डिजाइन किए हैं.
पार्टी की योजना बनाई खोल सरणियों है. मूल बॉर्न खोल नहीं करता है.
तो यह है कि प्रोग्रामिंग के लिए काफी फायदेमंद हो सकता है.
सी खोल वास्तव में सरणियों है लेकिन इन अन्य सुविधाओं का एक बहुत कुछ नहीं है.
बॉर्न प्रकार के गोले तेजी से क्रियान्वित करेगा
वे इंटरैक्टिव उपयोग के लिए इरादा सुविधाओं की जरूरत नहीं है.
आप एक ही उद्देश्य के लिए नीचे बातें लोड, यह एक और उद्देश्य के लिए उन्हें नीचे लोड करता है.
वहाँ कि व्यापार बंद है.
इंटरैक्टिव उपयोग के लिए इरादा कर रहे हैं जो उन सुविधाओं
वास्तव में पटकथा के लिए बहुत कम या कोई उपयोग नहीं कर रहे हैं.
यह सिर्फ मैं वहाँ शुरू कर एक तरह एक इंटरैक्टिव उप खोल का उपयोग करना संभव है
आप एक स्क्रिप्ट में उपयोग करना चाहते हैं जो आदेश का परीक्षण करने के लिए.
यही कारण है कि आप पर्ल के साथ क्या नहीं कर सकता है. आप के गोले के साथ ऐसा कर सकते हैं.
इसके आगे छोरों और के लिए की तरह भी संरचनाओं चलाने सहभागी हो सकते हैं.
वे सहभागी रूप से चलाने के लिए कभी कभी उपयोगी होते हैं
लेकिन अधिक संभावना है कि आप एक स्क्रिप्ट विकसित करने के लिए उन्हें प्रयोग कर रहे हैं.
>> नामः.
यह सी खोल के बारे में होने जा रहा है.
तुम वापस पहले के आदेशों को मिलता है, जहां इतिहास तंत्र
या आप पहले से ही उनमें से भागों चला है कि.
फिर, सी खोल के बारे में, बॉर्न शैल और कॉर्न खोल, इन बातों है
लेकिन मैं उन में शामिल होने नहीं जा रहा हूँ.
यहाँ तो मुझे लगता है कि कुछ उपयोगी फर्जी नाम हैं.
इसके बजाय रास टाइपिंग की - यह एक आम आदेश है -
सिर्फ एल प्रकार और अपने आप को 1 चरित्र बचा.
विभिन्न विकल्पों के साथ रास, उन सभी काम करते हैं.
उन परिभाषाओं उनके आसपास उद्धरण है कि ध्यान दें.
इन मामलों में, उद्धरण आवश्यक नहीं कर रहे हैं.
आप उद्धरण के बिना उन फर्जी नाम को परिभाषित कर सकते हैं, यह अभी भी काम करेगा.
उन्होंने सिफारिश की है.
आप उद्धरण का उपयोग नहीं कर सकते हैं जो ऐसी परिस्थितियाँ होती हैं
आप भाव को रोका जा सके, जो ऐसा करने के लिए कुछ करना चाहते हैं.
कभी कभी आप परिभाषा का हिस्सा बोली लेकिन नहीं यह सब कर सकते हैं.
यह भी आम तौर पर एक उद्धरण के बजाय डबल उद्धरण का उपयोग करने के लिए सिफारिश की है.
डबल उद्धरण चर परिभाषा पर प्रभाव पड़ता है,
विशेष रूप से उन बल्कि यह रोक से मूल्यांकन किया जाना हो सकता है.
क्यों हम मूल्यांकन को रोकने के लिए चाहता है?
और उद्धरण है कि हमारे लिए कैसे करते हैं?
>> यहाँ आपको दिलचस्प लग सकता है, जो एक आदेश है.
'रास ग्राम *'
छ *, आप शायद जानते हैं, एक वाइल्डकार्ड अभिव्यक्ति है
जी के साथ शुरुआत सभी फ़ाइल नाम के लिए.
मैं सिर्फ एक आदेश रास ग्राम * में लिखते हैं, तो मैं अपने मौजूदा निर्देशिका में उन सभी नामों की सूची मिल जाएगा.
यह उद्धरण के साथ यहाँ है के रूप में मुझे लगता है कि उर्फ ​​परिभाषित
यह आप इसे चला रहे हैं जहां अपने मौजूदा निर्देशिका में उस आदेश चलेंगे.
लेकिन अगर आप बिना उद्धरण उर्फ ​​परिभाषा चलाते हैं,
यह इस परिभाषित आदेश चलाता है जब यह वाइल्डकार्ड जी * का मूल्यांकन करेंगे.
तो उर्फ ​​की परिभाषा रास निर्देशिका में फाइलों की सूची के बाद किया जाएगा
उर्फ आदेश मार डाला है, जिसमें
भले ही आप वास्तव में आदेश चलाने का इरादा है, जहां की.
यह बहुत काम का नहीं है, और एक उद्धरण तारांकन के मूल्यांकन को रोकने के.
तो तुम सिर्फ * परिभाषा की जा रही रास जी मिलता है.
आप उर्फ ​​चलाने तब, जब LGS, यह तो है कि बाहर डालता है.
अब वहाँ कोई उद्धरण हैं, और आप उर्फ ​​आदेश चलाएँ जब यह तारांकन का मूल्यांकन करेंगे.
इसलिए कि एक बात है.
डबल उद्धरण, यहाँ है कि एक ही प्रभाव होता है
लेकिन दोहरे उद्धरण इतनी अच्छी तरह से काम नहीं होगा, जिसमें अन्य मामलों रहे हैं.
>> यहाँ एक और एक है.
आप grep कमांड जानते हो सकता है.
grep कमांड कुछ तार है जो लाइनों के लिए एक फ़ाइल को स्कैन करने के लिए इस्तेमाल किया जा सकता है.
तो चलो यहाँ पर चलते हैं और मैं अपने बॉर्न शैल से बाहर निकलें करेंगे.
ठीक है. यहाँ एक फाइल है.
चलो यह ग्रेप एबीसी तार का कहना हैं. वहाँ यह है.
मैं grep zddd करते हैं, मैं कुछ भी नहीं मिलता है. ठीक है.
तो यह है कि यह रिपोर्ट है, एक स्ट्रिंग पाता है, यह पता नहीं चलता है, यह है कि यह रिपोर्ट नहीं है.
यह इस पर है कि स्ट्रिंग है जो किसी भी लाइन outputs.
आप दस्तावेज में पा सकते हैं जो यहाँ विकल्पों में से सभी प्रकार हैं.
यहाँ यह करने के लिए एक ही रास्ता है.
क्या यह एक उर्फ ​​grabc 'ग्रेप एबीसी' के बारे में?
उर्फ परिभाषित किया गया है कि जब 1 तर्क शामिल करने के लिए जा रहा है.
इसलिए मुझे लगता है कि अगर यहां, अब मैं grabc करते हैं,
अब उर्फ ​​सरल कमांड से अधिक शामिल हैं. यह भी तर्क दिया है.
अब तक यह काम करता है.
मैं यहाँ एक और आदेश, यह एक है, इसलिए वहाँ उन में अलग तार कर रहे हैं
और यह मेल नहीं खाता है, क्योंकि यह वहाँ कुछ भी पता नहीं चलता है कि.
>> क्या मैं उर्फ ​​परिभाषा में मैं खोज करने के लिए जा रहा हूँ कि फ़ाइल शामिल करना चाहते हैं
और मैं उर्फ ​​मेरी चाहत है कि स्ट्रिंग के लिए एक तर्क के रूप में देना चाहते हो?
मैं, मेरी उर्फ ​​करने के लिए तर्क के रूप में एबीसी कहना चाहते हो सकता है
लेकिन उर्फ ​​पहले से ही फाइल निर्धारित की.
इस अभिव्यक्ति अंदर आता है और वह है,
हम पहले की तरह ग्रेप है यहाँ ध्यान दें.
हम यहां तार फ़ाइल है.
\! ^, प्रकार की एक अजीब अभिव्यक्ति, मैं तुम से पहले यह नहीं देखा है, तो लगता है.
विस्मयादिबोधक बिंदु सी खोल इतिहास तंत्र का हिस्सा है.
यह पहले के आदेशों को याद कर सकते हैं, यह बहुत आगे है उन आदेशों तक तर्क याद करते हैं और कर सकते हैं.
इतिहास तंत्र अलियासिंग के हिस्से के रूप में प्रयोग किया जाता है.
आप विस्मयादिबोधक बिंदु के बाद एक लाइन का उल्लेख करते हैं, यह इतिहास सूची में उस पंक्ति का उल्लेख होगा
यह एक पूरी अन्य विषय है क्योंकि अब हम में नहीं हो रही है.
यह एक लाइन का हिस्सा निर्दिष्ट करने के लिए संभव है.
तो! 03:02 आदेश संख्या 3 के दूसरे तर्क होगा.
यहाँ इस अभिव्यक्ति में कैरट पहले तर्क के लिए खड़ा है.
आप यह आप की बात कर रहे कमान जिनमें से एक संकेत नहीं देते हैं
यह तुरंत पिछले आदेश को संदर्भित करता है
और कैरट पहले तर्क के लिए एक प्रतीक है.
यह कैरट और न नंबर, क्योंकि आप, पेट के उपयोग करने की आवश्यकता नहीं है
इसलिए! ^ पिछले आदेश को पहला तर्क का मतलब है.
एक छोटी सी यहाँ मिलाया.
इस मामले में, आप एक उपनाम परिभाषा के रूप में उपयोग करते हैं,
इतिहास संदर्भ उर्फ ​​प्रयोग किया जाता है, जिसमें आदेशों को वापस संदर्भित करता है.
तो यह एक इतिहास आपरेशन के रूप में वापस 1 कमांड जा रहा है
लेकिन एक उर्फ ​​आपरेशन के रूप में यह आप टाइप करेंगे जिसमें आदेश को संदर्भित करता है,
grstrings_file, का कहना है.
हम इसे यहाँ में उद्धरण है. के लिए बैकस्लैश क्या है?
इस मामले में, के रूप में कहीं, हम इतिहास तंत्र पर अमल नहीं करना चाहती
उर्फ परिभाषित करते हुए.
हम वहाँ बैकस्लैश नहीं था, खोल पहला तर्क में खींच जाएगा
यह हम नहीं चाहते जो इस उर्फ ​​आदेश, भागा ठीक पहले आदेश की.
हम इस पर बाद में एक बहस में कॉल करने के लिए उर्फ ​​आदेश करने के लिए बनाया जा करना चाहते हैं.
एक उद्धरण एक विस्मयादिबोधक बिंदु, इतिहास संदर्भ बच नहीं है.
हो सकता है कि आप अभिव्यक्ति भागने कुछ के अर्थ बदल का मतलब पता है.
इस मामले में, यह एक विशेष अर्थ होने से कुछ को रोकने के लिए इसका मतलब है.
विस्मयादिबोधक बिंदु के विशेष अर्थ इतिहास है.
बचने के लिए और यह कि अर्थ नहीं है.
उद्धरण है कि ऐसा नहीं है, बैकस्लैश करता है.
तो क्या हम वास्तव में यहाँ भागने की 2 स्तर का उपयोग कर रहे हैं.
मैं यह लिखने के बिना अन्य विंडो में इस आदेश को स्थानांतरित करने के लिए जा रहा हूँ
इन संपादन आपरेशनों का उपयोग करके, जो आप उपयोगी मिल सकता है.
यहाँ कुछ और मैं तुम्हें दिखाता हूँ.
आप बस कोई तर्क के साथ उर्फ ​​लिखते हैं, तो यह आप सभी अपने तर्क कहता है.
यह मैं पहले से ही यहाँ था फर्जी नाम का एक गुच्छा है
मैं आज यहाँ उपयोग किया गया है कि उन लोगों के अलावा.
मैं सिर्फ एक उपनाम के नाम से लिखते हैं लेकिन, यह इसका क्या मतलब है मुझे बताता है.
उद्धरण चले गए हैं और बैकस्लैश चला गया है कि नोटिस.
यहाँ इस स्ट्रिंग कि उर्फ ​​परिभाषा का परिणाम है,
और अब यह बस है! ^ इसमें.
यह कुछ के लिए फ़ाइल तार में देखने के लिए जा रहा है.
मैं grstrings_file तार करते हैं तो, मुझे लगता है कि यह वहाँ के लिए देखने के लिए कुछ भी नहीं दिया
लेकिन यह तार में दिख रही है.
यह फाइल तार में शब्द तार नहीं मिला, लेकिन यह एबीसी खोज करता है.
और यह है कि पता नहीं चलता है.
तो यहाँ हम उर्फ ​​की परिभाषा में हिट है कि एक तर्क दे रहे हैं,
कि यह सम्मिलित किया जाता है.
इस अभिव्यक्ति से आता है जहां यह है.
आप अधिक से अधिक 1 का उपयोग कर सकते हैं.
कैरट पहले तर्क के लिए एक प्रतीक है.
आप एक दूसरा तर्क का उपयोग करना चाहता है, तो आप कहेंगे: 2.
दूसरा तर्क के लिए कोई विशेष प्रतीक है.
आप एक अंक का उपयोग कर रहे हैं और, क्योंकि आप पेट के उपयोग करने के लिए होगा.
यहाँ एक और विकल्प है, हालांकि, वहाँ है.
डॉलर के हस्ताक्षर अंतिम बहस के लिए खड़ा है.
यह एक प्रतीक है और, क्योंकि आप पेट के छोड़ सकते हैं.
तो यह सूची में अंतिम बहस होगी.
और वह एक भी नहीं है.
, Asterisk के सभी साधन, तो यह पूरा तर्क सूची है
यह एक अंक नहीं है क्योंकि और फिर, आप पेट के छोड़ सकते हैं.
मैं आप सभी से यह सब देख रहे हैं उम्मीद है.
>> इतिहास तंत्र इतिहास सूची में वापस पहले लाइनों पर जा सकते हैं.
आप एक उपनाम परिभाषा में यह कर सकता है.
मैं इस किया कभी नहीं देखा है.
यह इतिहास सूची से पहले आदेश खींच के असर होगा
आप अलग अलग आदेशों में हो सकता है जो अन्य नाम, निष्पादित जब
जब और जहां आप इसे लागू पर निर्भर करता है.
अटकल आप इस तरह के एक संदर्भ को बाहर खींचने के लिए चाहते हो सकता है
बस एक पहले आदेश था क्या पता करने के लिए.
मैं ऐसा कभी नहीं देखा.
मैं किसी के लिए चाहते हो सकता है, लेकिन यह बहुत संभावना नहीं है.
यहाँ एक और चीज नहीं है.
आपको लगता है कि इतिहास प्रकार संदर्भ का उपयोग करते हैं,
तो इस तरह के एक संदर्भ है जो करने के लिए केवल तर्क उपयोग किया जाता है.
आप एक इतिहास प्रकार संदर्भ का उपयोग नहीं करता जो एक उर्फ ​​परिभाषा है,
यह सिर्फ आदेश की शुरुआत हो जाता है
और आप आगे तर्क है, तो कुछ भी आप उसके बाद लिखें
आदेश में जोड़ दिया जाएगा.
इस मामले में, मैं बस वहाँ उदाहरण दिया, हम पहले तर्क का इस्तेमाल किया;
हम किसी भी अन्य लोगों का उपयोग नहीं किया.
अन्य तर्कों आदेश पंक्ति पर दिया गया था, तो वे इस्तेमाल नहीं किया जाएगा.
तुम सब पर इतिहास संदर्भ का उपयोग करते हैं, तो आप किसी भी तर्क को पाने के लिए इसका इस्तेमाल करना चाहिए.
>> मैं सिर्फ आंशिक रूप से गर्भित, उल्लेख करना चाहता हूँ यहाँ एक और बात है,
अर्थात् है कि विस्मयादिबोधक बिंदु के साथ इस इतिहास तंत्र
वापस मूल सी खोल करने के लिए चला जाता है.
tcsh इतिहास अभियान की शुरुआत की
संपादकों से आदेश और तार की तरह उपयोग करते हैं,
Emacs या छठी या तो.
मेरी व्यक्तिगत राय है कि Emacs इस उद्देश्य के लिए उपयोग करने के लिए बहुत आसान है
आप अपने नियमित रूप से संपादन के लिए छठी का उपयोग करें.
अब इतिहास के लिए अनुकूलित कर रहे हैं जो विभिन्न Emacs कमानों रहे हैं.
नियंत्रण पी इतिहास सूची में पिछले लाइन हो जाता है.
दूसरे नियंत्रण पी आप उस से पहले एक मिल जाएगा.
ऊपर तीर ही बात करता है.
आप पहले से ही कुछ मायनों वापस scrolled किया है, तो कंट्रोल एन अगले आदेश हो जाता है.
नीचे तीर वह भी करता है.
आप तीर और विभिन्न अन्य बातों के साथ सही करने के लिए छोड़ दिया जा सकते हैं.
यह इतिहास तंत्र का उपयोग कर सकते हैं
विस्मयादिबोधक बिंदु वाक्यविन्यास का उपयोग करने से ज्यादा आसान,
लेकिन आप एक उपनाम परिभाषा में उस का उपयोग नहीं होता.
हम कुछ अन्य समय उस पर जायेंगे.
>> चर.
आप प्रोग्रामिंग भाषा में क्या कर रहे हैं चर पता है.
गोले भी उन्हें दिया है.
सी खोल, चर आवंटित करने के लिए सेट कमांड का उपयोग करता है
इतना कि बी के मूल्य के लिए चर एक सेट -
मैं एक बेकार परिभाषा लेकिन यह कैसे किया जाता है की एक उदाहरण के रूप में कहा.
यह पहले से ही मौजूद नहीं है, तो सेट आदेश एक चर पैदा करेगा.
खोल लिपियों के लिए स्थितीय मापदंडों चर माना जा सकता है,
लेकिन उनमें से इस्तेमाल करते हैं और उनके लिए नियम कुछ अलग हैं.
आप एक स्क्रिप्ट के पाठ्यक्रम में $ 1 के लिए एक मूल्य प्रदान नहीं कर सकते.
आप में से कुछ करना चाहता था, तो उस प्रयोजन के लिए एक नया चर को परिभाषित करना होगा.
तर्क में कोई साथ सेट टाइप और आप सभी वर्तमान में परिभाषित चर की एक सूची मिलता है.
और चलो मेरे यहाँ अन्य खोल करने के लिए खत्म हो और हम करते हैं कि हम क्या मिल देखते हैं.
वहाँ काफी लंबी सूची है, है ना?
थोड़ा सा ऊपर स्क्रॉल. लगता है कि सभी को देखो.
इन चीजों में से कुछ खोल द्वारा स्वचालित रूप से परिभाषित कर रहे हैं.
खोल चर बनाता है और यह एक मूल्य देता है.
उनमें से कुछ खोल से परिभाषित लेकिन तब उपयोगकर्ता द्वारा नए सिरे से परिभाषित कर रहे हैं
अपनी पसन्द के अनुसार.
और उनमें से कुछ को वह उस दिन क्या कर रहा है के आधार पर उपयोगकर्ता द्वारा बनाई गई हैं.
वह सिर्फ तर्क में कोई साथ सेट है.
यहां इस बात का एक अजीब करने की सुविधा नहीं है.
बराबर चिह्न और चर नाम के बीच कोई रिक्त स्थान या तो वहाँ के लिए है
और बराबरी के दोनों किनारों पर मूल्य या रिक्त स्थान के हस्ताक्षर,
इस एक के रूप में.
यह काम नहीं करेगा, और यह वास्तव में एक वैध आदेश है
लेकिन यह आप का इरादा क्या नहीं होगा.
उस आदेश में काम करेंगे, क्योंकि आप सिर्फ एक चर नाम सेट और कहते हैं
कोई बराबर चिह्न या सेट और एक से बराबर के साथ एक चर नाम पर हस्ताक्षर और कोई मूल्य नहीं, साथ
यह एक शून्य मान के लिए चर की स्थापना की जाएगी.
तो एक = सेट एक वैध आदेश है.
सेट कमान एक ही लाइन पर अधिक से अधिक 1 चर परिभाषित कर सकते हैं.
तो यहाँ इस आदेश मूल्यों अशक्त करने के लिए ए और बी दोनों को परिभाषित करने का असर है.
शायद नहीं क्या आप चाहते हैं.
यहाँ यह एक, जैसा कि पहले उल्लेख, कोई त्रुटि को बढ़ावा मिलेगा
= बी एक वैध अभिव्यक्ति नहीं है.
एक चर नाम बराबर चिह्न के साथ शुरू नहीं कर सकते.
और यहाँ इन आगे बातें कर रहे हैं.
कोलन, इतिहास लाइनों से तर्कों का चयन करने के लिए इस्तेमाल किया गया
और वे इस्तेमाल किया जा सकता है - और मैं पहले में नहीं जाना था - उन चीजों को संशोधित करने के लिए.
उन्होंने यह भी खोल चर को संशोधित करने के लिए इस्तेमाल किया जा सकता है.
यहाँ यह एक, एक $ एक मूल्य है.
: R एक विस्तार से दूर ले जाएगा.
एक एक्सटेंशन एक डॉट निम्नलिखित कुछ भी हो सकता है,
एक डॉट और एक फाइल के अंत में यह निम्नलिखित कुछ भी,
केवल पिछले तुरत बाद सूची के अंत में.
इसलिए मैं इसे यहाँ है.
एक कि है. इसे छोड़ देंगे. ओ.
कोई विस्तार, पिछले तुरत बाद ही pathnames है, तो यह कोई प्रभाव नहीं पड़ेगा.
एक: घंटे, चर अभिव्यक्ति, एक निर्देशिका सूची के अंतिम तत्व से दूर ले जाएगा,
फिर, केवल पिछले तुरत बाद.
तो / ए / बी / सी / ए / बी हो जाता है,
सूची के बाद तत्व रिक्त है लेकिन क्योंकि यह एक बदला है.
यहाँ भी मैं जोर देना चाहते हैं जो कुछ न कुछ है.
इन क्वालिफायर इन फ़ाइलों के अस्तित्व के लिए खोज नहीं है.
वे बस तार के लिए देखो.
ये pathnames, फ़ाइल नामों में हेरफेर करने का इरादा कर रहे हैं
लेकिन वे इसे एक फ़ाइल नाम नहीं है, भले ही कोई भी तार पर इस्तेमाल किया जा सकता है.
और वे अस्तित्व के लिए मत देखो
इसलिए ऐसी कोई फाइल नहीं है, तो / ए / बी / सी, यह अभी भी काम करेगा.
यह किसी काम का है कि क्या एक और सवाल है, लेकिन यह अभी भी काम करेगा.
चर बॉर्न गोले में अलग हैं. हम है कि बाद में मिल जाएगा.
डॉलर के हस्ताक्षर सिर्फ विस्मयादिबोधक बिंदु और तारांकन तरह बच निकला जा सकता है.
डॉलर के हस्ताक्षर एक बैकस्लैश या एकल उद्धरण के साथ भाग निकले किया जा सकता है.
डबल उद्धरण सभी के गोले में अजीब प्रभाव है
एक डॉलर के मूल्यांकन के लिए मजबूर कर के चर अभिव्यक्ति पर हस्ताक्षर.
यह एक तरह से बच निकला जा रहा है तो, अगर डबल उद्धरण प्रभाव हो सकता है
की यह वैसे भी मूल्यांकन किया जाना हो सकता है.
यह एक छोटे से भ्रामक है.
ऐसे दोहरे उद्धरण अंदर एक उद्धरण के रूप में भागने की कई स्तरों, वहाँ रहे हैं
या एक उद्धरण के अंदर दोहरे उद्धरण, आप क्या होगा देखने के लिए परीक्षण करना चाहिए
आप एक प्रयोग कर रहे हैं अगर एक चर करने के लिए.
उन 2 स्थितियों - डबल के एकल, एकल अंदर के दोहरे अंदर -
जरूरी है कि आप एक ही परिणाम देना नहीं है.
वातावरण चर को बाध्य सी खोल चर.
वातावरण चर को भी सी खोल में चर रहे हैं
और वे भी अन्य गोले में भी चर रहे हैं.
सी खोल में, वे अलग सेट कर रहे हैं.
मैं पहले कह रहा था बातें खोल चर के बारे में हैं.
पर्यावरण चर चर का एक अलग सेट कर रहे हैं
हम बाध्य चर कॉल जो कई चर के अपवाद के साथ,
बहुत महत्वपूर्ण हैं और हम बाद में उन में मिल जाएगा जो.
पर्यावरण चर स्वचालित रूप से पारित कर रहे हैं
गोले या अपने खोल से चलाए जा रहे हैं कि आदेशों के लिए.
अन्य चीजें नहीं हैं. खोल चर, फर्जी नाम नहीं हैं. पर्यावरण चर रहे हैं.
हम पर्यावरण चर उन्हें फोन यही कारण है कि,
विचार माहौल सिर्फ अपने वर्तमान खोल अतीत फैली कि जा रहा है.
उन्होंने आदेशों के लिए चीजों को परिभाषित करने के लिए इस्तेमाल किया जा सकता है.
यहाँ एक उदाहरण है. प्रिंटर, LPDEST.
उन चर दोनों एक आदेश बातें मुद्रित करने के लिए प्रयोग करेंगे कि एक प्रिंटर परिभाषित कर सकते हैं.
आप के चारों ओर कई प्रिंटर है, तो आप एक तुम्हें पसंद है डाल करने के लिए चाहते हो सकता है.
हम 2 चर कारण आदेशों के विभिन्न सेट लिखा गया है
इन विभिन्न चर का उपयोग कर.
आप उन्हें विभिन्न मूल्यों दे सकता है.
सबसे अधिक संभावना है कि आप उन्हें एक ही मूल्य दोनों देता हूँ.
उन चीजों को काम, क्योंकि छपाई करते हैं कि आदेशों
इन चर के मूल्यों की जांच करने के लिए प्रोग्राम किया गया.
एक प्रोग्राम है कि जिस तरह से नहीं लिखा गया है, तो यह कुछ और करने के लिए लिखा गया है,
चर अप्रासंगिक हो जाएगा.
तो ऑपरेटिंग सिस्टम इन चर के लिए नहीं लग रही है
आप एक प्रिंटर का उल्लेख करने के लिए हर समय.
यह उस तरह से प्रोग्राम है अगर छपाई करता है एक आदेश है कि इन चर के लिए लग रही है.
इन चरों अक्सर अपने आरंभीकरण फ़ाइलों में परिभाषित कर रहे हैं
लेकिन जरूरी नहीं.
आप कमांड लाइन पर उन्हें परिभाषित कर सकते हैं.
वे एक आदेश में परिभाषित किया जा सकता है.
कुछ चलता है कि आदेश चर का अपना ही चयन हो सकता है -
उदाहरण के लिए एक विशेष सॉफ्टवेयर पैकेज के लिए अद्वितीय हैं कि चर,.
आपको लगता है कि पैकेज को चलाने के लिए जब वे परिभाषित किया जाएगा.
कैसे इन चर एक उप खोल करने के लिए पारित कर रहे हैं?
एक उप खोल लिखा जाता है, तो यह उस क्षेत्र में नहीं लिखता है.
पर्यावरण चर के लिए समर्पित है कि उप खोल के क्षेत्र
उप खोल से नहीं लिखा है, यह नकल करके लिखा है.
आप एक साधारण आदेश चलाते हैं, जैसे कि, इन आदेशों को मुद्रित या जो कुछ भी करने के लिए के रूप में
वे एक नया खोल बनाने के द्वारा शुरू.
खोल एक खोल बनाता है और फिर इसे का हिस्सा लिख ​​देगा
थोड़ा भ्रमित है जो आप चला रहे हैं उस आदेश के साथ,
लेकिन यह है कि इन आदेशों का परिवेश चर कैसे मिलता है
वे फिर बाद में करने के लिए देखें कि.
चर setenv परिभाषित करने के लिए यहाँ आदेश.
यही कारण है कि आप इसे कैसे परिभाषित है. Setenv, चर, मूल्य: यह 3 तत्व है.
आप बस कोई तर्क के साथ setenv है, तो आप क्या मिलता है?
उन चर के सभी की एक सूची.
फिर, यह एक अच्छा लंबी सूची है और इस मामले में, दूसरों के रूप में,
इन चर खोल से ही अपना लॉगिन आपरेशन द्वारा मोटे तौर पर परिभाषित कर रहे हैं
बल्कि कुछ भी मैंने किया द्वारा की तुलना में.
यहाँ एक और आदेश, printenv है.
वह भी पर्यावरण बाहर प्रिंट.
, यहाँ संपादक = छठी इस आखिरी बात पर ध्यान दें.
का कहना है कि मैं एक संपादक कहता है कि कुछ का उपयोग कर रहा हूँ अगर
और मैं एक संपादक निर्दिष्ट नहीं है और यह मुझे पसंद अनुमति देता है, यह मुझे छठी दे सकता है.
क्या मैं printenv संपादक तो क्या होगा? यह है क्या मुझे बताता है.
सही है कि इससे पहले, एक चर, कम था.
ये मैं कम आदेश चलाएँ जब अपनी चूक विकल्प हैं,
जो फाइलें प्रदर्शित करता है.
मैं ऐसा इसलिए, अगर printenv, 1 तर्क या 0 तर्क ले सकते हैं
नहीं 1 से अधिक.
वहाँ अन्य आदेश भी कर रहे हैं, लेकिन हम सब कि आज में शामिल होने नहीं जा रहे हैं.
तरह खोल चर के लिए संशोधक वहाँ थे याद रखें: घंटे,
एक पथ के अंतिम तत्व छोड़ देंगे, जो
या: आर, एक विस्तार छोड़ देंगे जो.
वे अब भी पर्यावरण चर के लिए लागू होते हैं. वे करने के लिए इस्तेमाल नहीं किया था.
यह वे संशोधित नहीं किया जा सकता है इस्तेमाल किया. अब वे हो सकता है.
यह साल से अधिक गोले की घटनाओं के साथ अग्रिमों में से एक है.
मैं कह रहा था कि वातावरण के हिस्से के रूप में गोले
और सी खोल में खोल चर कुछ अपवादों को छोड़कर, अलग सेट के साथ, कर रहे हैं.
आप एक ही नाम के साथ एक वातावरण चर और एक खोल चर स्थापित कर सकते हैं.
वे विभिन्न चर हो जाएगा, वे अलग मान हो सकते हैं.
एक की वॅल्यू अन्य के मूल्य में परिवर्तन नहीं होगा.
इन चर सभी डॉलर के हस्ताक्षर के साथ मूल्यांकन कर रहे हैं - $ एक $ जो भी हो.
तो क्या आप इस हों तो? आपको मिल जो एक जानते हो?
अपने परीक्षण में मैं खोल चर मिल गया,
लेकिन इस दर्ज़ नहीं है और आप उस पर भरोसा नहीं कर सकते.
तो मैं खोल और पर्यावरण चर पैदा कर रही है, आप से पूछना
एक ही नाम के एक अच्छे विचार के साथ? ठीक है सं.
जिसमें पर्यावरण और खोल चर उन प्रमुख अपवाद क्या हैं
एक दूसरे से जुड़े हुए हैं?
इन 4 कर रहे हैं.
पूंजी पत्र कार्यकाल वातावरण चर,
छोटे पत्र, टर्मिनल अनुकरण के प्रकार में चर अवधि खोल.
, मैं बस यहाँ पर जाने के लिए जा रहा हूँ और मैं यहाँ गूंज, एक उपयोगी आदेश में क्या करने जा रहा हूँ
$ कार्यकाल $ अवधि. और वहाँ.
टर्म X विंडो सिस्टम में प्रदर्शित खिड़कियों के लिए एक टर्मिनल प्रकार है.
टर्म रंग अलग अलग रंग की अनुमति देता है कि का एक संस्करण है.
हम क्यों इन परिभाषित करते हैं? इस के लिए अच्छा क्या है?
संपादक की तरह स्क्रीन को पुनर्व्यवस्थित आदेश
भागने दृश्यों बुलाया विशेष दृश्यों, भेजने,
एक टर्मिनल या एक खिड़की करने के लिए इसके आगे यह पुनर्व्यवस्थित करने के लिए.
उन दृश्यों टर्मिनलों के विभिन्न प्रकार के लिए अलग अलग हैं.
यह लोगों का उपयोग करने के लिए जो यह बताता है.
कभी कभी वहाँ मुद्दे हैं.
आप को बदलने के लिए चाहते हो सकता है.
चीजें काम नहीं कर रहे हैं, कभी कभी टर्मिनल प्रकार, गलत सेट है
आप अवधि चर पुनर्परिभाषित द्वारा इसे ठीक करने में सक्षम हो सकता है.
इन मामलों में, एक चर, पर्यावरण चर या खोल चर बदल रहा है,
एक दूसरे में परिवर्तन होना चाहिए.
मैं अनुभव के माध्यम से पता चला है कि राजधानी पत्र में कार्यकाल बदलते
हमेशा छोटे अक्षरों में खोल चर अवधि नहीं बदलता है.
यह एक बग है.
कि हमेशा सच है, तो मैं नहीं जानता. यह सच नहीं है कि समय के अधिकांश, लेकिन यह हो सकता है.
आप एक बदलाव करते हैं तो, सिर्फ इतना है कि बाहर की जाँच करें.
यह लेकिन एक बार आप करते हैं एक समय में, आप मान को बदलने की जरूरत है कि अक्सर नहीं है.
वातावरण चर उपयोगकर्ता.
फिर, बड़े अक्षरों में पर्यावरण चर, छोटे अक्षरों में चर खोल.
यह आपका उपयोगकर्ता नाम है.
यह बहुत ही असाधारण परिस्थिति है
आप को बदलने के लिए चाहेगा कि.
अपना उपयोगकर्ता नाम किसी और है, तो उसे हर तरह की चीजों से दूर फेंक कर सकते हैं.
घर निर्देशिका, उपयोगकर्ता के घर निर्देशिका.
फिर, आपको लगता है कि बदलने के लिए नहीं करना चाहती.
हम, पथ चर को कवर करने जा रहे हैं कि इन मामलों और एक के सभी में सूचना,
वातावरण चर में बड़े अक्षरों में है और बाध्य खोल चर छोटे अक्षरों में है.
आप एक बदलते हैं, तो आप अन्य बदलना चाहिए.
आप 2 चर बाध्य नहीं कर सकते हैं के रूप में बाध्यकारी के इस तरह स्थापित नहीं किया जा सकता है,
अन्य की तुलना में इन 4, और इन चर में बाध्यकारी पूर्ववत नहीं किया जा सकता है,
आप उन्हें अलग नहीं कर सकते.
तो चर के इन 4 जोड़े बंधे हुए हैं.
वे हमेशा रहेगा. कोई भी दूसरों के लिए किया जाएगा.
इसके अलावा, यह एक ही नाम के साथ चर बनाने के लिए संभव होगा
विपरीत प्रकार की.
आप छोटे अक्षरों में एक खोल चर अवधि बना सकता है
या बड़े अक्षरों में एक वातावरण चर शब्द.
उन चर इन बनती चर के स्वतंत्र होगा
और वे एक दूसरे से स्वतंत्र होगा.
आप लोगों को भ्रमित करना चाहते हैं जब तक आप ऐसा क्यों करेगा क्यों मैं कल्पना नहीं कर सकते.
यहाँ यह एक, पथ चर, यह एक बहुत महत्वपूर्ण एक है.
यहां एक और बात यह मामले हो सकते हैं
एक दूसरे के लिए बाध्य नहीं कर रहे हैं, जो समान बनती नाम के साथ चर की.
बडे और छोटे अक्षरों में, चर, शेल और खोल हो सकता है.
कि चर एक खोल चर है कि अगर नाम के आधार पर, आप नहीं जानते
या एक वातावरण चर, और वे एक दूसरे के लिए बाध्य नहीं कर रहे हैं.
तो बनती नाम की उस तरह बाध्य चर संकेत नहीं करता है.
मैं पहले दिखा रहा था जो पथ चर,,
शैल कमांड के लिए लग रहा है, जिसमें pathnames की एक सूची है.
चलो यहाँ इस विंडो को अधिक मिलता है और हम गूंज $ पथ, राजधानी पत्र करता हूँ -
पर्यावरण चर - $ पथ गूंज, छोटे पत्र - चर खोल.
निर्देशिका की सूची एक ही है कि नोटिस. ये स्वाभाविक है.
एक परिवर्तन, आप अन्य बदलते हैं.
वातावरण चर में तत्वों कॉलन से अलग हो रहे हैं. सूचना है कि.
खोल चर रिक्त स्थान से अलग होती है.
इस परिवेश चर एक स्ट्रिंग है.
खोल चर एक सरणी है.
बॉर्न खोल सरणियों नहीं था.
पार्टी की योजना बनाई है, लेकिन यह पहले से ही खोल का एक निश्चित हिस्सा है.
यह एक स्ट्रिंग और नहीं एक सरणी है.
सी खोल हमेशा सरणियों था.
सरणियों के साथ काम करने के लिए बहुत आसान कर रहे हैं.
आप इसे के कुछ हिस्सों के लिए उल्लेख कर सकते हैं.
तो गूंज $ पथ [1] और मैं मिल / usr / बिन, पहले तत्व.
फिर, डॉलर याद साइन इतिहास सूची के अंतिम तत्व के लिए खड़ा है.
क्या वहां क्या होता है? यह एक चर प्रतीक के रूप में डॉलर के हस्ताक्षर खोजने की कोशिश की.
मैं यह बच. उफ़. यह है कि या तो नहीं ले जाएगा.
इन चीजों में से कुछ इतनी अच्छी तरह से काम नहीं करते.
शायद हम सिर्फ इतना है कि बाहर छोड़ देंगे.
Asterisk पूरी बात करने के लिए संदर्भित करता है, लेकिन यह है कि आप एक तत्व निर्दिष्ट नहीं करते, तो तुम क्या हो.
सरणी चर हेरफेर किया जा सकता है कि एक और तरीका है,
वहाँ तत्वों, 7 तत्वों की संख्या.
यहाँ हम चर नाम पहले पाउंड चिह्न डाल दिया.
यहाँ एक और एक है. वहाँ एक सवालिया निशान लग.
यह एक तार्किक मान है. उस चर मौजूद है कि इंगित करता है.
यह चर के साथ काम करने का एक और तरीका है.
वैसे, कि, एक सरणी चर होना जरूरी नहीं है.
यही कारण है कि किसी भी चर हो सकता है.
मुझे क्या करना है और अगर वहाँ ऐसी कोई चर है और मैं एक 0 मिलता है.
चर मूल्यांकन के बारे में वहाँ एक और छोटी सी बात.
पीछे यह एक करने के लिए यहाँ, अगर आप इस के साथ काम करना चाहता था किसी कारण के लिए
बल्कि सरणी के साथ काम करने से, खोल चर,
पेट के आधार पर इन चीजों को अलग नहीं कर सकता कि कमानों रहे हैं.
वास्तव में, आप संभवतः मार खोल में यह क्या कर रही हो जा रहे हैं,
एक स्क्रिप्ट के कुछ प्रकार, कि आप इसे कैसे करोगे शायद होगा.
लेकिन सी खोल में यह सरणी का उपयोग करने के लिए बहुत आसान है.
बॉर्न खोल में, चर इस तरह एक ही अभिव्यक्ति द्वारा आवंटित कर रहे हैं,
आप एक प्रोग्रामिंग भाषा में एक चर आवंटित कर सकते हैं जिस तरह से जैसे,
और यहाँ कोई स्थान नहीं होना चाहिए.
यह सिर्फ 1 स्ट्रिंग हो कि आवश्यक है.
बॉर्न प्रकार के गोले में, सभी चर खोल चर रहे हैं.
पर्यावरण चर खोल चर के एक सबसेट हैं.
वे निर्यात से गैर परिवेश चर से विशिष्ट हैं.
ऐसा करने के लिए आदेश निर्यात प्रिंटर की तरह, निर्यात होता है.
हम इस तरह के एक चर को परिभाषित करने के लिए थे,
हम इसे खोजने के लिए एक मुद्रण आदेश चाहता था, यह एक वातावरण चर करना होगा,
और कहा कि हम इसे बनाने कैसे है.
यहाँ तरह की भ्रामक कुछ है.
यह अभिव्यक्ति, पर्यावरण के लिए निर्यात, इस बॉर्न खोल अवधारणा से निकला
और अभी तक कि अभिव्यक्ति, सी खोल के वर्णन में प्रयोग किया जाता है
ऐसा कोई आदेश निर्यात के रूप में है, जहां.
आप अभी से ही निर्यात का कहना है, तो आप निर्यात की एक सूची प्राप्त -
तो मैं बस यहाँ निर्यात करते हैं, तो ऐसी कोई बात नहीं.
ठीक है, हम वहाँ जाते हैं.
ये बातें, वैसे, भी खोल से परिभाषित कर रहे हैं.
मैं अपने आप से इनमें से किसी भी परिभाषित नहीं किया.
खोल से ही हर तरह की बातें करता है.
यह स्वतः ही बातें करना चाहिए.
पार्टी की योजना बनाई या कॉर्न खोल में, अगर आप इस तरह एक आदेश चला सकते हैं
एक चर एक मूल्य देने और 1 आदेश में यह निर्यात करेगा, जो दोनों.
बॉर्न खोल में वे निर्यात एक तरह अलग आदेशों रहना होगा.
यहाँ भ्रमित करने वाला है कि एक और पहलू है.
सी खोल में सेट आदेश चर को परिभाषित करता है
और कोई तर्क के साथ चर 'मूल्यों को क्या कर रहे हैं आपको बताता है.
पार्टी की योजना बनाई खोल में, कोई तर्क के साथ सेट आदेश, एक ही बात करता है
लेकिन तर्क के साथ यह काफी कुछ अलग करता है.
तो ये यहां विभिन्न तर्क हैं.
इनमें से कुछ उनमें से कुछ खोल चर रहे हैं, पर्यावरण चर रहे हैं.
वे सब के सब वास्तव में खोल चर रहे हैं. उन में से कुछ पर्यावरण चर रहे हैं.
तर्क के साथ सेट आदेश संचालित करने के लिए इस्तेमाल किया जा सकता है
एक स्क्रिप्ट के लिए स्थितीय मापदंडों पर,
जो उन्हें एक बार में सभी होने का एक तरीका है.
हम सच है कि आज में नहीं जा सकते.
यह भी खोल व्यवहार बदलने के लिए इस्तेमाल किया जा सकता है.
विशेष रूप बैश में खोल कैसा व्यवहार का निर्धारण करेगा जो चर रहे हैं.
फिर भी आप देख सकते हैं कि सिर्फ इस एक आदेश, इस आदेश.
चर और चर प्रकार के द्वारा पीछा typeset कॉर्न और बैश गोले में प्रयोग किया जाता है.
, यह अनिवार्य नहीं है, लेकिन यह चर के मूल्यों को प्रतिबंधित करने के लिए इस्तेमाल किया जा सकता है
त्रुटियों को रोकने के लिए उपयोगी हो सकता है, और यह काफी आम है जो कर सकते हैं.
तो मैं सिर्फ मामले में आप कहीं यह देखना है कि उल्लेख कर रहा हूँ.
जहां आदेश.
मैंने उल्लेख किया याद रखें कि पहले जहां सी खोल में आदेश,
आप एक आदेश pathname का स्थान बता सकते हैं जो.
यहाँ आदेश प्रतिस्थापन है.
आप कहीं अपने कीबोर्ड इस तरह दिखता है एक चरित्र पर लगाना चाहिए.
कीबोर्ड पर स्थान भिन्न करने के लिए जा रहा है.
हम यह backquote बुलाया है. यह एक बोली के आकार के बारे में है.
यह सही कम करने के लिए ऊपरी बाएँ से चला जाता है.
यहाँ अपने मैक कुंजीपटल पर यह ऊपरी बाएँ हाथ कोने में है.
यही चरित्र एक आदेश के भीतर एक आदेश पर अमल करने के लिए इस्तेमाल किया जा सकता है.
आप backquotes अंदर एक अभिव्यक्ति है,
अभिव्यक्ति है कि इसे चलाने के लिए है, कोई आदेश है.
उस आदेश का उत्पादन
फिर पूरे backquote अभिव्यक्ति के लिए एवजी है
तब कि उत्पादन के साथ चलता है, जो एक लंबे समय तक आदेश अंदर
इसके आगे तर्क और इसकी स्ट्रिंग के हिस्से के रूप में.
यहाँ है कि का उपयोग करता है जो एक आदेश है.
चलो यहाँ ऑपरेशन का प्रदर्शन करते हैं.
Backquotes बाहर ले, चलो यहाँ चलते हैं.
नियंत्रण एक Emacs संपादन वाक्य रचना के साथ लाइन की शुरुआत करने के लिए मुझे मिलता है.
अब तक pathnames, जहां क्या करता है
मैं इसे इस तरह से करते हैं, लेकिन जब यह तो pathnames की उस सूची में प्लग
इस पूरे backquote अभिव्यक्ति और उन पर रन LS-L के स्थान पर.
सुविधाजनक की तरह, है न?
तो है कि एक बात साफ है. यही backquotes कैसे काम करते है.
अब चलो थोड़ा आगे नीचे चलते हैं.
ये फर्जी नाम हैं. मैं वास्तव में इन का उपयोग करें.
मैं 1 संपादन आपरेशन के साथ इस में प्राप्त करने की कोशिश करेंगे.
ठीक है.
अब हम उन परिभाषाओं बाहर आया कैसे देखते हैं.
उर्फ इसे परिभाषित कैसे मुझे बता रहा LWH.
यह सिर्फ यह है, लेकिन बाहरी उद्धरण से दूर ले जाया गया है नोटिस
और विस्मयादिबोधक बिंदु से दूर ले जाया जाता है.
! *, सभी तर्कों की पूरी सूची.
एक उर्फ ​​परिभाषा में यह मैं इस का उपयोग करने के लिए जहां वापस लागू होगी.
LWH ksh पार्टी की योजना बनाई. ठीक है.
कि कैसे काम करता है? यह मुझे कुछ टाइपिंग बचाता है.
चलो बस यहाँ कुछ और ही उल्लेख करने के लिए एक छोटा सा चलते हैं.
यहाँ इन विभिन्न गोले सूचना है. मैंने पहले यह उल्लेख किया जाना चाहिए.
सीएसएच एक यहाँ पर 2 और ऐसा करता है / बिन / tcsh है.
हम उन वास्तव में एक ही फ़ाइल है कि अन्य तरीकों से स्थापित कर सके.
क्या आप पार्टी की योजना बनाई मिल श टाइप अगर मैं कह रहा था याद है.
इस प्रकार के और आप यह मिलता है.
लेकिन उन से जुड़े नहीं हैं. वहाँ उन एकल वाले हैं.
और यह एक दूसरे को कॉल कर सकते हैं जो फ़ाइल की तरह नहीं है.
तो उन अलग फाइल कर रहे हैं; सी खोल लोगों को एक ही फाइल कर रहे हैं.
वापस नीचे यहाँ, यहाँ एक दूसरे, इस उर्फ,
कि इस आदेश, फाइल चल रहा है ध्यान दें.
यही उर्फ ​​कि चलाता है. फ़ाइल आप एक फ़ाइल के प्रकार बताता है.
तो FWH ksh पार्टी की योजना बनाई. ठीक है.
वह फाइल आदेश का उत्पादन है.
आप इस यहाँ क्या मतलब है पता है, अगर मैं नहीं जानता कि
2 आर्किटेक्चर के साथ मच हे सार्वभौमिक द्विआधारी.
मैक में 2 संभव प्रोसेसर प्रकार के होते हैं
और कुछ कार्यक्रमों दोनों साथ चलाने के लिए सक्षम होने के लिए लिखा गया था,
और फ़ाइल आदेश है कि निर्धारित कर सकते हैं, इसलिए है कि इसका क्या मतलब है.
इन फ़ाइलों की दोनों कि जिस तरह से लिखा गया था.
तो हम, हम backquote कैसे काम करता है, उर्फ ​​कैसे काम करता है
हम वास्तविक जिंदगी में लोकसभा या फ़ाइल कैसे काम करता है.
यह काम नहीं कर सकता. "जहाँ जहाँ" और "LWH जहां" का प्रयास करें. ठीक है, चलो कि कोशिश करते हैं.
जहां जहां.
जहां एक खोल में बनाया है.
इससे पहले हम बैश जहां नहीं था पता चला कि याद रखें.
आप पार्टी की योजना बनाई खोल में जहां लिखते हैं, तो आपको एक त्रुटि संदेश मिलता है.
बल्कि यह एक अलग आदेश किया जा रहा से खोल का सिर्फ एक हिस्सा है.
मैं LWH जहां की तलाश में लिखते हैं, तो क्या होता है? वहाँ देखो क्या होता है.
जहां दौड़ा जहां, इस उत्पादन मिल गया, और फिर लोकसभा चलाने की कोशिश की
एक खोल में बनाया है जहां पर एल के रूप में.
जहां नहीं है, लेकिन अन्य लोगों को मौजूद नहीं है.
इनमें से कोई भी वास्तव में, मौजूद हैं.
तो यह है कि हमेशा काम नहीं करता है, और यह भी कि कैसे कुछ चीजें दिखाता है
आप सोचा कि हो सकता है काफी क्या नहीं करते.
के आगे एक छोटे से यहाँ नीचे चलते हैं.
यहाँ यह बैश में है. वह भी backquote तरह आदेश प्रतिस्थापन है.
लेकिन backquote के विपरीत, यह इस चर शैली का उपयोग करता है.
एक डॉलर के हस्ताक्षर के साथ शुरू जो अभिव्यक्ति का एक नंबर रहे हैं
इन चर नहीं कर रहे हैं, वे डॉलर के हस्ताक्षर का उपयोग उधार
किसी तरह की अभिव्यक्ति से संकेत मिलता है.
यही कोष्ठकों या कोष्ठक या डबल कोष्ठकों से घिरे किया जा सकता है,
जो एक अलग उद्देश्य है.
यहां सिंगल कोष्ठकों सिर्फ backquotes की तरह एक आदेश प्रतिस्थापन कर रहे हैं.
डबल कोष्ठकों वास्तव में एक अंकगणितीय ऑपरेशन है.
अन्य syntaxes, अन्य संचालन कर रहे हैं.
Backquote वाक्यविन्यास बैश में उपलब्ध है.
बहरहाल, यह एक बेहतर है. यह पढ़ने के लिए बहुत आसान है और यह घोंसले के शिकार की अनुमति देता है.
आप $ (आदेश) के अंदर एक और आदेश हो सकता है
की तरह कुछ -
मैं वहाँ एक सूची मिलता है.
मैं भी backquote था कि अगर काम करेगा.
क्या मैं ऐसा कुछ करना चाहते हैं -
आप शायद वास्तव में इस आदेश का उपयोग नहीं होगा,
लेकिन इस आंतरिक आदेश प्रतिस्थापन एक साथ शुरुआत सभी फ़ाइलों के नाम गूंजता है,
तो यह एक, उन फ़ाइलों पर LS-L चलाता
और फिर यह सिर्फ उत्पादन गूँज.
तुम्हें शायद ऐसा नहीं होगा, तुम सिर्फ गूंज या लोकसभा करना चाहते हैं,
लेकिन इस आदेशों की नेस्टिंग कैसे काम करता है दिखाता है.
तो बस एक और विशेषता यहां.
मैं यह पहले उल्लेख किया है, कि जब तुम जहां सी खोल में,
आदेशों लगाने के लिए बॉर्न प्रकार के गोले में काम करता है लिखें.
मैं वहाँ कह रही थी बस क्या निर्मित आदेश,.
कमानों जहां तरह खोल, का हिस्सा हैं.
खोल लोकसभा की तरह एक कमांड निष्पादित करता है, यह मार्ग के माध्यम से यह रेखांकित
कहीं न कहीं, कुछ निर्देशिका में यह पाता है
स्मृति में, एक नया खोल बनाता है कि पढ़ता है,
खोल में आदेश रास या जो भी पढ़ता
पर्यावरण चर पहले से ही स्थित हैं जहां,
और फिर यह करने के लिए निष्पादन स्थानांतरित.
अंतर्निहित आदेश, उस आदेश के लिए कोड खोल के अंदर है,
तो खोल बस अपनी आचार संहिता के भाग को क्रियान्वित करने से शुरू होता है.
जहां इस तरह के एक आदेश है. यह वास्तव में तेजी से हो जाता है.
यह स्मृति में कुछ भी पढ़ने के लिए नहीं है, यह स्मृति में पहले से ही है.
निर्मित आदेशों हमेशा एक ही नाम के साथ आदेशों पर पूर्वता ले.
पथ में निर्देशिका में हैं कि कमानों ही नाम हो सकता है,
अलग निर्देशिका में आदेश, अलग निर्देशिका में फाइल.
पहले मार्ग में ही होता है कि एक आपको मिलेगा एक है.
एक अंतर्निहित आदेश नहीं है, तो आप हमेशा यह मिलता है.
यह पथ में एक आदेश से कम वरीयता देने के लिए कोई रास्ता नहीं है.
आप रास्ता है कि आदेश प्राप्त करना चाहते हैं, तो आप पूर्ण pathname टाइप कर सकते हैं.
वहाँ एक आदेश कहीं जहां रास्ते में थे, तो
आप / बिन / जहां टाइप कर सकते हैं और आप यह मिलता था.
आप पूरे पथ टाइप नहीं करना चाहते हैं, तो आप एक उपनाम परिभाषित कर सकता है.
आप उर्फ ​​अंतर्निहित आदेश के रूप में एक ही नाम दिया है अगर वास्तव में, यह काम करेगा
उर्फ परिभाषा मूल्यांकन किया जाता है क्योंकि
खोल इसे निष्पादित किया जाना चाहिए जो एक अंतर्निहित आदेश है कि निर्धारित करता है पहले.
तो फिर इस यहाँ कुछ कमांड के साथ एक छोटे से अधिक जटिल हो जाता है.
कुछ कमांड का मामला वास्तव में निर्मित कर रहे हैं आदेश और मार्ग में.
उनमें से एक आदेश मैं सिर्फ उन उदाहरणों में थोड़ी देर पहले इस्तेमाल किया, गूंज है.
इको पथ में कोई आदेश है और यह हर खोल में है.
वे आवश्यक रूप से सभी एक ही तरह से व्यवहार नहीं करते.
यह केवल पथ में मूल रूप से एक आदेश था.
यह बाद में गोले करने के लिए बनाया गया था.
पर्यावरण पर निर्भर है, जो विकल्प हैं क्योंकि
और कमांड लाइन विकल्प, निर्मित आदेशों
पथ में किया गया था कि आदेश के रूप में ही कार्य करने के लिए लिखा गया था,
यह वे कहते हैं कि जिस तरह से लिखा गया होता संभावना नहीं है
आदेश पहले से ही पथ के लिए नहीं लिखा गया था.
तो इस साइड इफेक्ट है. इसका इतिहास यहाँ असर पड़ता है.
वहाँ विकल्प मौजूद हैं.
Echo_style बुलाया tcsh में एक चर द्वारा परिभाषित एक विकल्प भी नहीं है.
वह काम करता गूंज कि ​​जिस तरह से बदल सकते हैं कि इन चर में से एक है.
आप एक चर असाइन कर सकते हैं, जिसमें अन्य मामलों रहे हैं
कि एक अंतर्निहित आदेश सहित खोल आपरेशन, काम करता है, उस तरह से बदल जाता है.
यह और कुछ को प्रभावित नहीं करेगा
अन्य आदेशों खोल चर के लिए उपयोग नहीं करते हैं क्योंकि,
केवल वातावरण चर.
लेकिन शेल आपरेशन खोल चर पढ़ सकते हैं.
यही सीएसएच के लिए काम नहीं करेगा. यह केवल tcsh है. संवर्द्धन कि में से एक है.
यह अक्षरों से परे का मूल्यांकन करता है जब पार्सिंग, दृश्यों है
यह चर, उपनाम, इतिहास के संदर्भ का मूल्यांकन करता है.
इन बातों के लिए एक विशेष अनुक्रम है.
यह एक विशेष क्रम में बातें करता है, तो
और एक तरह की एक अभिव्यक्ति है कि कुछ करने के लिए हो जाता है
पहले से ही मूल्यांकन किया गया है, जो इसे फिर से मूल्यांकन नहीं किया जाएगा.
यह यह हो जाता है, तो यह सिर्फ पात्रों पर समाप्त हो जाएगी.
तो अगर आदेश प्रतिस्थापन की तरह कुछ भाव का मूल्यांकन
या चर या जो कुछ भी एक अभिव्यक्ति को जन्म देता है
आप मूल्यांकन किया जाना चाहेगा, जो
कि मूल्यांकन के क्रम में बाद में होता ही है कि अगर काम करेंगे.
मुझे लगता है मैं स्पष्ट वहाँ जा रहा हूँ उम्मीद है.
यही पार्स अनुक्रम, सी खोल में एक ऑपरेशन,
यह गैर निर्मित में आदेश के लिए है के रूप में बनाया आदेशों के लिए ही नहीं है.
मैं वहाँ बैश के बारे में यकीन नहीं है.
उदाहरण के लिए, एक खोल चर, तो एक इतिहास संदर्भ उत्पादित
यह शायद इतिहास में वापस नहीं जाना होगा.
यह सिर्फ विस्मयादिबोधक बिंदु मिल जाएगा.
वास्तव में, हम सिर्फ सही है कि अब बाहर की कोशिश कर सकते हैं.
एक = सेट और हम वहाँ में डाल करने के लिए होगा.
ओह, रुको. माफ़ कीजिए. मैं पार्टी की योजना बनाई में ऐसा किया. मैं यहां यह करना चाहता था.
देखना है, तो यह है कि इतिहास संदर्भ का मूल्यांकन नहीं किया
यह इतिहास का भाव के मूल्यांकन की बात पिछले पहले से ही था, क्योंकि
यह चर का मूल्यांकन किया जाता है.
इसलिए कि पार्स की 1 प्रभाव है.
और फिर, निर्मित आदेशों उसी तरह से नहीं किया जाता है.
ठीक है. चलो यहाँ अगले एक में चलते हैं.
इस 1 लाइन होने का इरादा है, लेकिन यह आसान को पढ़ने के लिए कर रही है.
कि क्या करता है?
आप हम फ़ाइल नाम वाइल्डकार्ड के रूप में तारक मूल्यांकन कर सकते हैं कि याद कर सकते हैं,
और प्रश्न चिह्न और ब्रैकेट अभिव्यक्ति की तरह अन्य फ़ाइल नाम वाइल्डकार्ड कर रहे हैं.
मूल्यांकन के उस तरह globbing कहा जाता है.
इस आदेश की शुरुआत में noglob सेट ऐसा नहीं करते कहते हैं.
सेट किए बिना noglob वापस कर रही है कि करने के लिए जाना कहते हैं.
उस सेट ग्लोब कि प्रभाव नहीं होगा ध्यान दें.
साधारण भाषा में, सेट ग्लोब या सेट किए बिना noglob, बराबर होना प्रतीत होता है
लेकिन यहां ऐसा नहीं है. यह सेट किए बिना noglob है.
अब TSET. TSET टर्मिनल सेट के लिए खड़े थे.
Windowing सिस्टम उपलब्ध हो गया इससे पहले कि यह है कि अक्सर अब इस्तेमाल किया, लेकिन नहीं है
और आप एक ही टर्मिनल था, तुम प्रकार का निर्धारण करने के लिए हो सकता है.
और कुछ एक ईथरनेट पर या नेटवर्क से आ रहा था, तो
आप इसे एक VT100 है कहने के लिए चाहते हो सकता है.
VT100 टर्मिनल के कारोबार में एक मानक की तरह है. यह दिसम्बर टर्मिनल से आता है.
तुम सिर्फ डायलअप करते हैं - कि नोटिस? इस हुह वापस एक तरीके से चला जाता है?
तो हम बस यहाँ पर TSET करते हैं,
मैं सिर्फ TSET करते हैं, यह मेरे टर्मिनल रीसेट करने की है, लेकिन आप कुछ भी नहीं देखा था.
यह वास्तव में कुछ भी नहीं बदला.
-S
ठीक है.
setenv कार्यकाल टर्म रंग.
उस बदलाव नहीं किया तो हम पहले से ही अवधि कि जिस तरह से सेट किया गया था कि पता है.
यही कारण है कि हम यह करना चाहते हैं जिस तरह से है.
लेकिन यह है कि इस आदेश, TSET-S, सिर्फ उत्पादन इन आदेशों का नोटिस. यह उन्हें नहीं चला था.
यह इन आदेशों का नहीं चला था, उन्हें यह उत्पादन.
तो यह तो चला जाएगा जो आदेशों का उत्पादन करने का इरादा है.
आप उस फ़ाइल में कमांड याद मैं सिर्फ तुम उस में एक क्यू पता चला था.
तो चलो करते हैं.
क्यू कुछ उत्पादन को दबा, लेकिन आप देख सकते हैं कि, यहां कोई फर्क नहीं पड़ता.
मैं सिर्फ यह मामला नहीं था कि आप को दिखाने के लिए कर रहा हूँ कि.
इस backquote वाक्यविन्यास में है.
Backquote यहाँ, यहाँ backquote नोट.
मैं यहाँ इन बातों को छोड़ते हुए हूँ.
ये क्या करने के लिए यह कह के मामलों रहे हैं
टर्मिनलों के विशेष प्रकार के मामले में -
ईथरनेट, नेटवर्क, डायलअप, तुम क्या है.
हम वास्तव में इन बातों का कोई भी नहीं कर रहे हैं क्योंकि यह यहाँ कोई फर्क नहीं पड़ता.
मैं सिर्फ आदेश illustrating हूँ.
मैं backquote के साथ ऐसा करते हैं, क्या मैं करने जा रहा हूँ?
इसके अलावा इस सेट noglob और सेट किए बिना noglob शामिल है कि यहां नोटिस,
इसलिए उन अब परिभाषा में बेमानी हैं.
वह हमेशा सच नहीं था, लेकिन अब वे इस आदेश में शामिल रहे हैं.
लेकिन अगर मैं ऐसा देखते हैं क्या होता
और नियंत्रण एक साथ लाइन की शुरुआत करने के लिए जाना है और मैं ऐसा.
ठीक है, सेट: आदेश नहीं मिला है. उस तरह की अजीब, है ना?
सेट एक प्रसिद्ध आदेश है. यह खोल का हिस्सा है.
सेट: आदेश नहीं मिला है? ऐसा क्यों है?
हम्म. ठीक है, चलो इस बारे में सोचते हैं.
यह एक backquote आदेश प्रतिस्थापन चल रहा है,
और उस आदेश को पार्स करने के अनुक्रम के एक खास हिस्से में होता है.
सेट एक अंतर्निहित आदेश है.
तो यह है कि आदेश प्रतिस्थापन करता है समय से,
यह पहले से ही में बनाया आदेशों की पहचान करने की बात पिछले मिल गया है.
तो यह पथ में एक आदेश के रूप में अगर सेट मानते हैं.
कहने की जरूरत नहीं, यह पता नहीं होता है और आपको कोई त्रुटि मिलती है.
खैर. पार्स अनुक्रम का एक उदाहरण है.
और हम उस बारे में क्या करते हैं?
EVAL, यहां यह बहुत दिलचस्प आदेश सूचना है.
मुझे लगता है कि क्या करता है आश्चर्य है.
आप इस मैनुअल को देखें तो - और चलो कि बस
इन पुस्तिकाओं हैं कैसे भ्रमित दिखाने के लिए -
आदमी tcsh, उलझन पुस्तिका, यहाँ चीजें पाने के लिए या तो आसान नहीं है.
यहाँ हम eval ARG, जाओ, तो हम 1 या अधिक तर्क हो सकता है
और चीजों की एक सूची नहीं है.
खोल के लिए सामग्री के रूप में तर्क को मानते हैं
और वर्तमान खोल के संदर्भ में जिसके परिणामस्वरूप आदेशों कार्यान्वित.
यह आमतौर पर आदेश के परिणाम के रूप में उत्पन्न आदेश पर अमल करने के लिए प्रयोग किया जाता है
या चर प्रतिस्थापन पार्स इन प्रतिस्थापन से पहले होता है.
बहुत अच्छा.
और यहाँ वे भी एक नमूना उपयोग के लिए TSET आदेश का संदर्भ लें
एक तरह मैं सिर्फ तुम्हें पता चला.
अब मैं वापस एक उपयोगी जगह पर खिड़की पाने के लिए है.
चलो यहाँ से अधिक प्राप्त करते हैं और हम चाहते हैं कि eval कि बस से पहले किया जाता है देखेंगे.
यहां हम उस आदेश को तीर के साथ ऊपर जाना - तो चलो अगर हम चाहते हैं कि क्या होता है देखते हैं
और शुरुआत करने के लिए नियंत्रण एक, eval.
ठीक है, तो यह काम करता है.
आप eval करते हैं, यह इसके बाद आता है क्या लेता है और यह एक आदेश में आता है.
यह आप अनिवार्य रूप से दो बार यह पार्स करने के लिए सक्षम बनाता है.
यहां अनुभाग, backquotes अंदर इस आदेश चलाता
उत्पादन हो जाता है.
आउटपुट इन की तरह यहाँ उन आदेशों के रूप में चलाने के लिए माना जाता है
यह एक और इस एक पर.
तो उन आदेशों अब यहाँ इस क्रम में हैं,
लेकिन इन आदेशों में निर्मित कर रहे हैं और यह अभी उन्हें प्राप्त नहीं कर सकते.
इसलिए हम eval करने के लिए जाना, EVAL, कि ऊपर उठाता है सब फिर से पूरी बात शुरू होता है, और यह काम करता है.
एक उदाहरण backquoting दोनों eval, पार्स, पार्स के परिणामों,
और शायद आजकल आप के लिए बहुत कम काम का है जो एक आदेश.
ठीक है. सब ठीक है, umask.
, चलो यहाँ इस आदेश पर देखें 022 umask. मुझे लगता है कि क्या करता है आश्चर्य है.
बस इसके बाद कुछ नहीं के साथ umask टाइप करते. 22. ठीक है.
022 और इसे फिर से करना.
आप अंदाज़ा लगा सकते है, कोई तर्क के साथ umask आप वर्तमान मुखौटा बताता है;
तर्क के साथ umask यह है कि बनाता है, लेकिन लगता है कि मैं पहले से ही था एक था.
022 का क्या मतलब है?
ये यहाँ एक फ़ाइल के लिए सुरक्षा कर रहे हैं.
वे फ़ाइल को पढ़ने या लिखने या निष्पादित करने के लिए अनुमति दी गई है, जो निर्धारित करते हैं.
सुरक्षा के भी अनुमतियों कहा जाता है.
आर, पढ़ने, लिखने के लिए डब्ल्यू के लिए खड़ा है
और वहाँ मौजूद नहीं है जो एक्स,, पर अमल के लिए खड़ा है.
वहाँ 3 श्रेणियां हैं.
पिछले 3 तत्वों उपयोगकर्ता की श्रेणी में हैं. वे, मेरे लिए उपयोगकर्ता लागू होते हैं.
यहाँ ये 3 समूह के लिए लागू होते हैं.
फ़ाइल 1 समूह के अंतर्गत आता है, उपयोगकर्ता कई समूहों से संबंधित हो सकता है,
लेकिन उपयोगकर्ता इस फाइल अंतर्गत आता है जो करने के लिए समूह में है,
वह उपयोगकर्ता नहीं है तो इन सुरक्षा उसे लागू होंगे.
और यह एक और हर कोई है.
इन श्रेणियों परस्पर अनन्य हैं.
उपयोगकर्ता सुरक्षा के लिए उसे लागू होते हैं,
समूह सुरक्षा, उपयोगकर्ता अलावा अन्य समूह के सदस्यों को लागू
और अन्य सुरक्षा केवल उपयोगकर्ता और समूह के सदस्यों के अलावा अन्य लोगों के लिए लागू होते हैं.
एक अनुसंधान या ऐडवर्ड्स या एक एक्स है, तो यह सुरक्षा दी जाती है कि इसका मतलब है.
कोई हाइफ़न वहाँ है, यह ऐसा नहीं है इसका मतलब है.
वास्तव में इन के अलावा यहां रखा जा सकता है कि अन्य बातें कर रहे हैं
जो मैं अब में नहीं मिलेगा.
umask आपके द्वारा बनाई गई फ़ाइलों के लिए एक डिफ़ॉल्ट को परिभाषित करता है.
और एक मुखौटा के रूप में, मूल रूप से यह आप सेट नहीं है कि बिट्स कहते हैं.
कैसे इस बिट्स बन गया है?
आप एक यथार्थ संख्या के रूप में इनमें से प्रत्येक के बारे में सोचो, अगर
यह 1s सा है इस 2s है, इस 4S है.
तो 0 से 7 तक
इन 3 के लिए आपके पास आर के किस संयोजन, डब्ल्यू, और एक्स का वर्णन करेंगे
और फिर इन और तब इन के लिए के लिए एक समान संख्या.
तो 022 अन्य के लिए 0, समूह के लिए 2, उपयोगकर्ता के लिए 2 का मतलब है.
लेकिन यह एक मुखौटा है. मुखौटा तुम नहीं है क्या है.
मैं माफी चाहता हूँ. मैं सिर्फ गलत क्रम में आप चीजों को दे दी है.
यह पहली बार 3 है. ये 3 उपयोगकर्ता हैं, इन 3 समूह हैं, इन 3 अन्य हैं.
खेद है कि मैं गलत क्रम में आप इन दे दी है.
उन का पहला है जो 0,,, मान प्रदर्शित नहीं करता है
एक नंबर वहाँ नहीं है, लेकिन अगर यह एक 0 है.
यही कारण है कि इन सभी का 3 की अनुमति दी जाएगी इसका मतलब है.
यह विशेष रूप से एक में एक्स की अनुमति नहीं है कि सूचना.
कारण खोल निर्धारण करने में सक्षम है
चाहे एक फ़ाइल को मार डाला जाना है या नहीं.
इस एक निष्पादन योग्य फ़ाइल नहीं है, यह एक्स सेट नहीं किया.
यहाँ अनुमति, दूसरी श्रेणी लिखना कि 2 का मतलब है,
बीच में एक, इनकार कर दिया है.
तो फिर, इन इसका खंडन किया है कि बातें कर रहे हैं.
खैर, एक्स की अनुमति दी है, लेकिन यह निष्पादन योग्य नहीं है, क्योंकि यह यहाँ नहीं है
और इसी प्रकार अन्य लोगों के लिए.
तो यह है कि एक आम umask है.
एक अन्य आम एक 700 है - अपने आप को सब कुछ है और कोई किसी और को कुछ दे.
और अन्य संभावनाएं हैं.
मैं वापस करने के लिए जाना होगा. मैं वहाँ के लिए LWH, उस के लिए वापस खोज कर सकते हैं इतिहास का उपयोग करना.
ठीक है. यहाँ तो, इन गोले हैं.
पार्टी की योजना बनाई, सिस्टम खाते है जो मालिक, सब कुछ कर सकते हैं.
समूह और हर किसी को पढ़ने या निष्पादित लेकिन लिख नहीं कर सकते हैं.
यह एक भी मालिक यह करने के लिए लिखने की अनुमति नहीं है.
मालिक, यह करने के लिए सिस्टम खाते लिखना चाहता था
वह पहले सुरक्षा को बदलना होगा.
लेकिन फिर, umask यह मास्किंग द्वारा डिफ़ॉल्ट सेट,
सेट नहीं किया जाएगा कि बिट्स संकेत द्वारा.
यह सी खोल लिए. Cshrc है, जो अपने आरंभीकरण फ़ाइलों में से एक में आम तौर पर है
या बॉर्न प्रकार के गोले के लिए. प्रोफाइल.
सिस्टम पर अन्य आरंभीकरण फ़ाइलें हैं, तो यह भी कहीं हो सकता है.
वैसे भी, कि umask है.
यहाँ अजीब के कुछ प्रकार, वहाँ
और यही कारण है कि एक ही आदेश में इस के लिए वहाँ है, है ना?
मैं यह लिख रहे थे, तो मैं इसे एक चर, umask = कुछ मूल्य होगा.
क्यों एक पूरे के आदेश सिर्फ इस उद्देश्य के लिए है?
कारण यह बस वापस यूनिक्स के मूल को जाता है.
यूनिक्स 1970 में बेल लेबोरेटरीज में सिर्फ कुछ प्रोग्रामिंग परियोजना था.
लोग सिर्फ कार्यक्रम के लिए एक साथ मिल गया.
वे यह दुनिया भर में एक ऑपरेटिंग सिस्टम बनने का इरादा कभी नहीं.
अलग अलग लोगों को बहुत ज्यादा सोच के बिना विभिन्न भागों लिखा
बल्कि अधूरा - कैसे की वे इस्तेमाल किया जा करने के लिए जा रहे थे.
और यह उस तरह एक साथ आए थे, और यह कुछ मामलों में ऐसा अभी भी है.
तो यह है कि इतिहास को दर्शाता है, और इन विसंगतियों और यह अजीब तत्व अभी भी कर रहे हैं.
ठीक है. यहाँ अगले एक.
जैसा कि मैंने पहले लिखा था, सी खोल वास्तव में, प्रोग्रामिंग के लिए बहुत ज्यादा इस्तेमाल नहीं किया है
यह हो सकता है.
यह और अधिक धीरे धीरे, फिर इंटरैक्टिव उपयोग के बीच व्यापार बंद कार्यान्वित
जो गति से शामिल अधिक संसाधन है,
जो प्रसंस्करण बिना कर सकते हैं.
कॉर्न और बॉर्न फिर गोले द्वारा बॉर्न शैल से जुड़े अतिरिक्त सुविधाओं
उन्हें धीमा करने के लिए नहीं लगता है, और यही वजह है कि मैं नहीं जानता.
यह सिर्फ बेहतर प्रोग्रामिंग हो सकता है, लेकिन मुझे पता करने की स्थिति में नहीं हूँ.
यह उल्लेख किया है, हालांकि यहां गति वास्तव में, इस तरह के एक बड़ा सौदा नहीं है.
कारण खोल लिपियों वास्तव में काफी तेजी से हो रहा है.
जैसे आदेशों का एक बहुत कुछ है, एक calculational कार्यक्रम में अगर वहाँ
आप शायद एक खोल स्क्रिप्ट में ऐसा नहीं होता.
आपरेशन काफी सरल और सीधा कर रहे हैं.
बहुत धीमी गति से कर रहे हैं कि मैंने अनुभव किया है कि लोगों को
धीमी आदेशों के दोहराया अनुप्रयोगों शामिल है.
इससे पहले मैं sed धारा संपादक उल्लेख किया है. उस आदेश धीमी है.
आप SED कई बार चलाते हैं, आप एक धीमी स्क्रिप्ट मिल जाएगा, लेकिन यह धीमी है कि खोल नहीं है.
बॉर्न खोल में यह चल रहा है, सी खोल में यह चल रहा है की तुलना में ज्यादा तेजी नहीं होगा
वहाँ कुछ लाभ हो सकता है, यद्यपि वहाँ.
अतिरिक्त प्रोग्रामिंग क्षमताओं, दूसरे हाथ पर,
आप बॉर्न प्रकार के गोले प्रयोग करेंगे क्यों महत्वपूर्ण कारण हैं.
सी खोल यह अजीब विशेषताएं हैं -
एक चर एक खोल चर या एक वातावरण चर है अगर आप नहीं जानते कि तथ्य.
यह बहुत भ्रमित किया जा सकता है.
इसे लिखने के लिए इतना आसान नहीं है
सिर्फ अन्य भाषाओं में प्रोग्रामिंग के अपने अनुभव पर आधारित है.
मैं आप अपने अनुभव के साथ बॉर्न प्रकार के गोले अधिक संगत मिल सकता है.
कुछ स्क्रिप्ट, हालांकि, लंबाई में लाइनों के हजारों किया जा सकता है.
मैंने देखा है कि उन ऑपरेटिंग सिस्टम पट्टी के लिए किया जाता.
उन बहुत धीरे धीरे अमल कर सकते हैं, लेकिन आप बहुत बार उन नहीं चला है.
यह आप पट्टी कर रहे हैं केवल जब,
और यह उन बातें करता है, जो केवल सिस्टम मैनेजर है,
तो यह एक मुद्दे के वास्तव में ज्यादा नहीं है.
लाइनों के सैकड़ों रहे हैं कि वे लंबे समय वास्तव में काफी तेजी से निष्पादित.
यहां यह उल्लेख कर, उन संवर्द्धन क्या हैं?
सरणियों, गणित, - मैं पहले से ही उनमें से कुछ का उल्लेख किया है
$ (बैश शेल में गणना के लिए) अभिव्यक्ति,
आदेश प्रतिस्थापन के अन्य प्रकार के.
परीक्षण के आदेशों के विभिन्न प्रकार होते हैं
जिसके द्वारा आप एक फ़ाइल या अन्य चीजों के अस्तित्व पर सशर्त परीक्षण कर सकता है.
यहां पिछले है, यहाँ इस आदेश.
यह क्या करता है, और क्यों किसी को भी इसका इस्तेमाल होता है?
printenv VariableName.
हम printenv क्या है पता है. यह हमें एक चर के मूल्य बताता है.
ऐसी कोई चर क्योंकि वहाँ और printenv VariableName हमें बहुत ज्यादा नहीं बता देंगे.
खाली.
लेकिन यह कुछ सार्थक दे.
यही कारण है कि वहाँ या तो नहीं है. ठीक है. मैं मुझे लगता है कि परिभाषित कभी नहीं लगता है.
चलो बस अपने पर्यावरण की जांच करते हैं.
इससे आप अपने पर्यावरण का निरीक्षण कर सकते हैं जिसके द्वारा एक अन्य आदेश है.
अच्छा पुराने संपादक, हम पहले देखा नहीं है.
कि क्या करता है?
यहाँ हम एक backquote अभिव्यक्ति है.
इस सी खोल रहा है याद रखें.
तो printenv संपादक हमें संपादक का मूल्य देना होगा. यह छठे है.
और फिर यह चर एक, सेट कमांड के लिए कि मूल्य की स्थापना की जाएगी.
मैं $ गूंज एक करते हैं तो अब, मैं छठी मिलता है.
यही कारण है कि बहुत उपयोगी प्रतीत नहीं होता है.
हालांकि, यह वास्तव में एक उद्देश्य है.
हम एक चर एक खोल चर या एक वातावरण चर है कि क्या पता नहीं है
डॉलर के हस्ताक्षर मूल्यांकन वाक्यविन्यास का उपयोग करके, हम printenv उपयोग कर सकते हैं
यह एक वातावरण चर है कि बनाना.
एक खोल चर संपादक अगर वहाँ थे तो, यह यह कमाई नहीं होती.
यह केवल पर्यावरण चर के साथ काम करता है.
वहाँ एक खोल चर रहे थे और मैं अपने मूल्य चाहता था,
मैं यह करने के लिए किसी अन्य तरीके खोजने के लिए होगा.
ऐसा करने के लिए एक तरह से सेट और गरमा रही द्वारा किया जाएगा.
इस अक्षरों से परे, विशेष पात्रों में से एक है.
यह कुछ और करने के लिए सेट के उत्पादन में भेजता है.
हम वहाँ मिल सकता है देखते हैं क्या.
कुछ भी नहीं. ठीक है. चलो बस सब एक साथ वहाँ में क्या देखते हैं.
यह echo_style, मैंने पहले उल्लेख किया गया था. ठीक है, चलो करते हैं.
मैं echo_style, पहले उल्लेख किया है याद रखें
गूंज आदेश चलेंगे तरीका निर्धारित करता है.
बीएसडी बर्कले मानक वितरण के लिए खड़ा है.
यह 1970 के दशक से बर्कले यूनिक्स है.
यही चला सकते गूंज कि ​​तरीकों में से एक है.
टीसी खोल में है कि मूल्य को echo_style स्थापना गूंज उस तरह से व्यवहार करने के लिए प्रेरित करेगा.
इसलिए नहीं है कि, लेकिन सेट सेट ही खोल चर हो जाता है.
यह एक खोल चर नहीं है जो संपादक, नहीं मिल जाता.
कुछ भी नहीं.
इसलिए कि उन्हें अलग करने का एक तरीका है.
लेकिन आप इस तथ्य है कि ऐसा कुछ अजीब आदेश के माध्यम से जाने के लिए
खोल चर या वातावरण चर के बीच अंतर करने के लिए
कुछ प्रयोजनों के लिए सी खोल के अव्यावहारिक प्रकृति की तरह से पता चलता है.
और अब, पिछले और शायद कम से कम, इस आदमी पृष्ठों है.
तुम जानते हो सकता है उन लोगों, आदमी का मार्गदर्शन करने के लिए आदेश कम है.
गोले के लिए मैन पेज पढ़ने के लिए मेहनत कर रहे हैं. वे बहुत लंबे समय से कर रहे हैं.
वे यह मुश्किल के लिए आप क्या देख रहे हो खोजने के लिए कर सकते हैं कि एक तरह का आयोजन कर रहे हैं.
तो तुम एक उद्देश्य के साथ कुछ के लिए देख रहे हैं,
उस प्रयोजन के लिए एक खोल चर या कुछ और है, यदि आप जानते नहीं हो सकता
इसलिए आप जहां यह देखने के लिए पता नहीं हो सकता है.
आप विभिन्न तार के लिए देख सकते हैं, लेकिन तार अक्सर दोहराया जाता है.
तो यह आम तौर पर पढ़ने के लिए मुश्किल है.
हम सिर्फ eval आदेश को खोजने के लिए एक छोटे से पहले टीसी खोल मैन पेज को देखा.
कुछ चीजें तेजी से चलते हैं.
एक दृष्टिकोण के एक स्ट्रिंग के लिए खोज करने के लिए है.
आप पेजर का उपयोग कर सकते हैं.
पेजर एक पेजर आपरेशन के अंदर एक आदेश या एक स्ट्रिंग के लिए देखने के लिए कड़ी आलोचना की है.
डिफ़ॉल्ट रूप से मैन कम या ज्यादा हो सकता है, या तो पेजर का उपयोग करेगा.
आप उन लोगों के साथ परिचित हैं, तो मैं नहीं जानता, लेकिन उन बिट द्वारा फाइलें सा दिखा सकते हैं.
मुझे लगता है हम यहाँ मिल गया है विशेष रूप से इन फ़ाइलों को प्रदर्शित करने के लिए कम उपयोग किया गया है.
तुम वहाँ के अंदर खोज सकते हैं.
आप अलग अलग खोज तार उपयोग करने की कोशिश कर सकते हैं.
इसके अलावा अलग ऑपरेटिंग सिस्टम में मैन पेज ही नहीं हो सकता.
वे सीएसएच और tcsh के लिए अलग पृष्ठों हो सकता है.
वे कर रहे हैं मैक पर नहीं कर रहे हैं, लेकिन उन अलग कमानों रहे हैं यदि वे हो सकता है.
श वास्तव बैश फोन नहीं करता, तो शायद एक अलग आदमी पेज होगा.
कुछ सिस्टम सिर्फ सी खोल में निर्मित आदेशों के लिए अलग आदमी पृष्ठों है.
कभी कभी तुम एक अंतर्निहित आदेश का वर्णन पढ़ने के लिए चाहते हैं
कि रास्ते में भी है, गूंज की तरह, आप गूंज पर उस आदेश पर आदमी पृष्ठ पढ़ने की जरूरत है
यह एक अंतर्निहित आदेश के रूप में काम करेंगे कि कैसे निर्धारित करने के लिए
आप अंतर्निहित आदेश नहीं बुला रहे हैं, भले ही.
यही कारण है कि सामान्य रूप में ऑपरेटिंग सिस्टम की एक खामी है, गोले के लिए ही नहीं,
गोले के लिए विशेष रूप से मैन पेज, काफी लंबे समय से कर रहे हैं, हालांकि
आंशिक रूप क्योंकि वे एक सकारात्मक हो सकता है, जो उनके लिए उपयोगी सुविधाओं को जोड़ दिया है.
ठीक है. किसी भी सवाल कर रहे हैं? आप ऊपर लाना चाहते हैं किसी भी विषय?
यहाँ कुछ भी प्रासंगिक?
खैर, यह आप सभी से बात कर बहुत अच्छा हो गया है.
मैं आपको इस संगोष्ठी के बाहर कुछ मिल आशा
कि अपने भविष्य के प्रयासों में आप के लिए उपयोगी हो जाएगा.
[CS50.TV]