पैरा सुरक्षित हमारे अवधारणाओं हम प्रोग्रामिंग के लिए 2 बहुत उपयोगी उपकरण सीखेंगे जो बश में पूरी तरह से काम करते हैं। बनाना सीखो कार्यों और परिभाषित करते हैं पाइपलाइनों पहली बार में जटिल लग सकता है, लेकिन फिर हम अपार देखेंगे उपयोगिता वे हमें प्रदान करते हैं। |
पाइप्स
विशेष रूप से, और बहुत सारे मोड़ लेने के बिना, एक पाइपलाइन एक ऐसी विधि है जो एक प्रक्रिया को दूसरे के इनपुट के रूप में निर्देशित करने की अनुमति देती है, जिससे कई फायदे होते हैं, जैसे कि कोड की लाइनों को कम करना, परिणामों के लिए भंडारण चर के साथ वितरण और सुधार करना। स्क्रिप्ट की दक्षता।
एक पाइप को आमतौर पर प्रतीक होने से पहचाना जाता है | जो भाव को व्यक्त करने की अनुमति देता है; यद्यपि यह डिफ़ॉल्ट रूप से उपयोग किया जाता है, पाइप बनाने के अन्य तरीके हैं।
उदाहरण: हाल के कर्नेल संदेश प्रिंट करें
#dmesg आपको हाल के कर्नेल संदेश और लोड किए गए ड्राइवरों को देखने की अनुमति देता है #during सिस्टम बूट; पूंछ किसी फ़ाइल के अंतिम भाग या # प्रिंट को प्रिंट करती है
dmesg | पूंछ
यद्यपि वे जितना चाहें उतना जटिल हो सकते हैं, एक पाइपलाइन की मूल संरचना एक कमांड के परिणाम को अगले इनपुट के रूप में उपयोग करने की अनुमति देती है, जो अगर हम लगातार पाइप जोड़ते रहते हैं तो एक नई कमांड का इनपुट प्रदान कर सकते हैं।
कार्यों
फ़ंक्शंस एक कथन हैं, जिन्हें एक साथ समूहीकृत किया जाता है ताकि उन्हें फिर से लिखे बिना कई बार निष्पादित किया जा सके। यह सोचने के बराबर है कि जब हम एक प्रकार का खाना बनाना सीखते हैं, तो हम एक शीट पर इसकी रेसिपी लिखेंगे, और हर बार जब हम खाना बनाना चाहते हैं, तो हम उसी रेसिपी के साथ एक नई शीट को दोबारा लिखने के बजाय रेसिपी की सलाह लेते हैं।
फ़ंक्शंस के बारे में शायद सबसे महत्वपूर्ण बात यह है कि मापदंडों, डेटा को पारित करने की संभावना है जो वे उन्हें संसाधित करने और आउटपुट उत्पन्न करने के लिए उपयोग करेंगे। इसकी संरचना इस प्रकार है:
फ़ंक्शन फ़ंक्शन-नाम {
प्रक्रियाओं
}
उदाहरण: फ़ंक्शन जो tcp प्रोटोकॉल पर काम करने वाली सेवाओं को दिखाता है। हम यह भी देख सकते हैं कि अधिक पाइप कैसे लगाए जाएं।
# हम एक फ़ंक्शन नाम को परिभाषित करते हैं, यह वह हो सकता है जिसे हम पसंद करते हैं।
समारोह सेवाओं_tcp {
#cat, / etc / services फ़ोल्डर की सामग्री को प्रदर्शित करता है और प्रदर्शित करता है, जो # है जिसमें उनके संबद्ध पोर्ट के साथ सभी सेवाएँ शामिल हैं।
# पहली grep सूची लेती है और टिप्पणियों को हटा देती है, साथ ही हम परिणाम को उल्टा कर देते हैं
# दूसरा grep केवल tcp से संबंधित दिखाता है
बिल्ली / आदि / सेवाएं | grep –v "^ #" | grep tcp
}
जब हमें इस फ़ंक्शन को निष्पादित करने की आवश्यकता होती है, तो हमें इसे इसके नाम से पुकारना होगा:
tcp_services
इस मामले में यह मापदंडों के बिना काम करता है; इस घटना में कि यह उनके पास है, हमें उन्हें जोड़ना होगा ताकि फ़ंक्शन ठीक से काम करे, अन्यथा फ़ंक्शन ठीक से काम नहीं करेगा। रिटर्न का उपयोग करने से प्रक्रिया के परिणामस्वरूप एक फ़ंक्शन को मान वापस करने की अनुमति मिलती है।
उदाहरण: इनपुट मापदंडों के साथ कार्य करता है जो 2 संख्याओं के योग की गणना करता है।
#! / Bin / bash
समारोह राशि ()
{
# चलो हम उद्धरण के अंदर ऑपरेशन को निष्पादित कर सकते हैं
"परिणाम = $ 1 + $ 2" दें
# ग्रेट पूर्णांक मान को वापस करने की अनुमति देता है। एक बार रिटर्न निष्पादित हो जाने के बाद, मूल्य चर $ के अंदर जमा हो जाएगा?
वापस $ परिणाम;
}
# योग फ़ंक्शन कहा जाता है और हम 2 इनपुट पैरामीटर पास करते हैं।
2 3 जोड़ें
# चिह्न $ का मूल्य है? प्रतिध्वनि का मूल्यांकन उद्धरणों में चर के वास्तविक मूल्य के साथ
echo -e "परिणाम = $?";
मुझे यकीन नहीं है, लेकिन फ़ंक्शंस का रिटर्न स्टेटमेंट केवल 0 और 255 के बीच पूर्णांक को वापस करने का कार्य करता है, जैसे "निकास" के त्रुटि कोड, आम तौर पर 0 यदि सब कुछ ठीक है और अन्य मामलों के लिए एक और संख्या है। हालांकि उदाहरण में यह काम करता है, मुझे नहीं लगता कि परिणाम को वापसी के साथ वापस करना अच्छा है।
वहाँ पर मैं एक बकवास कह रहा हूँ हुह! आँख! हा!
सच्चाई ने मुझे संदेह के साथ छोड़ दिया। किसी भी मामले में, कार्यों के साथ समस्याओं से बचने के लिए, हम उस घटना में प्रतिध्वनि की जगह ले सकते हैं जो फ़ंक्शन मान या स्ट्रिंग को वापस करने या प्रिंट करने का प्रयास करता है।
यह सच है, इसे हल करने के लिए आप bc कमांड का उपयोग कर सकते हैं, योग फ़ंक्शन में आप उपयोग कर सकते हैं: परिणाम = `प्रतिध्वनि $ 1 + + 2 | bc -ql`
अच्छा है,
मैं जानना चाहूंगा कि मैं बैश फाइलों को कहां से बचा सकता हूं ताकि वे सिस्टम को चौड़ा कर सकें और यह बिन निर्देशिका नहीं है, लेकिन बैकअप के साथ घर हो सकता है।
धन्यवाद और का संबंध है.
बहुत बहुत धन्यवाद, मैं लिपियों के साथ शुरू कर रहा हूं, और सच्चाई यह है कि यह बहुत उपयोगी है, आप अपने ज्ञान को साझा कर रहे हैं!
सादर
धन्यवाद! झप्पी!
पाब्लो
सिंटेक्स त्रुटि, अप्रत्याशित
मुझे एक त्रुटि मिलती है जब उदाहरण को चलाने की कोशिश कर रहा था, मैंने इसे बिल्कुल उसी तरह से कॉपी किया
क्या हो सकता है? मैं ubuntu 14.10 पर हूँ