আমি কীভাবে একটি টার্মিনাল লাইনে একটি উপকরণ সেট করব?


9

আমি সহজেই git-goএই টার্মিনাল লাইনে একটি উপনাম সেট করতে চাই :

git commit -m "init "; git push; git status

সুতরাং আমি যখন গিট-গোতে প্রবেশ করি তখন এই লাইনটি প্রবেশ করা উচিত।

আমি এটা কিভাবে করবো? যে উত্তরগুলি আমি দেখেছি সেগুলি পরামিতি ছাড়াই কেবলমাত্র একটি আদেশের উচ্ছ্বাস coverাকা থাকে। তবে আমি একটি উলামেরোধকে একটি স্বেচ্ছাসেবী টার্মিনাল লাইনে সেট করতে চাই।


তুমি কি চেষ্টা করেছ? অন্য কোন প্রশ্ন আপনি পড়েছেন? askubuntu.com/q/17536/507051 এটি বেশ ভাল ব্যাখ্যা করে, আপনার প্রশ্নটি আসলে কী?
মিষ্টান্ন

আমার সমস্যাটি বাইরের উক্তির জন্য এককটির পরিবর্তে ডাবল উদ্ধৃতি ব্যবহার করছিল।
ফিলিপ রেগো

আপনি পাশাপাশি এটি অন্য উপায়ে বাইরের ডাবল উদ্ধৃতি এবং অভ্যন্তরে একক উদ্ধৃতি ব্যবহার করে করতে পারেন।
ভিডিওনাথ

উত্তর:


13

আপনি যেভাবে কোনও উপনাম সেট করবেন ঠিক সেভাবেই আপনি এটি করুন।

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, এবং তাই ঘোষণা কমান্ড লাইন আর্গুমেন্ট শেল ফাংশন প্রেরণ মান ধরে রাখুন। এলিয়াসগুলির সাথে এটির সাথে সম্পর্কিত কোনও কার্যকারিতা নেই, কারণ শেল একটি কমান্ডকে বিশ্লেষণ করে যখন খুব শীঘ্রই ঘটেছিল তখন ওরফে প্রসারণটি ম্যাক্রো প্রসেসিংয়ের একটি রূপ।

আপনি অবশ্যই অবশ্যই এটি শেল ফাংশন হিসাবে লিখতে পারেন এমনকি আপনার ভিডিয়োনাথের পরামর্শ অনুসারে সংজ্ঞাতে অবস্থানগত পরামিতি ব্যবহার করার প্রয়োজন নেই ।


1
আরও ভাল: git-goআপনার PATH তে একটি স্ক্রিপ্ট রাখুন এবং git goকাজ করবে।
ডি বেন নোবেল

10

আপনি এটিকে আপনার ~/.bash_aliasesফাইলে একটি ফাংশন হিসাবে ঘোষণা করতে পারেন:

git-go(){
    git commit -m "init "
    git push
    git status
}

অথবা আপনি একই ফাইলের মতো একটি উপাধি তৈরি করতে পারেন:

alias git-go='git commit -m "init "; git push; git status'

আপনার টার্মিনালটি পুনরায় খোলা বা ফাইল . ~/.bash_aliasesপরিবর্তন করার পরে ( ) ফাইলটি ভুলে যাবেন না ।


1
একটি উলের পরিবর্তে শেল ফাংশন লেখার একটি সুবিধা হ'ল যে কোনওটির জন্য নীড়ের উদ্ধৃতি প্রয়োজন নেই। এই উত্তরটি এইভাবে কেন্দ্রীয় সমস্যার সমাধান করে যা ওপি আমার থেকে বেশি সরাসরি ছিল directly
এলিয়াহ কাগন

@ এলিয়াকাগান উভয়ই সেই প্রশ্নের জন্য ঠিক আছে যদিও আপনার জুড়েই বেশি। তোমাকে দেখে ভাল লাগল।
ভিডিওনাথ

4

আপনি যেমন gitকমান্ডগুলি নিয়ে কাজ করছেন, আপনি একটি বিশেষনীয় নাম যুক্ত করার জন্য বাক্য গঠনটিও জানতে চাইতে পারেন git:

git config --global alias.go '!sh -c "git commit -m \"init\"; git push; git status"'

এটি আপনার স্থানীয় gitকনফিগারেশনে একটি নতুন উপন্যাস যুক্ত করবে (এ ~/.gitconfig) এবং আপনাকে ইস্যু করার অনুমতি দেবে

git go

একটি gitভান্ডার ভিতরে যখন । আপনি যখনই git goশেলটি চালান তখনই এটি কমান্ডটি git commit -m "init"; git push; git statusপ্রেরণ করা হয়।

আরও বিশদ জন্য গিট ডকুমেন্টেশন দেখুন ।


3

এটি একটি উদ্ধৃতি সমস্যা ছিল। আমি এটি চেষ্টা করেছিলাম:

alias="git commit -m "init "; git push; git status"

তবে এই ত্রুটিটি পেয়েছে:

bash: ; git push; git status: command not found

আমি সেই ত্রুটিটি পেয়েছি কারণ আমি নেস্টেড উক্তিগুলি ভুলভাবে ব্যবহার করছিলাম। এখানে সঠিক বাক্য গঠন:

alias='git commit -m "init "; git push; git status'

বা:

alias="git commit -m 'init '; git push; git status"

অথবা প্রতিশ্রুতি বার্তায় কোনও সাদা স্থান না থাকলে উদ্ধৃতিগুলি ছাড়াই:

alias="git commit -m init; git push; git status"

এই উত্তরটি পোস্ট করার জন্য ধন্যবাদ (আমার উত্তর হিসাবে এবং ভিডিওনাথের উদ্ধৃতি ইস্যুতে বেশি মনোযোগ দেয় না)। কৌতূহলের বাইরে, আপনি কেন আপনার প্রতিশ্রুতিবদ্ধ বার্তাগুলিতে পিছনে স্থান চান?
এলিয়াহ কাগন

আমি এই লাইনটি ম্যানুয়ালি পেস্ট করতাম এবং আমি জায়গার পরে একটি বার্তা যুক্ত করতাম, তবে এখানে তা বোঝা যায় না তাই এটি বের করে নিয়েছি।
ফিলিপ রেগো

1
সেক্ষেত্রে আপনার উদ্ধৃতি দেওয়ার দরকার নেই init; শেল একইরূপে 'init', "init"এবং initএকই। (সুতরাং নেস্টেড কোটগুলির প্রয়োজনীয় অবস্থাটি চিত্রিত করতে আপনি মূল সংস্করণটি আবার রেখে দিতে এবং নতুন সংস্করণটিও প্রদর্শন করতে চাইতে পারেন)) বাকী বার্তাটি যুক্ত করতে সক্ষম হয়ে আপনি এটি কমান্ড-লাইন হিসাবে পাস করতে পারেন যুক্তি যদি (ভিডিওউনথ এবং আমার উত্তরগুলিতে দেখানো হয়) আপনি একটি উলের পরিবর্তে কোনও ফাংশন সংজ্ঞায়িত করেছেন। উদাহরণস্বরূপ, আপনি সংজ্ঞায়িত করতে পারেন git-go() { git commit -m "init $1"; git push; git status; }(যা আমার উত্তরে যা আছে তবে ন্যায়বিচারের "init $1"পরিবর্তে "$1")।
এলিয়াহ কাগন

ধন্যবাদ যা আমি পরবর্তী চেষ্টা করতে চেয়েছিলাম।
ফিলিপ রেগো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.