आप इसे उसी तरह करते हैं जैसे आप कोई अन्य उपनाम सेट करते हैं।
alias git-go='git commit -m "init "; git push; git status'
वह स्थिति जहां यह मुश्किल हो जाता है , जब कोई अन्य व्यक्ति एक कमांड चलाता है और उस कमांड में तर्क पारित नहीं करता है, और तब भी जब कोई अन्य अलग-अलग कमांड चलाता है ;
, लेकिन इसके बजाय जब आप चाहते हैं कि कोई अन्य कमांड लाइन तर्क को स्वीकार करे और उसका उपयोग करे ।
उदाहरण के लिए, उस उपनाम के नाम के बाद आप जो कुछ भी लिखते हैं , वह अंत में चिपकाया जाएगा, और इस तरह तीसरे git
आदेश के बाद कमांड-लाइन तर्क के रूप में पारित किया गया git status
। (वास्तव में यह इतना नहीं है कि निम्नलिखित पाठ को अंत में चिपकाया जाता है, जितना कि यह है कि निम्नलिखित पाठ को अकेला छोड़ दिया गया है और उपनाम नाम को इसकी परिभाषा से बदल दिया गया है।)
तो आप बिना किसी तर्क के अपना उपनाम चला सकते हैं, जो काम करता है, और अंतिम आदेश है git status
:
git-go
या आप इसे उन तर्कों के साथ चला सकते हैं जिन्हें आप पास करना चाहते हैं git status
। उदाहरण के लिए, जब आप इसे इस तरह से चलाते हैं, तो अंतिम कमांड होती है git-status --show-stash
:
git-go --show-stash
आप बाश (और अन्य बॉर्न-शैली के गोले) में एक उपनाम के साथ क्या नहीं कर सकते हैं, उपनाम को आदेश-पंक्ति तर्कों को स्वीकार करने और उन्हें अंत की तुलना में कहीं और रखने के लिए है।
उदाहरण के लिए, मान लें कि आप git-go
एक ऐसे तर्क को स्वीकार करना चाहते हैं जो इसे प्रतिबद्ध संदेश के लिए उपयोग करता है। आप इसे एक उपनाम के रूप में नहीं लिख पाएंगे। समाधान इसके बजाय इसे शेल फ़ंक्शन के रूप में लिखना होगा:
git-go() { git commit -m "$1"; git push; git status; }
एक खोल समारोह की परिभाषा में, स्थितीय मापदंडों $1
, $2
और इसी तरह कमांड लाइन तर्क खोल कार्य करने के लिए पारित कर दिया के मूल्यों पकड़ो। उपनाम की कोई कार्यक्षमता नहीं है जो इससे मेल खाती है, क्योंकि उपनाम विस्तार वास्तव में मैक्रो प्रसंस्करण का एक रूप है, बहुत जल्दी हो रहा है, जब शेल एक कमांड को पार्स करता है।
आप निश्चित रूप से, इसे शेल फ़ंक्शन के रूप में लिख सकते हैं, भले ही आपको परिभाषा में स्थितीय मापदंडों का उपयोग करने की आवश्यकता न हो, जैसा कि Videonauth सुझाव देता है ।