প্রতি ডিরেক্টরি ভিত্তিতে একটি উপকরণ কীভাবে সেট করবেন?


18

ধরুন আপনার একটি উপনাম আছে go, তবে এটি বিভিন্ন ডিরেক্টরিতে বিভিন্ন জিনিস করতে চান?

একটি ডিরেক্টরিতে এটি চালানো উচিত cmd1, তবে অন্য ডিরেক্টরিতে এটি চালানো উচিতcmd2

যাইহোক, আমার উপরের ডিরেক্টরিগুলি ইতিমধ্যে স্যুইচ করার জন্য একটি এলিয়াস আছে, সুতরাং উলামের সাথে goঅ্যাসাইনমেন্ট অ্যাসাইনমেন্ট যুক্ত করা সম্ভব foo?

alias "foo=cd /path/to/foo"

ওএসএক্সে বাশ (?) এ কাজ করছেন।


1
এই জন্য মেকফিলগুলি হয়।
ব্রুস

উত্তর:


16

আপনি কী জিজ্ঞাসা করছেন এটি সম্পূর্ণরূপে নিশ্চিত নয়, তবে একটি উপনাম কেবলমাত্র ওরফেতে কী রয়েছে তা প্রসারিত করে। আপনার যদি দুটি এলিয়াস থাকে তবে আপনি আলাদা আলাদা কমান্ড এমনকি উপাত্ত যুক্ত করতে পারেন।

alias "foo=cd /path/to/foo; go"
alias "foo2=cd /path/to/foo2; go"

অন্য যে কোনও পরিস্থিতিতে, আপনি নিজের মধ্যে একটি ফাংশন নির্দিষ্ট করতে পারেন .bashrc

function go ()
{
    if [ "$PWD" == "/path/to/foo" ]; then
       cmd1
    elif [ "$PWD" == "/path/to/go" ]; then
       cmd2
    fi;
}

আপনার যদি আরও পছন্দ থাকে তবে আপনি কেস স্ট্রাকচার আরও ভালভাবে ব্যবহার করতে পারেন।


4

আমি অনুভব করি যে আপনি খুব "ডিরেক্টরি ভিত্তিক", এবং সেক্ষেত্রে এটি আপনার মানসিকতাকে আরও ভাল করে তুলতে পারে।

(তবে সত্যি বলতে কী, আমি মনে করি এটি সম্পূর্ণরূপে একটি খারাপ ধারণা, আপনি আদেশগুলি বিশ্বব্যাপী হতে চান))

ইন .bashrc, রাখুন alias go="./.cmd"(তারপর source ~/.bashrc)।

তারপরে, এই জাতীয় প্রতিটি ডিরেক্টরিতে, একটি স্ক্রিপ্ট বলা হয় .cmd, তারপরে chmod +x .cmd, কেবল goআপনার কাজটি করুন।


2
এটি অনেক কাজ ... এখানে ব্যবহারের ক্ষেত্রটি রয়েছে: পরীক্ষা চালানোর সময়, নির্দিষ্ট পরীক্ষা চালানোর জন্য আমি আরএসপি-সবকে ওরফে করতে চাই। তবে কোন পরীক্ষাগুলি প্রকল্পের উপর নির্ভর করে। এবং এটি ডিরেক্টরি দ্বারা নির্ধারিত হয়।
বি সেভেন

2
আমি যা দেখতে পাচ্ছি, আপনার কাছে দুটি বিকল্প রয়েছে, হয় একটি ফাংশন (যেমন উপরে বর্ণিত @ বার্নহার্ড) এবং শাখা ডিরেক্টরিতে (যেমন তিনি বলেছিলেন) উপর নির্ভর করে ব্যবহার করুন বা ডিরেক্টরিতে আপনি প্যারামিটারগুলি রাখতে পারেন। এটি ভেবে দেখুন, এটি স্ক্রিপ্ট হতে হবে না, আপনি কেবল touch .TESTNO; echo 2 > .TESTNOপ্রতিটি ডিরেক্টরিতে একটি ফাইল ( ) রাখতে পারেন এবং তারপরে আপনার ফাংশনে সেই ফাইলটি সন্ধান করতে পারেন এবং কোন পরীক্ষার নম্বর অনুসারে শাখা করতে পারেন। ধারণ করে। যদিও মোটেও অসুবিধা না হলেও আপনি সম্ভবত এর জন্য একটি উপনাম ব্যবহার করতে পারবেন না; আপনার অবশ্যই একটি ফাংশন ব্যবহার করা উচিত।
ইমানুয়েল বার্গ

2

আমি এমন একটি প্রকল্পে কাজ করছি যা কেবল এটি সম্পাদন করে। এটি পরীক্ষা করে দেখুন: লোকালালিয়াস

এখানে একটি ডেমো রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

যথেষ্ট মজার, আমি আসলে goডেমোতে উদাহরণ হিসাবে ব্যবহার করেছি । আমি স্যুইচিং ডিরেক্টরিগুলি প্রদর্শন করি নি (ডেমো সম্পর্কে আমার কিছু পরিবর্তন করা উচিত) তবে laকমান্ডটি সহ কার্যকারিতাগুলি প্রকৃতপক্ষে স্থানীয় ডিরেক্টরিতে নির্ধারিত হয়।


1
function go() {
  if [ ! -e "./.cmd1" ]
    then command go -a $1
    else command go -b $1
  fi
}

অনুরূপ জিনিস, তবে "গো" ধরে নেওয়া হ'ল একটি আদেশ যা আপনি নির্দিষ্ট ডিরেক্টরি থেকে আলাদা কার্যকারিতা চান।


1

যদি আপনি নীচের ফাংশনটি আপনার .bashrc এ যুক্ত করেন

function cd () { 
  builtin cd "$@" && [[ -f .aliases ]] && . .aliases
  return 0
}

প্রতিবার আপনি .aliases ফাইলের সাহায্যে কোনও ডিরেক্টরিতে সিডি করুন এটি উত্সাহিত হবে।

অন্যরা যদি আপনার মেশিনে ফাইল তৈরি করতে পারে তবে সুরক্ষার সাথে যত্নবান।

এই কৌতুকের সাথে উপনামগুলি কখনই মুছে ফেলা হয় না তবে আপনি ফাংশনে নিজের পছন্দ মতো কোড লিখতে পারেন।

ওনডির এই কৌশলটি ব্যবহার করে এবং এতে প্রচুর ঘণ্টা এবং শিস ফেলা হয়।

http://swapoff.org/ondir.html#download


যদিও আমি মনে করি এটা চালাক এটা বিপজ্জনক যেহেতু এটি উপর নির্ভর বলে মনে হয় .bashrc। ( cronউদাহরণস্বরূপ, এটি কাজ করে না )।
সিটিব্রাউন

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

সত্য, বাশার্ক নিজেই বিপজ্জনক কিছু নেই। সমস্যাটি হ'ল আপনার কাছে নিশ্চিত করার কোনও উপায় নেই যে ডিরেক্টরিতে পরিবর্তিত প্রক্রিয়াটি bashrc উত্স করবে। এটি যদি আপনার ইন্টারেক্টিভ সেশন হয় তবে এটি একটি জিনিস। যদি ডিরেক্টরিটি ব্যবহারকারী এবং প্রক্রিয়াগুলির মধ্যে ভাগ করা হয় যা ব্যাশ শেল ব্যবহার করতে পারে বা নাও করতে পারে তবে এটি অন্যরকম is .bash_aliases কিছু সিস্টেমে বাশ এলিয়াসগুলির জন্য পছন্দসই অবস্থান।
সিটিব্রাউন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.