उपनाम बनाम फ़ंक्शन बैश स्क्रिप्ट में


11

मैं बैश शेल में उपनामों और कार्यों के बीच अंतर जानना चाहता हूं - और कब किसका उपयोग करना है।

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


1
आत्ममुग्ध होने की जरूरत नहीं है। यदि आपका प्रश्न नहीं चाहता है, तो इसे अस्वीकृत कर दिया जाएगा। और अगर कोई आपके लिए अपने प्रश्न को स्पष्ट करना चाहता है, तो वह टिप्पणी में ऐसा कहेगा। और अपनी पोस्ट को संपादित करने के लिए लोगों को मना करने से बात याद नहीं आती। यह साइट हर किसी के लिए संपादन योग्य होने के लिए डिज़ाइन की गई है।
k0pernikus

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

संभावित क्रॉस साइट डुप्लिकेट की डुप्लिकेट: unix.stackexchange.com/questions/30925/…
Ciro Santilli Sant

जवाबों:


10

उपनाम के रूप में उपनामों के बारे में सोचो । आपके पास एक आदेश हो सकता है कि आप बहुत अच्छा प्रदर्शन करें, लेकिन छोटा करना चाहते हैं।

एक उदाहरण के रूप में, आप अक्सर कमांडलाइन में सीधे डेस्कटॉप पर जाना चाहते हैं, इसलिए आप ऐसा कर सकते हैं

alias desktop="cd ~/Desktop"

तब से आप केवल टाइप करें

desktop

टर्मिनल में और यह cd ~/Desktopआपके लिए प्रदर्शन करेगा ।

क्रियाओं में तर्क होता है। एक फ़ंक्शन में, आप कई अलग-अलग कार्यक्रमों में कॉल कर सकते हैं। यहाँ एक साधारण इको फंक्शन है

function e {
                echo $1 
                echo $1 $1
                echo $1 $1 $1                 
           }  

जब आप इसे कॉल करते हैं तो यह एक उपनाम के समान दिखाई दे सकता है

e Hello

आपके ई () में बहुत सारी अलग-अलग चीजें हो सकती हैं। ऊपर एक सरल उदाहरण है।

उपनामों को सरल उपयोग के मामलों के लिए आरक्षित किया जाना चाहिए। व्यक्तिगत उदाहरण - मैंने अपनी rmकमान इस तरह बदल दी है

alias rm='trash-put'

जब भी मैं एक rm करता हूं, यह इसे डिस्क से हटाने के बजाय कूड़ेदान में भेज देगा। यह टर्मिनल में मेरी भद्दापन को पूरा करता है जहां मैं (कभी-कभी) गलती से एक महत्वपूर्ण फ़ाइल हटा सकता हूं।

कार्य , आपको याद रखने की आवश्यकता है, तर्क के टुकड़े हैं। आप आमतौर पर एक फ़ंक्शन स्टैंडअलोन का उपयोग नहीं करेंगे। यह एक बड़ी स्क्रिप्ट का हिस्सा होगा। एक स्क्रिप्ट की कल्पना करें जो आपकी सभी फाइलों को ले जाती है और उनका नाम बदलकर उनके पिग लैटिन संस्करणों में रख देती है। ध्यान दें कि इसे करने के विभिन्न तरीके हैं।

लेकिन आप क्या कर सकते हैं निर्देशिका में हर फाइल के माध्यम से लूप है और फ़ाइल नाम को अपने RenameAsPigLatin फ़ंक्शन से पास करें। RenameAsPigLatin फ़ंक्शन में संख्याओं को शामिल करने में अतिरिक्त तर्क हो सकता है, जहां आप तय करते हैं कि संख्याओं के साथ समाप्त होने वाली फ़ाइलों का नाम नहीं बदला जाना चाहिए।

तुरंत आप इसे फंक्शन के रूप में देख सकते हैं। फ़ंक्शन अपने अजीब नियमों द्वारा नाम बदलने पर ध्यान केंद्रित कर सकता है जबकि बाकी स्क्रिप्ट विभिन्न निर्देशिकाओं को आवश्यक रूप से पार कर सकती है।


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

3

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

एक शास्त्रीय उदाहरण होगा:

alias ll='ls -l'

उपनाम केवल एक संवादात्मक कंसोल में काम करते हैं, वे स्क्रिप्ट में उपयोग करने के लिए नहीं हैं।

फ़ंक्शन का उपयोग स्क्रिप्ट में या कंसोल में किया जा सकता है, लेकिन स्क्रिप्ट में अधिक बार उपयोग किया जाता है।

उपनामों के विपरीत, जो कि केवल उनके मूल्य द्वारा प्रतिस्थापित किए जाते हैं, एक फ़ंक्शन को बैश शेल द्वारा व्याख्या किया जाएगा।

उपनाम उपनाम की तुलना में बहुत अधिक शक्तिशाली हैं, उनका उपयोग बहुत जटिल कार्यक्रमों के निर्माण के लिए किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.