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


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.