কমান্ডের অংশ হিসাবে একটি স্থান সহ বাশ ওরফে


11

আমি একটি বাশ ওরফে তৈরি করার চেষ্টা করছি, যেখানে তার নিজের মধ্যে এটির একটি জায়গা রয়েছে।

ধারণাটি হল যে উপনামটি (অর্থাত্ con) দাঁড়ায় sudo openvpn --config /path/to/my/openvpn/configs/। যার conনাম পঠনযোগ্য কমান্ড হয়, যখন উপামটি ব্যবহৃত হয়।

অর্থাৎ, `con uk.conf` == `sudo openvpn --config /path/to/my/openvpn/configs/uk.conf`

আমি বুঝি যে আমি এই ধরনের ওরফে ঘোষণা পারে না: con ="sudo openvpn --config /path/to/my/openvpn/configs/"। বাশ ফাংশন এই পরিস্থিতিতে কাজ করবে? আমি এর আগে কখনও শুনিনি, তবে এই ছোটখাট সমস্যার সমাধানের জন্য গবেষণা করার সময়।

উত্তর:


12

হ্যাঁ, আপনাকে একটি ফাংশন ব্যবহার করতে হবে। যদি আপনি একটি প্যারামিটার যুক্ত করতে চান তবে একটি উপাধি কাজ করবে, এলিয়াসগুলিতে প্রদত্ত যে কোনও আর্গুমেন্ট এলিয়াস প্রোগ্রামে আর্গুমেন্ট হিসাবে দেওয়া হয় তবে পৃথক প্যারামিটার হিসাবে থাকে যা কেবল সেখানে থাকে না। বর্ণনা করা:

$ alias foo='echo bar'
$ foo
bar
$ foo baz
bar baz

আপনি দেখতে পাচ্ছেন, যা প্রতিধ্বনিত হয়েছিল bar bazতা ছিল এবং নাও barbaz। যেহেতু আপনি বিদ্যমান প্যারামিটারে আপনি যে মানটি দিয়ে গেছেন তা আপনি সামঞ্জস্য করতে চান, আপনার এই জাতীয় কিছু প্রয়োজন হবে:

function com(){ sudo openvpn --config /path/to/my/openvpn/configs/"$@"; }

উপরের লাইনটি আপনার যুক্ত করুন ~/.bashrcএবং আপনি যেতে প্রস্তুত।


4
এর "$@"পরিবর্তে আপনি ব্যবহার করতে পারেন "$1"যাতে পরবর্তী যুক্তিগুলিও পেরিয়ে যায়। (সাধারণ মন্তব্য, সম্ভবত এখানে নির্দিষ্ট ক্ষেত্রে অপ্রাসঙ্গিক)
টবি স্পিড

নিবন্ধন করুন আমি যে চিন্তা থাকা উচিত। ধন্যবাদ, সম্পাদিত।
টেরডন

1
@ টবিস্পাইট শুধু স্পষ্টতার জন্য, এর অর্থ com uk.conf -something elseকি অনুবাদ হবে sudo openvpn --config /path/to/my/openvpn/configs/uk.conf -something else?
টিএমএইচ

4
@ টমহার্ট হ্যাঁ $@দেওয়া সমস্ত পরামিতি রয়েছে। দেখুন $ * এবং $ @ এর মধ্যে পার্থক্য কী?
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.