স্যান্ডউইচ এলিয়াস বানানো কি সম্ভব?


8

আমি যে কোনও ফাইলের নামের জন্য নিম্নলিখিত উপন্যাসটি তৈরি করার উপায় খুঁজছি।

alias dim='cd /home/jason/Documents; vim *the desired file*; cd'

আমি ভাবছি যে এই উপায়টি তৈরি করার জন্য আমি কি এই উপায়টি পরিবর্তন করতে পারলাম যাতে কোনও ফাইলের নাম টাইপ করতে পারি:

dim *the desired file*

এবং এখনও একই ফলাফল পেতে। মূলত ওরফে নামটির পরে যে নামটি টাইপ করা হয় তাকেই নিজের নামেই ডাকার কোনও উপায় আছে? কিছুটা এইরকম:

alias dim='cd /home/jason/Documents; vim <what is typed after alias>; cd'

//, এর উদ্দেশ্য কী ছিল?
— নাথান বাসানিজ

উত্তর:


8

না, আপনি শেল এলিয়াস ব্যবহার করে এটি করতে পারবেন না। আপনার একটি ফাংশন ব্যবহার করা দরকার।

কাজটি করার জন্য এখানে একটি সাধারণ কাজ:

dim() {
cd /home/jason/Documents
vim "$1"
cd
}

ফাংশনটি dimএকটি ফাইলের নাম হিসাবে যুক্তি হিসাবে গ্রহণ করবে। আপনি আপনার ~/.bashrcফাইলের শেষে এই কোড স্নিপেট রাখতে পারেন এবং তারপরে এটি চালান:

dim file.txt

file.txtআপনার যে কোনও ফাইলের নামটি প্রতিস্থাপন করুন ।

বর্তমান শেল সেশন থেকে এটি চালানোর জন্য, প্রথম ফাইল:source~/.bashrc

. ~/.bashrc

3
"$ 1" কী বোঝায়? আমি একটি শিক্ষানবিস এবং কেবল কপি পেস্ট করার চেয়ে শেখার চেষ্টা করছি এবং একটি দিন কল করুন।
— জেসন বাসানিজ

1
@ জেসনবাসানিজ আমি আপনার সিদ্ধান্তের প্রশংসা করি :) ফাংশনটির $1প্রথম অবস্থানগত প্যারামিটার বা যুক্তি নির্দেশ করে..এটিকে কোনও ফাংশন বা স্ক্রিপ্টকে ইনপুট দেওয়ার উপায় হিসাবে মনে করি .. সমস্ত প্রোগ্রামিং ভাষার মতো bashএটিও ব্যবহার করে .... আপনি গুগলে এ সম্পর্কে অসংখ্য সংস্থান সন্ধান করুন ..
— হিমাইল

3

এলিয়াস দিয়ে নয়, পরিবর্তে ফাংশন ব্যবহার করুন।

থেকে ব্যাশ man পৃষ্ঠা :

alias লেখা

[...] প্রতিস্থাপন পাঠ্যে আর্গুমেন্ট ব্যবহার করার কোনও ব্যবস্থা নেই। যদি আর্গুমেন্টগুলির প্রয়োজন হয়, একটি শেল ফাংশন ব্যবহার করা উচিত ( নীচে FUNCTIONS দেখুন)।

সুতরাং আপনার ফাংশন হতে পারে:

ফাংশন ডিমে () d সিডি ~ জেসন / ডকুমেন্টস; ভিম $ *; সিডি -;}


1
এক্ষেত্রে ~ / ডকুমেন্টগুলি ঠিক কাজ করবে না? এছাড়াও এই ক্ষেত্রে $ এবং * প্রতীকগুলির অর্থ কী? এবং - সিডির পরে কি দরকার? সাধারণত আমি কেবল সিডি টাইপ করতে পারি এবং এটি একটি ডিরেক্টরিতে যায়।
— জেসন বাসানিজ

"সাধারণত আমি সিডি টাইপ করতে পারি এবং এটি একটি ডিরেক্টরিতে উঠে যায়" - আমি cdআপনাকে কেবল আপনার হোম ডিরেক্টরিতে আনার জন্য একটি সমভূমি জানি ; cd ..এক স্তর উপরে যায় cd -আপনি যে ডিরেক্টরিটি সম্পাদনা করেছেন সেটিকে আপনাকে পূর্ববর্তী ডিরেক্টরিতে নিয়ে আসে cd।
— চ্রিকি

1
@ জেসনবাসানিজ: হ্যাঁ ~ / ডকুমেন্টস সবার জন্য কাজ করবে (যদি এটি সমস্ত ব্যবহারকারীর জন্য একটি ফাংশন হয়)। $*যেমনটি $1 $2 $3...আপনি টাইপ করেন এমন প্রথম যুক্তি নয়, ভিএমকে পুরো তালিকা দেওয়ার মতো। এবং চ্রিকি যেমন বলেছিলেন, cd -পূর্ববর্তী ডিরেক্টরিতে ফিরে আসবে (আপনি যখন ছিলেন তখন ফাংশনটি চালু করার আগে)।
— সিজকোসিস্টেমস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.