ধরুন আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা প্যারামিটার হিসাবে একটি পাথ প্রাপ্ত করে। আমি কীভাবে সেই পথে অবস্থিত সমস্ত স্ক্রিপ্টগুলি কার্যকর করতে পারি?
ধরুন আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা প্যারামিটার হিসাবে একটি পাথ প্রাপ্ত করে। আমি কীভাবে সেই পথে অবস্থিত সমস্ত স্ক্রিপ্টগুলি কার্যকর করতে পারি?
উত্তর:
পথ ধরে ধরে আপনি বোঝাচ্ছেন কোনও ডিরেক্টরিতে পাথ, ব্যবহার run-parts
। থেকে man run-parts
:
run-parts - run scripts or programs in a directory
প্রথমে আপনাকে চালিত করতে চান এমন সমস্ত স্ক্রিপ্টগুলিতে আপনাকে এক্সিকিউট করার অনুমতি নির্ধারণ করতে হবে। সাধারণত run-parts
ডিরেক্টরিগুলি এবং এক্সিকিউটেবল হয় না এমন ফাইলগুলি সেই ডিরেক্টরিতে থাকা উপেক্ষা করবে।
যদিও চালানোর আগে আপনার পরীক্ষা করা উচিত কোন ফাইলগুলি --test
বিকল্প দ্বারা চালিত হবে :
run-parts --test /path/to/directory
আমার উল্লেখ করা উচিত যে run-parts
স্ক্রিপ্টগুলি কার্যকর করার জন্য একটি কঠোর নামকরণের কনভেনশন রয়েছে:
If neither the --lsbsysinit option nor the --regex option is given
then the names must consist entirely of ASCII upper- and
lower-case letters, ASCII digits, ASCII underscores, and ASCII minus-hyphens.
man run-parts
আরও ধারণা পেতে চেক করুন ।
run-parts /home/you/Dropbox/scripts_to_run
.. নামকরণ সম্পর্কে সতর্ক থাকুন ..
আপনার স্ক্রিপ্টগুলির সঠিক নাম থাকলে রান-পার্টস কাজ করবে। আপনি যদি run-parts
জটিল স্ক্রিপ্টগুলির জটিল নামকরণ স্কিমটির নাম পরিবর্তন করতে চান না তবে আপনি কিছু সহজ করতে পারেন
for file in ~/target/*; do $file 2>/dev/null; done
এটি এতে পাওয়া সমস্ত ফাইল (এবং ডিরেক্টরিগুলি) কার্যকর করার চেষ্টা করবে ~/target
। 2>/dev/null
পুনঃনির্দেশ ত্রুটি বার্তা তাই এটি যখন ডিরেক্টরি বা অ এক্সিকিউটেবল ফাইল চালানোর প্রয়াস অভিযোগ করা হবে না।
বিকল্পভাবে, আপনি আরও পরিশীলিত চেষ্টা করতে পারেন
for file in ~/target/*; do
[ -f "$file" ] && [ -x "$file" ] && "$file"
done
এটি পরীক্ষার ফলাফলগুলির প্রতিটি ফাইল ( [ -f $file ]
), এক্সিকিউটেবল ( [ -x $file ]
) কার্যকর হবে কিনা তা পরীক্ষা করে দেখবে এবং কেবলমাত্র এই দুটি পরীক্ষাই যদি সফল হয় তবে এটি ফাইলটি কার্যকর করার চেষ্টা করবে।