প্যারামিটার সহ জেডএসএইচ ওরফে


93

আমি আমার সাধারণ গিট অ্যাড / কমিট / পুশ করার জন্য প্যারামিটার দিয়ে একটি উপনাম তৈরি করার চেষ্টা করছি।

আমি দেখেছি ফাংশনটি ওরফে হিসাবে ব্যবহার করা যেতে পারে তাই চেষ্টা করে দেখি তবে এটি তৈরি করিনি ..

আমার ছিল আগে:

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"
}

(আমি জানি এটি একটি ভয়ানক গিট অনুশীলন)

উত্তর:


113

আপনি আর্গুমেন্ট * দিয়ে একটি উপনাম তৈরি করতে পারবেন না, এটি একটি ফাংশন হতে হবে। আপনার ফাংশনটি খুব কাছে, আপনার পুরো কমান্ডের পরিবর্তে কিছু যুক্তি উদ্ধৃত করতে হবে এবং এর ভিতরে স্পেস যুক্ত করতে হবে []

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

*: বেশিরভাগ শেলগুলি এলিয়াসগুলিতে যুক্তি মঞ্জুরি দেয় না, আমি বিশ্বাস করি সিএসএস এবং ডেরিভেটিভসগুলি এটি করে তবে আপনার সেগুলি আর ব্যবহার করা উচিত নয়


cshকরে, তবে এর কোনও কার্যকারিতা নেই। (কোনও ফাংশন নেই কিনা তা আমি জানি না কারণ
এলিয়াসগুলি

সুতরাং আপনি এটি (শেল থেকে) পছন্দ হবে gitall "my commit message"? বা আপনি এটি কল করবেনgitall('my commit message')
archae0Pointyx

@ archae0Pointyx ফাংশনগুলিকে অন্য কমান্ডের মতো বলা হয়, তাই gitall "my commit message"
কেভিন

আমি getall() {পূর্ববর্তীটি ছাড়াই পরামর্শ দেব function- অবশ্যই, এটি zsh এ যে কোনও উপায়ে আইনী, তবে এই একমাত্র পরিবর্তন এটিকে সমস্ত পসিক্স-কমপ্লায়েন্ট শেলের সাথে সামঞ্জস্য করে তুলবে।
চার্লস ডাফি

9
বিটিডাব্লু, আপনি যদি ব্যবহার করেন git commit -m "${1:-update}"(ডিফল্ট প্রদত্ত একটি প্যারামিটার সম্প্রসারণ), তবে আপনার কোনও ifবিবৃতি প্রয়োজন হবে না ।
চার্লস ডাফি 25:25

104

যদি আপনার কোনও কারণে কোনও প্যারামিটার সহ কোনও উপাধি ব্যবহার করার প্রয়োজন হয় তবে আপনি আপনার উলামে কোনও ফাংশন এম্বেড করে এবং তাৎক্ষণিকভাবে এটি সম্পাদন করে এটি হ্যাক করতে পারেন:

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

আমি এই পদ্ধতির .gitconfig উপাধিতে প্রচুর ব্যবহৃত দেখছি।


7
তাই হ্যাকি এবং এখনও এত সুন্দর
রোকোকো

14
মোটেও একটি উপকরণ কেন তৈরি করবেন? শুধু ফাংশন কল example
ট্রিপলি

4
এছাড়াও, বিচ্ছিন্নভাবে, বন্ধনী বন্ধনীটির আগে আপনার একটি সেমিকোলন প্রয়োজন।
ট্রিপলি

এই সুন্দর ছিল। এটির সাহায্যে আমি একটি উপাধি তৈরি করতে সক্ষম হয়েছি যা একটি আরসি ফাইলে একটি উপন্যাস যুক্ত করে, তারপরে পুনরায় লোড করা আরসি ফাইল বলে। ❤️ ওরফে অ্যাডালিয়াস = 'চ () cho প্রতিধ্বনি "ওরফে" $ 1 >> ~ / .zshrc && ~ / .zshrc}; f '
মে থেকে এইএসফোর্সবিউইউইউথেকে

4
গ্লোবাল স্কোপে কোনও নাম যুক্ত করার দরকার নেই, কেবল alias example='(){ echo Your arg was $1. ;}'
বেনাম

10

আমি এই ফাংশনটি .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 `()'

অতএব গিট ইস্যুর উপর ভিত্তি করে সিনট্যাক্সটি এতে পরিবর্তন হয়েছে এবং এটি কাজ করেছে।

    function gitall {
    git add .
    if [ "$1" != "" ]
    then
        git commit -m "$1"
    else
        git commit -m update
    fi
    git push
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.