ZSH उर्फ ​​पैरामीटर के साथ


98

मैं अपने साधारण git ऐड / कमिट / पुश के लिए पैरामीटर के साथ एक उपनाम बनाने की कोशिश कर रहा हूं।

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

इससे पहले कि मैं था:

alias gitall="git add . ; git commit -m 'update' ; git push"

लेकिन मैं अपने कमिट्स को संशोधित करने में सक्षम होना चाहता हूं:

function gitall() {
    "git add ."
    if [$1 != ""]
        "git commit -m $1"
    else
        "git commit -m 'update'"
    fi
    "git push"
}

(मुझे पता है कि यह एक भयानक अभ्यास है)

जवाबों:


117

आप तर्कों के साथ एक उपनाम नहीं बना सकते *, यह एक समारोह होना चाहिए। आपका फ़ंक्शन करीब है, आपको बस पूरे कमांड के बजाय कुछ तर्क उद्धृत करने की आवश्यकता है, और अंदर रिक्त स्थान जोड़ें []

gitall() {
    git add .
    if [ "$1" != "" ] # or better, if [ -n "$1" ]
    then
        git commit -m "$1"
    else
        git commit -m update
    fi
    git push
}

*: अधिकांश गोले एलियंस में बहस करने की अनुमति नहीं देते हैं, मेरा मानना ​​है कि csh और डेरिवेटिव करते हैं, लेकिन आपको उनका उपयोग वैसे भी नहीं करना चाहिए


cshकरता है, लेकिन इसमें सभी कार्य नहीं हैं। (मुझे नहीं पता कि क्या कोई कार्य नहीं हैं क्योंकि उपनाम पैरामीटर ले सकते हैं, या अगर कोई पैरामीटर नहीं हैं क्योंकि एलियंस कोई कार्य नहीं हैं, या क्या है।)
चेपनर

तो आप इसे (शेल से) कहेंगे जैसे gitall "my commit message"? या आप इसे कॉल करेंगेgitall('my commit message')
पुरातनपंथी 0

@ पुरालेख 0 फंक्शंस को किसी अन्य कमांड की तरह ही कहा जाता है gitall "my commit message"
केविन

मैं getall() {पूर्ववर्ती के बिना सुझाव देना चाहता हूं function- निश्चित रूप से, यह कानूनी रूप से किसी भी तरह से zsh में है, लेकिन यह एकमात्र परिवर्तन सभी POSIX- संगत गोले के साथ संगत बना देगा।
चार्ल्स डफी

10
BTW, यदि आपने git commit -m "${1:-update}"(डिफ़ॉल्ट रूप से प्रदान किया गया पैरामीटर विस्तार) का उपयोग किया है, तो आपको ifकथन की आवश्यकता नहीं होगी ।
चार्ल्स डफी

108

यदि आपको वास्तव में किसी कारण से एक पैरामीटर के साथ एक उपनाम का उपयोग करने की आवश्यकता है, तो आप इसे अपने उपनाम में किसी फ़ंक्शन को एम्बेड करके और तुरंत निष्पादित करके हैक कर सकते हैं:

alias example='f() { echo Your arg was $1. };f'

मैं देख रहा हूँ कि इस दृष्टिकोण का बहुत उपयोग किया गया है।


7
इतना हॅसी और फिर भी इतना सुंदर
रोकोको

14
एक उपनाम क्यों बना? बस फ़ंक्शन को कॉल करें example
ट्रिपल

1
इसके अलावा, पेट के बंद होने से पहले, आपको अर्धविराम की आवश्यकता होती है।
त्रिवेणी २ tri'१

यह सुंदर था। इसके साथ मैं एक उपनाम बनाने में सक्षम था जो एक आरसी फ़ाइल में एक उपनाम जोड़ता है, फिर पुनः लोड ने आरसी फ़ाइल कहा। ❤️ उर्फ ​​अडालियास = 'च () {गूंज "उर्फ" $ 1 >> ~ / .zshrc &&। ~ / .zshrc}; f '
MayTheSForceBeWithYou

6
वैश्विक दायरे में किसी भी नाम को जोड़ने की आवश्यकता नहीं है, बस अनाम फ़ंक्शन का उपयोग करें:alias example='(){ echo Your arg was $1. ;}'
maoizm

11

मैंने इस फ़ंक्शन का उपयोग किया है .zshrc फ़ाइल:

function gitall() {
    git add .
    if [ "$1" != "" ]
    then
        git commit -m "$1"
    else
        git commit -m update # default commit message is `update`
    fi # closing statement of if-else block
    git push origin HEAD
}

यहां git push origin HEADरिमोट पर अपनी वर्तमान शाखा को पुश करने के लिए जिम्मेदार है।

कमांड प्रॉम्प्ट से इस कमांड को चलाएं: gitall "commit message goes here"

यदि हम gitallबिना किसी संदेश के बस दौड़ते हैं तो प्रतिबद्ध संदेश उसी तरह होगा updateजैसे कि फ़ंक्शन ने कहा था।


4

"git add ."और बीच के अन्य कमांड "केवल बैश के लिए तार हैं, एस को हटा दें "

आप [ -n "$1" ]अपने शरीर में इसके बजाय उपयोग करना चाह सकते हैं ।


0

मैंने स्वीकृत उत्तर (केविन) की कोशिश की, लेकिन निम्नलिखित त्रुटि हो रही थी

defining function based on alias `gitall'
parse error near `()'

इसलिए git मुद्दे पर आधारित सिंटैक्स को इसमें बदल दिया गया और इसने काम किया।

    function gitall {
    git add .
    if [ "$1" != "" ]
    then
        git commit -m "$1"
    else
        git commit -m update
    fi
    git push
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.